@tscircuit/runframe 0.0.123 → 0.0.125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/standalone.min.js +3 -3
- package/package.json +3 -3
package/dist/standalone.min.js
CHANGED
|
@@ -7136,7 +7136,7 @@ var Ol=1,ql=6,rc=8,sc=10,Kl=4;function Gl(Rc){return _l<<Rc}function kl(Rc){retu
|
|
|
7136
7136
|
}
|
|
7137
7137
|
`,clipping:!0}),this.isLineMaterial=!0,this.onBeforeCompile=function(){this.transparent?this.defines.USE_LINE_COLOR_ALPHA="1":delete this.defines.USE_LINE_COLOR_ALPHA},Object.defineProperties(this,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(ba){this.uniforms.diffuse.value=ba}},worldUnits:{enumerable:!0,get:function(){return"WORLD_UNITS"in this.defines},set:function(ba){ba===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(ba){this.uniforms.linewidth.value=ba}},dashed:{enumerable:!0,get:function(){return"USE_DASH"in this.defines},set(ba){!!ba!="USE_DASH"in this.defines&&(this.needsUpdate=!0),ba===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(ba){this.uniforms.dashScale.value=ba}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(ba){this.uniforms.dashSize.value=ba}},dashOffset:{enumerable:!0,get:function(){return this.uniforms.dashOffset.value},set:function(ba){this.uniforms.dashOffset.value=ba}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(ba){this.uniforms.gapSize.value=ba}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(ba){this.uniforms.opacity.value=ba}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(ba){this.uniforms.resolution.value.copy(ba)}},alphaToCoverage:{enumerable:!0,get:function(){return"USE_ALPHA_TO_COVERAGE"in this.defines},set:function(ba){!!ba!="USE_ALPHA_TO_COVERAGE"in this.defines&&(this.needsUpdate=!0),ba===!0?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1)}}}),this.setValues(Aa)}}ua.LineMaterial=la}(LineMaterial$1)),LineMaterial$1}var hasRequiredWireframe;function requireWireframe(){return hasRequiredWireframe||(hasRequiredWireframe=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=requireLineSegmentsGeometry(),xa=requireLineMaterial(),Aa=new J.Vector3,ba=new J.Vector3,Sa=new J.Vector4;class Ma extends J.Mesh{constructor(Ia=new la.LineSegmentsGeometry,La=new xa.LineMaterial({color:Math.random()*16777215})){super(Ia,La),this.isWireframe=!0,this.type="Wireframe"}computeLineDistances(){const Ia=this.geometry,La=Ia.attributes.instanceStart,Fa=Ia.attributes.instanceEnd,ka=new Float32Array(2*La.count);for(let tl=0,rl=0,il=La.count;tl<il;tl++,rl+=2)Aa.fromBufferAttribute(La,tl),ba.fromBufferAttribute(Fa,tl),ka[rl]=rl===0?0:ka[rl-1],ka[rl+1]=ka[rl]+Aa.distanceTo(ba);const el=new J.InstancedInterleavedBuffer(ka,2,1);return Ia.setAttribute("instanceDistanceStart",new J.InterleavedBufferAttribute(el,1,0)),Ia.setAttribute("instanceDistanceEnd",new J.InterleavedBufferAttribute(el,1,1)),this}onBeforeRender(Ia){const La=this.material.uniforms;La&&La.resolution&&(Ia.getViewport(Sa),this.material.uniforms.resolution.value.set(Sa.z,Sa.w))}}ua.Wireframe=Ma}(Wireframe$1)),Wireframe$1}var WireframeGeometry2={},hasRequiredWireframeGeometry2;function requireWireframeGeometry2(){return hasRequiredWireframeGeometry2||(hasRequiredWireframeGeometry2=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=requireLineSegmentsGeometry();class xa extends la.LineSegmentsGeometry{constructor(ba){super(),this.isWireframeGeometry2=!0,this.type="WireframeGeometry2",this.fromWireframeGeometry(new J.WireframeGeometry(ba))}}ua.WireframeGeometry2=xa}(WireframeGeometry2)),WireframeGeometry2}var Line2$1={},LineSegments2$1={},hasRequiredLineSegments2;function requireLineSegments2(){return hasRequiredLineSegments2||(hasRequiredLineSegments2=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=requireLineSegmentsGeometry(),xa=requireLineMaterial(),Aa=requireUv1(),ba=new J.Vector4,Sa=new J.Vector3,Ma=new J.Vector3,Ra=new J.Vector4,Ia=new J.Vector4,La=new J.Vector4,Fa=new J.Vector3,ka=new J.Matrix4,el=new J.Line3,tl=new J.Vector3,rl=new J.Box3,il=new J.Sphere,nl=new J.Vector4;let sl,ll;function dl(Tl,Ll,Il){return nl.set(0,0,-Ll,1).applyMatrix4(Tl.projectionMatrix),nl.multiplyScalar(1/nl.w),nl.x=ll/Il.width,nl.y=ll/Il.height,nl.applyMatrix4(Tl.projectionMatrixInverse),nl.multiplyScalar(1/nl.w),Math.abs(Math.max(nl.x,nl.y))}function gl(Tl,Ll){const Il=Tl.matrixWorld,Fl=Tl.geometry,Ol=Fl.attributes.instanceStart,ql=Fl.attributes.instanceEnd,rc=Math.min(Fl.instanceCount,Ol.count);for(let sc=0,Kl=rc;sc<Kl;sc++){el.start.fromBufferAttribute(Ol,sc),el.end.fromBufferAttribute(ql,sc),el.applyMatrix4(Il);const Gl=new J.Vector3,kl=new J.Vector3;sl.distanceSqToSegment(el.start,el.end,kl,Gl),kl.distanceTo(Gl)<ll*.5&&Ll.push({point:kl,pointOnLine:Gl,distance:sl.origin.distanceTo(kl),object:Tl,face:null,faceIndex:sc,uv:null,[Aa.UV1]:null})}}function _l(Tl,Ll,Il){const Fl=Ll.projectionMatrix,ql=Tl.material.resolution,rc=Tl.matrixWorld,sc=Tl.geometry,Kl=sc.attributes.instanceStart,Gl=sc.attributes.instanceEnd,kl=Math.min(sc.instanceCount,Kl.count),Wl=-Ll.near;sl.at(1,La),La.w=1,La.applyMatrix4(Ll.matrixWorldInverse),La.applyMatrix4(Fl),La.multiplyScalar(1/La.w),La.x*=ql.x/2,La.y*=ql.y/2,La.z=0,Fa.copy(La),ka.multiplyMatrices(Ll.matrixWorldInverse,rc);for(let tc=0,Zl=kl;tc<Zl;tc++){if(Ra.fromBufferAttribute(Kl,tc),Ia.fromBufferAttribute(Gl,tc),Ra.w=1,Ia.w=1,Ra.applyMatrix4(ka),Ia.applyMatrix4(ka),Ra.z>Wl&&Ia.z>Wl)continue;if(Ra.z>Wl){const Oc=Ra.z-Ia.z,jc=(Ra.z-Wl)/Oc;Ra.lerp(Ia,jc)}else if(Ia.z>Wl){const Oc=Ia.z-Ra.z,jc=(Ia.z-Wl)/Oc;Ia.lerp(Ra,jc)}Ra.applyMatrix4(Fl),Ia.applyMatrix4(Fl),Ra.multiplyScalar(1/Ra.w),Ia.multiplyScalar(1/Ia.w),Ra.x*=ql.x/2,Ra.y*=ql.y/2,Ia.x*=ql.x/2,Ia.y*=ql.y/2,el.start.copy(Ra),el.start.z=0,el.end.copy(Ia),el.end.z=0;const Cc=el.closestPointToPointParameter(Fa,!0);el.at(Cc,tl);const _c=J.MathUtils.lerp(Ra.z,Ia.z,Cc),Dc=_c>=-1&&_c<=1,Uc=Fa.distanceTo(tl)<ll*.5;if(Dc&&Uc){el.start.fromBufferAttribute(Kl,tc),el.end.fromBufferAttribute(Gl,tc),el.start.applyMatrix4(rc),el.end.applyMatrix4(rc);const Oc=new J.Vector3,jc=new J.Vector3;sl.distanceSqToSegment(el.start,el.end,jc,Oc),Il.push({point:jc,pointOnLine:Oc,distance:sl.origin.distanceTo(jc),object:Tl,face:null,faceIndex:tc,uv:null,[Aa.UV1]:null})}}}class vl extends J.Mesh{constructor(Ll=new la.LineSegmentsGeometry,Il=new xa.LineMaterial({color:Math.random()*16777215})){super(Ll,Il),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const Ll=this.geometry,Il=Ll.attributes.instanceStart,Fl=Ll.attributes.instanceEnd,Ol=new Float32Array(2*Il.count);for(let rc=0,sc=0,Kl=Il.count;rc<Kl;rc++,sc+=2)Sa.fromBufferAttribute(Il,rc),Ma.fromBufferAttribute(Fl,rc),Ol[sc]=sc===0?0:Ol[sc-1],Ol[sc+1]=Ol[sc]+Sa.distanceTo(Ma);const ql=new J.InstancedInterleavedBuffer(Ol,2,1);return Ll.setAttribute("instanceDistanceStart",new J.InterleavedBufferAttribute(ql,1,0)),Ll.setAttribute("instanceDistanceEnd",new J.InterleavedBufferAttribute(ql,1,1)),this}raycast(Ll,Il){const Fl=this.material.worldUnits,Ol=Ll.camera;Ol===null&&!Fl&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const ql=Ll.params.Line2!==void 0&&Ll.params.Line2.threshold||0;sl=Ll.ray;const rc=this.matrixWorld,sc=this.geometry,Kl=this.material;ll=Kl.linewidth+ql,sc.boundingSphere===null&&sc.computeBoundingSphere(),il.copy(sc.boundingSphere).applyMatrix4(rc);let Gl;if(Fl)Gl=ll*.5;else{const Wl=Math.max(Ol.near,il.distanceToPoint(sl.origin));Gl=dl(Ol,Wl,Kl.resolution)}if(il.radius+=Gl,sl.intersectsSphere(il)===!1)return;sc.boundingBox===null&&sc.computeBoundingBox(),rl.copy(sc.boundingBox).applyMatrix4(rc);let kl;if(Fl)kl=ll*.5;else{const Wl=Math.max(Ol.near,rl.distanceToPoint(sl.origin));kl=dl(Ol,Wl,Kl.resolution)}rl.expandByScalar(kl),sl.intersectsBox(rl)!==!1&&(Fl?gl(this,Il):_l(this,Ol,Il))}onBeforeRender(Ll){const Il=this.material.uniforms;Il&&Il.resolution&&(Ll.getViewport(ba),this.material.uniforms.resolution.value.set(ba.z,ba.w))}}ua.LineSegments2=vl}(LineSegments2$1)),LineSegments2$1}var hasRequiredLine2$1;function requireLine2$1(){return hasRequiredLine2$1||(hasRequiredLine2$1=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireLineSegments2(),la=requireLineGeometry(),xa=requireLineMaterial();class Aa extends J.LineSegments2{constructor(Sa=new la.LineGeometry,Ma=new xa.LineMaterial({color:Math.random()*16777215})){super(Sa,Ma),this.isLine2=!0,this.type="Line2"}}ua.Line2=Aa}(Line2$1)),Line2$1}var LightProbeHelper={},hasRequiredLightProbeHelper;function requireLightProbeHelper(){return hasRequiredLightProbeHelper||(hasRequiredLightProbeHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la extends J.Mesh{constructor(Aa,ba){const Sa=new J.ShaderMaterial({type:"LightProbeHelperMaterial",uniforms:{sh:{value:Aa.sh.coefficients},intensity:{value:Aa.intensity}},vertexShader:["varying vec3 vNormal;","void main() {"," vNormal = normalize( normalMatrix * normal );"," gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join(`
|
|
7138
7138
|
`),fragmentShader:["#define RECIPROCAL_PI 0.318309886","vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {"," // matrix is assumed to be orthogonal"," return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );","}","// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf","vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {"," // normal is assumed to have unit length"," float x = normal.x, y = normal.y, z = normal.z;"," // band 0"," vec3 result = shCoefficients[ 0 ] * 0.886227;"," // band 1"," result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;"," result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;"," result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;"," // band 2"," result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;"," result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;"," result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );"," result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;"," result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );"," return result;","}","uniform vec3 sh[ 9 ]; // sh coefficients","uniform float intensity; // light probe intensity","varying vec3 vNormal;","void main() {"," vec3 normal = normalize( vNormal );"," vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );"," vec3 irradiance = shGetIrradianceAt( worldNormal, sh );"," vec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;"," gl_FragColor = linearToOutputTexel( vec4( outgoingLight, 1.0 ) );","}"].join(`
|
|
7139
|
-
`)}),Ma=new J.SphereGeometry(1,32,16);super(Ma,Sa),this.lightProbe=Aa,this.size=ba,this.type="LightProbeHelper",this.onBeforeRender()}dispose(){this.geometry.dispose(),this.material.dispose()}onBeforeRender(){this.position.copy(this.lightProbe.position),this.scale.set(1,1,1).multiplyScalar(this.size),this.material.uniforms.intensity.value=this.lightProbe.intensity}}ua.LightProbeHelper=la}(LightProbeHelper)),LightProbeHelper}var VertexTangentsHelper={},hasRequiredVertexTangentsHelper;function requireVertexTangentsHelper(){return hasRequiredVertexTangentsHelper||(hasRequiredVertexTangentsHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=new J.Vector3,xa=new J.Vector3;class Aa extends J.LineSegments{constructor(Sa,Ma=1,Ra=65535){const Ia=new J.BufferGeometry,La=Sa.geometry.attributes.tangent.count,Fa=new J.Float32BufferAttribute(La*2*3,3);Ia.setAttribute("position",Fa),super(Ia,new J.LineBasicMaterial({color:Ra,toneMapped:!1})),this.object=Sa,this.size=Ma,this.type="VertexTangentsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0);const Sa=this.object.matrixWorld,Ma=this.geometry.attributes.position,Ra=this.object.geometry,Ia=Ra.attributes.position,La=Ra.attributes.tangent;let Fa=0;for(let ka=0,el=Ia.count;ka<el;ka++)la.fromBufferAttribute(Ia,ka).applyMatrix4(Sa),xa.fromBufferAttribute(La,ka),xa.transformDirection(Sa).multiplyScalar(this.size).add(la),Ma.setXYZ(Fa,la.x,la.y,la.z),Fa=Fa+1,Ma.setXYZ(Fa,xa.x,xa.y,xa.z),Fa=Fa+1;Ma.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}ua.VertexTangentsHelper=Aa}(VertexTangentsHelper)),VertexTangentsHelper}var PositionalAudioHelper={},hasRequiredPositionalAudioHelper;function requirePositionalAudioHelper(){return hasRequiredPositionalAudioHelper||(hasRequiredPositionalAudioHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la extends J.Line{constructor(Aa,ba=1,Sa=16,Ma=2){const Ra=new J.BufferGeometry,Ia=Sa+Ma*2,La=new Float32Array((Ia*3+3)*3);Ra.setAttribute("position",new J.BufferAttribute(La,3));const Fa=new J.LineBasicMaterial({color:65280}),ka=new J.LineBasicMaterial({color:16776960});super(Ra,[ka,Fa]),this.type="PositionalAudioHelper",this.audio=Aa,this.range=ba,this.divisionsInnerAngle=Sa,this.divisionsOuterAngle=Ma,this.update()}update(){const Aa=this.audio,ba=this.range,Sa=this.divisionsInnerAngle,Ma=this.divisionsOuterAngle,Ra=J.MathUtils.degToRad(Aa.panner.coneInnerAngle),Ia=J.MathUtils.degToRad(Aa.panner.coneOuterAngle),La=Ra/2,Fa=Ia/2;let ka=0,el=0,tl,rl;const il=this.geometry,nl=il.attributes.position;il.clearGroups();function sl(ll,dl,gl,_l){const vl=(dl-ll)/gl;for(nl.setXYZ(ka,0,0,0),el++,tl=ll;tl<dl;tl+=vl)rl=ka+el,nl.setXYZ(rl,Math.sin(tl)*ba,0,Math.cos(tl)*ba),nl.setXYZ(rl+1,Math.sin(Math.min(tl+vl,dl))*ba,0,Math.cos(Math.min(tl+vl,dl))*ba),nl.setXYZ(rl+2,0,0,0),el+=3;il.addGroup(ka,el,_l),ka+=el,el=0}sl(-Fa,-La,Ma,0),sl(-La,La,Sa,1),sl(La,Fa,Ma,0),nl.needsUpdate=!0,Ra===Ia&&(this.material[0].visible=!1)}dispose(){this.geometry.dispose(),this.material[0].dispose(),this.material[1].dispose()}}ua.PositionalAudioHelper=la}(PositionalAudioHelper)),PositionalAudioHelper}var VertexNormalsHelper={},hasRequiredVertexNormalsHelper;function requireVertexNormalsHelper(){return hasRequiredVertexNormalsHelper||(hasRequiredVertexNormalsHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=new J.Vector3,xa=new J.Vector3,Aa=new J.Matrix3;class ba extends J.LineSegments{constructor(Ma,Ra=1,Ia=16711680){const La=new J.BufferGeometry,Fa=Ma.geometry.attributes.normal.count,ka=new J.Float32BufferAttribute(Fa*2*3,3);La.setAttribute("position",ka),super(La,new J.LineBasicMaterial({color:Ia,toneMapped:!1})),this.object=Ma,this.size=Ra,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),Aa.getNormalMatrix(this.object.matrixWorld);const Ma=this.object.matrixWorld,Ra=this.geometry.attributes.position,Ia=this.object.geometry;if(Ia){const La=Ia.attributes.position,Fa=Ia.attributes.normal;let ka=0;for(let el=0,tl=La.count;el<tl;el++)la.fromBufferAttribute(La,el).applyMatrix4(Ma),xa.fromBufferAttribute(Fa,el),xa.applyMatrix3(Aa).normalize().multiplyScalar(this.size).add(la),Ra.setXYZ(ka,la.x,la.y,la.z),ka=ka+1,Ra.setXYZ(ka,xa.x,xa.y,xa.z),ka=ka+1}Ra.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}ua.VertexNormalsHelper=ba}(VertexNormalsHelper)),VertexNormalsHelper}var RectAreaLightHelper={},hasRequiredRectAreaLightHelper;function requireRectAreaLightHelper(){return hasRequiredRectAreaLightHelper||(hasRequiredRectAreaLightHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la extends J.Line{constructor(Aa,ba){const Sa=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],Ma=new J.BufferGeometry;Ma.setAttribute("position",new J.Float32BufferAttribute(Sa,3)),Ma.computeBoundingSphere();const Ra=new J.LineBasicMaterial({fog:!1});super(Ma,Ra),this.light=Aa,this.color=ba,this.type="RectAreaLightHelper";const Ia=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],La=new J.BufferGeometry;La.setAttribute("position",new J.Float32BufferAttribute(Ia,3)),La.computeBoundingSphere(),this.add(new J.Mesh(La,new J.MeshBasicMaterial({side:J.BackSide,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const Aa=this.material.color,ba=Math.max(Aa.r,Aa.g,Aa.b);ba>1&&Aa.multiplyScalar(1/ba),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}ua.RectAreaLightHelper=la}(RectAreaLightHelper)),RectAreaLightHelper}var RectAreaLightUniformsLib={},hasRequiredRectAreaLightUniformsLib;function requireRectAreaLightUniformsLib(){return hasRequiredRectAreaLightUniformsLib||(hasRequiredRectAreaLightUniformsLib=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la{static init(){const Aa=[1,0,0,2e-5,1,0,0,503905e-9,1,0,0,.00201562,1,0,0,.00453516,1,0,0,.00806253,1,0,0,.0125978,1,0,0,.018141,1,0,0,.0246924,1,0,0,.0322525,1,0,0,.0408213,1,0,0,.0503999,1,0,0,.0609894,1,0,0,.0725906,1,0,0,.0852058,1,0,0,.0988363,1,0,0,.113484,1,0,0,.129153,1,0,0,.145839,1,0,0,.163548,1,0,0,.182266,1,0,0,.201942,1,0,0,.222314,1,0,0,.241906,1,0,0,.262314,1,0,0,.285754,1,0,0,.310159,1,0,0,.335426,1,0,0,.361341,1,0,0,.387445,1,0,0,.412784,1,0,0,.438197,1,0,0,.466966,1,0,0,.49559,1,0,0,.523448,1,0,0,.549938,1,0,0,.57979,1,0,0,.608746,1,0,0,.636185,1,0,0,.664748,1,0,0,.69313,1,0,0,.71966,1,0,0,.747662,1,0,0,.774023,1,0,0,.799775,1,0,0,.825274,1,0,0,.849156,1,0,0,.873248,1,0,0,.89532,1,0,0,.917565,1,0,0,.937863,1,0,0,.958139,1,0,0,.976563,1,0,0,.994658,1,0,0,1.0112,1,0,0,1.02712,1,0,0,1.04189,1,0,0,1.05568,1,0,0,1.06877,1,0,0,1.08058,1,0,0,1.09194,1,0,0,1.10191,1,0,0,1.11161,1,0,0,1.1199,1,0,0,1.12813,.999547,-448815e-12,.0224417,199902e-10,.999495,-113079e-10,.0224406,503651e-9,.999496,-452317e-10,.0224406,.00201461,.999496,-101772e-9,.0224406,.00453287,.999495,-180928e-9,.0224406,.00805845,.999497,-282702e-9,.0224406,.0125914,.999496,-407096e-9,.0224406,.0181319,.999498,-554114e-9,.0224406,.02468,.999499,-723768e-9,.0224406,.0322363,.999495,-916058e-9,.0224405,.0408009,.999499,-.00113101,.0224408,.050375,.999494,-.00136863,.0224405,.0609586,.999489,-.00162896,.0224401,.0725537,.999489,-.00191201,.0224414,.0851619,.999498,-.00221787,.0224413,.0987867,.999492,-.00254642,.0224409,.113426,.999507,-.00289779,.0224417,.129088,.999494,-.0032716,.0224386,.145767,.999546,-.0036673,.0224424,.163472,.999543,-.00408166,.0224387,.182182,.999499,-.00450056,.0224338,.201843,.999503,-.00483661,.0224203,.222198,.999546,-.00452928,.022315,.241714,.999508,-.00587403,.0224329,.262184,.999509,-.00638806,.0224271,.285609,.999501,-.00691028,.0224166,.309998,.999539,-.00741979,.0223989,.335262,.999454,-.00786282,.0223675,.361154,.999529,-.00811928,.0222828,.387224,.999503,-.00799941,.0221063,.41252,.999561,-.00952753,.0223057,.438006,.999557,-.0099134,.0222065,.466735,.999541,-.0100935,.0220402,.495332,.999562,-.00996821,.0218067,.523197,.999556,-.0105031,.0217096,.550223,.999561,-.0114191,.0217215,.579498,.999588,-.0111818,.0213357,.608416,.999633,-.0107725,.0208689,.635965,.999527,-.0121671,.0210149,.664476,.999508,-.0116005,.020431,.692786,.999568,-.0115604,.0199791,.719709,.999671,-.0121117,.0197415,.74737,.999688,-.0110769,.0188846,.773692,.99962,-.0122368,.0188452,.799534,.999823,-.0110325,.0178001,.825046,.999599,-.0114923,.0174221,.849075,.999619,-.0105923,.0164345,.872999,.999613,-.0105988,.0158227,.895371,.99964,-.00979861,.0148131,.917364,.99977,-.00967238,.0140721,.938002,.999726,-.00869175,.0129543,.957917,.99973,-.00866872,.0122329,.976557,.999773,-.00731956,.0108958,.994459,.999811,-.00756027,.0102715,1.01118,.999862,-.00583732,.00878781,1.02701,.999835,-.00631438,.00827529,1.04186,.999871,-.00450785,.00674583,1.05569,.999867,-.00486079,.00621041,1.06861,.999939,-.00322072,.00478301,1.08064,.999918,-.00318199,.00406395,1.09181,1.00003,-.00193348,.00280682,1.10207,.999928,-.00153729,.00198741,1.11152,.999933,-623666e-9,917714e-9,1.12009,1,-102387e-11,907581e-12,1.12813,.997866,-896716e-12,.0448334,199584e-10,.997987,-225945e-10,.0448389,502891e-9,.997987,-903781e-10,.0448388,.00201156,.997985,-203351e-9,.0448388,.00452602,.997986,-361514e-9,.0448388,.00804629,.997987,-56487e-8,.0448389,.0125724,.997988,-813423e-9,.0448389,.0181045,.997984,-.00110718,.0448387,.0246427,.997985,-.00144616,.0448388,.0321875,.997987,-.00183038,.044839,.0407392,.997983,-.00225987,.0448387,.0502986,.997991,-.00273467,.0448389,.0608667,.997984,-.00325481,.0448384,.0724444,.998002,-.00382043,.044839,.0850348,.997997,-.00443145,.0448396,.0986372,.998007,-.00508796,.0448397,.113255,.998008,-.00578985,.04484,.128891,.998003,-.00653683,.0448384,.145548,.997983,-.00732713,.0448358,.163221,.997985,-.00815454,.0448358,.181899,.998005,-.00898985,.0448286,.201533,.998026,-.00964404,.0447934,.221821,.998055,-.00922677,.044611,.241282,.99804,-.0117361,.0448245,.261791,.998048,-.0127628,.0448159,.285181,.998088,-.0138055,.0447996,.30954,.998058,-.0148206,.0447669,.334751,.998099,-.0156998,.044697,.36061,.998116,-.0161976,.0445122,.386603,.998195,-.015945,.0441711,.411844,.998168,-.0183947,.0444255,.43773,.998184,-.0197913,.0443809,.466009,.998251,-.0201426,.0440689,.494574,.998305,-.0198847,.0435632,.522405,.998273,-.0210577,.043414,.549967,.998254,-.0227901,.0433943,.578655,.998349,-.0223108,.0426529,.60758,.99843,-.0223088,.042,.635524,.998373,-.0241141,.0418987,.663621,.998425,-.0231446,.0408118,.691906,.998504,-.0233684,.0400565,.719339,.998443,-.0241652,.0394634,.74643,.99848,-.0228715,.0380002,.773086,.998569,-.023519,.0372322,.798988,.998619,-.0223108,.0356468,.824249,.998594,-.0223105,.034523,.848808,.998622,-.0213426,.0328887,.87227,.998669,-.0207912,.0314374,.895157,.998705,-.0198416,.0296925,.916769,.998786,-.0189168,.0279634,.937773,.998888,-.0178811,.0261597,.957431,.99906,-.0166845,.0242159,.976495,.999038,-.0155464,.0222638,.994169,.999237,-.0141349,.0201967,1.01112,.999378,-.0129324,.0181744,1.02692,.999433,-.0113192,.0159898,1.04174,.999439,-.0101244,.0140385,1.05559,.999614,-.00837456,.0117826,1.06852,.999722,-.00721769,.00983745,1.08069,.999817,-.00554067,.00769002,1.09176,.99983,-.00426961,.005782,1.10211,.999964,-.00273904,.00374503,1.11152,1.00001,-.00136739,.00187176,1.12031,.999946,393227e-10,-28919e-9,1.12804,.995847,-13435e-10,.0671785,19916e-9,.995464,-338387e-10,.0671527,501622e-9,.99547,-135355e-9,.0671531,.00200649,.995471,-30455e-8,.0671532,.00451461,.99547,-541423e-9,.0671531,.008026,.995471,-84598e-8,.0671531,.0125407,.99547,-.00121823,.0671531,.0180589,.99547,-.00165817,.0671531,.0245806,.995463,-.00216583,.0671526,.0321062,.995468,-.00274127,.0671527,.0406366,.995474,-.00338447,.0671534,.0501717,.995473,-.00409554,.0671533,.0607131,.995478,-.00487451,.0671531,.0722618,.995476,-.00572148,.0671532,.0848191,.995477,-.00663658,.0671539,.0983882,.995498,-.00761986,.0671541,.112972,.995509,-.00867094,.0671542,.128568,.995509,-.00978951,.0671531,.145183,.995503,-.0109725,.0671491,.162808,.995501,-.012211,.0671465,.181441,.99553,-.0134565,.0671371,.201015,.99555,-.014391,.0670831,.221206,.99558,-.014351,.0668883,.240813,.995577,-.0173997,.0671055,.261257,.995602,-.0191111,.0671178,.284467,.995623,-.0206705,.0670946,.308765,.995658,-.022184,.0670472,.333905,.995705,-.0234832,.0669417,.359677,.995719,-.0241933,.0666714,.385554,.995786,-.0243539,.066266,.410951,.995887,-.0271866,.0664367,.437163,.995944,-.0296012,.0664931,.464842,.996004,-.0301045,.0660105,.49332,.996128,-.0298311,.0652694,.521131,.996253,-.0316426,.0650739,.549167,.996244,-.0339043,.0649433,.57737,.996309,-.033329,.0638926,.606073,.996417,-.0338935,.0630849,.634527,.996372,-.0353104,.0625083,.66256,.996542,-.0348942,.0611986,.690516,.996568,-.0351614,.060069,.718317,.996711,-.0354317,.0588522,.74528,.996671,-.0349513,.0571902,.772061,.996865,-.0345622,.0555321,.798089,.996802,-.0342566,.0537816,.823178,.996992,-.0330862,.0516095,.847949,.996944,-.0324666,.0495537,.871431,.997146,-.0309544,.0470302,.894357,.997189,-.0299372,.0446043,.916142,.997471,-.0281389,.0418812,.937193,.997515,-.0268702,.0391823,.957,.997812,-.0247166,.0361338,.975936,.998027,-.0233525,.0333945,.99391,.998233,-.0209839,.0301917,1.01075,.998481,-.0194309,.027271,1.02669,.998859,-.0169728,.0240162,1.04173,.99894,-.0152322,.0210517,1.05551,.999132,-.0127497,.0178632,1.06856,.999369,-.0108282,.014787,1.08054,.999549,-.00845886,.0116185,1.09185,.999805,-.0063937,.00867209,1.10207,.99985,-.00414582,.00566823,1.1117,.999912,-.00207443,.00277562,1.12022,1.00001,870226e-10,-53766e-9,1.12832,.991943,-178672e-11,.0893382,198384e-10,.991952,-450183e-10,.089339,499849e-9,.991956,-180074e-9,.0893394,.0019994,.991955,-405167e-9,.0893393,.00449867,.991953,-720298e-9,.0893391,.00799764,.991955,-.00112548,.0893393,.0124964,.991957,-.0016207,.0893395,.0179951,.991958,-.00220601,.0893396,.0244939,.991947,-.00288137,.0893385,.0319929,.991962,-.00364693,.0893399,.0404933,.991965,-.00450264,.0893399,.049995,.99198,-.00544862,.0893411,.0604995,.99197,-.00648491,.0893397,.0720074,.991976,-.00761164,.089341,.0845207,.99198,-.00882891,.0893405,.0980413,.991982,-.0101367,.0893396,.112571,.992008,-.011535,.0893415,.128115,.992026,-.0130228,.0893414,.144672,.992064,-.0145966,.0893418,.162241,.992041,-.0162421,.0893359,.180801,.992086,-.0178888,.0893214,.200302,.992157,-.0190368,.0892401,.220332,.992181,-.0195584,.0890525,.240144,.992175,-.0227257,.0892153,.260728,.99221,-.0254195,.089304,.283473,.99222,-.0274883,.0892703,.307673,.992317,-.0294905,.0892027,.332729,.992374,-.0311861,.0890577,.358387,.992505,-.0320656,.0886994,.384102,.992568,-.0329715,.0883198,.409767,.992675,-.036006,.0883602,.436145,.992746,-.0392897,.0884591,.463217,.992873,-.0399337,.0878287,.491557,.992934,-.040231,.0870108,.519516,.993091,-.0422013,.0865857,.547741,.993259,-.0443503,.0861937,.575792,.993455,-.0446368,.0851187,.604233,.993497,-.0454299,.0840576,.632925,.993694,-.0463296,.0829671,.660985,.993718,-.0470619,.0817185,.688714,.993973,-.0468838,.0800294,.716743,.994207,-.046705,.0781286,.74377,.994168,-.0469698,.0763337,.77042,.9945,-.0456816,.0738184,.796659,.994356,-.0455518,.0715545,.821868,.994747,-.0439488,.0686085,.846572,.994937,-.0430056,.065869,.870435,.995142,-.0413414,.0626446,.893272,.995451,-.0396521,.05929,.915376,.995445,-.0378453,.0558503,.936196,.995967,-.0355219,.0520949,.956376,.996094,-.0335146,.048377,.975327,.996622,-.030682,.0442575,.993471,.996938,-.0285504,.0404693,1.01052,.997383,-.0253399,.0360903,1.02637,.997714,-.0231651,.0322176,1.04139,.998249,-.0198138,.0278433,1.05542,.998596,-.0174337,.0238759,1.06846,.998946,-.0141349,.0195944,1.08056,.99928,-.0115603,.0156279,1.09181,.999507,-.00839065,.0114607,1.10213,.999697,-.005666,.00763325,1.11169,.999869,-.00269902,.00364946,1.12042,1.00001,623836e-10,-319288e-10,1.12832,.987221,-222675e-11,.111332,197456e-10,.98739,-561116e-10,.111351,497563e-9,.987448,-224453e-9,.111357,.00199031,.987441,-505019e-9,.111357,.0044782,.987442,-897816e-9,.111357,.00796129,.987442,-.00140284,.111357,.0124396,.987444,-.00202012,.111357,.0179132,.987442,-.00274964,.111357,.0243824,.987446,-.00359147,.111357,.0318474,.987435,-.00454562,.111356,.0403086,.987461,-.00561225,.111358,.0497678,.987458,-.00679125,.111358,.0602239,.987443,-.0080828,.111356,.0716792,.987476,-.0094872,.111358,.0841364,.98749,-.0110044,.111361,.097597,.987508,-.0126344,.111362,.112062,.987494,-.0143767,.111357,.127533,.987526,-.0162307,.111359,.144015,.987558,-.0181912,.111361,.161502,.987602,-.0202393,.111355,.179979,.987692,-.022273,.111346,.199386,.987702,-.0235306,.111215,.219183,.987789,-.0247628,.111061,.239202,.987776,-.0280668,.111171,.259957,.987856,-.0316751,.111327,.282198,.987912,-.0342468,.111282,.306294,.988,-.0367205,.111198,.331219,.988055,-.0387766,.110994,.356708,.988241,-.0397722,.110547,.382234,.988399,-.0416076,.110198,.408227,.988539,-.0448192,.110137,.434662,.988661,-.0483793,.110143,.461442,.988967,-.0495895,.109453,.489318,.989073,-.0506797,.108628,.517516,.989274,-.0526953,.108003,.545844,.989528,-.054578,.107255,.573823,.989709,-.0561503,.106294,.601944,.989991,-.056866,.104896,.630855,.990392,-.0572914,.103336,.658925,.990374,-.0586224,.10189,.686661,.990747,-.0584764,.099783,.714548,.991041,-.0582662,.0974309,.74186,.991236,-.0584118,.0951678,.768422,.991585,-.0573055,.0921581,.794817,.991984,-.0564241,.0891167,.820336,.9921,-.0553608,.085805,.84493,.992749,-.0533816,.0820354,.868961,.99288,-.0518661,.0782181,.891931,.993511,-.0492492,.0738935,.914186,.993617,-.0471956,.0696402,.93532,.99411,-.044216,.0649659,.95543,.994595,-.0416654,.0603177,.974685,.994976,-.0384314,.0553493,.992807,.995579,-.0353491,.0503942,1.00996,.996069,-.0319787,.0452123,1.02606,.996718,-.028472,.0400112,1.04114,.997173,-.0250789,.0349456,1.05517,.997818,-.0213326,.029653,1.0683,.998318,-.0178509,.024549,1.0805,.998853,-.0141118,.0194197,1.09177,.999218,-.0105914,.0143869,1.1022,.999594,-.00693474,.00943517,1.11175,.99975,-.00340478,.00464051,1.12056,1.00001,109172e-9,-112821e-9,1.12853,.983383,-266524e-11,.133358,196534e-10,.981942,-671009e-10,.133162,494804e-9,.981946,-268405e-9,.133163,.00197923,.981944,-603912e-9,.133163,.00445326,.981941,-.00107362,.133162,.00791693,.981946,-.00167755,.133163,.0123703,.981944,-.00241569,.133162,.0178135,.981945,-.00328807,.133163,.0242466,.981945,-.00429472,.133162,.03167,.981955,-.00543573,.133164,.0400846,.981951,-.00671105,.133163,.0494901,.981968,-.00812092,.133165,.0598886,.981979,-.00966541,.133166,.0712811,.981996,-.0113446,.133168,.083669,.982014,-.0131585,.133169,.0970533,.982011,-.0151073,.133167,.111438,.982062,-.0171906,.133172,.126826,.9821,-.0194067,.133175,.143215,.982149,-.0217502,.133176,.160609,.982163,-.0241945,.133173,.178981,.982247,-.0265907,.133148,.198249,.982291,-.027916,.132974,.217795,.982396,-.0299663,.132868,.238042,.982456,-.0334544,.132934,.258901,.982499,-.0378636,.133137,.280639,.982617,-.0409274,.133085,.304604,.98274,-.0438523,.132985,.329376,.982944,-.0462288,.132728,.354697,.98308,-.0475995,.132228,.380102,.983391,-.0501901,.131924,.406256,.983514,-.0535899,.131737,.432735,.98373,-.0571858,.131567,.459359,.984056,-.0592353,.130932,.486637,.984234,-.0610488,.130092,.51509,.984748,-.0630758,.12923,.543461,.985073,-.0647398,.128174,.571376,.985195,-.0671941,.127133,.599414,.985734,-.0681345,.125576,.628134,.986241,-.0686089,.123639,.656399,.986356,-.0698511,.121834,.684258,.986894,-.0700931,.119454,.711818,.987382,-.0698321,.116718,.739511,.988109,-.0693975,.113699,.766267,.988363,-.0689584,.110454,.792456,.989112,-.0672353,.106602,.81813,.989241,-.0662034,.10267,.842889,.990333,-.0638938,.0981381,.867204,.990591,-.0618534,.0935388,.89038,.991106,-.0593117,.088553,.912576,.991919,-.0562676,.0832187,.934118,.992111,-.0534085,.0778302,.954254,.992997,-.0495459,.0720453,.973722,.993317,-.0463707,.0663458,.991949,.994133,-.0421245,.0601883,1.00936,.994705,-.0384977,.0542501,1.02559,.995495,-.0340956,.0479862,1.04083,.996206,-.030105,.041887,1.05497,.996971,-.0256095,.0355355,1.06824,.997796,-.0213932,.0293655,1.08056,.998272,-.0169612,.0232926,1.09182,.998857,-.0126756,.0172786,1.10219,.99939,-.00832486,.0113156,1.11192,.999752,-.00410826,.00557892,1.12075,1,150957e-9,-119101e-9,1.12885,.975169,-309397e-11,.154669,195073e-10,.975439,-779608e-10,.154712,491534e-9,.975464,-311847e-9,.154716,.00196617,.975464,-701656e-9,.154716,.00442387,.975462,-.0012474,.154715,.0078647,.975461,-.00194906,.154715,.0122886,.975464,-.00280667,.154715,.0176959,.975468,-.00382025,.154716,.0240867,.975471,-.00498985,.154716,.0314612,.975472,-.00631541,.154717,.0398199,.975486,-.00779719,.154718,.0491639,.975489,-.00943505,.154718,.0594932,.975509,-.0112295,.154721,.0708113,.97554,-.0131802,.154724,.0831176,.975557,-.0152876,.154726,.096415,.975585,-.0175512,.154728,.110705,.975605,-.0199713,.154729,.125992,.975645,-.0225447,.154729,.142272,.975711,-.0252649,.154735,.159549,.975788,-.0280986,.154736,.177805,.975872,-.0308232,.154704,.196911,.975968,-.0324841,.154525,.216324,.976063,-.0351281,.154432,.236628,.976157,-.0388618,.15446,.257539,.976204,-.0437704,.154665,.278975,.976358,-.047514,.154652,.302606,.976571,-.0508638,.154535,.327204,.976725,-.0534995,.154221,.352276,.977013,-.0555547,.153737,.377696,.977294,-.0586728,.153403,.403855,.977602,-.0622715,.15312,.430333,.977932,-.0658166,.152755,.456855,.978241,-.0689877,.152233,.483668,.978602,-.0712805,.15132,.512097,.979234,-.0732775,.150235,.540455,.97977,-.075163,.148978,.568486,.979995,-.0778026,.147755,.596524,.98078,-.0791854,.146019,.624825,.981628,-.0799666,.143906,.653403,.982067,-.0808532,.141561,.681445,.98271,-.0816024,.139025,.708918,.983734,-.0812511,.135764,.736594,.98431,-.0806201,.132152,.763576,.985071,-.0801605,.12846,.789797,.98618,-.0784208,.124084,.815804,.986886,-.0766643,.1193,.840869,.987485,-.0747744,.114236,.864952,.988431,-.0716701,.108654,.888431,.988886,-.0691609,.102994,.910963,.990024,-.0654048,.0967278,.932629,.990401,-.0619765,.090384,.95313,.991093,-.0579296,.0837885,.972587,.992018,-.0536576,.0770171,.991184,.992536,-.0493719,.0701486,1.00863,.993421,-.0444813,.062953,1.02494,.993928,-.040008,.0560455,1.04017,.994994,-.0347982,.04856,1.05463,.995866,-.0301017,.0416152,1.06807,.996916,-.0248225,.0342597,1.08039,.997766,-.0199229,.0271668,1.09177,.998479,-.0147422,.0201387,1.10235,.99921,-.00980173,.0131944,1.11206,.999652,-.0047426,.00640712,1.12104,.999998,891673e-10,-10379e-8,1.12906,.967868,-351885e-11,.175947,193569e-10,.968001,-886733e-10,.175972,487782e-9,.96801,-354697e-9,.175973,.00195115,.968012,-798063e-9,.175974,.00439006,.968011,-.00141879,.175973,.00780461,.968011,-.00221686,.175973,.0121948,.968016,-.00319231,.175974,.0175607,.968019,-.00434515,.175974,.0239027,.968018,-.00567538,.175974,.0312208,.968033,-.00718308,.175977,.0395158,.968049,-.00886836,.175979,.0487885,.968047,-.0107312,.175978,.0590394,.968072,-.0127719,.175981,.0702705,.968108,-.0149905,.175986,.0824836,.968112,-.0173866,.175985,.0956783,.968173,-.0199611,.175993,.109862,.96827,-.0227128,.176008,.125033,.968292,-.025639,.17601,.141193,.968339,-.0287299,.176007,.158336,.968389,-.0319399,.176001,.176441,.968501,-.034941,.175962,.195359,.968646,-.0370812,.175793,.214686,.968789,-.0402329,.175708,.234973,.96886,-.0442601,.1757,.255871,.969013,-.049398,.175876,.277238,.969242,-.0539932,.17594,.300326,.969419,-.0577299,.175781,.324702,.969763,-.0605643,.175432,.349527,.970093,-.0634488,.174992,.374976,.970361,-.0670589,.174611,.401097,.970825,-.0708246,.174226,.427496,.971214,-.0742871,.173684,.453858,.971622,-.0782608,.173186,.480637,.972175,-.0813151,.172288,.508655,.972944,-.0832678,.170979,.536973,.973595,-.0855964,.169573,.565138,.974345,-.0882163,.168152,.593222,.975233,-.0901671,.166314,.621201,.976239,-.0912111,.163931,.649919,.977289,-.0916959,.161106,.678011,.978076,-.0927061,.158272,.705717,.979533,-.0925562,.15475,.733228,.980335,-.0918159,.150638,.760454,.981808,-.0908508,.146201,.786918,.983061,-.0896172,.141386,.812953,.984148,-.0871588,.135837,.838281,.985047,-.0850624,.130135,.862594,.986219,-.0818541,.123882,.88633,.987043,-.0784523,.117126,.908952,.988107,-.0749601,.110341,.930744,.988955,-.0703548,.102885,.951728,.989426,-.0662798,.0954167,.971166,.990421,-.0610834,.0876331,.989984,.991032,-.0562936,.0797785,1.00765,.992041,-.0508154,.0718166,1.02434,.992794,-.0454045,.0637125,1.03976,.993691,-.0398194,.0555338,1.05418,.994778,-.0341482,.0473388,1.06772,.995915,-.028428,.0391016,1.08028,.997109,-.022642,.0309953,1.09185,.998095,-.0168738,.0230288,1.10247,.998985,-.0111274,.0150722,1.11229,.999581,-.00543881,.00740605,1.12131,1.00003,162239e-9,-105549e-9,1.12946,.959505,-393734e-11,.196876,191893e-10,.959599,-992157e-10,.196895,483544e-9,.959641,-396868e-9,.196903,.0019342,.959599,-892948e-9,.196895,.00435193,.959603,-.00158747,.196896,.0077368,.959604,-.00248042,.196896,.0120888,.959605,-.00357184,.196896,.0174082,.959605,-.00486169,.196896,.0236949,.959613,-.00635008,.196897,.0309497,.959619,-.00803696,.196898,.0391725,.959636,-.00992255,.196901,.0483649,.959634,-.0120067,.1969,.0585266,.959675,-.0142898,.196906,.0696609,.959712,-.0167717,.196911,.0817678,.959752,-.0194524,.196918,.0948494,.959807,-.0223321,.196925,.10891,.959828,-.0254091,.196924,.123947,.959906,-.0286815,.196934,.139968,.960005,-.0321371,.196944,.156968,.960071,-.0357114,.196936,.17491,.960237,-.0389064,.196882,.193597,.960367,-.041623,.196731,.21285,.960562,-.0452655,.196654,.233075,.960735,-.0496207,.196643,.253941,.960913,-.0549379,.196774,.275278,.961121,-.0603414,.196893,.297733,.96139,-.0644244,.196717,.321877,.961818,-.067556,.196314,.346476,.962175,-.0712709,.195917,.371907,.96255,-.0752848,.1955,.397916,.963164,-.0792073,.195026,.424229,.963782,-.0828225,.194424,.450637,.964306,-.0873119,.193831,.477288,.964923,-.0911051,.192973,.504716,.966048,-.093251,.19151,.533053,.967024,-.0958983,.190013,.561366,.968038,-.09835,.188253,.589464,.969152,-.100754,.186257,.617433,.970557,-.102239,.183775,.645801,.972104,-.102767,.180645,.674278,.973203,-.103492,.177242,.702004,.975123,-.103793,.17345,.729529,.97641,-.102839,.168886,.756712,.978313,-.101687,.163892,.783801,.980036,-.100314,.158439,.809671,.981339,-.097836,.152211,.835402,.982794,-.0950006,.145679,.860081,.984123,-.0920994,.138949,.883757,.984918,-.0878641,.131283,.90685,.985999,-.083939,.123464,.928786,.987151,-.0791234,.115324,.94983,.987827,-.0739332,.106854,.96962,.988806,-.0688088,.0982691,.98861,.989588,-.0628962,.0893456,1.00667,.990438,-.0573146,.0805392,1.02344,.991506,-.0509433,.0713725,1.03933,.992492,-.0448724,.0623732,1.05378,.993663,-.0383497,.0530838,1.06747,.994956,-.0319593,.0439512,1.08007,.99634,-.025401,.0347803,1.09182,.99761,-.0189687,.0257954,1.1025,.99863,-.0124441,.0169893,1.11247,.99947,-.00614003,.00829498,1.12151,1.00008,216624e-9,-146107e-9,1.12993,.950129,-434955e-11,.217413,190081e-10,.950264,-10957e-8,.217444,47884e-8,.9503,-438299e-9,.217451,.00191543,.950246,-986124e-9,.21744,.00430951,.950246,-.00175311,.21744,.00766137,.950245,-.00273923,.21744,.011971,.950253,-.00394453,.217441,.0172385,.950258,-.00536897,.217442,.0234641,.950267,-.00701262,.217444,.030648,.950277,-.00887551,.217446,.038791,.950284,-.0109576,.217446,.0478931,.950312,-.0132591,.217451,.0579568,.950334,-.01578,.217454,.0689821,.950378,-.0185204,.217462,.0809714,.950417,-.0214803,.217467,.0939265,.950488,-.0246594,.217479,.10785,.950534,-.0280565,.217483,.122743,.950633,-.0316685,.217498,.138611,.950698,-.0354787,.217499,.155442,.950844,-.0394003,.217507,.173208,.950999,-.0426812,.217419,.191605,.951221,-.0461302,.217317,.21084,.951412,-.0502131,.217238,.230945,.951623,-.0549183,.21722,.251745,.951867,-.0604493,.217306,.273001,.952069,-.0665189,.217466,.294874,.952459,-.0709179,.217266,.318732,.952996,-.0746112,.216891,.34318,.953425,-.0789252,.216503,.36849,.953885,-.0833293,.216042,.394373,.954617,-.087371,.215469,.420505,.955429,-.0914054,.214802,.446907,.956068,-.0961671,.214146,.473522,.957094,-.10048,.213286,.50052,.958372,-.103248,.211796,.528715,.959654,-.106033,.21016,.557065,.961305,-.108384,.208149,.585286,.962785,-.111122,.206024,.613334,.964848,-.112981,.203442,.641334,.966498,-.113717,.19996,.669955,.968678,-.114121,.196105,.698094,.970489,-.114524,.191906,.725643,.972903,-.113792,.186963,.752856,.974701,-.112406,.181343,.780013,.976718,-.110685,.175185,.806268,.978905,-.108468,.168535,.832073,.980267,-.105061,.161106,.857149,.981967,-.101675,.153387,.881145,.983063,-.0974492,.145199,.904255,.984432,-.0925815,.136527,.926686,.985734,-.0877983,.127584,.947901,.986228,-.081884,.118125,.968111,.98719,-.0761208,.108594,.98719,.988228,-.0698196,.0989996,1.00559,.989046,-.0632739,.0890074,1.02246,.990242,-.056522,.0790832,1.03841,.991252,-.0495272,.0689182,1.05347,.992542,-.0425373,.0588592,1.06724,.994096,-.0353198,.0486833,1.08009,.995593,-.028235,.0385977,1.09177,.99711,-.0209511,.0286457,1.10274,.998263,-.0139289,.0188497,1.11262,.999254,-.0067359,.009208,1.12191,.999967,141846e-9,-657764e-10,1.13024,.935608,-474692e-11,.236466,187817e-10,.93996,-11971e-8,.237568,473646e-9,.939959,-478845e-9,.237567,.0018946,.939954,-.0010774,.237566,.00426284,.939956,-.00191538,.237566,.00757842,.939954,-.00299277,.237566,.0118413,.93996,-.00430961,.237567,.0170518,.939969,-.00586589,.237569,.02321,.939982,-.00766166,.237572,.0303164,.939987,-.00969686,.237572,.0383711,.939997,-.0119715,.237574,.0473751,.940031,-.0144858,.237581,.0573298,.940073,-.0172399,.237589,.0682366,.94012,-.0202335,.237598,.080097,.940162,-.0234663,.237604,.0929116,.940237,-.0269387,.237615,.106686,.940328,-.0306489,.237632,.121421,.940419,-.0345917,.237645,.137115,.940522,-.0387481,.237654,.153766,.940702,-.0429906,.237661,.17133,.940871,-.0465089,.237561,.189502,.941103,-.050531,.23748,.208616,.941369,-.0550657,.237423,.228595,.941641,-.0601337,.237399,.249287,.941903,-.0658804,.237443,.270467,.942224,-.0722674,.237597,.292024,.942633,-.0771788,.237419,.315272,.943172,-.0815623,.237068,.339579,.943691,-.0863973,.236682,.364717,.944382,-.0911536,.236213,.390435,.945392,-.0952967,.235562,.416425,.946185,-.0998948,.234832,.442772,.947212,-.104796,.234114,.469347,.948778,-.10928,.233222,.496162,.950149,-.113081,.231845,.523978,.951989,-.115893,.230005,.552295,.953921,-.11846,.227862,.580569,.955624,-.12115,.225439,.608698,.958234,-.123373,.222635,.636696,.960593,-.124519,.219093,.665208,.963201,-.124736,.214749,.693557,.965642,-.125012,.210059,.721334,.968765,-.124661,.204935,.748613,.971753,-.122996,.198661,.776224,.973751,-.120998,.191823,.802461,.976709,-.118583,.184359,.828399,.977956,-.115102,.176437,.853693,.979672,-.111077,.167681,.877962,.981816,-.10688,.158872,.901564,.98238,-.101469,.149398,.924057,.983964,-.0960013,.139436,.945751,.984933,-.0899626,.12943,.966272,.985694,-.0832973,.11894,.985741,.986822,-.0767082,.108349,1.00407,.987725,-.0693614,.0976026,1.02154,.98877,-.06211,.086652,1.03757,.990129,-.0544143,.0756182,1.05296,.991337,-.046744,.0645753,1.06683,.992978,-.0387931,.0534683,1.0798,.994676,-.030973,.0424137,1.09181,.99645,-.0230311,.0314035,1.10286,.997967,-.0152065,.0206869,1.11291,.99922,-.00744837,.010155,1.12237,1.00002,240209e-9,-752767e-10,1.13089,.922948,-515351e-11,.255626,186069e-10,.928785,-129623e-9,.257244,468009e-9,.928761,-51849e-8,.257237,.00187202,.928751,-.0011666,.257235,.00421204,.928751,-.00207395,.257234,.0074881,.928754,-.00324055,.257235,.0117002,.92876,-.00466639,.257236,.0168486,.928763,-.00635149,.257237,.0229334,.928774,-.00829584,.257239,.029955,.928791,-.0104995,.257243,.0379139,.928804,-.0129623,.257245,.0468108,.928847,-.0156846,.257255,.0566473,.92889,-.0186661,.257263,.0674246,.928924,-.0219067,.257268,.0791433,.928989,-.0254066,.257282,.0918076,.92909,-.0291651,.257301,.105419,.92918,-.0331801,.257316,.119978,.92929,-.0374469,.257332,.135491,.929453,-.041939,.257357,.151948,.929586,-.0464612,.257347,.169275,.929858,-.0503426,.257269,.187257,.930125,-.0548409,.257199,.206204,.930403,-.0598063,.257149,.22601,.930726,-.0652437,.257122,.246561,.931098,-.0712376,.257153,.267618,.931396,-.0777506,.257237,.288993,.931947,-.0832374,.257124,.311527,.932579,-.0883955,.25683,.335697,.933194,-.0937037,.256444,.360634,.934013,-.0987292,.255939,.386126,.935307,-.103215,.255282,.412018,.936374,-.108234,.254538,.438292,.93776,-.113234,.253728,.464805,.939599,-.118013,.25275,.491464,.941036,-.122661,.251404,.518751,.94337,-.125477,.249435,.547133,.945318,-.128374,.247113,.575456,.947995,-.130996,.244441,.60372,.950818,-.133438,.241352,.63174,.954378,-.135004,.237849,.659971,.957151,-.135313,.233188,.688478,.960743,-.13521,.228001,.716767,.964352,-.135007,.222249,.744349,.967273,-.133523,.21542,.771786,.969767,-.131155,.208039,.798639,.973195,-.128492,.200076,.824774,.975557,-.125094,.191451,.850222,.977692,-.120578,.18184,.874761,.98026,-.115882,.172102,.898497,.981394,-.110372,.161859,.921636,.982386,-.10415,.15108,.943467,.983783,-.0978128,.140407,.964045,.98422,-.0906171,.129058,.98398,.985447,-.0832921,.117614,1.00276,.986682,-.0754412,.10585,1.02047,.987326,-.0673885,.0940943,1.03678,.988707,-.0592565,.0822093,1.05218,.990185,-.050717,.070192,1.06652,.991866,-.0423486,.0582081,1.07965,.993897,-.0336118,.0460985,1.09188,.995841,-.0252178,.0342737,1.10307,.997605,-.0164893,.0224829,1.11324,.999037,-.00817112,.0110647,1.12262,1.00003,291686e-9,-168673e-9,1.13139,.915304,-552675e-11,.275999,183285e-10,.91668,-139285e-9,.276414,461914e-9,.916664,-55713e-8,.276409,.00184763,.916653,-.00125354,.276406,.00415715,.916651,-.00222851,.276405,.00739053,.916655,-.00348205,.276406,.0115478,.916653,-.00501414,.276405,.0166291,.916667,-.00682478,.276409,.0226346,.91668,-.00891398,.276412,.0295648,.91669,-.0112817,.276413,.0374199,.916727,-.013928,.276422,.0462016,.916759,-.0168528,.276429,.0559101,.916793,-.0200558,.276436,.0665466,.916849,-.0235373,.276448,.0781139,.916964,-.0272973,.276474,.0906156,.917047,-.0313344,.276491,.104051,.917152,-.0356465,.276511,.118424,.917286,-.0402271,.276533,.133736,.917469,-.0450408,.276564,.149978,.917686,-.0497872,.276563,.167057,.917953,-.0540937,.276493,.184846,.918228,-.0590709,.276437,.203614,.918572,-.0644277,.276398,.223212,.918918,-.0702326,.276362,.243584,.919356,-.076484,.276383,.264465,.919842,-.0830808,.276434,.285701,.920451,-.0892972,.276407,.307559,.921113,-.095016,.276128,.331501,.921881,-.100771,.275754,.356207,.923027,-.106029,.275254,.381477,.924364,-.111029,.274595,.40722,.925818,-.116345,.273841,.433385,.92746,-.121424,.272913,.459848,.929167,-.12657,.271837,.486493,.931426,-.131581,.270575,.513432,.934001,-.135038,.268512,.541502,.936296,-.138039,.266135,.569658,.939985,-.140687,.263271,.598375,.943516,-.143247,.260058,.626563,.94782,-.145135,.256138,.654711,.951023,-.145733,.251154,.683285,.955338,-.145554,.245562,.711831,.959629,-.145008,.239265,.739573,.963123,-.144003,.232064,.767027,.966742,-.141289,.224036,.794359,.969991,-.138247,.215305,.820361,.973403,-.134786,.206051,.846548,.975317,-.129966,.195914,.871541,.977647,-.12471,.185184,.895313,.980137,-.119086,.174161,.918398,.981031,-.112297,.162792,.940679,.982037,-.105372,.150952,.961991,.983164,-.097821,.138921,.981913,.983757,-.0897245,.126611,1.00109,.985036,-.0815974,.114228,1.01902,.986289,-.0727725,.101389,1.03604,.987329,-.0639323,.0886476,1.05149,.989193,-.0548109,.0756837,1.06619,.990716,-.045687,.0627581,1.07948,.992769,-.0364315,.0498337,1.09172,.99524,-.0271761,.0370305,1.1033,.997154,-.0179609,.0243959,1.11353,.998845,-.00878063,.0119567,1.12319,1.00002,259038e-9,-108146e-9,1.13177,.903945,-591681e-11,.295126,181226e-10,.903668,-148672e-9,.295037,455367e-9,.903677,-594683e-9,.29504,.00182145,.903673,-.00133805,.295039,.00409831,.903666,-.00237872,.295036,.00728584,.903668,-.00371676,.295037,.0113842,.903679,-.00535212,.29504,.0163936,.903684,-.00728479,.295041,.0223141,.903698,-.00951473,.295044,.0291462,.903718,-.0120419,.295049,.0368904,.903754,-.0148664,.295058,.0455477,.903801,-.017988,.29507,.0551194,.903851,-.0214064,.295082,.0656058,.903921,-.0251219,.295097,.0770109,.904002,-.0291337,.295116,.0893354,.904111,-.033441,.29514,.102583,.904246,-.0380415,.295169,.116755,.904408,-.0429258,.295202,.131853,.904637,-.0480468,.295245,.147869,.904821,-.0529208,.295214,.164658,.905163,-.0577748,.295185,.182274,.905469,-.0631763,.295143,.200828,.905851,-.068917,.295112,.2202,.906322,-.0750861,.295104,.240372,.906761,-.0815855,.295086,.261082,.90735,-.0882138,.295095,.282123,.908087,-.095082,.295139,.303563,.908826,-.101488,.29492,.327028,.909832,-.107577,.294577,.351464,.911393,-.113033,.294115,.376497,.912804,-.118629,.293446,.402115,.914081,-.124232,.292581,.428111,.91637,-.129399,.29166,.454442,.91814,-.134892,.290422,.481024,.921179,-.140069,.289194,.507924,.924544,-.144431,.287421,.535557,.927995,-.147498,.284867,.563984,.931556,-.150197,.281722,.5923,.935777,-.152711,.278207,.620832,.940869,-.154836,.274148,.649069,.945994,-.155912,.269057,.677746,.949634,-.155641,.262799,.706293,.955032,-.154809,.256097,.734278,.95917,-.153678,.248618,.761751,.962931,-.151253,.239794,.789032,.966045,-.147625,.230281,.815422,.96971,-.143964,.220382,.841787,.972747,-.139464,.209846,.867446,.975545,-.133459,.198189,.892004,.978381,-.127424,.186362,.915458,.979935,-.120506,.173964,.937948,.980948,-.11282,.161429,.959732,.982234,-.104941,.148557,.980118,.982767,-.0962905,.135508,.999463,.983544,-.0873625,.122338,1.01756,.984965,-.0783447,.108669,1.03492,.986233,-.0684798,.0949911,1.05087,.987796,-.0590867,.0811386,1.0656,.989885,-.0489145,.0673099,1.0794,.991821,-.0391,.0535665,1.09174,.99448,-.029087,.0397529,1.10341,.996769,-.019114,.0261463,1.11383,.998641,-.00947007,.0128731,1.1237,.999978,446316e-9,-169093e-9,1.13253,.888362,-627064e-11,.312578,178215e-10,.889988,-157791e-9,.313148,448451e-9,.889825,-631076e-9,.313092,.00179356,.88984,-.00141994,.313097,.00403554,.889828,-.0025243,.313092,.00717429,.889831,-.00394421,.313093,.0112099,.889831,-.00567962,.313093,.0161425,.889844,-.00773051,.313096,.0219724,.889858,-.0100968,.3131,.0286999,.889882,-.0127786,.313106,.0363256,.889918,-.0157757,.313116,.0448509,.889967,-.0190878,.313129,.0542758,.89003,-.022715,.313145,.0646032,.890108,-.0266566,.313165,.0758339,.890218,-.0309131,.313193,.0879729,.890351,-.0354819,.313226,.101019,.89051,-.0403613,.313263,.114979,.890672,-.0455385,.313294,.129848,.890882,-.0509444,.313333,.145616,.891189,-.0559657,.313324,.162122,.891457,-.0613123,.313281,.179524,.891856,-.0671488,.313281,.197855,.892312,-.0732732,.313268,.216991,.892819,-.0797865,.313263,.236924,.893369,-.0865269,.313247,.257433,.894045,-.0931592,.313205,.278215,.894884,-.100532,.313276,.299467,.895832,-.107716,.313205,.322276,.897043,-.114099,.312873,.34642,.898515,-.119941,.312331,.371187,.900191,-.126044,.311731,.396656,.90188,-.131808,.310859,.422488,.904359,-.137289,.309857,.448744,.906923,-.142991,.308714,.475239,.910634,-.148253,.307465,.501983,.914502,-.153332,.305774,.529254,.919046,-.156646,.303156,.557709,.923194,-.159612,.299928,.586267,.928858,-.162027,.296245,.614925,.934464,-.164203,.291832,.643187,.939824,-.165602,.286565,.671601,.944582,-.165383,.280073,.700213,.949257,-.164439,.272891,.728432,.954389,-.162953,.264771,.756082,.958595,-.161007,.255927,.78369,.962138,-.157243,.245769,.810769,.966979,-.152872,.235127,.836999,.969566,-.148209,.22347,.862684,.972372,-.142211,.211147,.887847,.975916,-.135458,.198606,.911843,.978026,-.128398,.185498,.934795,.979686,-.120313,.17171,.956787,.980748,-.11166,.158159,.978046,.981622,-.103035,.144399,.997693,.982356,-.0930328,.13001,1.01642,.983308,-.0834627,.115778,1.03366,.985037,-.0732249,.101327,1.05014,.986493,-.0628145,.086554,1.06507,.988484,-.0526556,.0720413,1.07907,.991051,-.0415744,.0571151,1.09189,.993523,-.0314275,.0426643,1.10369,.99628,-.0203603,.0279325,1.11423,.998344,-.0102446,.0138182,1.12421,.999997,42612e-8,-193628e-9,1.1333,.871555,-660007e-11,.329176,174749e-10,.875255,-166579e-9,.330571,441051e-9,.875644,-666394e-9,.330718,.00176441,.875159,-.00149903,.330536,.00396899,.87516,-.00266493,.330536,.007056,.875158,-.00416393,.330535,.0110251,.87516,-.00599598,.330535,.0158764,.875163,-.00816108,.330536,.0216101,.875174,-.0106591,.330538,.0282266,.875199,-.0134899,.330545,.0357266,.875257,-.0166538,.330563,.0441117,.875304,-.0201501,.330575,.0533821,.875373,-.0239785,.330595,.0635395,.875464,-.0281389,.330619,.0745872,.875565,-.0326301,.330645,.0865255,.875691,-.0374516,.330676,.0993599,.875897,-.0425993,.330733,.113093,.876091,-.0480576,.330776,.127722,.876353,-.0537216,.330826,.143227,.876649,-.0589807,.330809,.159462,.877034,-.0647865,.330819,.176642,.877443,-.0709789,.330817,.194702,.877956,-.0774782,.330832,.213577,.878499,-.0843175,.330822,.233246,.879144,-.0912714,.330804,.253512,.879982,-.0980824,.330766,.274137,.88097,-.105823,.330864,.295209,.882051,-.113671,.330896,.317226,.883397,-.120303,.330545,.341068,.884987,-.12667,.330068,.365613,.886789,-.133118,.329418,.390807,.889311,-.139024,.328683,.416494,.891995,-.144971,.327729,.442618,.895106,-.150747,.326521,.469131,.899527,-.156283,.325229,.495921,.90504,-.161707,.32378,.523162,.909875,-.165661,.32122,.55092,.91561,-.168755,.317942,.579928,.921225,-.171193,.313983,.608539,.927308,-.17319,.309636,.636854,.933077,-.174819,.304262,.66523,.938766,-.175002,.297563,.693609,.943667,-.173946,.289613,.722157,.949033,-.172221,.281227,.750021,.953765,-.169869,.271545,.777466,.95804,-.166578,.261034,.804853,.962302,-.161761,.249434,.831569,.966544,-.156636,.237484,.857779,.969372,-.150784,.224395,.883051,.972486,-.143672,.210786,.907864,.975853,-.135772,.196556,.931223,.977975,-.127942,.182307,.954061,.979122,-.118347,.167607,.97531,.980719,-.109112,.152739,.995666,.981223,-.0991789,.137932,1.01475,.98216,-.0883553,.122692,1.03253,.983379,-.0780825,.107493,1.04917,.985434,-.0665646,.0917791,1.06464,.987332,-.0557714,.0764949,1.07896,.990004,-.0442805,.060721,1.09199,.992975,-.0331676,.0452284,1.10393,.995811,-.0219547,.0297934,1.11476,.9982,-.0107613,.0146415,1.12484,1.00002,248678e-9,-14555e-8,1.13413,.859519,-693595e-11,.347264,171673e-10,.859843,-17503e-8,.347394,433219e-9,.859656,-700076e-9,.347319,.00173277,.859671,-.00157517,.347325,.00389875,.859669,-.00280028,.347324,.00693112,.85967,-.0043754,.347324,.01083,.859665,-.00630049,.347321,.0155954,.859685,-.0085755,.347328,.0212278,.859694,-.0112003,.347329,.0277273,.859718,-.0141747,.347336,.0350946,.85976,-.0174988,.347348,.0433314,.85982,-.0211722,.347366,.0524384,.859892,-.0251941,.347387,.0624168,.860006,-.0295649,.347422,.0732708,.860122,-.0342825,.347453,.0849999,.860282,-.0393462,.347499,.0976102,.860482,-.0447513,.347554,.111104,.860719,-.0504775,.347614,.125479,.860998,-.0563577,.347666,.140703,.861322,-.0619473,.347662,.156681,.861724,-.0681277,.347684,.173597,.862198,-.0746567,.347709,.191371,.862733,-.0815234,.347727,.209976,.863371,-.0886643,.347744,.229351,.86414,-.0957908,.347734,.24934,.865138,-.102912,.34772,.269797,.866182,-.110924,.3478,.290654,.867436,-.119223,.347911,.312074,.869087,-.126197,.347649,.335438,.870859,-.133145,.347222,.359732,.872997,-.139869,.346645,.38467,.875939,-.146089,.345935,.41019,.879012,-.152334,.345012,.436218,.883353,-.15821,.343924,.462641,.888362,-.164097,.342636,.489449,.895026,-.169528,.341351,.516629,.900753,-.174408,.339115,.544109,.906814,-.17751,.335809,.572857,.912855,-.180101,.331597,.601554,.919438,-.182116,.32698,.630198,.925962,-.183494,.321449,.658404,.931734,-.184159,.314595,.686625,.93762,-.18304,.306462,.71531,.943858,-.181323,.297514,.744272,.948662,-.178683,.287447,.771462,.953299,-.175379,.276166,.798593,.957346,-.170395,.263758,.8256,.962565,-.165042,.251019,.852575,.966075,-.158655,.237011,.878316,.969048,-.151707,.222518,.90329,.972423,-.143271,.207848,.927745,.975833,-.134824,.192463,.950859,.977629,-.125444,.1768,.972947,.978995,-.114949,.161033,.993263,.980533,-.104936,.145523,1.01337,.980745,-.0935577,.129799,1.03128,.981814,-.0822956,.113486,1.04825,.983943,-.0710082,.0972925,1.06405,.986141,-.0587931,.0808138,1.0785,.988878,-.0472755,.0644915,1.09204,.992132,-.0349128,.0478128,1.10413,.9953,-.0232407,.031621,1.11527,.998117,-.0112713,.0154935,1.12551,1.00003,339743e-9,-195763e-9,1.13504,.845441,-729126e-11,.364305,169208e-10,.843588,-183164e-9,.363506,425067e-9,.843412,-73253e-8,.36343,.00169999,.843401,-.00164818,.363426,.00382495,.843399,-.00293008,.363425,.00679993,.843401,-.00457822,.363425,.010625,.843394,-.00659249,.363421,.0153002,.843398,-.00897282,.363421,.0208258,.843415,-.0117191,.363426,.0272024,.843438,-.0148312,.363432,.0344305,.843483,-.018309,.363447,.0425116,.84356,-.0221521,.363472,.0514471,.843646,-.0263597,.363499,.061238,.843743,-.0309315,.363527,.0718873,.84388,-.0358658,.363569,.0833969,.844079,-.0411624,.363631,.0957742,.844279,-.0468128,.363688,.109015,.844549,-.0527923,.363761,.123124,.844858,-.0588204,.363817,.138044,.84522,-.0647573,.36383,.153755,.845669,-.0713181,.363879,.170394,.846155,-.0781697,.363908,.187861,.846789,-.0853913,.363969,.206176,.847502,-.0928086,.363999,.225244,.8484,-.10005,.363997,.244926,.849461,-.107615,.364008,.265188,.850562,-.115814,.364055,.28587,.851962,-.124334,.364179,.306926,.854326,-.131995,.364233,.329605,.856295,-.139338,.363856,.35359,.858857,-.146346,.363347,.37831,.862428,-.152994,.362807,.403722,.866203,-.159463,.361963,.429537,.871629,-.165623,.36112,.456,.877365,-.171649,.359917,.482773,.883744,-.177151,.35848,.509705,.890693,-.182381,.356523,.537215,.897278,-.186076,.3533,.565493,.903958,-.188602,.349095,.594293,.910908,-.190755,.344215,.623165,.918117,-.192063,.338606,.651573,.924644,-.192758,.331544,.679869,.931054,-.192238,.323163,.708668,.937303,-.190035,.313529,.737201,.943387,-.187162,.303152,.764977,.948494,-.183876,.29146,.792683,.952546,-.178901,.277917,.819228,.958077,-.173173,.264753,.846559,.962462,-.16645,.25002,.872962,.966569,-.159452,.234873,.898729,.969108,-.15074,.218752,.923126,.973072,-.141523,.202673,.947278,.975452,-.132075,.186326,.969938,.977784,-.121257,.169396,.991325,.97899,-.110182,.153044,1.01123,.979777,-.0989634,.136485,1.0299,.980865,-.0865894,.119343,1.04727,.982432,-.0746115,.102452,1.06341,.984935,-.0621822,.0852423,1.07834,.987776,-.0495694,.0678546,1.092,.99103,-.0372386,.0506917,1.1043,.99474,-.0244353,.0333316,1.11576,.997768,-.0121448,.0164348,1.12617,1.00003,31774e-8,-169504e-9,1.13598,.825551,-756799e-11,.378425,165099e-10,.82664,-190922e-9,.378923,416504e-9,.826323,-763495e-9,.378779,.0016656,.826359,-.00171789,.378795,.00374768,.82636,-.00305402,.378795,.00666259,.826368,-.00477185,.378798,.0104104,.826364,-.00687131,.378795,.0149912,.826368,-.00935232,.378795,.0204054,.826376,-.0122146,.378797,.0266532,.826399,-.0154581,.378803,.0337355,.82646,-.0190825,.378824,.0416537,.826525,-.0230873,.378846,.0504091,.826614,-.0274719,.378876,.0600032,.82674,-.0322355,.378917,.0704393,.826888,-.0373766,.378964,.0817195,.827078,-.0428936,.379024,.0938492,.827318,-.0487778,.379099,.106828,.82764,-.0549935,.379199,.120659,.827926,-.0611058,.379227,.13526,.828325,-.0675054,.379275,.150713,.828801,-.0743455,.379332,.167034,.8294,-.0815523,.379415,.184209,.830094,-.0890779,.379495,.202203,.8309,-.096736,.379555,.220945,.831943,-.104135,.379577,.240306,.833037,-.112106,.379604,.260317,.834278,-.120554,.379668,.2808,.836192,-.129128,.3799,.301654,.838671,-.137541,.380109,.323502,.840939,-.14523,.379809,.347176,.844575,-.15248,.379593,.371706,.848379,-.159607,.37909,.39688,.853616,-.166267,.378617,.422702,.858921,-.172698,.377746,.448919,.865324,-.178823,.376749,.475661,.872207,-.184542,.375363,.502599,.880018,-.189836,.373657,.529914,.88694,-.194294,.370673,.557683,.894779,-.197022,.36662,.586848,.902242,-.199108,.36138,.615831,.909914,-.200398,.355434,.644478,.917088,-.20094,.348173,.672905,.923888,-.200671,.339482,.701327,.930495,-.198773,.32956,.730101,.937247,-.195394,.318363,.758383,.943108,-.191956,.306323,.786539,.948296,-.187227,.292576,.813637,.953472,-.181165,.278234,.840793,.958485,-.174119,.263054,.867712,.962714,-.166564,.246756,.893635,.966185,-.158181,.229945,.919028,.970146,-.148275,.212633,.943413,.973491,-.138157,.195229,.966627,.975741,-.127574,.178048,.988817,.977238,-.11554,.160312,1.00924,.978411,-.10364,.142857,1.02845,.979811,-.0913122,.125317,1.04648,.98116,-.0782558,.107627,1.06284,.983543,-.0655957,.0895862,1.07798,.986789,-.0520411,.0713756,1.092,.990292,-.0389727,.053228,1.10484,.994187,-.025808,.0351945,1.11642,.997499,-.0126071,.0173198,1.12703,.999999,275604e-9,-148602e-9,1.13674,.81075,-78735e-10,.394456,161829e-10,.808692,-198293e-9,.393453,407564e-9,.80846,-792877e-9,.39334,.00162965,.808595,-.00178416,.393407,.00366711,.808597,-.00317182,.393408,.00651934,.808598,-.00495589,.393408,.0101866,.808591,-.00713627,.393403,.0146689,.808592,-.00971285,.393402,.0199667,.80861,-.0126855,.393407,.0260803,.808633,-.0160538,.393413,.0330107,.80868,-.0198175,.393429,.0407589,.808748,-.0239758,.393453,.0493264,.808854,-.0285286,.39349,.0587161,.808992,-.0334748,.39354,.0689304,.809141,-.0388116,.393588,.0799707,.809352,-.0445375,.39366,.0918432,.809608,-.0506427,.393742,.104549,.809915,-.0570708,.393834,.118085,.810253,-.0633526,.393885,.132377,.810687,-.0700966,.393953,.147537,.811233,-.0772274,.394047,.163543,.811865,-.0847629,.394148,.180394,.812648,-.0925663,.394265,.198051,.813583,-.100416,.394363,.216443,.814683,-.108119,.394402,.235502,.815948,-.11644,.394489,.255242,.817278,-.125036,.394542,.275441,.819605,-.133655,.39486,.296094,.822256,-.142682,.395248,.317309,.825349,-.150756,.395241,.340516,.829605,-.158392,.395285,.364819,.83391,-.165801,.394922,.389736,.839808,-.172677,.394691,.415409,.845708,-.179448,.394006,.441546,.853025,-.185746,.393279,.46832,.859666,-.191684,.391655,.495302,.86789,-.197146,.390068,.52262,.875845,-.201904,.38727,.550336,.882634,-.205023,.382688,.578825,.891076,-.207098,.377543,.608103,.900589,-.208474,.371752,.63723,.90791,-.209068,.364016,.665769,.915971,-.208655,.355593,.694428,.923455,-.20729,.345439,.723224,.931514,-.203821,.334099,.751925,.937885,-.19986,.321069,.780249,.943136,-.194993,.306571,.8077,.948818,-.189132,.291556,.83497,.954433,-.181617,.275745,.86188,.959078,-.173595,.258695,.888562,.962705,-.164855,.240825,.914008,.966753,-.155129,.22268,.939145,.970704,-.144241,.204542,.963393,.973367,-.133188,.185927,.985983,.975984,-.121146,.167743,1.00704,.976994,-.108366,.149218,1.02715,.978485,-.0956746,.13131,1.0455,.980074,-.0820733,.112513,1.06221,.98225,-.0684061,.0938323,1.07782,.98553,-.0549503,.0749508,1.09199,.989529,-.0407857,.055848,1.10508,.993536,-.0271978,.0368581,1.11684,.997247,-.0132716,.0181845,1.12789,1,431817e-9,-198809e-9,1.13792,.785886,-812608e-11,.405036,157669e-10,.790388,-205278e-9,.407355,398297e-9,.790145,-820824e-9,.407231,.00159263,.790135,-.00184681,.407226,.00358336,.790119,-.00328316,.407218,.00637039,.790126,-.00512988,.40722,.0099539,.79013,-.00738684,.407221,.0143339,.790135,-.0100538,.407221,.0195107,.790134,-.0131306,.407217,.0254848,.79016,-.0166169,.407224,.0322572,.790197,-.020512,.407236,.0398284,.790273,-.0248157,.407263,.0482014,.790381,-.029527,.407304,.0573777,.790521,-.0346446,.407355,.0673602,.790704,-.0401665,.40742,.0781522,.790925,-.0460896,.407499,.0897582,.791195,-.0524017,.407589,.10218,.791522,-.0590121,.407691,.11541,.791878,-.0654876,.407748,.12939,.792361,-.0725207,.407849,.144237,.792942,-.0799844,.407963,.159924,.79362,-.0877896,.408087,.176425,.794529,-.0958451,.408259,.193733,.795521,-.103827,.408362,.211756,.796778,-.111937,.408482,.230524,.798027,-.120521,.408547,.249967,.799813,-.129242,.408721,.269926,.802387,-.138048,.409148,.290338,.805279,-.147301,.409641,.311193,.809251,-.155895,.410154,.333611,.813733,-.163942,.410297,.357615,.819081,-.171666,.410373,.382339,.825427,-.178905,.410348,.407828,.83172,-.185812,.409486,.434034,.83877,-.192318,.408776,.460493,.845817,-.198249,.407176,.487346,.854664,-.204034,.405719,.514832,.863495,-.208908,.403282,.542401,.871883,-.212765,.399293,.570683,.88065,-.214911,.393803,.599947,.89004,-.216214,.387536,.62932,.898476,-.216745,.379846,.658319,.906738,-.216387,.370625,.687138,.914844,-.215053,.360139,.71601,.923877,-.212007,.348849,.745124,.931925,-.207481,.335639,.773366,.938054,-.202418,.320798,.801636,.943895,-.196507,.304772,.829055,.949468,-.189009,.288033,.856097,.955152,-.180539,.270532,.88301,.959403,-.171437,.251639,.909296,.963309,-.161661,.232563,.934868,.967399,-.150425,.213231,.959662,.972009,-.138659,.194247,.98302,.97433,-.126595,.174718,1.00517,.975823,-.113205,.155518,1.02566,.976371,-.0996096,.136709,1.04418,.978705,-.0860754,.117571,1.06146,.981477,-.0714438,.0980046,1.07777,.984263,-.0572304,.0782181,1.09214,.988423,-.0428875,.0584052,1.10553,.993,-.0282442,.038522,1.11758,.99704,-.0140183,.0190148,1.12864,.999913,369494e-9,-145203e-9,1.13901,.777662,-84153e-10,.423844,154403e-10,.770458,-211714e-9,.419915,38845e-8,.770716,-846888e-9,.420055,.00155386,.770982,-.00190567,.420202,.00349653,.770981,-.00338782,.420201,.00621606,.77098,-.00529338,.4202,.00971274,.770983,-.00762223,.4202,.0139867,.770985,-.0103741,.420198,.0190381,.770996,-.0135489,.4202,.0248677,.771029,-.0171461,.420212,.0314764,.771052,-.0211647,.420215,.0388648,.771131,-.0256048,.420245,.047036,.771235,-.0304647,.420284,.0559911,.771383,-.0357436,.420341,.0657346,.771591,-.0414392,.420423,.0762694,.771819,-.0475462,.420506,.0875984,.772123,-.0540506,.420617,.099727,.772464,-.060797,.42072,.112637,.772855,-.0675393,.420799,.126313,.773317,-.0748323,.420893,.140824,.773981,-.0825681,.421058,.15617,.774746,-.0906307,.421226,.172322,.77566,-.0988982,.421397,.189253,.776837,-.106994,.421569,.206912,.778097,-.115528,.421704,.225359,.779588,-.124317,.421849,.24447,.781574,-.133139,.422097,.264156,.784451,-.142179,.422615,.284318,.787682,-.15165,.423269,.304902,.792433,-.160771,.424396,.3265,.797359,-.169166,.424772,.35014,.803986,-.177149,.425475,.374768,.809504,-.184745,.424996,.399928,.815885,-.19173,.424247,.425796,.823513,-.198525,.423515,.452287,.832549,-.204709,.422787,.479321,.841653,-.210447,.421187,.506718,.850401,-.215501,.418519,.53432,.859854,-.219752,.414715,.56242,.869364,-.222305,.409462,.591558,.878837,-.223744,.402926,.621074,.888636,-.224065,.395043,.650538,.898132,-.223742,.38564,.679538,.907181,-.222308,.375378,.708674,.915621,-.219837,.363212,.737714,.9239,-.215233,.349313,.767014,.931644,-.209592,.334162,.795133,.938887,-.203644,.317943,.823228,.945282,-.196349,.300581,.850822,.950758,-.18742,.282195,.877594,.956146,-.177879,.262481,.904564,.960355,-.167643,.242487,.930741,.965256,-.156671,.222668,.955868,.968029,-.144123,.201907,.979869,.97251,-.131305,.18202,1.00291,.974925,-.118335,.161909,1.02392,.975402,-.103714,.142129,1.0433,.976987,-.089415,.122447,1.06089,.979677,-.0748858,.102248,1.07713,.983184,-.0596086,.0814851,1.09218,.987466,-.0447671,.0609484,1.10585,.992348,-.0295217,.0401835,1.11829,.996674,-.0143917,.0198163,1.12966,1.00003,321364e-9,-149983e-9,1.1402,.757901,-869074e-11,.436176,151011e-10,.751195,-217848e-9,.432317,378533e-9,.751178,-871373e-9,.432307,.0015141,.751195,-.00196061,.432317,.0034068,.751198,-.00348552,.432318,.00605659,.751195,-.00544599,.432315,.00946353,.751207,-.00784203,.43232,.013628,.751213,-.0106732,.43232,.0185499,.751221,-.0139393,.432319,.0242302,.751244,-.0176398,.432325,.0306694,.7513,-.0217743,.432348,.0378698,.751358,-.0263412,.432367,.0458321,.751458,-.0313396,.432404,.0545587,.751608,-.0367682,.432464,.0640543,.7518,-.0426246,.43254,.0743222,.752065,-.0489031,.432645,.0853668,.752376,-.0555828,.432762,.0971911,.752715,-.0623861,.432859,.109768,.753137,-.069415,.432958,.123126,.753676,-.0770039,.433099,.137308,.754345,-.084971,.433272,.15229,.755235,-.0932681,.433504,.168075,.756186,-.10171,.433693,.184625,.757363,-.110019,.433857,.201897,.75884,-.11887,.434102,.220014,.760467,-.127881,.434306,.238778,.762969,-.136766,.434751,.258172,.765823,-.14612,.43529,.278062,.769676,-.15566,.436236,.298437,.774909,-.165177,.437754,.319532,.77994,-.17402,.438343,.342505,.785757,-.182201,.438609,.366693,.792487,-.190104,.438762,.391668,.80038,-.197438,.438795,.417494,.808494,-.204365,.438226,.443933,.817695,-.210714,.437283,.470929,.828111,-.216651,.436087,.498569,.837901,-.221804,.433717,.526165,.847813,-.226318,.430133,.554155,.858314,-.229297,.425213,.582822,.868891,-.230999,.418576,.612847,.878941,-.231155,.410405,.642445,.888809,-.230935,.400544,.672024,.898089,-.229343,.389613,.701366,.908081,-.226886,.377197,.730763,.916819,-.222676,.363397,.759642,.924968,-.216835,.347437,.788775,.932906,-.210245,.32995,.817135,.940025,-.202992,.312262,.844912,.946101,-.19436,.293313,.872164,.952835,-.184125,.273638,.899443,.957347,-.173657,.252385,.926389,.961434,-.162204,.231038,.951947,.965522,-.14979,.209834,.976751,.969412,-.136307,.188821,1.00022,.973902,-.122527,.168013,1.02229,.974045,-.108213,.147634,1.04199,.975775,-.0927397,.12705,1.06019,.978383,-.0778212,.106309,1.07711,.98211,-.0621216,.0849279,1.09245,.986517,-.0463847,.0633519,1.10651,.991696,-.0309353,.0419698,1.11903,.996349,-.0150914,.0206272,1.13073,1.00003,442449e-9,-231396e-9,1.14146,.727498,-885074e-11,.441528,145832e-10,.730897,-223525e-9,.443589,368298e-9,.730796,-893996e-9,.443528,.00147303,.730805,-.00201149,.443533,.00331433,.730814,-.00357596,.443538,.00589222,.730815,-.00558734,.443538,.00920678,.730822,-.00804544,.44354,.0132582,.730836,-.0109501,.443545,.0180468,.730848,-.0143008,.443546,.0235732,.730871,-.0180969,.443552,.0298382,.730915,-.022338,.443567,.0368438,.730982,-.0270225,.443591,.044591,.731076,-.0321491,.443627,.0530831,.731245,-.0377166,.443699,.0623243,.73144,-.0437216,.443777,.0723181,.7317,-.0501576,.443881,.0830691,.732034,-.0569942,.444014,.0945809,.732388,-.0638756,.444113,.106825,.732853,-.071203,.444247,.119859,.733473,-.0790076,.444442,.13369,.734195,-.0871937,.444645,.148304,.735069,-.095696,.444877,.163702,.736169,-.10426,.445133,.179861,.73747,-.112853,.44537,.196778,.738991,-.12199,.445651,.214496,.740865,-.131153,.445958,.232913,.743637,-.140245,.446548,.251977,.746797,-.149722,.447246,.271551,.751517,-.159341,.448656,.291774,.756156,-.169106,.449866,.312455,.761519,-.178436,.450919,.334552,.768295,-.186904,.451776,.358491,.776613,-.195117,.452832,.383446,.783966,-.202695,.45249,.408945,.793542,-.20985,.452587,.435364,.803192,-.216403,.451852,.462336,.813892,-.22251,.450708,.48987,.824968,-.227676,.4486,.517697,.835859,-.232443,.445156,.545975,.846825,-.235775,.440351,.574483,.858085,-.237897,.433641,.604246,.868825,-.238074,.425354,.634101,.879638,-.237661,.415383,.664201,.889966,-.236186,.404136,.693918,.899479,-.233599,.390917,.723481,.908769,-.229737,.376352,.75258,.917966,-.223836,.360372,.781764,.926304,-.217067,.342551,.811139,.934626,-.209309,.324238,.839585,.941841,-.20071,.304484,.867044,.94789,-.190602,.283607,.894579,.954196,-.179253,.262205,.921743,.958383,-.167646,.239847,.948026,.963119,-.155073,.218078,.973296,.966941,-.141426,.195899,.998135,.970836,-.126849,.174121,1.02021,.973301,-.112296,.153052,1.04085,.97448,-.0964965,.131733,1.05946,.977045,-.080489,.10997,1.07693,.980751,-.064844,.0881657,1.09254,.985475,-.0481938,.0657987,1.10697,.991089,-.0319185,.0435215,1.12004,.996122,-.0158088,.0214779,1.13173,1.00001,372455e-9,-200295e-9,1.14291,.708622,-907597e-11,.45304,141962e-10,.711162,-228911e-9,.454662,358052e-9,.709812,-914446e-9,.453797,.00143034,.709865,-.00205819,.453834,.00321935,.709864,-.00365894,.453833,.00572331,.709855,-.00571692,.453826,.00894278,.709862,-.00823201,.453828,.012878,.709875,-.011204,.453832,.0175295,.709896,-.0146323,.453839,.0228978,.709925,-.0185163,.453847,.0289839,.709974,-.0228551,.453866,.0357894,.710045,-.0276473,.453892,.0433161,.710133,-.032891,.453924,.0515665,.710292,-.0385851,.453992,.0605458,.710485,-.0447254,.45407,.0702574,.710769,-.0513051,.454192,.0807077,.711106,-.0582733,.454329,.091896,.711516,-.0652866,.45446,.103814,.712071,-.0728426,.454653,.116508,.712676,-.0808307,.45484,.129968,.713476,-.0892216,.455096,.144206,.714377,-.0979047,.455346,.159212,.715579,-.106531,.455647,.174973,.716977,-.115492,.455961,.191504,.71862,-.124821,.456315,.208835,.72084,-.134079,.4568,.226869,.723786,-.143427,.457521,.245582,.727464,-.153061,.458475,.264957,.732771,-.162768,.460239,.284948,.736515,-.172627,.460899,.30522,.743519,-.182487,.463225,.326717,.750041,-.191295,.464027,.350113,.758589,-.199746,.465227,.374782,.767703,-.207584,.465877,.400226,.777484,-.214973,.465996,.426442,.788792,-.221796,.466019,.453688,.800194,-.228038,.465083,.481246,.811234,-.233346,.462506,.509086,.822859,-.238073,.459257,.537338,.835082,-.241764,.454863,.566108,.846332,-.244241,.448163,.595126,.858355,-.244736,.439709,.625574,.87034,-.244278,.429837,.65617,.881027,-.24255,.418002,.686029,.891007,-.239912,.404325,.716039,.900874,-.236133,.389222,.745518,.911072,-.230672,.373269,.775026,.920359,-.22356,.355083,.804521,.928604,-.215591,.335533,.834045,.937175,-.206503,.315278,.861612,.942825,-.196684,.293653,.889131,.949805,-.185116,.271503,.916853,.955535,-.172703,.248821,.943541,.959843,-.159978,.225591,.970132,.964393,-.146375,.202719,.994709,.968008,-.131269,.179928,1.0186,.971013,-.11569,.158007,1.03928,.973334,-.1003,.13624,1.05887,.975775,-.0833352,.1138,1.07652,.979579,-.0668981,.0913141,1.09297,.984323,-.0500902,.0683051,1.10734,.990351,-.0332377,.0451771,1.12084,.995823,-.0161491,.0221705,1.13296,1.0001,234083e-9,-108712e-9,1.14441,.683895,-924677e-11,.46015,137429e-10,.68833,-233383e-9,.463134,346865e-9,.688368,-933547e-9,.463159,.00138748,.688367,-.00210049,.463159,.00312187,.688369,-.00373415,.463159,.00555004,.688377,-.00583449,.463163,.00867216,.688386,-.00840128,.463166,.0124884,.688398,-.0114343,.463169,.0169993,.688418,-.0149329,.463175,.0222054,.688453,-.0188964,.463188,.028108,.688515,-.0233239,.463214,.0347085,.68857,-.0282136,.463231,.0420091,.688679,-.033564,.463276,.0500132,.688854,-.0393733,.463356,.0587255,.689038,-.0456354,.46343,.0681476,.689321,-.0523433,.463553,.0782897,.689662,-.059412,.463693,.0891501,.690188,-.0665736,.4639,.100735,.690755,-.0743106,.464107,.113074,.691405,-.0824722,.464329,.126161,.692198,-.0910484,.464585,.140007,.693196,-.0998778,.464893,.154612,.69454,-.108651,.465285,.169984,.695921,-.117855,.465596,.186106,.697749,-.12734,.466056,.203034,.700375,-.136714,.466771,.220703,.703395,-.146386,.467579,.239062,.707904,-.156096,.469067,.258188,.711673,-.165904,.469851,.277759,.717489,-.175812,.471815,.297935,.724051,-.185931,.47389,.318916,.731965,-.195238,.47587,.341591,.741151,-.204021,.477523,.366062,.751416,-.212113,.478881,.391396,.761848,-.21979,.479226,.417599,.771886,-.2267,.478495,.444401,.783998,-.232991,.477622,.472084,.796523,-.238645,.475833,.500193,.808851,-.243396,.472568,.52865,.821191,-.247226,.467857,.557362,.834261,-.250102,.461871,.586768,.846762,-.251056,.453543,.617085,.859867,-.250604,.443494,.647659,.871948,-.248783,.431711,.678119,.882967,-.245855,.417911,.708399,.892826,-.242168,.401993,.738256,.90332,-.237062,.385371,.767999,.913633,-.22997,.366837,.798191,.922774,-.221687,.346372,.827756,.931371,-.212345,.325682,.856425,.938929,-.20206,.303665,.884299,.944821,-.190981,.280786,.912023,.951792,-.178065,.2573,.939669,.957712,-.164634,.233448,.96655,.961912,-.150863,.209504,.992366,.966382,-.13577,.18597,1.01633,.969588,-.119593,.162905,1.03843,.971777,-.103203,.14053,1.05841,.97433,-.0865888,.117909,1.07632,.978686,-.0690829,.0944101,1.09326,.983281,-.0516568,.0705671,1.10796,.989562,-.034558,.0468592,1.12182,.995465,-.0167808,.0229846,1.1342,.999991,373016e-9,-235606e-9,1.1459,.662251,-939016e-11,.468575,132714e-10,.666634,-237624e-9,.471675,335842e-9,.666411,-950385e-9,.471516,.00134321,.666399,-.00213833,.471509,.00302221,.666386,-.0038014,.471499,.00537283,.666405,-.00593958,.471511,.00839533,.666406,-.00855253,.471508,.0120898,.666428,-.0116401,.471519,.0164569,.666444,-.0152015,.471522,.0214971,.66649,-.0192362,.471543,.027212,.666537,-.0237428,.471558,.033603,.666617,-.0287198,.471591,.0406728,.666718,-.0341647,.471631,.0484238,.666889,-.0400759,.47171,.0568621,.667104,-.0464479,.471805,.0659915,.667374,-.0532677,.471923,.0758178,.667772,-.0603805,.472098,.0863425,.668371,-.0677392,.472363,.0975917,.668971,-.0756028,.472596,.109567,.669696,-.0839293,.472869,.122272,.670481,-.0926683,.473126,.135718,.6715,-.1016,.473442,.149914,.672911,-.110566,.47389,.164882,.674512,-.119984,.474354,.180602,.67651,-.129574,.474922,.19711,.679292,-.139106,.475764,.214371,.682798,-.148993,.476886,.232405,.686955,-.158737,.478179,.251153,.691406,-.168754,.479432,.270436,.697438,-.178703,.481481,.290374,.704761,-.188955,.484143,.311044,.713599,-.198814,.487007,.333003,.723194,-.207869,.488962,.357144,.732601,-.216189,.489815,.382169,.744193,-.22398,.490888,.408227,.754907,-.231156,.490355,.434928,.767403,-.23747,.489548,.462599,.78107,-.243503,.488274,.490908,.793893,-.248114,.484843,.519421,.807296,-.25222,.4803,.548561,.820529,-.255265,.474097,.577772,.833716,-.256741,.466041,.607782,.848403,-.25637,.456547,.638807,.860755,-.254804,.443946,.670058,.874012,-.251834,.430852,.700749,.885619,-.247867,.414903,.731446,.896069,-.242634,.397276,.761191,.906266,-.236093,.378535,.791053,.916759,-.227543,.358038,.821298,.92523,-.21783,.335705,.850747,.93436,-.207534,.313797,.879258,.941631,-.195983,.289671,.907734,.947564,-.183567,.265319,.935206,.953681,-.169345,.240815,.962739,.960008,-.154909,.216119,.989227,.964145,-.140161,.192096,1.01465,.968171,-.123411,.167855,1.03737,.969859,-.106525,.144817,1.05767,.972666,-.0891023,.12149,1.0761,.977055,-.0718094,.0975306,1.09336,.982527,-.0534213,.0730217,1.10878,.989001,-.0355579,.0483366,1.12285,.99512,-.0176383,.023938,1.13548,1.00007,368831e-9,-211581e-9,1.14744,.651047,-960845e-11,.484101,12922e-9,.644145,-241347e-9,.478968,324578e-9,.64396,-965142e-9,.478831,.00129798,.64396,-.00217154,.47883,.00292046,.643968,-.00386049,.478835,.00519202,.643974,-.00603186,.478838,.0081128,.643977,-.0086854,.478836,.011683,.643982,-.0118207,.478834,.0159031,.644024,-.0154374,.478856,.0207743,.644059,-.0195343,.478868,.0262975,.644122,-.0241103,.478896,.0324747,.644207,-.0291638,.478933,.039309,.64432,-.0346919,.478981,.0468029,.644481,-.0406919,.479053,.0549614,.644722,-.047159,.479169,.0637909,.645013,-.0540748,.479302,.0732974,.645503,-.0612001,.479541,.0834898,.646117,-.0687303,.479829,.0943873,.646707,-.0767846,.480061,.105991,.647431,-.0852465,.480343,.11831,.64831,-.0940719,.48066,.131348,.649486,-.103056,.481083,.14514,.650864,-.112261,.481528,.159676,.652604,-.121852,.482102,.174979,.654825,-.131505,.482813,.191079,.657876,-.141189,.483876,.207927,.661339,-.151239,.48499,.225586,.665463,-.161091,.486279,.243947,.670542,-.171235,.487968,.262957,.677361,-.181347,.49053,.282781,.685672,-.191679,.493862,.303311,.694551,-.201781,.49699,.324607,.703753,-.211164,.498884,.347916,.713703,-.219675,.500086,.372628,.725911,-.227836,.501554,.398694,.73862,-.23533,.502193,.425529,.752118,-.241786,.501811,.453209,.76579,-.247865,.500185,.481381,.779568,-.252696,.497159,.51011,.793991,-.256802,.492765,.539322,.808182,-.259942,.486827,.569078,.821698,-.261703,.478386,.598818,.836009,-.262006,.468772,.629762,.849824,-.260333,.456352,.661366,.863888,-.257398,.442533,.69295,.876585,-.253264,.426573,.723608,.888665,-.248026,.408964,.754378,.899537,-.241487,.389677,.784761,.9094,-.233463,.368516,.814688,.920166,-.223397,.346624,.845009,.928899,-.21255,.322717,.874431,.937156,-.200869,.298698,.902922,.943861,-.188387,.273491,.931356,.949557,-.174341,.247866,.958854,.955862,-.158994,.222496,.986098,.961721,-.143664,.197522,1.01229,.965976,-.127412,.17302,1.03571,.968652,-.109798,.148954,1.05699,.971084,-.0916787,.125044,1.07587,.975584,-.0739634,.100577,1.09372,.98122,-.055322,.0753666,1.10948,.988253,-.0366825,.0498899,1.12394,.99482,-.0180389,.024611,1.13694,1.00001,229839e-9,-188283e-9,1.14919,.613867,-964198e-11,.479449,123452e-10,.621485,-244534e-9,.485399,313091e-9,.621429,-978202e-9,.485353,.00125245,.62112,-.00220004,.485114,.00281687,.621119,-.0039111,.485112,.00500783,.621122,-.00611091,.485112,.00782498,.621133,-.00879922,.485117,.0112687,.621152,-.0119756,.485125,.0153394,.621183,-.0156396,.485139,.0200382,.621227,-.0197898,.485158,.0253663,.621298,-.0244253,.485192,.0313261,.621388,-.0295441,.485233,.0379204,.621507,-.0351432,.485286,.0451523,.621693,-.0412198,.485378,.0530277,.621933,-.0477673,.485495,.0615522,.622232,-.0547574,.485635,.0707316,.622809,-.0619417,.485943,.0805883,.623407,-.069625,.486232,.0911267,.62406,-.077796,.486516,.102354,.624835,-.0863731,.486838,.114279,.625758,-.095251,.487188,.126902,.627043,-.104299,.487695,.140285,.628438,-.113724,.488163,.154397,.630325,-.123417,.488858,.169267,.632801,-.133137,.489754,.184941,.635784,-.143052,.490815,.20136,.639406,-.153132,.492048,.218643,.643872,-.163143,.49363,.236615,.6499,-.17333,.496009,.255449,.657201,-.183622,.498994,.275006,.666221,-.194019,.502888,.295354,.674419,-.204192,.505459,.316244,.683729,-.21406,.507771,.33849,.695584,-.222854,.510245,.363166,.708583,-.231315,.512293,.389071,.721233,-.238911,.512747,.415737,.735134,-.245657,.512482,.443331,.750179,-.251879,.511526,.471891,.765073,-.256911,.508935,.500892,.779794,-.261144,.504341,.530294,.794801,-.264316,.498515,.560144,.810339,-.266276,.491015,.590213,.824818,-.266981,.481126,.620865,.839375,-.265778,.468685,.652687,.853043,-.262748,.453925,.684759,.867335,-.258474,.437912,.716209,.88037,-.253187,.419648,.747508,.891711,-.246476,.39982,.77797,.902896,-.238735,.37879,.808586,.913601,-.22885,.355891,.838843,.923019,-.217656,.331773,.869014,.933432,-.205539,.307356,.898512,.939691,-.192595,.281321,.9269,.946938,-.178945,.255441,.955297,.952372,-.163587,.229013,.983231,.95909,-.147214,.203179,1.00971,.963675,-.13064,.17792,1.03438,.968247,-.113121,.152898,1.05625,.97001,-.0945824,.128712,1.07598,.974458,-.0755648,.103349,1.094,.980168,-.0571998,.0776731,1.1104,.987295,-.0377994,.0514445,1.12491,.994432,-.0186417,.025429,1.13851,.999975,542714e-9,-282356e-9,1.15108,.592656,-980249e-11,.486018,119532e-10,.598467,-247275e-9,.490781,301531e-9,.597934,-988317e-9,.490343,.00120517,.597903,-.00222366,.490319,.0027116,.597913,-.00395315,.490327,.00482077,.597919,-.00617653,.490329,.00753264,.597936,-.00889375,.490339,.0108478,.597956,-.0121043,.490347,.0147668,.597992,-.0158073,.490365,.0192905,.598032,-.0200017,.490382,.0244204,.598109,-.0246865,.49042,.0301593,.598215,-.0298594,.490474,.03651,.59833,-.0355167,.490524,.0434757,.598525,-.0416559,.490624,.0510629,.598778,-.0482692,.490753,.0592781,.599135,-.0553114,.49094,.0681304,.599802,-.062542,.491328,.0776467,.600361,-.0703638,.491598,.0878184,.60101,-.0786256,.491882,.0986573,.601811,-.0872962,.492232,.11018,.602861,-.0962284,.492684,.1224,.604167,-.10538,.493213,.135354,.605693,-.114896,.493799,.149034,.607682,-.124654,.494576,.163469,.610672,-.13456,.4959,.178747,.613313,-.144581,.496713,.194723,.617603,-.154703,.498499,.211617,.622174,-.16489,.500188,.229183,.628855,-.175164,.503072,.247786,.636963,-.185565,.506798,.267116,.644866,-.195911,.509719,.28702,.653741,-.206104,.512776,.307763,.664942,-.216447,.516812,.329631,.67633,-.22552,.519181,.353515,.690012,-.234316,.521681,.379226,.704243,-.242032,.523129,.405901,.719396,-.249172,.523768,.433585,.734471,-.255543,.522541,.462085,.750539,-.260697,.520217,.491233,.766365,-.26501,.516293,.521094,.781677,-.268409,.509708,.551014,.797132,-.270399,.501944,.581463,.812655,-.271247,.492025,.612402,.828592,-.270708,.480424,.643798,.844044,-.268085,.465955,.67682,.857305,-.263459,.448425,.708496,.87114,-.258151,.430243,.74046,.884936,-.251171,.410578,.771583,.895772,-.243305,.38862,.802234,.906961,-.234037,.365214,.833179,.917775,-.222714,.34116,.86353,.927883,-.210175,.31572,.893557,.936617,-.196925,.289159,.922976,.943384,-.182788,.261996,.951606,.949713,-.167965,.235324,.979958,.955818,-.151109,.208408,1.00765,.961344,-.133834,.182591,1.03329,.965469,-.115987,.156958,1.0557,.968693,-.09746,.132239,1.07583,.973165,-.0778514,.106195,1.09451,.979387,-.0585067,.0797669,1.11137,.98671,-.0390409,.0530263,1.12643,.994093,-.019408,.0263163,1.14016,1.00002,540029e-9,-194487e-9,1.15299,.574483,-989066e-11,.494533,114896e-10,.574478,-249127e-9,.494528,289403e-9,.574607,-996811e-9,.494637,.00115797,.574396,-.00224241,.494458,.00260498,.574377,-.00398632,.49444,.00463102,.574386,-.00622836,.494445,.00723623,.574401,-.0089683,.494453,.010421,.574419,-.0122056,.49446,.0141859,.574459,-.0159396,.494481,.0185322,.574525,-.0201692,.49452,.0234617,.574587,-.0248924,.494547,.0289762,.574697,-.0301074,.494604,.0350797,.574853,-.0358114,.494688,.0417767,.575027,-.041999,.494772,.0490718,.575294,-.0486618,.494915,.0569728,.575733,-.0557148,.495173,.0654955,.576356,-.0630489,.495537,.0746612,.576944,-.0709285,.495836,.0844615,.57765,-.0792723,.496177,.0949142,.578491,-.0880167,.496563,.10603,.579639,-.0969462,.497096,.117841,.580989,-.10622,.497684,.130367,.582587,-.115861,.498337,.143609,.584951,-.125605,.499414,.157625,.587602,-.135608,.500518,.172413,.59076,-.145742,.501767,.187999,.594992,-.155934,.503542,.20445,.600656,-.166303,.506135,.221764,.607816,-.176681,.509542,.24002,.61522,-.187071,.51263,.258992,.623702,-.197465,.516021,.278773,.634192,-.207816,.520422,.299377,.644936,-.218183,.524073,.320802,.657888,-.2278,.528049,.34384,.670666,-.236747,.52986,.36916,.685626,-.24484,.531892,.395867,.701304,-.252071,.532727,.423488,.717727,-.258714,.532146,.452201,.733914,-.264211,.529883,.481579,.750529,-.26859,.5259,.511558,.76747,-.272046,.51999,.542042,.785189,-.274225,.513083,.572799,.800954,-.275189,.502936,.603816,.816962,-.274946,.490921,.635461,.83336,-.272695,.47684,.6676,.848143,-.268223,.459405,.70051,.861818,-.262768,.440319,.732902,.876828,-.255872,.420123,.765084,.889312,-.247703,.398379,.796391,.900412,-.238381,.374496,.827333,.912251,-.227783,.349874,.858385,.921792,-.214832,.323181,.888652,.931273,-.200949,.296624,.917763,.940295,-.186537,.269211,.947878,.946812,-.171538,.241447,.977016,.953588,-.155254,.213829,1.00501,.958841,-.137156,.186807,1.03179,.963746,-.118699,.160706,1.05502,.966468,-.0998358,.135504,1.07568,.971178,-.0805186,.109131,1.09479,.97831,-.0599348,.0818293,1.1123,.985886,-.0399661,.0545872,1.12771,.994021,-.0198682,.0269405,1.14186,1.00009,271022e-9,-12989e-8,1.15514,.538716,-990918e-11,.486732,109675e-10,.550656,-250642e-9,.497518,277412e-9,.55057,-.00100265,.497441,.00110974,.550903,-.00225672,.497733,.00249779,.550568,-.00401046,.497438,.00443906,.550574,-.00626613,.49744,.00693637,.550591,-.0090226,.497449,.00998921,.550623,-.0122795,.497469,.0135984,.550667,-.0160361,.497495,.0177654,.550724,-.0202908,.497526,.0224915,.550792,-.0250421,.497557,.0277795,.550918,-.0302878,.49763,.0336334,.551058,-.0360241,.497701,.0400573,.551276,-.0422473,.497824,.0470585,.551551,-.0489441,.497977,.0546433,.552074,-.0559596,.498312,.0628367,.552681,-.0633978,.498679,.071646,.553324,-.0713176,.499031,.0810746,.554011,-.0797268,.499365,.091129,.55488,-.0885238,.499779,.101837,.556171,-.0974417,.500444,.113239,.557498,-.106841,.501025,.125316,.559299,-.116533,.501864,.138128,.561647,-.126298,.502967,.151695,.564347,-.136388,.504129,.16604,.567863,-.146576,.505713,.181207,.572569,-.156832,.507953,.197259,.578919,-.167323,.511186,.214258,.585387,-.177712,.514042,.232038,.593134,-.188184,.517484,.250733,.603295,-.198717,.522345,.270454,.613854,-.209177,.526751,.290807,.626092,-.219644,.531595,.312202,.637868,-.229494,.534721,.334435,.652458,-.238718,.538304,.359184,.666985,-.247061,.539875,.385637,.683301,-.254652,.541042,.41328,.69998,-.261376,.540735,.441903,.717824,-.267085,.539139,.471609,.734617,-.271465,.534958,.501446,.753663,-.27528,.53032,.532571,.770512,-.277617,.522134,.563641,.787356,-.278525,.51206,.595067,.806252,-.278512,.50119,.627226,.822061,-.277023,.486791,.659402,.838959,-.273175,.470467,.692874,.85379,-.267238,.450688,.725702,.868268,-.260327,.429741,.75832,.881994,-.251946,.407223,.790189,.893885,-.242432,.383214,.821625,.905118,-.231904,.357297,.853011,.916045,-.219545,.330733,.883773,.927614,-.205378,.303916,.914435,.936005,-.190388,.275941,.944502,.944533,-.1749,.247493,.974439,.950758,-.158588,.218996,1.00286,.957078,-.141027,.191559,1.0304,.962448,-.121507,.164457,1.05466,.964993,-.102068,.138636,1.0761,.970017,-.0822598,.111861,1.09541,.97661,-.062033,.0843438,1.11317,.985073,-.0409832,.0558496,1.12911,.993515,-.020146,.0275331,1.1438,1.00006,27329e-8,-107883e-9,1.15736,.525324,-999341e-11,.498153,105385e-10,.526513,-251605e-9,.499277,265329e-9,.526517,-.00100641,.499282,.0010613,.526588,-.00226466,.499337,.00238823,.526539,-.0040255,.499302,.00424535,.526547,-.00628954,.499306,.00663364,.526561,-.00905628,.499313,.00955337,.526593,-.0123253,.499334,.0130054,.526642,-.0160957,.499365,.0169911,.5267,-.0203661,.499396,.0215122,.526792,-.0251347,.499451,.0265718,.526904,-.0303985,.499511,.0321732,.527079,-.0361554,.499617,.0383231,.527285,-.0423982,.499731,.045026,.527602,-.0491121,.499924,.0522936,.528166,-.0561127,.500306,.0601528,.52879,-.0635988,.5007,.0686059,.529421,-.071581,.501048,.0776518,.530144,-.0799854,.501421,.0873148,.531062,-.0888032,.501884,.0976084,.532374,-.0977643,.50259,.108588,.533828,-.107197,.50329,.120234,.53581,-.116887,.504312,.132602,.538063,-.126755,.505365,.145721,.5409,-.136819,.506668,.159617,.544882,-.147117,.508731,.174369,.550238,-.157446,.511601,.190028,.556038,-.167988,.514431,.206587,.563031,-.178364,.517808,.224046,.571543,-.189007,.521937,.242503,.582255,-.199546,.527415,.261977,.59272,-.210084,.531682,.282162,.605648,-.220448,.537123,.303426,.61785,-.230593,.540664,.325323,.632223,-.240238,.544467,.348993,.648819,-.24887,.547594,.375462,.665825,-.256657,.54912,.403024,.683389,-.263711,.549294,.431773,.701495,-.269666,.547649,.461494,.719197,-.274169,.543786,.491623,.737906,-.278124,.538644,.522994,.756652,-.280632,.531057,.554775,.775279,-.281741,.521972,.586441,.792688,-.281652,.509613,.618596,.811894,-.280345,.496497,.651462,.827938,-.277128,.47968,.684023,.844837,-.271646,.460688,.718024,.859239,-.264397,.438872,.751207,.874088,-.256144,.41577,.784232,.887693,-.246311,.391369,.816191,.899402,-.235497,.365872,.847828,.910973,-.223631,.338618,.87934,.92204,-.209874,.310803,.910325,.930987,-.194265,.281802,.940695,.94,-.178125,.252836,.970958,.948018,-.161479,.224239,1.00078,.955141,-.144038,.195857,1.0288,.960513,-.124915,.168487,1.05371,.963964,-.104284,.141495,1.07596,.968713,-.0838732,.114437,1.09628,.975524,-.0635579,.0863105,1.11448,.98431,-.042291,.0574774,1.13069,.992916,-.0209131,.0284343,1.14568,.999926,743097e-9,-379265e-9,1.15955,.501042,-998428e-11,.498726,100306e-10,.502992,-252112e-9,.500665,253283e-9,.502417,-.00100791,.500092,.00101259,.502965,-.00226919,.500621,.00227978,.502318,-.00403109,.499994,.00405011,.502333,-.00629832,.500005,.00632868,.502362,-.00906907,.500027,.00911446,.502369,-.0123423,.500023,.0124078,.50243,-.0161178,.500066,.016211,.502493,-.0203937,.500103,.0205256,.502592,-.0251684,.500166,.0253548,.502707,-.0304389,.50023,.0307029,.502881,-.0362015,.500335,.0365753,.503124,-.0424507,.500488,.0429798,.503443,-.0491582,.500686,.0499268,.504083,-.0561476,.501155,.0574541,.504668,-.0636846,.501524,.0655408,.505319,-.0716834,.501904,.0742072,.50609,-.0800925,.502321,.0834699,.507122,-.0888425,.502896,.0933603,.508414,-.097855,.503603,.10391,.509955,-.107304,.504416,.115113,.512061,-.116921,.505565,.127054,.514419,-.12689,.506732,.139709,.517529,-.136934,.508338,.153173,.522085,-.147327,.510987,.167528,.526986,-.157612,.513527,.182708,.533122,-.168213,.516717,.198881,.540807,-.178688,.520832,.215986,.550687,-.189511,.52632,.234335,.560567,-.199998,.531009,.253375,.571698,-.210652,.535839,.273499,.584364,-.220917,.541091,.294355,.599066,-.23137,.546875,.316525,.614148,-.241206,.551306,.339671,.631157,-.250379,.555187,.36531,.647919,-.258397,.556595,.392767,.666112,-.265528,.556949,.421397,.686158,-.271827,.556617,.451433,.704838,-.27674,.552975,.482131,.723957,-.280733,.547814,.513458,.74262,-.283359,.53997,.545446,.762009,-.284541,.530422,.57775,.781314,-.284507,.518546,.610434,.799116,-.283309,.504178,.643178,.817604,-.280378,.48843,.676248,.83459,-.275619,.469457,.709698,.850974,-.26856,.447698,.744245,.866747,-.260094,.424791,.777695,.881412,-.249929,.399913,.810392,.8936,-.239137,.37308,.842872,.905943,-.226818,.345705,.874677,.916408,-.213699,.31706,.906257,.927215,-.198428,.288444,.936881,.935625,-.181643,.258329,.96795,.944076,-.164386,.228488,.998216,.951229,-.146339,.199763,1.02689,.958793,-.127709,.172153,1.0535,.963219,-.107244,.144989,1.07646,.967562,-.0857764,.11685,1.09675,.974866,-.0645377,.0880571,1.11576,.983353,-.0431732,.0587352,1.13227,.992503,-.0218356,.0294181,1.1478,1.00003,605203e-9,-231013e-9,1.16207,.482935,-101177e-10,.504695,968142e-11,.477554,-251521e-9,.499071,240676e-9,.477904,-.00100683,.499436,96342e-8,.478368,-.00226636,.499899,.0021687,.477977,-.00402719,.499513,.00385384,.477993,-.00629226,.499525,.0060221,.478011,-.00906011,.499536,.00867289,.478051,-.0123305,.499566,.0118074,.478089,-.016102,.499587,.0154269,.478171,-.0203736,.499645,.0195341,.478254,-.025143,.499692,.0241318,.47839,-.0304071,.499779,.0292247,.478588,-.0361631,.499911,.0348196,.478812,-.0424023,.500046,.0409231,.479208,-.0490724,.500326,.047552,.479841,-.0560722,.500805,.0547377,.480392,-.0636125,.501152,.0624607,.481068,-.0716134,.501561,.0707473,.481898,-.0800062,.502054,.0796118,.483022,-.0886568,.502728,.0890974,.484332,-.0977553,.503479,.0992099,.486126,-.107173,.504546,.10999,.488066,-.11677,.50557,.121476,.490521,-.126725,.506849,.133672,.494232,-.136793,.50911,.146731,.498302,-.147116,.511345,.160577,.503565,-.157446,.514344,.175335,.510902,-.168121,.518824,.191207,.519263,-.178799,.523666,.208058,.528204,-.189407,.528296,.225875,.538854,-.200145,.533724,.244782,.551278,-.210701,.539833,.264753,.565222,-.221303,.546131,.285745,.579403,-.231688,.551496,.307592,.595469,-.241718,.556809,.330582,.610929,-.250992,.559641,.354995,.629433,-.259602,.562379,.382471,.648504,-.267038,.563676,.411126,.66756,-.273388,.562092,.440924,.689143,-.278788,.560807,.472118,.709056,-.282783,.555701,.503774,.729855,-.285836,.548698,.536364,.748954,-.287078,.538544,.56895,.768373,-.287133,.526711,.601991,.78827,-.285839,.512511,.635403,.807465,-.283238,.496323,.668797,.825194,-.27906,.477638,.702584,.842203,-.272286,.456253,.736393,.857749,-.263854,.432412,.77096,.874799,-.253943,.407806,.80489,.887497,-.24237,.38033,.83771,.89966,-.230278,.352446,.870376,.911753,-.21646,.323268,.902256,.923011,-.202071,.294314,.933306,.932375,-.185519,.264104,.965177,.940537,-.167604,.234035,.996303,.948904,-.149068,.20412,1.0261,.955263,-.129539,.175431,1.05304,.960303,-.109932,.148116,1.07617,.965512,-.0880572,.119693,1.09742,.973466,-.0660548,.0901619,1.11721,.98284,-.0439228,.0599875,1.13436,.992216,-.0219588,.0298975,1.15006,.999946,119402e-9,-208547e-10,1.16471,.447827,-100414e-10,.491543,914833e-11,.454778,-251257e-9,.499172,22891e-8,.453519,-.00100342,.497787,914184e-9,.45357,-.00225776,.497847,.00205701,.453578,-.00401371,.497855,.00365705,.45357,-.00627107,.497841,.00571453,.453598,-.00902968,.497864,.00823019,.453627,-.0122888,.497882,.0112049,.453684,-.0160475,.497923,.0146405,.453764,-.0203044,.49798,.0185394,.453866,-.0250576,.498049,.0229054,.453996,-.0303028,.49813,.0277424,.454196,-.0360379,.498267,.0330587,.454457,-.0422521,.498445,.0388613,.454926,-.0488393,.498812,.0451767,.455525,-.0558653,.499272,.0520153,.456074,-.0633772,.499625,.0593754,.456752,-.0713606,.500049,.0672751,.457648,-.07971,.500615,.0757447,.458849,-.0883032,.501399,.0848231,.46029,-.0974095,.502293,.0945135,.462,-.106729,.503301,.104848,.464121,-.116354,.504533,.115884,.466889,-.126214,.506172,.127652,.470744,-.136324,.508667,.14024,.47488,-.146595,.510995,.153673,.480845,-.157027,.514832,.168053,.488262,-.167658,.519506,.183508,.496547,-.178343,.524347,.199948,.506254,-.188916,.52983,.217503,.517961,-.199975,.536357,.236272,.531484,-.210624,.543641,.256096,.545496,-.221227,.550048,.277085,.559497,-.231568,.555076,.298615,.575752,-.241698,.560541,.321547,.591999,-.251172,.564156,.345602,.610654,-.260178,.567607,.371851,.630484,-.268094,.56923,.40076,.651807,-.274661,.569779,.430801,.67239,-.280331,.566791,.461939,.693024,-.284501,.562007,.493854,.715473,-.287852,.555791,.526992,.736323,-.28929,.546345,.560102,.755771,-.289405,.534,.593543,.775424,-.2881,.519114,.627256,.795447,-.285562,.502543,.661464,.815319,-.281416,.484773,.695206,.831769,-.275523,.463445,.729044,.849464,-.267516,.440269,.764069,.866775,-.257584,.415049,.799089,.881252,-.245817,.388049,.831948,.894209,-.233127,.35889,.865526,.906922,-.219579,.329915,.89818,.919686,-.204491,.300441,.930013,.929044,-.188962,.269445,.962061,.938393,-.171079,.238402,.994214,.94661,-.15199,.208204,1.02533,.953095,-.131953,.178653,1.0529,.958644,-.111233,.150684,1.0771,.963925,-.0903098,.122359,1.09855,.971995,-.0680505,.0923342,1.11874,.981658,-.0448512,.0614195,1.13635,.991649,-.0221931,.0303582,1.15238,.999985,393403e-9,-111086e-9,1.16772,.396806,-971563e-11,.457671,842355e-11,.429186,-249421e-9,.495017,21625e-8,.429324,-998052e-9,.495173,865322e-9,.429175,-.00224487,.494999,.00194637,.429129,-.00399041,.494952,.00346004,.429153,-.00623476,.494974,.00540684,.429168,-.0089773,.494983,.00778714,.429207,-.0122175,.495012,.0106022,.429257,-.0159542,.495047,.0138535,.429338,-.0201864,.495106,.0175443,.429431,-.0249104,.495165,.0216774,.429587,-.0301252,.495279,.0262594,.429796,-.0358249,.495432,.0312968,.430065,-.0419972,.495621,.0367985,.430588,-.0485144,.496061,.042798,.43113,-.0555028,.496472,.0492914,.431743,-.0629852,.496904,.0562907,.432448,-.0709256,.497369,.0638056,.433414,-.0791942,.498032,.071885,.434638,-.0877346,.498854,.0805517,.43611,-.0968056,.499812,.0898047,.437859,-.106002,.500891,.0997142,.440017,-.115648,.502198,.110289,.443236,-.125427,.504389,.121644,.44697,-.135492,.506809,.133769,.451689,-.145746,.509858,.146787,.45811,-.156219,.514247,.160793,.465305,-.166834,.518816,.175791,.474085,-.177546,.524331,.191906,.484808,-.188262,.53104,.209199,.49732,-.199346,.538511,.227825,.509693,-.209951,.544554,.247269,.524367,-.220533,.551616,.267978,.539228,-.231082,.557368,.289672,.55644,-.241342,.563782,.31268,.574204,-.250964,.568851,.33651,.593388,-.260306,.57312,.362219,.613358,-.268667,.574916,.390322,.634512,-.275591,.575053,.420478,.65563,-.281328,.572404,.451614,.678265,-.285948,.568893,.484112,.70011,-.289408,.561878,.517348,.723005,-.291328,.55359,.551355,.743744,-.291418,.541099,.585109,.763949,-.290252,.526489,.619487,.784186,-.287648,.509496,.65404,.804304,-.283782,.491484,.688649,.823629,-.278067,.470517,.723133,.84094,-.270588,.44705,.757163,.857852,-.261188,.421252,.792816,.874934,-.249313,.394191,.827248,.888709,-.236492,.365359,.861074,.902589,-.222185,.336016,.894417,.914201,-.207314,.30527,.926825,.925978,-.191146,.274532,.9595,.93512,-.174135,.243393,.991583,.943656,-.155231,.212414,1.02356,.951719,-.134403,.182005,1.05239,.957164,-.113023,.153043,1.07754,.962656,-.0914493,.124186,1.09984,.970695,-.0694179,.0941654,1.12,.980749,-.0466199,.0629671,1.13849,.991205,-.0227032,.0311146,1.15494,.999884,632388e-9,-254483e-9,1.1706,.379821,-957289e-11,.460637,789337e-11,.405188,-247483e-9,.491396,204064e-9,.404796,-989434e-9,.490914,815853e-9,.40483,-.00222607,.490949,.00183559,.40473,-.00395723,.49084,.00326332,.404731,-.00618287,.490836,.00509945,.404768,-.00890258,.490871,.00734463,.404791,-.0121156,.490883,.00999992,.404857,-.0158214,.490938,.0130676,.404943,-.0200178,.491004,.0165503,.405059,-.0247027,.491093,.0204521,.405213,-.0298729,.491205,.0247788,.405399,-.0355226,.491333,.0295373,.405731,-.0416352,.491604,.034741,.406303,-.0480807,.492116,.0404255,.406814,-.0550458,.492506,.0465732,.407404,-.0624652,.492926,.0532058,.408149,-.0702958,.493442,.0603442,.409128,-.0784623,.494136,.0680297,.410408,-.087007,.495054,.0762786,.411813,-.0959639,.495962,.0851046,.413735,-.105075,.497257,.0945878,.416137,-.114646,.498882,.104725,.41934,-.124394,.501132,.11563,.423326,-.134328,.503883,.127325,.428419,-.14458,.50747,.139911,.43484,-.154979,.511964,.153481,.442641,-.165628,.517328,.168114,.452511,-.176365,.524258,.183995,.463473,-.187298,.531248,.200953,.475564,-.198244,.538367,.219176,.488664,-.208938,.545175,.238514,.504073,-.219599,.553227,.259129,.520832,-.230378,.560653,.280997,.538455,-.240703,.567523,.303821,.55709,-.250548,.573287,.327948,.576646,-.259964,.577795,.353362,.596705,-.268721,.580077,.380336,.618053,-.276054,.58018,.4101,.640303,-.282176,.578747,.44161,.662365,-.286931,.574294,.474106,.684542,-.290521,.567035,.507549,.707984,-.292672,.558687,.541853,.730913,-.293189,.547606,.576581,.752948,-.292199,.533471,.61172,.773452,-.289508,.516395,.646339,.794715,-.285716,.497873,.682131,.814251,-.280051,.476845,.716396,.833057,-.272873,.453449,.751503,.84959,-.263982,.427857,.786085,.867022,-.252745,.400335,.821355,.882277,-.239655,.371304,.85646,.895375,-.225386,.340397,.890828,.909347,-.209587,.310005,.923532,.921885,-.193433,.2796,.956419,.932127,-.176135,.247276,.989445,.941869,-.157872,.216186,1.02221,.949735,-.137577,.185602,1.05195,.956617,-.115285,.155767,1.07822,.961974,-.0928418,.126103,1.10149,.96972,-.0700592,.0956758,1.12207,.98012,-.0474671,.0643269,1.1408,.990825,-.0238113,.0320863,1.1577,.999876,381574e-9,-812203e-10,1.17403,.367636,-961342e-11,.469176,753287e-11,.380377,-244772e-9,.485434,191797e-9,.380416,-978857e-9,.485475,767015e-9,.380376,-.00220165,.485435,.00172522,.380419,-.00391408,.485487,.00306734,.380438,-.00611549,.485505,.00479332,.380462,-.00880558,.485525,.00690391,.380496,-.0119837,.485551,.00940039,.38056,-.0156487,.485605,.0122848,.38064,-.0197988,.485666,.0155601,.380767,-.0244324,.48577,.0192313,.380909,-.0295444,.485871,.0233032,.381142,-.0351321,.48606,.0277861,.381472,-.0411535,.486336,.0326939,.382015,-.0475408,.486833,.0380565,.382523,-.0544395,.487231,.0438615,.383129,-.061784,.487683,.0501332,.383952,-.0695085,.488313,.0568996,.38498,-.0775819,.489077,.0641952,.386331,-.0860443,.490113,.0720324,.387788,-.0948406,.491099,.0804379,.389808,-.103899,.492566,.0894899,.39252,-.113313,.494601,.0992098,.395493,-.123007,.496619,.109641,.399826,-.132859,.499912,.120919,.405341,-.143077,.504061,.133107,.411932,-.153465,.508905,.146263,.420591,-.164108,.515482,.160544,.43101,-.174893,.523191,.176123,.441881,-.185839,.53026,.192757,.453919,-.196633,.537295,.210535,.468715,-.207611,.546156,.229886,.485182,-.218517,.555173,.250543,.501926,-.229249,.562728,.27221,.51785,-.239481,.567494,.294892,.536947,-.249395,.573889,.318987,.557115,-.259,.578831,.344348,.577966,-.268075,.582055,.371223,.599489,-.276115,.583307,.399834,.62479,-.282523,.583902,.431415,.647504,-.287663,.57953,.464301,.670601,-.291538,.573103,.498123,.693539,-.293842,.563731,.532662,.717385,-.294681,.553169,.567925,.741533,-.293717,.539908,.603502,.762142,-.291156,.521902,.639074,.783014,-.28719,.502815,.674439,.805158,-.281773,.482598,.710497,.823646,-.274682,.458949,.7456,.841879,-.266184,.433129,.781085,.859515,-.255682,.406064,.816,.875335,-.242849,.376509,.851074,.890147,-.228329,.345502,.886473,.903144,-.212491,.31428,.920751,.916618,-.195695,.282994,.954606,.927953,-.178267,.251091,.988402,.937414,-.159549,.219107,1.02141,.946823,-.140022,.18896,1.05167,.954651,-.118154,.158667,1.07819,.959955,-.0946636,.128808,1.1025,.96858,-.0711792,.0973787,1.12391,.97938,-.0475046,.0650965,1.14322,.990498,-.024059,.0326267,1.16077,.999844,-512408e-10,112444e-9,1.17727,.316912,-934977e-11,.425996,695559e-11,.356423,-241372e-9,.479108,179562e-9,.356272,-965292e-9,.478897,71811e-8,.356262,-.00217182,.478894,.00161574,.356265,-.00386092,.478895,.00287261,.356278,-.0060324,.478905,.00448907,.356293,-.00868565,.478914,.00646572,.356346,-.0118207,.478965,.00880438,.356395,-.0154355,.479001,.0115066,.356484,-.019529,.479075,.0145762,.356609,-.0240991,.47918,.018018,.356766,-.0291413,.479305,.0218379,.357009,-.0346498,.479512,.0260454,.357424,-.0405462,.479909,.0306657,.357899,-.0468825,.480337,.0357054,.358424,-.0536887,.480771,.0411728,.359041,-.0609416,.481242,.0470841,.359903,-.0685239,.481943,.0534831,.360932,-.0764883,.482741,.0603795,.362196,-.0848364,.483688,.0678028,.363847,-.0935002,.484947,.0758086,.365972,-.102471,.486588,.0844173,.368741,-.111751,.488787,.0937199,.372146,-.121334,.491405,.103732,.377114,-.131147,.495604,.114608,.38226,-.141213,.499436,.126345,.389609,-.151632,.505334,.139116,.397925,-.162073,.51168,.152995,.407824,-.172819,.518876,.168071,.420014,-.183929,.527639,.184495,.434266,-.195032,.537588,.20232,.447352,-.205792,.544379,.221189,.463726,-.216704,.553422,.241616,.481406,-.227531,.562074,.263298,.498707,-.238017,.568227,.286116,.518039,-.247936,.574473,.3101,.538277,-.257437,.579191,.335401,.561166,-.266829,.584807,.362246,.583189,-.275329,.586476,.390609,.606024,-.28234,.585578,.420998,.632419,-.287924,.584496,.454357,.656128,-.291972,.577766,.488233,.679953,-.29456,.56875,.523248,.704654,-.295816,.558388,.559168,.729016,-.295157,.544826,.595326,.752062,-.292779,.528273,.631864,.773138,-.288681,.508482,.667793,.794869,-.283358,.487341,.704035,.815101,-.27608,.46354,.739925,.834212,-.26767,.438672,.775539,.852368,-.257397,.411239,.810895,.870207,-.245689,.3829,.846472,.884063,-.231452,.351496,.881788,.898284,-.215561,.31895,.917438,.912964,-.198208,.287367,.952422,.924666,-.180426,.254487,.987551,.934429,-.161525,.222226,1.02142,.943485,-.141197,.191143,1.05218,.9521,-.120085,.161112,1.07937,.957876,-.0975881,.130982,1.10403,.966943,-.0726842,.0990553,1.12616,.978313,-.0483705,.0662818,1.14619,.990048,-.0239072,.0329243,1.16413,.999984,461885e-9,-772859e-10,1.18099,.321287,-935049e-11,.455413,659662e-11,.332595,-237513e-9,.471437,167562e-9,.332729,-949964e-9,.471618,670192e-9,.332305,-.00213618,.471028,.00150712,.332326,-.00379765,.471055,.00267959,.332344,-.00593353,.471072,.00418751,.332356,-.00854349,.471077,.00603172,.332403,-.0116268,.471121,.00821362,.332461,-.0151824,.47117,.0107357,.332552,-.0192088,.471251,.0136014,.332657,-.0237024,.47133,.0168152,.332835,-.0286615,.471487,.0203853,.333083,-.0340765,.471708,.0243212,.333547,-.0398563,.47219,.0286518,.333989,-.0460916,.472587,.0333763,.334532,-.0527897,.473054,.0385084,.335167,-.0599284,.473568,.0440638,.33608,-.0673514,.474362,.0500962,.337146,-.0752237,.475231,.0566022,.338462,-.083418,.476282,.0636272,.34014,-.0919382,.477615,.0712153,.342341,-.100741,.479404,.079417,.345088,-.109905,.481618,.0882631,.349049,-.119369,.485081,.0978851,.353939,-.129033,.489317,.108336,.359893,-.139038,.494309,.119698,.366945,-.149411,.499983,.132024,.375814,-.159843,.507185,.145558,.387112,-.170664,.516392,.160433,.40023,-.181897,.526519,.176648,.412555,-.192785,.53423,.193922,.427023,-.203663,.542741,.212662,.443685,-.214695,.552066,.232944,.461499,-.225561,.560762,.254495,.480975,-.236257,.569421,.277531,.501,-.24639,.576101,.301724,.521691,-.256101,.581493,.327112,.543478,-.265289,.585221,.353917,.566094,-.273938,.587614,.381941,.589578,-.281679,.587991,.41172,.614583,-.287655,.585928,.444148,.641813,-.292228,.582092,.478617,.666189,-.295172,.57398,.51397,.690475,-.29648,.561676,.550118,.715543,-.296203,.548758,.586933,.740405,-.293999,.532792,.62384,.762183,-.28998,.512735,.660723,.786069,-.28478,.492402,.69807,.806812,-.277568,.469058,.734422,.826987,-.268951,.443017,.770946,.844588,-.259049,.415501,.80699,.863725,-.2471,.387328,.842107,.879137,-.234157,.356108,.878078,.894634,-.218719,.324315,.914058,.909162,-.201293,.291813,.949922,.92072,-.18267,.258474,.985337,.93158,-.163212,.225593,1.0205,.941238,-.142771,.193986,1.05273,.949293,-.120956,.163392,1.08075,.956226,-.0985743,.132934,1.10559,.96546,-.075118,.101255,1.12823,.977403,-.0497921,.0675441,1.149,.989648,-.0241574,.0334681,1.16765,1.00001,5762e-7,-184807e-9,1.18519,.303474,-916603e-11,.4542,61243e-10,.308894,-232869e-9,.462306,155592e-9,.309426,-931661e-9,.463093,622499e-9,.308643,-.0020949,.461933,.00139979,.308651,-.0037242,.461941,.00248874,.308662,-.00581873,.46195,.00388933,.308687,-.00837818,.461974,.00560247,.308728,-.0114016,.462011,.00762948,.308789,-.0148884,.462067,.00997326,.308882,-.0188369,.462151,.0126375,.309007,-.0232436,.462263,.0156271,.30918,-.0281054,.462417,.0189498,.309442,-.0334065,.462667,.0226167,.309901,-.0390589,.463162,.0266614,.310331,-.0452042,.463555,.0310715,.310858,-.0517735,.464019,.0358698,.311576,-.0587359,.464669,.0410848,.312436,-.0660383,.465406,.0467453,.313526,-.0737266,.466339,.0528718,.314903,-.0817574,.467504,.0595039,.316814,-.090167,.469226,.0666888,.318965,-.0987555,.470981,.0744658,.322077,-.107792,.473814,.082912,.325947,-.117098,.477241,.0920846,.331008,-.126602,.48184,.102137,.337893,-.136619,.488334,.113135,.345106,-.146838,.494415,.12511,.355111,-.157357,.503275,.138356,.365095,-.167955,.510966,.152686,.378344,-.179157,.521508,.16856,.391599,-.190143,.530455,.18561,.407786,-.20123,.541275,.204308,.425294,-.212456,.551784,.224623,.444021,-.223568,.561493,.246172,.463418,-.234154,.569886,.268979,.484077,-.244546,.577116,.293411,.505513,-.254301,.582914,.318936,.527672,-.263564,.587208,.345856,.550565,-.272332,.589277,.374054,.573656,-.280011,.588426,.403276,.59827,-.286924,.587504,.43474,.624731,-.291994,.583401,.468767,.652396,-.295159,.576997,.504411,.67732,-.296954,.565863,.54114,.703147,-.296877,.552316,.57816,.728715,-.295147,.536773,.616124,.752448,-.291275,.51771,.653885,.775169,-.285905,.496087,.691537,.799307,-.279064,.474232,.729251,.819482,-.270294,.447676,.766267,.837659,-.260032,.419656,.802616,.856903,-.248497,.391328,.838583,.873325,-.235252,.360285,.874711,.889788,-.221126,.329215,.91077,.904486,-.204304,.296392,.94653,.917711,-.185562,.262159,.983828,.928969,-.165635,.229142,1.01955,.939707,-.14442,.19673,1.05317,.948167,-.122147,.165095,1.0823,.955222,-.099098,.13451,1.10791,.964401,-.0755332,.102476,1.1312,.976605,-.0513817,.0689667,1.15218,.989085,-.0258499,.034506,1.17129,.999908,617773e-9,-271268e-9,1.18961,.285803,-905752e-11,.452348,572272e-11,.284689,-22732e-8,.450581,143626e-9,.285263,-910214e-9,.451482,575099e-9,.285302,-.00204784,.451553,.00129395,.285318,-.00364057,.451574,.0023006,.28533,-.00568813,.451585,.00359547,.285361,-.00819001,.451618,.00517934,.285397,-.0111458,.45165,.007054,.285447,-.0145536,.451688,.00922167,.285527,-.0184127,.451758,.0116869,.285688,-.0227207,.451929,.0144555,.28584,-.0274712,.452055,.0175341,.286136,-.0326278,.452369,.0209406,.286574,-.0381792,.452853,.0246965,.287012,-.0441879,.453272,.0287996,.287542,-.0506096,.453752,.033268,.288299,-.0573634,.454488,.0381504,.289186,-.0645458,.455294,.0434447,.290302,-.0720405,.456301,.0491973,.291776,-.0799046,.457648,.0554453,.29372,-.088117,.459483,.0622311,.296052,-.0965328,.461571,.0695992,.299563,-.105409,.465085,.077658,.30335,-.114553,.468506,.0864176,.309167,-.123917,.474423,.0961078,.31529,-.13381,.47995,.106643,.324163,-.144021,.488592,.118322,.333272,-.154382,.496461,.131133,.344224,-.165015,.50562,.145208,.357733,-.176168,.516719,.16073,.373046,-.187468,.528513,.177807,.38788,-.198488,.537713,.196072,.405133,-.209545,.547999,.21605,.423845,-.220724,.55759,.237484,.443777,-.231518,.566246,.26039,.464824,-.242035,.574326,.284835,.486635,-.251898,.58037,.310518,.51012,-.261304,.58568,.337678,.535301,-.270384,.590197,.366242,.559193,-.27841,.590569,.395873,.583544,-.285325,.588161,.426857,.608834,-.291113,.584249,.459477,.635753,-.294882,.57763,.494734,.664367,-.297088,.569479,.532023,.689688,-.297364,.555064,.569629,.715732,-.295949,.539522,.608124,.741307,-.292259,.521613,.646231,.764949,-.287063,.49969,.684938,.788599,-.28012,.476747,.723548,.81048,-.27153,.45116,.761135,.831372,-.261289,.424101,.798916,.850092,-.249559,.39443,.835952,.867777,-.236348,.363849,.871606,.884632,-.221569,.332477,.907843,.90047,-.20618,.300667,.944187,.914524,-.188771,.266552,.981371,.926892,-.168362,.232349,1.01841,.937951,-.146761,.199359,1.05308,.947236,-.123813,.1675,1.0839,.954367,-.099984,.136166,1.11047,.963907,-.0759278,.103808,1.13414,.976218,-.0511367,.0697061,1.15575,.988772,-.0267415,.0352529,1.17531,.999888,-520778e-9,289926e-9,1.19389,.263546,-883274e-11,.441896,526783e-11,.262352,-221849e-9,.439889,132311e-9,.262325,-886683e-9,.439848,528824e-9,.26228,-.00199476,.439765,.00118975,.262372,-.00354671,.439922,.00211568,.26239,-.00554141,.439941,.00330652,.262412,-.00797888,.439961,.00476346,.262453,-.0108584,.440002,.00648818,.262528,-.0141788,.440085,.0084835,.262615,-.017938,.440166,.0107533,.262744,-.0221346,.440291,.0133044,.262939,-.026762,.440493,.0161445,.263277,-.0317573,.440889,.0192974,.26368,-.0371832,.441338,.0227699,.264106,-.0430371,.441753,.0265698,.264624,-.0493035,.442227,.0307178,.265378,-.0558669,.442985,.0352616,.266253,-.0628718,.443795,.0401968,.267478,-.0701569,.445008,.04559,.269062,-.077845,.446599,.0514539,.270926,-.0857941,.448349,.0578382,.273693,-.0940773,.451221,.0648363,.276746,-.102704,.454097,.0724389,.281693,-.111735,.459517,.0808744,.287335,-.121004,.46531,.0901551,.29448,-.130734,.472605,.100371,.30257,-.140777,.480251,.111644,.312465,-.15111,.489444,.124111,.324856,-.16189,.500919,.137979,.33774,-.172946,.511317,.153163,.35255,-.184152,.522684,.169817,.367786,-.19522,.53248,.187886,.385474,-.20632,.543326,.207634,.404976,-.217744,.554109,.229165,.425203,-.228691,.563395,.252068,.446704,-.239299,.571565,.276471,.468951,-.249348,.577935,.302323,.493487,-.258933,.584309,.329882,.517861,-.268009,.58773,.358525,.543309,-.276238,.589612,.388585,.569704,-.28356,.589294,.419787,.594871,-.289497,.585137,.452114,.622555,-.294452,.580356,.486466,.651167,-.296918,.57185,.523079,.677332,-.297647,.558428,.5611,.703718,-.296321,.542232,.599592,.730262,-.293339,.524541,.639138,.754304,-.288036,.502691,.677978,.778051,-.281018,.479212,.716537,.801557,-.272414,.454071,.75586,.822559,-.262419,.425952,.794477,.843051,-.250702,.397313,.832664,.86232,-.237264,.366534,.869876,.879044,-.222716,.334816,.906973,.896362,-.206827,.303143,.943558,.910342,-.189659,.269699,.979759,.924119,-.171108,.236411,1.01718,.935374,-.149579,.202224,1.05289,.944295,-.126295,.16989,1.08496,.952227,-.101511,.138089,1.11256,.962041,-.0766392,.105053,1.1375,.97528,-.0511967,.070329,1.15983,.988476,-.025463,.0351268,1.17987,.999962,286808e-10,145564e-10,1.19901,.227089,-841413e-11,.404216,472707e-11,.239725,-215083e-9,.426708,120833e-9,.239904,-860718e-9,.427028,483555e-9,.239911,-.00193661,.427039,.00108806,.239914,-.00344276,.42704,.00193457,.239933,-.00537907,.427064,.00302363,.239944,-.00774482,.427065,.00435604,.239993,-.01054,.427122,.00593398,.240052,-.0137626,.427179,.00775987,.240148,-.0174115,.427279,.00983854,.240278,-.021484,.42741,.0121763,.240472,-.0259729,.427618,.0147827,.240839,-.0308131,.428086,.0176837,.241201,-.0360893,.428482,.0208775,.241626,-.0417723,.428907,.0243821,.242207,-.0478337,.42952,.0282228,.24298,-.0542199,.430332,.0324333,.243881,-.0610015,.431222,.0370252,.245123,-.0680874,.432512,.0420535,.24667,-.0755482,.434088,.0475414,.248779,-.0832873,.436323,.0535542,.251665,-.0913546,.439509,.0601716,.255305,-.0998489,.443478,.0674282,.260049,-.108576,.448713,.0754673,.266192,-.117754,.455524,.084339,.273158,-.127294,.4627,.0941683,.282131,-.137311,.472068,.10515,.293332,-.147736,.483565,.117402,.304667,-.158357,.493702,.130824,.317785,-.169274,.504708,.145724,.333245,-.180595,.517107,.16215,.349843,-.191892,.528849,.180149,.367944,-.203168,.540301,.199746,.387579,-.214443,.551514,.221047,.408247,-.225624,.560906,.243981,.43014,-.236422,.56959,.268513,.452669,-.24654,.576098,.294409,.476196,-.256157,.580925,.322002,.501157,-.265289,.584839,.351052,.527632,-.273671,.587614,.3812,.555754,-.281254,.589119,.412994,.581682,-.287448,.585204,.445498,.608196,-.292614,.579006,.479505,.635661,-.296068,.571297,.514643,.664999,-.297395,.560855,.552213,.691039,-.296645,.544525,.591365,.7179,-.293785,.526535,.630883,.744059,-.289089,.50545,.670932,.76863,-.282239,.482514,.710904,.793273,-.273688,.457246,.750259,.814731,-.26328,.428872,.78948,.835603,-.251526,.399384,.828597,.85489,-.238339,.368811,.866892,.872828,-.223607,.336617,.90563,.889462,-.207538,.303997,.943538,.904929,-.190297,.270812,.980591,.919101,-.172034,.237453,1.01935,.930536,-.152058,.204431,1.05498,.941223,-.129515,.172495,1.08717,.94982,-.104263,.140175,1.11551,.960592,-.0781944,.106465,1.14098,.974629,-.051688,.0711592,1.16418,.98811,-.0253929,.0354432,1.18465,1.00004,804378e-9,-330876e-9,1.20462,.214668,-821282e-11,.406619,433582e-11,.218053,-208144e-9,.413025,109887e-9,.217987,-832212e-9,.412901,439362e-9,.217971,-.00187246,.412876,988623e-9,.217968,-.00332855,.41286,.00175772,.217985,-.00520055,.412882,.00274729,.218014,-.00748814,.412916,.00395842,.218054,-.0101901,.412957,.00539274,.218106,-.0133057,.413005,.00705348,.218217,-.0168342,.413139,.00894581,.218338,-.0207707,.413258,.0110754,.21855,-.0251001,.413509,.0134551,.218913,-.0297861,.413992,.0161081,.219265,-.0348956,.414383,.0190307,.219696,-.0403909,.414839,.0222458,.220329,-.0462003,.415567,.025792,.220989,-.0524208,.41621,.0296637,.222027,-.058948,.417385,.0339323,.223301,-.0658208,.418779,.0386055,.224988,-.0730347,.420665,.0437355,.227211,-.0805274,.423198,.0493844,.230131,-.088395,.426566,.0556135,.233908,-.0966208,.43091,.0624829,.239092,-.105223,.437148,.0701636,.245315,-.11424,.444302,.0786949,.253166,-.12368,.453262,.0882382,.262374,-.133569,.463211,.0988682,.273145,-.143836,.474271,.110727,.285512,-.154577,.4863,.123945,.299512,-.165501,.498817,.138581,.314287,-.176698,.510341,.154676,.331083,-.188066,.522583,.172459,.349615,-.199597,.534879,.191979,.369318,-.210843,.546083,.21309,.390377,-.222068,.5562,.235998,.412411,-.233059,.564704,.260518,.435715,-.24357,.572314,.286795,.461196,-.253356,.579395,.314559,.485587,-.262362,.581985,.343581,.511908,-.270895,.584347,.374367,.539798,-.278452,.58505,.406015,.567974,-.284877,.583344,.439168,.594303,-.290124,.577348,.473005,.622951,-.294183,.570751,.508534,.652404,-.296389,.561541,.544764,.679291,-.296605,.546426,.582927,.706437,-.294095,.528599,.622681,.734485,-.28978,.508676,.663567,.758841,-.283363,.484768,.704092,.78537,-.275015,.460434,.745101,.807315,-.264689,.432166,.784712,.8271,-.252597,.401807,.824241,.849191,-.239154,.371458,.863803,.867046,-.224451,.338873,.903063,.8852,-.208342,.306175,.942763,.901771,-.190684,.272759,.981559,.915958,-.172105,.239306,1.02048,.928046,-.152214,.206071,1.05765,.939961,-.130247,.17367,1.08999,.948711,-.10672,.142201,1.11829,.959305,-.0808688,.108454,1.14467,.973009,-.0539145,.0728109,1.16839,.987631,-.0262947,.0360625,1.19004,.999978,.00132758,-559424e-9,1.21058,.193925,-793421e-11,.391974,392537e-11,.196746,-200315e-9,.397675,991033e-10,.19667,-801099e-9,.397521,396342e-9,.196633,-.00180246,.397445,891829e-9,.196654,-.00320443,.397482,.00158582,.196659,-.00500647,.39748,.00247867,.196683,-.0072086,.397506,.00357167,.196728,-.00981001,.397562,.00486675,.196792,-.0128096,.397633,.00636707,.19689,-.0162055,.397746,.00807752,.197017,-.0199943,.397884,.0100052,.19729,-.024139,.39827,.0121691,.197583,-.0286671,.398639,.0145755,.197927,-.0335858,.399034,.0172355,.198383,-.0388806,.399554,.0201718,.199002,-.0444736,.400289,.0234194,.199739,-.0504583,.401111,.026984,.200784,-.056729,.402349,.0309217,.202075,-.0633643,.403841,.0352496,.203898,-.0703247,.406076,.0400313,.206199,-.0775565,.408841,.0453282,.209252,-.085184,.41259,.0511794,.213638,-.0931994,.418288,.0577459,.21881,-.101617,.424681,.0650508,.225642,-.11052,.433429,.0732759,.233717,-.119772,.442897,.0824683,.242823,-.129505,.452888,.0927484,.254772,-.139906,.466407,.104417,.266603,-.150402,.477413,.117211,.28073,-.161395,.490519,.131598,.295399,-.172465,.50201,.147407,.312705,-.183982,.515311,.165031,.331335,-.195532,.52786,.184336,.351037,-.206971,.5392,.205361,.372175,-.218117,.54941,.228043,.394548,-.229327,.558642,.25267,.419598,-.240052,.567861,.279071,.443922,-.249937,.573332,.306882,.471495,-.259407,.58013,.33661,.496769,-.267749,.580564,.367328,.524951,-.275524,.581696,.399753,.55318,-.282148,.579885,.433134,.581577,-.287533,.575471,.467534,.609231,-.291612,.567445,.502943,.637478,-.293911,.557657,.53871,.667795,-.295096,.546535,.576568,.694272,-.294073,.529561,.614929,.722937,-.290386,.510561,.655909,.749682,-.284481,.487846,.697663,.774754,-.276188,.462487,.738515,.799301,-.266215,.43481,.779802,.820762,-.254116,.404879,.820045,.843231,-.240393,.374559,.860294,.861857,-.225503,.341582,.900965,.880815,-.209382,.308778,.941727,.89766,-.19155,.275232,.980916,.912926,-.172346,.240938,1.02162,.926391,-.151799,.207223,1.0597,.938429,-.129968,.17484,1.09291,.947834,-.10651,.142984,1.12248,.958432,-.0824098,.109902,1.149,.972402,-.0565242,.0744454,1.1733,.987191,-.028427,.0373794,1.19538,.999975,385685e-10,-4203e-8,1.21676,.178114,-766075e-11,.385418,354027e-11,.176074,-191966e-9,.381002,887135e-10,.17601,-767549e-9,.380861,354715e-9,.17598,-.00172696,.380798,798168e-9,.175994,-.00307012,.380824,.00141928,.176017,-.00479684,.380858,.00221859,.176019,-.00690648,.380839,.00319714,.176072,-.00939888,.380913,.0043572,.176131,-.0122726,.380979,.005702,.176239,-.0155264,.38112,.00723689,.176371,-.0191551,.381272,.00896907,.176638,-.023117,.381669,.0109194,.176912,-.0274633,.382015,.0130903,.177279,-.032173,.382476,.0154949,.17774,-.0372219,.383041,.0181669,.178344,-.0426132,.38378,.0211209,.179153,-.0483309,.384773,.0243899,.180197,-.0543447,.386076,.0280062,.181581,-.0607122,.387809,.032004,.18344,-.0673855,.390205,.036453,.186139,-.0743989,.393944,.0414162,.189432,-.0817731,.39832,.0469394,.193795,-.0895464,.404188,.0531442,.199641,-.0978264,.4121,.0601374,.206679,-.106499,.421425,.0680078,.214865,-.115654,.431504,.076919,.224406,-.125268,.442526,.0868835,.235876,-.135475,.455465,.0981875,.248335,-.146023,.4681,.110759,.262868,-.157016,.482069,.124885,.278962,-.168245,.496182,.140645,.295082,-.17958,.507401,.157838,.313738,-.191227,.520252,.17695,.333573,-.202718,.531708,.197817,.356433,-.214424,.544509,.220785,.378853,-.225492,.55373,.245306,.402717,-.236236,.561348,.271593,.428375,-.246568,.568538,.299776,.454724,-.255941,.573462,.329433,.482291,-.264511,.576356,.360598,.509706,-.272129,.576446,.393204,.538805,-.278979,.575298,.427227,.568919,-.284528,.572154,.462157,.596804,-.288801,.564691,.497997,.625987,-.291334,.555134,.534467,.656414,-.292722,.545051,.571736,.683916,-.292185,.528813,.610158,.711809,-.290043,.51106,.649061,.739547,-.285246,.490103,.690081,.766914,-.277647,.465523,.732554,.791375,-.267603,.437718,.773982,.814772,-.256109,.40882,.81609,.836691,-.242281,.377823,.856849,.856984,-.227155,.34496,.898363,.876332,-.210395,.311335,.939471,.894988,-.192612,.277703,.980799,.911113,-.173236,.243019,1.02215,.924092,-.152258,.209037,1.06139,.936828,-.129575,.175909,1.09635,.946869,-.10594,.143852,1.12707,.958284,-.081318,.110289,1.15419,.972325,-.0556133,.0747232,1.17909,.986878,-.0297899,.0383149,1.20163,.999936,-.00197169,912402e-9,1.22338,.151174,-720365e-11,.351531,309789e-11,.155594,-18279e-8,.361806,78608e-9,.156099,-731569e-9,.362982,314615e-9,.156053,-.00164578,.362869,707845e-9,.156093,-.0029261,.362961,.00125884,.156099,-.00457155,.362959,.00196783,.15612,-.00658224,.362982,.00283622,.156168,-.00895774,.363048,.00386625,.156221,-.0116962,.363101,.00506109,.156324,-.0147973,.363241,.00642675,.156476,-.0182503,.363448,.00797175,.156731,-.0220266,.36384,.00971484,.156994,-.026176,.364179,.0116575,.157341,-.0306701,.36462,.0138207,.157867,-.0354591,.365364,.0162356,.15846,-.0406141,.366111,.0189092,.159308,-.0460519,.367248,.021885,.160426,-.0518096,.368767,.0252004,.161877,-.0578906,.370745,.0288825,.163995,-.0642812,.373831,.0330139,.16655,-.0710067,.377366,.0376283,.170237,-.0781522,.382799,.0428493,.175096,-.0857172,.389915,.0487324,.181069,-.0938025,.398487,.0554214,.188487,-.102363,.408799,.0630189,.197029,-.111343,.419991,.071634,.206684,-.120812,.431455,.0812797,.218698,-.131033,.445746,.0923651,.230726,-.141373,.457471,.104545,.245516,-.152387,.472388,.118449,.261551,-.163628,.486671,.133923,.277437,-.174814,.49762,.150849,.296662,-.186713,.51162,.169924,.31795,-.198513,.525435,.190848,.339422,-.210119,.536267,.213504,.362143,-.221354,.545982,.237947,.387198,-.23224,.555364,.264427,.412349,-.24257,.561489,.292519,.439274,-.252284,.566903,.322561,.466779,-.261023,.569614,.353952,.496011,-.26899,.571589,.387278,.524964,-.275498,.570325,.421356,.556518,-.281449,.568792,.457314,.584363,-.285526,.560268,.493199,.614214,-.28844,.55205,.530276,.645684,-.289777,.541906,.56855,.673446,-.289722,.526464,.606927,.701924,-.287792,.509872,.645945,.73037,-.284315,.490649,.685564,.757405,-.278804,.467964,.726511,.784025,-.269543,.441468,.768601,.808255,-.258117,.41216,.811321,.830739,-.244728,.380606,.853496,.851914,-.229428,.348111,.895374,.872586,-.212508,.314732,.937674,.891581,-.194025,.280338,.979869,.907641,-.174711,.245203,1.02253,.922233,-.153509,.21077,1.06371,.935878,-.130418,.177399,1.09972,.946338,-.105558,.144507,1.13124,.957265,-.080059,.110508,1.15973,.971668,-.0539766,.0742311,1.18515,.9866,-.0277101,.0375224,1.20858,1.00021,-515531e-9,135226e-9,1.23135,.137468,-686011e-11,.345041,273315e-11,.13703,-173378e-9,.343936,690761e-10,.136986,-693048e-9,.34383,276126e-9,.136964,-.00155931,.343761,621337e-9,.137003,-.00277211,.343863,.00110494,.137012,-.00433103,.343868,.00172744,.137043,-.00623606,.343916,.00249022,.13709,-.0084868,.343986,.00339559,.137145,-.0110814,.344045,.00444687,.137242,-.0140187,.344177,.00565007,.137431,-.0172713,.344491,.00701868,.137644,-.0208605,.344805,.00856042,.13791,-.024792,.345172,.0102863,.138295,-.0290461,.345734,.0122185,.138764,-.0335957,.346371,.0143771,.139415,-.038467,.347298,.0167894,.140272,-.0436176,.348527,.0194895,.141457,-.0491016,.350276,.0225043,.14303,-.0548764,.352646,.0258962,.145289,-.0610096,.356206,.0297168,.148502,-.0674777,.361488,.0340562,.152188,-.074345,.367103,.0389534,.157359,-.0817442,.375247,.0445541,.16379,-.0896334,.385064,.0509535,.171376,-.098005,.396082,.0582611,.179901,-.106817,.407418,.06654,.189892,-.116239,.420031,.075994,.201838,-.12627,.434321,.0867239,.214311,-.136701,.447631,.0987517,.228902,-.147616,.462046,.112353,.245107,-.158871,.476942,.127605,.262292,-.170261,.490285,.144469,.281215,-.182017,.503783,.163282,.301058,-.193729,.515505,.183873,.322752,-.205512,.52682,.206466,.347547,-.217214,.539473,.231194,.370969,-.227966,.546625,.257288,.397533,-.238555,.55472,.285789,.42398,-.248278,.559468,.315746,.452928,-.257422,.564095,.347724,.482121,-.265306,.565426,.380922,.510438,-.272043,.563205,.415639,.541188,-.277614,.561087,.451702,.571667,-.281927,.554922,.48845,.602432,-.285015,.546838,.526442,.634126,-.286512,.537415,.564896,.662816,-.286388,.522906,.604037,.692411,-.284734,.507003,.643795,.720946,-.281297,.488398,.68298,.748293,-.276262,.466353,.723466,.776931,-.269978,.443573,.764565,.801065,-.260305,.415279,.805838,.825843,-.247426,.384773,.849985,.84807,-.232437,.352555,.893174,.869122,-.215806,.318642,.936564,.888963,-.197307,.28381,.980253,.905547,-.177203,.247888,1.02463,.918554,-.155542,.212904,1.06714,.931395,-.131948,.1787,1.10451,.941749,-.106723,.145902,1.13694,.954551,-.0804939,.111193,1.1666,.970279,-.0534239,.0744697,1.19249,.986117,-.0257452,.0368788,1.21665,.999938,.00190634,-.0010291,1.23981,.118493,-647439e-11,.32272,23772e-10,.118765,-163023e-9,.323456,598573e-10,.118772,-65212e-8,.323477,239447e-9,.118843,-.00146741,.323657,538881e-9,.118804,-.00260846,.323553,95826e-8,.118826,-.00407576,.323595,.00149845,.118846,-.00586826,.323617,.00216047,.118886,-.00798578,.32367,.00294679,.118947,-.0104273,.323753,.00386124,.119055,-.0131909,.323922,.00490999,.119241,-.0162444,.324251,.00610804,.11944,-.0196339,.324544,.00745805,.119739,-.0233378,.325026,.00897805,.12011,-.0273179,.325586,.0106895,.120571,-.0316143,.326231,.0126073,.12124,-.0361939,.327264,.0147654,.122162,-.0410511,.328733,.0172001,.123378,-.0462233,.330659,.0199375,.125183,-.0517109,.333754,.0230498,.127832,-.0575652,.338507,.026597,.130909,-.0637441,.343666,.0306345,.135221,-.0704302,.351063,.035273,.14082,-.0776364,.360604,.0406137,.146781,-.0852293,.369638,.0466788,.155121,-.0935351,.3827,.0537628,.16398,-.102234,.39522,.0617985,.173926,-.111465,.40793,.07097,.185137,-.121296,.42105,.0813426,.19826,-.13169,.435735,.0931596,.212938,-.142614,.450932,.106547,.229046,-.153884,.465726,.121575,.246246,-.165382,.479461,.138286,.264637,-.176806,.492106,.15666,.284959,-.188793,.504774,.17728,.308157,-.200763,.518805,.19988,.330951,-.21239,.528231,.224293,.3549,-.223521,.536376,.250541,.381502,-.234169,.544846,.278902,.409529,-.244077,.551717,.309227,.437523,-.253363,.55517,.341426,.467624,-.261659,.557772,.37518,.497268,-.268498,.556442,.41007,.528294,-.274018,.553915,.446445,.559053,-.278169,.549153,.483779,.589329,-.281229,.539878,.522249,.622503,-.282902,.53162,.561754,.652382,-.282815,.518119,.601544,.681847,-.281247,.502187,.641574,.712285,-.277986,.484824,.682633,.740094,-.273017,.463483,.723426,.768478,-.266692,.441299,.763747,.794556,-.258358,.415238,.805565,.819408,-.248807,.386912,.847254,.843411,-.236214,.356165,.891091,.862397,-.219794,.320562,.936174,.883113,-.201768,.285322,.982562,.90023,-.181672,.249713,1.02862,.915192,-.159279,.214546,1.07163,.928458,-.134725,.180285,1.10995,.94069,-.10913,.147119,1.14354,.953409,-.0821315,.112492,1.17372,.969537,-.0542677,.0752014,1.20043,.985612,-.0259096,.0370361,1.22528,.999835,.00298198,-.00151801,1.24959,.10097,-602574e-11,.300277,202619e-11,.101577,-152164e-9,.302077,511662e-10,.101572,-608889e-9,.302066,204751e-9,.101566,-.00136997,.302047,460753e-9,.101592,-.00243557,.302114,819497e-9,.101608,-.0038053,.30214,.00128154,.101627,-.00547906,.30216,.0018483,.101669,-.00745647,.302224,.00252223,.101732,-.00973615,.302318,.00330716,.101844,-.0123097,.302513,.00421061,.102025,-.0151681,.30285,.00524481,.102224,-.0183334,.303166,.0064154,.102515,-.0217819,.303654,.00774063,.102886,-.0255067,.304243,.0092398,.103395,-.029514,.305089,.0109339,.104109,-.0337912,.306301,.0128561,.105074,-.0383565,.30798,.0150338,.10654,-.0432132,.310726,.0175228,.108478,-.0484244,.314351,.0203648,.111015,-.0539339,.319032,.0236325,.114682,-.0598885,.32605,.0274188,.11911,-.0663375,.334109,.0317905,.124736,-.0733011,.344013,.0368502,.131479,-.0807744,.355358,.0427104,.139283,-.0888204,.367614,.0494788,.148054,-.0973394,.380072,.0572367,.159037,-.10665,.395678,.0662704,.169794,-.116221,.40795,.0763192,.18314,-.126632,.423546,.087956,.197515,-.137383,.438213,.101042,.213514,-.148641,.453248,.115827,.23065,-.160117,.46688,.132283,.249148,-.171807,.479962,.150644,.270219,-.183695,.494618,.171073,.292338,-.195574,.506937,.193378,.314999,-.207205,.516463,.217585,.340991,-.218955,.528123,.24428,.367982,-.229917,.537025,.272784,.39432,-.239737,.541627,.302742,.423364,-.249048,.546466,.335112,.453751,-.257329,.549466,.369032,.48416,-.264623,.549503,.404577,.515262,-.270411,.547008,.441337,.547036,-.274581,.542249,.479162,.576614,-.277266,.533015,.517904,.611143,-.279144,.525512,.558508,.640989,-.279001,.51154,.598995,.671182,-.277324,.495641,.639935,.700848,-.273908,.477526,.681017,.729862,-.269063,.457955,.722764,.758273,-.262282,.434846,.764349,.784121,-.254281,.409203,.806206,.809798,-.24505,.382694,.848617,.834953,-.233861,.354034,.892445,.856817,-.221308,.321764,.936263,.877609,-.205996,.288118,.982401,.897489,-.186702,.253277,1.02975,.913792,-.164618,.217963,1.07488,.92785,-.140023,.183221,1.11487,.940378,-.11328,.149385,1.14947,.95273,-.0853958,.114152,1.1807,.969059,-.0568698,.0769845,1.20912,.985574,-.0276502,.0381186,1.23498,.999943,.00239052,-.00126861,1.25987,.0852715,-560067e-11,.279021,171162e-11,.0854143,-140871e-9,.279483,430516e-10,.0854191,-563385e-9,.2795,172184e-9,.0854188,-.00126753,.279493,387464e-9,.0854229,-.00225337,.279501,68918e-8,.0854443,-.00352086,.279549,.00107803,.0854697,-.00506962,.279591,.00155536,.0855093,-.00689873,.279652,.00212354,.0855724,-.00900821,.279752,.00278703,.0856991,-.0113799,.280011,.0035551,.085855,-.0140314,.280297,.00443449,.0860682,-.016963,.280682,.00543636,.086344,-.0201438,.281159,.0065788,.0867426,-.0235999,.281886,.00787977,.087239,-.0273069,.282745,.0093606,.0879815,-.031269,.284139,.011056,.0891258,-.035531,.28647,.0130065,.0906909,-.0400947,.289708,.0152495,.0927624,-.0449638,.293904,.0178454,.0958376,-.0502427,.300471,.0208915,.0995827,-.0559514,.30806,.0244247,.104526,-.0622152,.317874,.0285721,.110532,-.0690046,.329332,.0334227,.117385,-.0763068,.341217,.0390466,.12522,-.084184,.353968,.0455786,.134037,-.0925248,.366797,.0530773,.144014,-.101487,.380209,.0617424,.156013,-.111273,.395956,.071777,.168872,-.121431,.41053,.0830905,.183089,-.132105,.425073,.0959341,.198763,-.143286,.439833,.110448,.216159,-.154841,.454507,.126769,.234859,-.166588,.468368,.14495,.255879,-.178626,.482846,.165233,.27677,-.190218,.493489,.187217,.301184,-.202227,.506549,.211659,.325852,-.213764,.5158,.237922,.352824,-.22487,.525442,.26632,.380882,-.235246,.532487,.296691,.410137,-.244847,.537703,.329179,.439787,-.253122,.540361,.363135,.472291,-.260517,.542734,.399222,.501856,-.266519,.538826,.436352,.534816,-.270905,.535152,.474505,.565069,-.273826,.525979,.513988,.597154,-.275333,.516394,.554852,.630473,-.275314,.506206,.596592,.660574,-.273323,.489769,.638117,.692015,-.270008,.472578,.680457,.720647,-.265001,.452134,.723008,.750528,-.258311,.430344,.765954,.777568,-.250046,.405624,.809012,.80387,-.240114,.378339,.852425,.828439,-.228737,.349877,.895346,.851472,-.216632,.318968,.940695,.873906,-.202782,.287489,.987235,.89467,-.187059,.254394,1.03348,.912281,-.168818,.221294,1.07812,.927358,-.146494,.18675,1.11928,.940385,-.120009,.152322,1.15609,.952672,-.0917183,.117514,1.18875,.968496,-.0620321,.0797405,1.21821,.985236,-.0314945,.0402383,1.24523,.99998,-575153e-9,110644e-9,1.27133,.0702429,-512222e-11,.255273,140947e-11,.0702981,-128826e-9,.255469,354488e-10,.0703691,-515562e-9,.255727,141874e-9,.0703805,-.00116,.255754,31929e-8,.0703961,-.00206224,.255813,567999e-9,.0704102,-.00322223,.255839,88871e-8,.0704298,-.00463928,.255863,.00128272,.0704759,-.00631375,.255953,.00175283,.0705434,-.00824317,.256079,.00230342,.0706693,-.010412,.25636,.0029443,.0708189,-.0128439,.256647,.00368031,.0710364,-.0155177,.257084,.00452614,.0713223,-.0184374,.257637,.00549706,.0717182,-.0216002,.258416,.00661246,.072321,-.0249966,.259699,.00790147,.0731446,-.0286566,.261475,.0093884,.0743352,-.0325888,.264132,.0111186,.0760676,-.036843,.26815,.013145,.078454,-.0414292,.273636,.0155251,.0818618,-.0464634,.281653,.0183525,.0857382,-.0519478,.289992,.0216642,.0908131,-.0579836,.30066,.0255956,.0967512,-.0645124,.312204,.0301954,.103717,-.0716505,.325001,.0356017,.111596,-.0793232,.338129,.041896,.120933,-.087645,.352853,.0492447,.130787,-.096492,.366192,.0576749,.142311,-.105973,.380864,.0673969,.155344,-.116182,.396575,.0785899,.169535,-.126815,.411443,.0912377,.185173,-.138015,.426256,.105607,.201755,-.149325,.439607,.121551,.221334,-.161207,.455467,.139608,.241461,-.173162,.469096,.159591,.26294,-.18504,.481014,.18156,.286776,-.196881,.493291,.205781,.311596,-.208311,.503556,.231819,.338667,-.219671,.513268,.260274,.366021,-.230451,.519414,.290862,.395875,-.240131,.526766,.323196,.425564,-.248566,.52905,.357071,.457094,-.256195,.530796,.393262,.488286,-.262331,.528703,.430797,.522291,-.267141,.52727,.470231,.554172,-.270411,.519848,.510477,.586427,-.271986,.510307,.551594,.619638,-.27192,.499158,.593849,.650656,-.269817,.483852,.636314,.68284,-.266267,.467515,.679679,.714356,-.26113,.44931,.723884,.742717,-.254067,.425789,.767245,.770894,-.245652,.401144,.811819,.797358,-.235554,.374224,.856315,.823377,-.223896,.346167,.901077,.847456,-.210865,.316056,.946502,.870697,-.196574,.284503,.993711,.891068,-.180814,.251628,1.04134,.909267,-.163314,.219065,1.08609,.925653,-.143304,.186446,1.12702,.940017,-.121322,.153416,1.16371,.952398,-.0973872,.120334,1.19712,.967568,-.0698785,.08352,1.22791,.984772,-.0390031,.0439209,1.25672,1.00026,-.0070087,.00315668,1.28428,.0556653,-459654e-11,.227325,112556e-11,.0565238,-116382e-9,.230826,284985e-10,.0565717,-465666e-9,.231026,114036e-9,.0565859,-.00104773,.231079,256656e-9,.0565761,-.00186255,.231025,45663e-8,.0565913,-.00291002,.231058,714664e-9,.0566108,-.00418998,.231085,.00103224,.0566532,-.00570206,.231169,.00141202,.0567473,-.00743666,.231417,.00186018,.0568567,-.00940298,.231661,.00238264,.0569859,-.0115991,.231895,.00298699,.0572221,-.0140096,.232456,.00368957,.057519,-.0166508,.233096,.00450303,.0579534,-.01951,.234094,.00544945,.0585922,-.0225991,.235629,.00655564,.0595647,-.0259416,.238106,.00785724,.0609109,-.0295661,.241557,.00939127,.0628751,-.0335126,.246652,.0112198,.0656908,-.0378604,.254091,.0134168,.0691347,-.0426543,.262666,.0160374,.0732165,-.0478967,.272029,.0191514,.0782863,-.0536716,.283007,.0228597,.0843973,-.0600683,.295732,.0272829,.0913598,-.0670095,.308779,.032484,.0994407,-.0745516,.322886,.0385886,.108189,-.082712,.336408,.0457133,.118574,-.0914927,.351692,.0539832,.129989,-.100854,.366502,.0635162,.142722,-.110837,.381675,.0744386,.156654,-.121353,.3963,.0868483,.172151,-.132414,.411477,.100963,.188712,-.143809,.42508,.116795,.208093,-.155765,.441328,.134715,.227936,-.167608,.454328,.154396,.249495,-.179579,.467235,.176179,.27362,-.191488,.480248,.200193,.296371,-.202618,.487886,.225775,.324234,-.214133,.499632,.25441,.353049,-.225212,.509532,.285077,.381785,-.234875,.514265,.317047,.414038,-.244205,.521282,.351874,.445251,-.252145,.522931,.388279,.476819,-.258433,.520947,.425825,.509209,-.263411,.517669,.465104,.542759,-.266732,.512841,.505741,.574822,-.268263,.503317,.547611,.609324,-.268489,.493035,.590953,.641772,-.266941,.478816,.63488,.674049,-.263297,.462863,.679072,.705071,-.257618,.442931,.723487,.734709,-.250625,.421299,.768708,.763704,-.24179,.397085,.814375,.791818,-.231115,.370577,.859907,.817439,-.21922,.34232,.906715,.843202,-.205658,.312627,.953943,.866639,-.190563,.280933,1.00185,.888129,-.173978,.248393,1.05105,.907239,-.155485,.216007,1.09704,.923893,-.134782,.183233,1.13857,.938882,-.11249,.150376,1.17539,.952464,-.0890706,.117177,1.20924,.968529,-.0646523,.0813095,1.24055,.984763,-.038606,.0439378,1.27018,1.00053,-.01238,.00598668,1.29873,.0437928,-409594e-11,.204012,879224e-12,.0440166,-103395e-9,.205049,221946e-10,.0440529,-413633e-9,.205225,887981e-10,.0440493,-930594e-9,.2052,199858e-9,.0439884,-.00165352,.204901,355495e-9,.0440716,-.0025849,.205255,556983e-9,.0440968,-.00372222,.205311,805326e-9,.0441359,-.00506478,.205391,.00110333,.0442231,-.00660384,.205638,.00145768,.0443254,-.00835246,.205877,.00187275,.0444832,-.0102992,.20627,.00235938,.0447001,-.0124449,.206796,.0029299,.0450168,-.0147935,.207593,.0036005,.0454816,-.017336,.208819,.00439246,.0462446,-.0201156,.211036,.00533864,.0473694,-.0231568,.214388,.00646984,.0490191,-.0264941,.219357,.00783856,.0512776,-.030184,.226061,.00950182,.0541279,-.0342661,.234094,.0115156,.0578989,-.0388539,.244297,.0139687,.0620835,-.0438735,.254457,.0169015,.0673497,-.04951,.266706,.0204554,.0731759,-.0556263,.278753,.0246606,.0803937,-.0624585,.29309,.0297126,.0879287,-.0697556,.305856,.0355868,.0970669,-.0778795,.321059,.0425768,.106508,-.0863541,.333873,.05056,.11776,-.0955935,.349008,.0598972,.130081,-.105438,.363776,.0706314,.144454,-.115899,.380112,.0828822,.1596,-.126827,.394843,.0967611,.176097,-.138161,.409033,.112381,.194726,-.149904,.424257,.129952,.213944,-.161675,.436945,.149333,.235516,-.173659,.450176,.170892,.260564,-.185963,.466305,.194984,.285183,-.197582,.477328,.220805,.311095,-.208697,.486566,.248694,.338924,-.219519,.494811,.279015,.369757,-.229766,.504065,.311725,.3996,-.238879,.507909,.345844,.430484,-.246802,.509805,.381749,.46413,-.253924,.511436,.420251,.497077,-.259319,.508787,.459957,.530434,-.263297,.50394,.501356,.565725,-.265619,.49804,.544252,.599254,-.265842,.487346,.587856,.631251,-.263978,.472975,.631969,.663972,-.26043,.457135,.677471,.697724,-.255358,.439844,.723744,.727725,-.248308,.417872,.770653,.756417,-.239181,.39273,.817357,.785419,-.22814,.367839,.864221,.81266,-.215681,.339449,.912701,.839391,-.201623,.309279,.962419,.86366,-.185624,.278029,1.0122,.885028,-.16797,.245294,1.06186,.904639,-.148336,.212689,1.10934,.922048,-.12637,.179616,1.15063,.936952,-.102928,.146749,1.18885,.951895,-.0785268,.112733,1.22352,.967198,-.0530153,.0760056,1.25681,.984405,-.02649,.0383183,1.28762,1.00021,70019e-8,-20039e-8,1.31656,.0325964,-355447e-11,.176706,655682e-12,.0329333,-899174e-10,.178527,165869e-10,.0329181,-359637e-9,.178453,663498e-10,.0329085,-808991e-9,.178383,149332e-9,.0329181,-.00143826,.178394,265873e-9,.0329425,-.00224678,.178517,416597e-9,.0329511,-.00323575,.17849,603299e-9,.033011,-.00439875,.178695,829422e-9,.0330733,-.00574059,.178843,.00109908,.0331857,-.00725896,.179176,.00141933,.0333445,-.00895289,.179618,.0017999,.0335674,-.0108219,.180238,.00225316,.033939,-.0128687,.181417,.00279765,.0345239,-.015114,.183395,.0034564,.0354458,-.017596,.186616,.00425864,.0368313,-.0203524,.191547,.00524936,.0386115,-.0234105,.197508,.00647033,.0410303,-.0268509,.205395,.00798121,.0442245,-.0307481,.215365,.0098557,.0478659,-.0350863,.225595,.0121417,.0522416,-.0399506,.236946,.0149385,.0574513,-.045357,.249442,.0183189,.0631208,-.0512863,.261222,.0223644,.0701124,-.0579273,.275418,.0272418,.0777331,-.0650652,.288989,.0329458,.0862709,-.0728813,.302546,.0396819,.096103,-.081363,.317164,.04757,.106976,-.0904463,.331733,.0567012,.119175,-.100105,.34661,.067202,.132919,-.110375,.362249,.0792588,.147727,-.121115,.376978,.0928672,.163618,-.132299,.390681,.108228,.182234,-.143887,.406571,.125502,.201809,-.155827,.42042,.144836,.225041,-.168357,.438411,.166706,.247621,-.18004,.450368,.189909,.27097,-.191536,.460083,.215251,.296658,-.203024,.469765,.243164,.325892,-.214056,.481837,.273388,.35406,-.224104,.487474,.305344,.384372,-.233489,.492773,.339741,.41749,-.241874,.498451,.376287,.45013,-.248834,.499632,.414195,.481285,-.254658,.495233,.454077,.519183,-.259367,.496401,.496352,.551544,-.261818,.487686,.538798,.587349,-.262964,.479453,.583626,.621679,-.262128,.467709,.629451,.654991,-.258998,.452123,.67566,.686873,-.254119,.433495,.723248,.719801,-.246946,.413657,.771156,.750355,-.237709,.390366,.81989,.780033,-.226549,.364947,.868601,.809254,-.214186,.337256,.920034,.836576,-.199639,.307395,.971706,.861774,-.183169,.275431,1.02479,.885707,-.165111,.243431,1.07837,.904742,-.144363,.210921,1.12783,.915604,-.121305,.17647,1.17254,.930959,-.0962119,.143106,1.21012,.948404,-.069969,.108112,1.24474,.967012,-.0427586,.0708478,1.27718,.984183,-.0147043,.032335,1.3083,.999577,.0142165,-.00726867,1.3382,.0229227,-299799e-11,.148623,462391e-12,.0232194,-758796e-10,.15054,117033e-10,.0232315,-303636e-9,.15063,468397e-10,.0232354,-683189e-9,.150624,105472e-9,.0232092,-.0012136,.150445,187744e-9,.0232523,-.00189765,.150679,294847e-9,.0232828,-.00273247,.150789,428013e-9,.0233371,-.00371287,.150995,591134e-9,.0234015,-.00484794,.15118,787642e-9,.023514,-.00612877,.151562,.00102547,.023679,-.00756125,.152116,.00131351,.0239559,-.00914651,.153162,.00166594,.0244334,-.010904,.155133,.00210182,.025139,-.0128615,.158035,.00264406,.0262598,-.0150628,.162751,.00332923,.0277875,-.0175532,.168944,.00419773,.0298472,-.0203981,.176835,.00530034,.0325444,-.023655,.186686,.00669777,.0355581,-.0272982,.196248,.00842661,.0392841,-.0314457,.207352,.0105854,.0436815,-.0361157,.219279,.0132458,.0485272,-.0412932,.230728,.0164736,.0541574,-.0470337,.242994,.0203715,.0609479,-.0535002,.257042,.0250953,.0685228,-.0605409,.27102,.0306856,.0768042,-.0680553,.28406,.037193,.0864844,-.0765011,.299186,.0449795,.0969415,-.0852674,.3132,.0538316,.108478,-.0947333,.327138,.0641149,.121705,-.10481,.342345,.0759185,.136743,-.115474,.358472,.0894116,.152986,-.126536,.374067,.104562,.170397,-.138061,.388267,.121632,.191392,-.150203,.406467,.140996,.211566,-.161751,.418641,.161696,.233567,-.173407,.430418,.184557,.257769,-.185397,.44277,.210092,.28531,-.197048,.457191,.237827,.311726,-.20784,.464712,.267253,.340537,-.218345,.472539,.299332,.372921,-.228306,.482331,.333988,.402924,-.236665,.484378,.369722,.434475,-.244097,.484717,.407836,.469736,-.250547,.487093,.448465,.505045,-.25511,.485575,.490263,.540262,-.258444,.481225,.534495,.576347,-.259903,.473481,.579451,.608656,-.259572,.4603,.625604,.646679,-.257908,.450341,.674511,.679902,-.253663,.431561,.723269,.714159,-.247419,.412684,.773263,.745345,-.239122,.389388,.824182,.778248,-.228837,.365361,.876634,.807208,-.216197,.337667,.92945,.835019,-.201772,.307197,.985261,.860261,-.185291,.274205,1.04299,.877601,-.165809,.240178,1.09816,.898211,-.143897,.207571,1.14694,.915789,-.119513,.174904,1.19008,.931831,-.0932919,.141423,1.2297,.949244,-.0656528,.105603,1.26553,.967527,-.0370262,.0679551,1.29986,.984139,-.00730117,.0283133,1.33252,.999713,.0234648,-.0121785,1.36397,.0152135,-245447e-11,.122795,304092e-12,.0151652,-615778e-10,.122399,76292e-10,.0151181,-245948e-9,.122023,304802e-10,.0151203,-553394e-9,.12203,686634e-10,.015125,-983841e-9,.122037,122463e-9,.0151427,-.00153774,.12214,192706e-9,.0151708,-.0022103,.122237,281219e-9,.0152115,-.00300741,.12238,390804e-9,.0152877,-.00392494,.1227,526317e-9,.015412,-.00496597,.123244,69443e-8,.0156201,-.00613314,.124228,90547e-8,.0159658,-.00744113,.125945,.0011732,.0165674,-.00892546,.129098,.00151888,.017487,-.010627,.133865,.00197007,.018839,-.0126043,.140682,.0025637,.020554,-.0148814,.148534,.00333637,.0226727,-.0175123,.157381,.00433738,.0251879,-.0205266,.166685,.00561664,.0283635,-.0240319,.177796,.00725563,.0318694,-.0279432,.188251,.00928811,.0361044,-.0324313,.200038,.011835,.0406656,-.0373527,.210685,.0149146,.0463846,-.0430132,.224182,.0187254,.0525696,-.0491013,.23634,.0232283,.0598083,-.0559175,.250013,.0286521,.0679437,-.0633657,.263981,.0350634,.0771181,-.0714602,.278072,.0425882,.0881273,-.0803502,.29511,.0514487,.0996628,-.0896903,.309976,.0615766,.112702,-.099644,.325611,.0732139,.126488,-.109829,.339321,.0862324,.142625,-.120859,.35574,.101275,.15953,-.131956,.369845,.117892,.176991,-.143145,.38146,.136205,.199715,-.155292,.40052,.157252,.220787,-.167066,.412055,.179966,.243697,-.178396,.423133,.204418,.272106,-.190433,.439524,.232141,.297637,-.201265,.447041,.261109,.325273,-.211834,.454488,.292627,.357219,-.221889,.465004,.326669,.387362,-.230729,.468527,.362426,.423131,-.23924,.475836,.401533,.45543,-.246067,.475017,.441902,.493393,-.251557,.478017,.484239,.526253,-.255571,.4709,.528586,.560554,-.257752,.463167,.574346,.599306,-.258076,.456452,.621655,.634541,-.256471,.443725,.670492,.668907,-.253283,.428719,.721943,.705619,-.247562,.411348,.772477,.739034,-.240626,.388939,.8264,.771408,-.231493,.36425,.881702,.803312,-.220125,.337321,.9385,.828457,-.206645,.305364,.997437,.854819,-.190664,.273715,1.05693,.878666,-.171429,.242218,1.11251,.898404,-.149235,.209556,1.16398,.917416,-.12435,.176863,1.21014,.933133,-.0972703,.142775,1.25178,.95066,-.0683607,.106735,1.29028,.968589,-.0378724,.0681609,1.32703,.984776,-.00605712,.0273966,1.36158,.99994,.0263276,-.0138124,1.3943,.00867437,-186005e-11,.0928979,173682e-12,.00864003,-466389e-10,.0925237,435505e-11,.00864593,-186594e-9,.0925806,174322e-10,.00864095,-419639e-9,.0924903,392862e-10,.00863851,-746272e-9,.0924589,702598e-10,.00868531,-.00116456,.0929,111188e-9,.00869667,-.00167711,.0928529,163867e-9,.00874332,-.00228051,.0930914,23104e-8,.00882709,-.00297864,.0935679,31741e-8,.00898874,-.00377557,.0946165,430186e-9,.00929346,-.00469247,.0967406,580383e-9,.00978271,-.00575491,.100084,783529e-9,.0105746,-.00701514,.105447,.00106304,.0116949,-.00851797,.112494,.00144685,.0130419,-.0102757,.119876,.00196439,.0148375,-.012381,.129034,.00266433,.0168725,-.01482,.137812,.00358364,.0193689,-.0176563,.147696,.00478132,.0222691,-.0209211,.157795,.00631721,.0256891,-.0246655,.168431,.00826346,.0294686,-.0288597,.178587,.0106714,.0340412,-.0336441,.190251,.0136629,.0393918,-.039033,.202999,.0173272,.0453947,-.0450087,.215655,.0217448,.0521936,-.0515461,.228686,.0269941,.0600279,-.058817,.242838,.033272,.0692398,-.0667228,.258145,.0406457,.0793832,-.0752401,.273565,.0492239,.0902297,-.0841851,.287735,.0590105,.102014,-.0936479,.301161,.0702021,.116054,-.103967,.317438,.0832001,.13191,-.114622,.334166,.0977951,.148239,-.125452,.348192,.113985,.165809,-.136453,.361094,.131928,.184616,-.147648,.373534,.151811,.207491,-.159607,.39101,.174476,.230106,-.171119,.402504,.198798,.257036,-.182906,.418032,.225796,.281172,-.193605,.425468,.254027,.312034,-.204771,.440379,.285713,.340402,-.214988,.445406,.319196,.370231,-.224711,.44968,.35537,.407105,-.233516,.460747,.393838,.439037,-.240801,.460624,.433747,.47781,-.24762,.465957,.477234,.510655,-.251823,.460054,.52044,.550584,-.255552,.459172,.567853,.585872,-.257036,.450311,.615943,.620466,-.257535,.437763,.667693,.660496,-.255248,.426639,.718988,.695578,-.251141,.409185,.772503,.732176,-.244718,.39015,.827023,.760782,-.236782,.362594,.885651,.79422,-.225923,.33711,.943756,.824521,-.213855,.308272,1.00874,.854964,-.197723,.278529,1.06764,.878065,-.179209,.246208,1.12836,.899834,-.157569,.21329,1.18318,.918815,-.133206,.181038,1.23161,.934934,-.106545,.146993,1.27644,.952115,-.0780574,.111175,1.31842,.96906,-.0478279,.0728553,1.35839,.985178,-.0160014,.032579,1.39697,1.00039,.0173126,-.0095256,1.43312,.00384146,-124311e-11,.0613583,778271e-13,.00390023,-314043e-10,.0622919,196626e-11,.00389971,-125622e-9,.0622632,787379e-11,.00389491,-282352e-9,.0620659,1778e-8,.00391618,-502512e-9,.0624687,320918e-10,.00392662,-784458e-9,.0625113,515573e-10,.00396053,-.00112907,.0628175,778668e-10,.00401911,-.00153821,.0633286,113811e-9,.00414994,-.0020208,.0646443,16445e-8,.00441223,-.00260007,.0673886,237734e-9,.00484427,-.0033097,.0716528,345929e-9,.00549109,-.00418966,.0774998,505987e-9,.00636293,-.00527331,.0844758,739208e-9,.00746566,-.00660428,.0921325,.00107347,.00876625,-.00818826,.0997067,.00153691,.0103125,-.0100811,.107433,.00217153,.0123309,-.0123643,.117088,.00303427,.0146274,-.0150007,.126438,.00416018,.0172295,-.0180531,.135672,.00561513,.0204248,-.0215962,.146244,.007478,.0241597,-.0256234,.157481,.00981046,.0284693,-.0302209,.169125,.0127148,.033445,-.0353333,.181659,.0162453,.0391251,-.0410845,.1944,.0205417,.0454721,-.0473451,.207082,.0256333,.0530983,-.0542858,.221656,.0317036,.0615356,-.0618384,.236036,.0388319,.0703363,-.0697631,.248398,.046974,.0810391,-.0784757,.263611,.0565246,.0920144,-.0873488,.275857,.0671724,.105584,-.0973652,.292555,.0798105,.119506,-.107271,.306333,.0935945,.134434,-.117608,.318888,.109106,.153399,-.128938,.337552,.127074,.171258,-.139944,.349955,.14643,.191059,-.151288,.361545,.168,.215069,-.163018,.378421,.192082,.237838,-.174226,.38879,.217838,.266965,-.186063,.405857,.246931,.292827,-.196909,.414146,.277505,.324352,-.207473,.426955,.310711,.354427,-.217713,.433429,.346794,.389854,-.227183,.443966,.385237,.420749,-.235131,.44471,.424955,.459597,-.242786,.451729,.468446,.495316,-.248767,.45072,.513422,.534903,-.253351,.450924,.560618,.572369,-.256277,.445266,.609677,.612383,-.2576,.438798,.660995,.644037,-.256931,.421693,.713807,.686749,-.254036,.4109,.767616,.719814,-.249785,.390151,.82533,.754719,-.244283,.367847,.888311,.792022,-.235076,.345013,.948177,.822404,-.225061,.316193,1.01661,.853084,-.211113,.287013,1.08075,.879871,-.19449,.255424,1.14501,.901655,-.174023,.222879,1.20203,.919957,-.1509,.18989,1.25698,.938412,-.124923,.15606,1.30588,.953471,-.0968139,.120512,1.3529,.970451,-.066734,.0828515,1.3986,.985522,-.034734,.0424458,1.44148,1.00099,-.00102222,678929e-9,1.48398,965494e-9,-627338e-12,.0306409,197672e-13,99168e-8,-158573e-10,.0314638,499803e-12,991068e-9,-634012e-10,.031363,200682e-11,974567e-9,-14144e-8,.03036,457312e-11,998079e-9,-252812e-9,.031496,860131e-11,.00102243,-396506e-9,.0319955,148288e-10,.00107877,-577593e-9,.0331376,249141e-10,.00121622,-816816e-9,.0359396,423011e-10,.0014455,-.00113761,.0399652,724613e-10,.00178791,-.00156959,.0450556,123929e-9,.00225668,-.00214064,.0508025,208531e-9,.00285627,-.00287655,.0568443,341969e-9,.0035991,-.00380271,.0630892,544158e-9,.00455524,-.00496264,.0702204,842423e-9,.00569143,-.0063793,.0773426,.00126704,.00716928,-.00813531,.0860839,.00186642,.00885307,-.0101946,.0944079,.00267014,.0109316,-.0126386,.103951,.00374033,.0133704,-.0154876,.113786,.0051304,.0161525,-.0187317,.123477,.00688858,.0194267,-.0224652,.133986,.00910557,.0230967,-.0265976,.143979,.0118074,.0273627,-.0312848,.154645,.0151266,.0323898,-.0365949,.166765,.0191791,.0379225,-.0422914,.177932,.0239236,.0447501,-.0487469,.19167,.0296568,.0519391,-.0556398,.203224,.0362924,.0599464,-.0631646,.215652,.0440585,.0702427,-.0714308,.232089,.0531619,.0806902,-.0800605,.245258,.0634564,.0923194,-.0892815,.258609,.0752481,.106938,-.09931,.276654,.0888914,.121238,-.109575,.289847,.104055,.138817,-.120461,.307566,.121266,.15595,-.131209,.320117,.139944,.178418,-.143049,.339677,.161591,.197875,-.154074,.349886,.184303,.224368,-.166307,.369352,.210669,.252213,-.178051,.386242,.238895,.277321,-.189335,.395294,.269182,.310332,-.200683,.412148,.302508,.338809,-.210856,.418266,.337264,.372678,-.220655,.428723,.374881,.405632,-.230053,.433887,.415656,.442293,-.237993,.439911,.457982,.477256,-.244897,.440175,.502831,.515592,-.250657,.441079,.550277,.550969,-.255459,.435219,.601102,.592883,-.257696,.432882,.651785,.629092,-.259894,.421054,.708961,.672033,-.258592,.41177,.763806,.709147,-.256525,.395267,.824249,.745367,-.254677,.375013,.8951,.784715,-.247892,.353906,.959317,.818107,-.240162,.327801,1.03153,.847895,-.229741,.298821,1.10601,.879603,-.213084,.269115,1.164,.902605,-.195242,.236606,1.22854,.922788,-.174505,.203442,1.29017,.944831,-.150169,.169594,1.34157,.959656,-.124099,.135909,1.3956,.972399,-.0960626,.0990563,1.45128,.986549,-.0657097,.0602348,1.50312,1.00013,-.0333558,.0186694,1.55364,619747e-11,-1e-7,.00778326,796756e-16,237499e-13,-999999e-13,282592e-10,114596e-15,100292e-11,-166369e-11,250354e-9,677492e-14,350752e-11,-637769e-11,357289e-9,631655e-13,826445e-11,-174689e-10,516179e-9,31851e-11,242481e-10,-450868e-10,.0010223,130577e-11,455631e-10,-89044e-9,.00144302,374587e-11,971222e-10,-178311e-9,.00241912,102584e-10,171403e-9,-313976e-9,.00354938,236481e-10,292747e-9,-520026e-9,.00513765,496014e-10,789827e-9,-.00118187,.0238621,139056e-9,.00114093,-.00171827,.0286691,244093e-9,.00176119,-.00249667,.0368565,420623e-9,.0022233,-.00333742,.0400469,65673e-8,.00343382,-.00481976,.0535751,.00109323,.00427602,-.00600755,.057099,.00155268,.00461435,-.00737637,.0551084,.00215031,.00695698,-.00971401,.0715767,.00316529,.00867619,-.0120943,.0793314,.00436995,.0106694,-.0148202,.0869391,.0058959,.0140351,-.0183501,.101572,.00798757,.0168939,-.022006,.11018,.0104233,.020197,-.0261568,.119041,.0134167,.0254702,-.0312778,.135404,.0173009,.0298384,-.0362469,.1437,.0215428,.035159,-.042237,.15512,.0268882,.0427685,-.0488711,.17128,.033235,.0494848,-.0557997,.181813,.0404443,.0592394,-.0635578,.198745,.0490043,.0681463,-.071838,.210497,.0588239,.0804753,-.0809297,.228864,.0702835,.0942205,-.0906488,.247008,.0834012,.106777,-.100216,.258812,.0975952,.124471,-.110827,.278617,.114162,.138389,-.121193,.287049,.131983,.159543,-.13253,.307151,.152541,.176432,-.143611,.31564,.174673,.201723,-.15548,.33538,.199842,.229721,-.167166,.355256,.227097,.250206,-.178238,.360047,.256014,.282118,-.189905,.378761,.28855,.312821,-.201033,.39181,.323348,.341482,-.211584,.397716,.360564,.377368,-.221314,.410141,.400004,.418229,-.230474,.423485,.442371,.444881,-.239443,.418874,.488796,.488899,-.245987,.427545,.535012,.520317,-.253948,.422147,.589678,.568566,-.256616,.42719,.637683,.599607,-.26376,.415114,.703363,.64222,-.268687,.408715,.771363,.685698,-.2694,.399722,.83574,.732327,-.266642,.388651,.897764,.769873,-.267712,.369198,.983312,.806733,-.263479,.346802,1.06222,.843466,-.254575,.321368,1.13477,.873008,-.242749,.29211,1.20712,.908438,-.22725,.262143,1.27465,.936321,-.207621,.228876,1.33203,.950353,-.187932,.19484,1.40439,.96442,-.165154,.163178,1.4732,.979856,-.139302,.127531,1.53574,.982561,-.11134,.0903457,1.59982,.996389,-.0808124,.0489007,1.6577],ba=[1,0,0,0,1,791421e-36,0,0,1,104392e-29,0,0,1,349405e-26,0,0,1,109923e-23,0,0,1,947414e-22,0,0,1,359627e-20,0,0,1,772053e-19,0,0,1,108799e-17,0,0,1,110655e-16,0,0,1,865818e-16,0,0,.999998,545037e-15,0,0,.999994,285095e-14,0,0,.999989,126931e-13,0,0,.999973,489938e-13,0,0,.999947,166347e-12,0,0,.999894,502694e-12,0,0,.999798,136532e-11,0,0,.999617,335898e-11,0,0,.999234,752126e-11,0,0,.998258,152586e-10,0,0,.99504,266207e-10,0,0,.980816,236802e-10,0,0,.967553,207684e-11,0,0,.966877,403733e-11,0,0,.965752,741174e-11,0,0,.96382,127746e-10,0,0,.960306,202792e-10,0,0,.953619,280232e-10,0,0,.941103,278816e-10,0,0,.926619,160221e-10,0,0,.920983,235164e-10,0,0,.912293,311924e-10,0,.0158731,.899277,348118e-10,0,.0476191,.880884,26041e-9,0,.0793651,.870399,338726e-10,0,.111111,.856138,392906e-10,0,.142857,.837436,372874e-10,0,.174603,.820973,392558e-10,0,.206349,.803583,434658e-10,0,.238095,.782168,40256e-9,0,.269841,.764107,448159e-10,0,.301587,.743092,457627e-10,0,.333333,.721626,455314e-10,0,.365079,.700375,477335e-10,0,.396825,.677334,461072e-10,0,.428571,.655702,484393e-10,0,.460317,.632059,464583e-10,0,.492064,.610125,483923e-10,0,.52381,.58653,464342e-10,0,.555556,.564508,477033e-10,0,.587302,.541405,459263e-10,0,.619048,.519556,46412e-9,0,.650794,.497292,448913e-10,0,.68254,.475898,445789e-10,0,.714286,.454722,433496e-10,0,.746032,.434042,423054e-10,0,.777778,.414126,413737e-10,0,.809524,.394387,397265e-10,0,.84127,.375841,390709e-10,0,.873016,.357219,369938e-10,0,.904762,.340084,365618e-10,0,.936508,.322714,342533e-10,0,.968254,.306974,339596e-10,0,1,1,101524e-23,0,0,1,10292e-22,0,0,1,130908e-23,0,0,1,473331e-23,0,0,1,625319e-22,0,0,1,107932e-20,0,0,1,163779e-19,0,0,1,203198e-18,0,0,1,204717e-17,0,0,.999999,168995e-16,0,0,.999998,115855e-15,0,0,.999996,66947e-14,0,0,.999991,330863e-14,0,0,.999983,141737e-13,0,0,.999968,532626e-13,0,0,.99994,177431e-12,0,0,.999891,528835e-12,0,0,.999797,142169e-11,0,0,.999617,347057e-11,0,0,.999227,77231e-10,0,0,.998239,155753e-10,0,0,.994937,268495e-10,0,0,.980225,213742e-10,0,0,.967549,21631e-10,0,0,.966865,417989e-11,0,0,.965739,763341e-11,0,0,.963794,130892e-10,0,0,.960244,206456e-10,0,0,.953495,282016e-10,0,148105e-9,.940876,271581e-10,0,.002454,.926569,164159e-10,0,.00867491,.920905,239521e-10,0,.01956,.912169,315127e-10,0,.035433,.899095,346626e-10,0,.056294,.882209,290223e-10,0,.0818191,.870272,342992e-10,0,.111259,.855977,394164e-10,0,.142857,.837431,372343e-10,0,.174603,.820826,396691e-10,0,.206349,.803408,435395e-10,0,.238095,.782838,419579e-10,0,.269841,.763941,450953e-10,0,.301587,.742904,455847e-10,0,.333333,.721463,458833e-10,0,.365079,.700197,477159e-10,0,.396825,.677501,470641e-10,0,.428571,.655527,484732e-10,0,.460317,.6324,476834e-10,0,.492064,.609964,484213e-10,0,.52381,.586839,475541e-10,0,.555556,.564353,476951e-10,0,.587302,.541589,467611e-10,0,.619048,.519413,463493e-10,0,.650794,.497337,453994e-10,0,.68254,.475797,445308e-10,0,.714286,.454659,435787e-10,0,.746032,.434065,424839e-10,0,.777778,.414018,41436e-9,0,.809524,.39455,401902e-10,0,.84127,.375742,390813e-10,0,.873016,.357501,377116e-10,0,.904762,.339996,36535e-9,0,.936508,.323069,351265e-10,0,.968254,.306897,339112e-10,0,1,1,10396e-19,0,0,1,104326e-20,0,0,1,110153e-20,0,0,1,144668e-20,0,0,1,34528e-19,0,0,1,175958e-19,0,0,1,12627e-17,0,0,1,936074e-18,0,0,1,645742e-17,0,0,.999998,401228e-16,0,0,.999997,222338e-15,0,0,.999995,10967e-13,0,0,.999991,482132e-14,0,0,.999981,189434e-13,0,0,.999967,667716e-13,0,0,.999938,212066e-12,0,0,.999886,60977e-11,0,0,.999792,159504e-11,0,0,.999608,381191e-11,0,0,.999209,833727e-11,0,0,.998179,165288e-10,0,0,.994605,274387e-10,0,0,.979468,167316e-10,0,0,.967529,242877e-11,0,0,.966836,461696e-11,0,0,.96569,830977e-11,0,0,.963706,140427e-10,0,244659e-11,.960063,217353e-10,0,760774e-9,.953113,286606e-10,0,.00367261,.940192,247691e-10,0,.00940263,.927731,195814e-10,0,.018333,.920669,252531e-10,0,.0306825,.911799,324277e-10,0,.0465556,.89857,340982e-10,0,.0659521,.883283,319622e-10,0,.0887677,.86989,35548e-9,0,.114784,.855483,397143e-10,0,.143618,.837987,391665e-10,0,.174606,.820546,411306e-10,0,.206349,.802878,436753e-10,0,.238095,.783402,444e-7,0,.269841,.763439,458726e-10,0,.301587,.742925,467097e-10,0,.333333,.721633,478887e-10,0,.365079,.69985,481251e-10,0,.396825,.67783,491811e-10,0,.428571,.655126,488199e-10,0,.460318,.632697,496025e-10,0,.492064,.609613,48829e-9,0,.52381,.587098,492754e-10,0,.555556,.564119,482625e-10,0,.587302,.541813,482807e-10,0,.619048,.519342,471552e-10,0,.650794,.497514,466765e-10,0,.68254,.475879,455582e-10,0,.714286,.454789,446007e-10,0,.746032,.434217,435382e-10,0,.777778,.414086,421753e-10,0,.809524,.394744,412093e-10,0,.84127,.375782,396634e-10,0,.873016,.357707,386419e-10,0,.904762,.340038,370345e-10,0,.936508,.323284,359725e-10,0,.968254,.306954,3436e-8,0,1,1,599567e-19,0,0,1,600497e-19,0,0,1,614839e-19,0,0,1,686641e-19,0,0,1,972658e-19,0,0,1,221271e-18,0,0,1,833195e-18,0,0,1,403601e-17,0,0,.999999,206001e-16,0,0,.999998,101739e-15,0,0,.999997,470132e-15,0,0,.999993,200436e-14,0,0,.999988,783682e-14,0,0,.999979,280338e-13,0,0,.999962,917033e-13,0,0,.999933,274514e-12,0,0,.999881,753201e-12,0,0,.999783,189826e-11,0,0,.999594,440279e-11,0,0,.999178,93898e-10,0,0,.998073,181265e-10,0,0,.993993,280487e-10,0,0,.979982,149422e-10,0,0,.968145,378481e-11,0,0,.966786,53771e-10,0,0,.965611,947508e-11,0,388934e-10,.963557,156616e-10,0,9693e-7,.959752,235144e-10,0,.00370329,.952461,291568e-10,0,.00868428,.940193,240102e-10,0,.0161889,.929042,231235e-10,0,.0263948,.920266,273968e-10,0,.0394088,.911178,337915e-10,0,.0552818,.897873,333629e-10,0,.0740138,.884053,351405e-10,0,.0955539,.869455,378034e-10,0,.119795,.854655,399378e-10,0,.14656,.838347,419108e-10,0,.175573,.820693,440831e-10,0,.206388,.802277,445599e-10,0,.238095,.783634,472691e-10,0,.269841,.763159,476984e-10,0,.301587,.742914,491487e-10,0,.333333,.721662,502312e-10,0,.365079,.699668,502817e-10,0,.396825,.677839,51406e-9,0,.428571,.655091,511095e-10,0,.460317,.632665,516067e-10,0,.492064,.609734,512255e-10,0,.52381,.587043,510263e-10,0,.555556,.564298,50565e-9,0,.587302,.541769,497951e-10,0,.619048,.519529,492698e-10,0,.650794,.497574,482066e-10,0,.68254,.476028,473689e-10,0,.714286,.454961,461941e-10,0,.746032,.434341,450618e-10,0,.777778,.414364,438355e-10,0,.809524,.394832,424196e-10,0,.84127,.376109,412563e-10,0,.873016,.35779,396226e-10,0,.904762,.340379,384886e-10,0,.936508,.323385,368214e-10,0,.968254,.307295,356636e-10,0,1,1,106465e-17,0,0,1,106555e-17,0,0,1,107966e-17,0,0,1,114601e-17,0,0,1,137123e-17,0,0,1,21243e-16,0,0,.999999,489653e-17,0,0,.999999,160283e-16,0,0,.999998,62269e-15,0,0,.999997,251859e-15,0,0,.999996,996192e-15,0,0,.999992,374531e-14,0,0,.999986,132022e-13,0,0,.999975,433315e-13,0,0,.999959,131956e-12,0,0,.999927,372249e-12,0,0,.999871,972461e-12,0,0,.999771,235343e-11,0,0,.999572,52768e-10,0,0,.999133,109237e-10,0,0,.997912,203675e-10,0,0,.993008,279396e-10,0,0,.980645,139604e-10,0,0,.970057,646596e-11,0,0,.966717,65089e-10,0,474145e-10,.965497,111863e-10,0,89544e-8,.96334,179857e-10,0,.0032647,.959294,259045e-10,0,.0075144,.951519,292327e-10,0,.0138734,.940517,249769e-10,0,.0224952,.93014,26803e-9,0,.0334828,.91972,303656e-10,0,.0468973,.910294,353323e-10,0,.0627703,.897701,351002e-10,0,.0811019,.884522,388104e-10,0,.10186,.869489,412932e-10,0,.124985,.853983,415781e-10,0,.150372,.838425,454066e-10,0,.177868,.820656,471624e-10,0,.207245,.801875,475243e-10,0,.238143,.783521,505621e-10,0,.269841,.763131,50721e-9,0,.301587,.74261,523293e-10,0,.333333,.72148,528699e-10,0,.365079,.699696,538677e-10,0,.396825,.677592,539255e-10,0,.428571,.65525,546367e-10,0,.460317,.632452,541348e-10,0,.492064,.609903,544976e-10,0,.52381,.586928,536201e-10,0,.555556,.564464,535185e-10,0,.587302,.541801,524949e-10,0,.619048,.519681,51812e-9,0,.650794,.497685,507687e-10,0,.68254,.47622,496243e-10,0,.714286,.455135,485714e-10,0,.746032,.4346,471847e-10,0,.777778,.414564,459294e-10,0,.809524,.395165,444705e-10,0,.84127,.376333,430772e-10,0,.873016,.358197,416229e-10,0,.904762,.34064,401019e-10,0,.936508,.323816,386623e-10,0,.968254,.307581,370933e-10,0,1,1,991541e-17,0,0,1,992077e-17,0,0,1,100041e-16,0,0,1,10385e-15,0,0,1,115777e-16,0,0,1,150215e-16,0,0,.999999,254738e-16,0,0,.999999,598822e-16,0,0,.999998,179597e-15,0,0,.999997,602367e-15,0,0,.999994,206835e-14,0,0,.99999,694952e-14,0,0,.999984,223363e-13,0,0,.999972,678578e-13,0,0,.999952,193571e-12,0,0,.999919,516594e-12,0,0,.99986,128739e-11,0,0,.999753,299298e-11,0,0,.999546,648258e-11,0,0,.999074,129985e-10,0,0,.997671,232176e-10,0,0,.991504,256701e-10,0,0,.981148,131141e-10,0,0,.971965,869048e-11,0,280182e-10,.966624,808301e-11,0,695475e-9,.965344,135235e-10,0,.00265522,.963048,210592e-10,0,.00622975,.958673,287473e-10,0,.0116234,.950262,281379e-10,0,.018976,.940836,271089e-10,0,.0283844,.930996,30926e-9,0,.0399151,.919848,348359e-10,0,.0536063,.909136,366092e-10,0,.0694793,.897554,384162e-10,0,.0875342,.884691,430971e-10,0,.107749,.869414,447803e-10,0,.130087,.853462,452858e-10,0,.154481,.838187,495769e-10,0,.180833,.820381,502709e-10,0,.209005,.801844,522713e-10,0,.238791,.783061,541505e-10,0,.269869,.763205,553712e-10,0,.301587,.742362,564909e-10,0,.333333,.721393,572646e-10,0,.365079,.699676,581012e-10,0,.396825,.677395,58096e-9,0,.428571,.655208,585766e-10,0,.460317,.632451,583602e-10,0,.492064,.609839,580234e-10,0,.52381,.587093,577161e-10,0,.555556,.564467,568447e-10,0,.587302,.542043,563166e-10,0,.619048,.519826,55156e-9,0,.650794,.497952,541682e-10,0,.68254,.476477,528971e-10,0,.714286,.455412,514952e-10,0,.746032,.434926,502222e-10,0,.777778,.4149,485779e-10,0,.809524,.395552,472242e-10,0,.84127,.376712,454891e-10,0,.873016,.358622,440924e-10,0,.904762,.341048,422984e-10,0,.936508,.324262,408582e-10,0,.968254,.308013,390839e-10,0,1,1,613913e-16,0,0,1,614145e-16,0,0,1,617708e-16,0,0,1,633717e-16,0,0,1,681648e-16,0,0,1,808291e-16,0,0,1,114608e-15,0,0,.999998,210507e-15,0,0,.999997,499595e-15,0,0,.999995,139897e-14,0,0,.999994,419818e-14,0,0,.999988,127042e-13,0,0,.999979,375153e-13,0,0,.999965,106206e-12,0,0,.999945,285381e-12,0,0,.999908,723611e-12,0,0,.999846,17255e-10,0,0,.999733,386104e-11,0,0,.999511,808493e-11,0,0,.998993,156884e-10,0,0,.997326,265538e-10,0,0,.989706,206466e-10,0,0,.981713,130756e-10,0,70005e-10,.973636,106473e-10,0,464797e-9,.966509,10194e-9,0,.00201743,.965149,165881e-10,0,.00497549,.962669,249147e-10,0,.00953262,.95786,317449e-10,0,.0158211,.949334,281045e-10,0,.0239343,.941041,303263e-10,0,.0339372,.931575,356754e-10,0,.0458738,.920102,397075e-10,0,.059772,.908002,384886e-10,0,.075645,.897269,43027e-9,0,.0934929,.884559,479925e-10,0,.113302,.869161,48246e-9,0,.135045,.853342,509505e-10,0,.158678,.837633,542846e-10,0,.184136,.820252,554139e-10,0,.211325,.801872,581412e-10,0,.240113,.782418,585535e-10,0,.270306,.7631,610923e-10,0,.301594,.742183,613678e-10,0,.333333,.721098,627275e-10,0,.365079,.699512,629413e-10,0,.396825,.677372,636351e-10,0,.428571,.655059,633555e-10,0,.460317,.632567,636513e-10,0,.492064,.609784,628965e-10,0,.52381,.587237,625546e-10,0,.555556,.564525,615825e-10,0,.587302,.542181,605048e-10,0,.619048,.520017,596329e-10,0,.650794,.498204,581516e-10,0,.68254,.476742,569186e-10,0,.714286,.455803,553833e-10,0,.746032,.435251,537807e-10,0,.777778,.415374,522025e-10,0,.809524,.395921,503421e-10,0,.84127,.377253,488211e-10,0,.873016,.359021,468234e-10,0,.904762,.341637,453269e-10,0,.936508,.3247,433014e-10,0,.968254,.308625,418007e-10,0,1,1,286798e-15,0,0,1,286877e-15,0,0,1,288094e-15,0,0,1,293506e-15,0,0,1,309262e-15,0,0,.999999,348593e-15,0,0,.999999,444582e-15,0,0,.999998,688591e-15,0,0,.999996,134391e-14,0,0,.999993,317438e-14,0,0,.999989,835609e-14,0,0,.999983,228677e-13,0,0,.999974,623361e-13,0,0,.999959,165225e-12,0,0,.999936,419983e-12,0,0,.999896,101546e-11,0,0,.99983,232376e-11,0,0,.999709,50156e-10,0,0,.999469,10167e-9,0,0,.998886,190775e-10,0,0,.996819,300511e-10,0,0,.988837,185092e-10,0,168222e-12,.982178,134622e-10,0,259622e-9,.975017,125961e-10,0,.00142595,.967101,13507e-9,0,.00382273,.964905,205003e-10,0,.00764164,.96218,29546e-9,0,.0130121,.956821,343738e-10,0,.0200253,.948829,305063e-10,0,.0287452,.941092,346487e-10,0,.039218,.931883,412061e-10,0,.0514748,.920211,444651e-10,0,.0655351,.907307,431252e-10,0,.0814082,.89684,490382e-10,0,.0990939,.884119,53334e-9,0,.118583,.869148,54114e-9,0,.139856,.853377,578536e-10,0,.162882,.836753,592285e-10,0,.187615,.820063,622787e-10,0,.213991,.801694,645492e-10,0,.241918,.782116,65353e-9,0,.271267,.762673,674344e-10,0,.301847,.742133,682788e-10,0,.333333,.720779,691959e-10,0,.365079,.699386,696817e-10,0,.396826,.67732,699583e-10,0,.428572,.654888,698447e-10,0,.460318,.632499,694063e-10,0,.492064,.609825,691612e-10,0,.52381,.587287,681576e-10,0,.555556,.564743,674138e-10,0,.587302,.542409,661617e-10,0,.619048,.520282,647785e-10,0,.650794,.498506,633836e-10,0,.68254,.477102,615905e-10,0,.714286,.456167,601013e-10,0,.746032,.435728,581457e-10,0,.777778,.415809,564215e-10,0,.809524,.396517,544997e-10,0,.84127,.377737,525061e-10,0,.873016,.359698,506831e-10,0,.904762,.342164,48568e-9,0,.936508,.325417,467826e-10,0,.968254,.309186,446736e-10,0,1,1,109018e-14,0,0,1,10904e-13,0,0,1,109393e-14,0,0,1,11095e-13,0,0,1,1154e-12,0,0,1,126089e-14,0,0,.999999,15059e-13,0,0,.999997,207899e-14,0,0,.999994,348164e-14,0,0,.999993,705728e-14,0,0,.999987,163692e-13,0,0,.999981,406033e-13,0,0,.999969,10245e-11,0,0,.999953,255023e-12,0,0,.999925,61511e-11,0,0,.999881,142218e-11,0,0,.99981,313086e-11,0,0,.99968,653119e-11,0,0,.999418,12832e-9,0,0,.998748,232497e-10,0,0,.996066,329522e-10,0,0,.988379,179613e-10,0,108799e-9,.982567,143715e-10,0,921302e-9,.976097,148096e-10,0,.00280738,.968475,178905e-10,0,.00596622,.964606,253921e-10,0,.0105284,.961564,348623e-10,0,.0165848,.955517,357612e-10,0,.0242,.948381,343493e-10,0,.03342,.941095,405849e-10,0,.0442777,.931923,475394e-10,0,.0567958,.91996,484328e-10,0,.0709879,.907419,502146e-10,0,.086861,.89618,561654e-10,0,.104415,.88337,587612e-10,0,.123643,.869046,618057e-10,0,.144531,.853278,657392e-10,0,.167057,.836091,66303e-9,0,.191188,.819644,704445e-10,0,.216878,.801246,714071e-10,0,.244062,.782031,740093e-10,0,.272649,.762066,74685e-9,0,.302509,.741964,766647e-10,0,.333442,.720554,766328e-10,0,.365079,.699098,777857e-10,0,.396826,.677189,774633e-10,0,.428572,.65484,776235e-10,0,.460318,.632496,770316e-10,0,.492064,.609908,762669e-10,0,.52381,.587312,753972e-10,0,.555556,.564938,739994e-10,0,.587302,.542577,728382e-10,0,.619048,.52062,71112e-9,0,.650794,.498819,694004e-10,0,.68254,.477555,675575e-10,0,.714286,.456568,653449e-10,0,.746032,.436278,636068e-10,0,.777778,.41637,613466e-10,0,.809524,.397144,594177e-10,0,.84127,.378412,570987e-10,0,.873016,.360376,550419e-10,0,.904762,.342906,527422e-10,0,.936508,.326136,506544e-10,0,.968254,.30997,484307e-10,0,1,1,354014e-14,0,0,1,354073e-14,0,0,1,354972e-14,0,0,1,358929e-14,0,0,1,370093e-14,0,0,.999999,396194e-14,0,0,.999998,453352e-14,0,0,.999997,578828e-14,0,0,.999994,863812e-14,0,0,.999991,153622e-13,0,0,.999985,316356e-13,0,0,.999977,712781e-13,0,0,.999964,166725e-12,0,0,.999945,390501e-12,0,0,.999912,895622e-12,0,0,.999866,198428e-11,0,0,.999786,421038e-11,0,0,.999647,850239e-11,0,0,.999356,162059e-10,0,0,.998563,282652e-10,0,0,.994928,336309e-10,0,244244e-10,.987999,178458e-10,0,523891e-9,.982893,159162e-10,0,.00194729,.977044,178056e-10,0,.00451099,.969972,230624e-10,0,.00835132,.964237,313922e-10,0,.013561,.960791,406145e-10,0,.0202056,.954292,372796e-10,0,.0283321,.948052,403199e-10,0,.0379739,.940938,479537e-10,0,.0491551,.931689,545292e-10,0,.0618918,.91987,54038e-9,0,.0761941,.907665,589909e-10,0,.0920672,.895281,642651e-10,0,.109511,.882621,659707e-10,0,.12852,.86873,709973e-10,0,.149085,.853008,742221e-10,0,.171189,.835944,761754e-10,0,.194809,.818949,797052e-10,0,.21991,.800951,812434e-10,0,.246447,.781847,838075e-10,0,.274352,.761649,84501e-9,0,.303535,.74152,860258e-10,0,.333857,.720495,866233e-10,0,.365104,.698742,868326e-10,0,.396826,.677096,87133e-9,0,.428572,.654782,863497e-10,0,.460318,.632335,860206e-10,0,.492064,.610031,849337e-10,0,.52381,.587457,838279e-10,0,.555556,.56513,82309e-9,0,.587302,.542877,803542e-10,0,.619048,.5209,786928e-10,0,.650794,.499291,765171e-10,0,.68254,.477971,744753e-10,0,.714286,.457221,72209e-9,0,.746032,.436803,697448e-10,0,.777778,.417083,675333e-10,0,.809524,.397749,648058e-10,0,.84127,.379177,625759e-10,0,.873016,.361061,598584e-10,0,.904762,.343713,575797e-10,0,.936508,.326894,549999e-10,0,.968254,.310816,527482e-10,0,1,1,10153e-12,0,0,1,101544e-13,0,0,1,101751e-13,0,0,1,102662e-13,0,0,1,10521e-12,0,0,.999999,111049e-13,0,0,.999999,123408e-13,0,0,.999996,14924e-12,0,0,.999992,204471e-13,0,0,.999989,326539e-13,0,0,.99998,603559e-13,0,0,.999971,123936e-12,0,0,.999955,269058e-12,0,0,.999933,593604e-12,0,0,.999901,129633e-11,0,0,.999847,275621e-11,0,0,.999761,564494e-11,0,0,.999607,110485e-10,0,0,.999282,204388e-10,0,0,.99831,341084e-10,0,22038e-11,.993288,294949e-10,0,242388e-9,.987855,192736e-10,0,.0012503,.983167,182383e-10,0,.0032745,.977908,218633e-10,0,.00646321,.971194,290662e-10,0,.0109133,.963867,386401e-10,0,.0166927,.95982,462827e-10,0,.0238494,.953497,420705e-10,0,.0324178,.947621,477743e-10,0,.0424225,.940611,568258e-10,0,.0538808,.931174,618061e-10,0,.0668047,.919919,627098e-10,0,.0812014,.907856,694714e-10,0,.0970745,.894509,735008e-10,0,.114424,.881954,763369e-10,0,.133246,.868309,821896e-10,0,.153534,.852511,83769e-9,0,.175275,.835821,881615e-10,0,.198453,.817981,896368e-10,0,.223042,.800504,930906e-10,0,.249009,.78141,945056e-10,0,.276304,.761427,963605e-10,0,.304862,.74094,968088e-10,0,.334584,.720233,981481e-10,0,.365322,.698592,979122e-10,0,.396826,.676763,981057e-10,0,.428571,.654808,973956e-10,0,.460318,.632326,962619e-10,0,.492064,.610049,952996e-10,0,.52381,.58763,933334e-10,0,.555556,.565261,917573e-10,0,.587302,.543244,896636e-10,0,.619048,.521273,873304e-10,0,.650794,.499818,852648e-10,0,.68254,.478536,823961e-10,0,.714286,.457826,79939e-9,0,.746032,.437549,77126e-9,0,.777778,.41776,743043e-10,0,.809524,.39863,716426e-10,0,.84127,.379954,686456e-10,0,.873016,.362025,660514e-10,0,.904762,.344581,630755e-10,0,.936508,.327909,605439e-10,0,.968254,.311736,576345e-10,0,1,1,263344e-13,0,0,1,263373e-13,0,0,1,263815e-13,0,0,1,265753e-13,0,0,1,271132e-13,0,0,.999999,283279e-13,0,0,.999997,30833e-12,0,0,.999995,358711e-13,0,0,.999992,461266e-13,0,0,.999985,67574e-12,0,0,.999977,11358e-11,0,0,.999966,213657e-12,0,0,.999948,431151e-12,0,0,.999923,896656e-12,0,0,.999884,186603e-11,0,0,.999826,381115e-11,0,0,.999732,754184e-11,0,0,.999561,143192e-10,0,0,.999191,257061e-10,0,0,.997955,405724e-10,0,744132e-10,.992228,276537e-10,0,716477e-9,.987638,208885e-10,0,.0022524,.983395,215226e-10,0,.00484816,.978614,270795e-10,0,.00860962,.972389,365282e-10,0,.0136083,.964392,474747e-10,0,.0198941,.95861,509141e-10,0,.0275023,.952806,48963e-9,0,.0364584,.94712,571119e-10,0,.04678,.940104,671704e-10,0,.0584799,.930398,687586e-10,0,.0715665,.919866,738161e-10,0,.086045,.907853,813235e-10,0,.101918,.894078,834582e-10,0,.119186,.881177,892093e-10,0,.137845,.867575,944548e-10,0,.157891,.852107,969607e-10,0,.179316,.835502,101456e-9,0,.202106,.81756,103256e-9,0,.226243,.79984,106954e-9,0,.251704,.780998,108066e-9,0,.278451,.761132,110111e-9,0,.306436,.740429,110459e-9,0,.335586,.719836,111219e-9,0,.365796,.698467,11145e-8,0,.3969,.676446,110393e-9,0,.428571,.654635,110035e-9,0,.460318,.632411,108548e-9,0,.492064,.609986,106963e-9,0,.52381,.587872,105238e-9,0,.555556,.565528,102665e-9,0,.587302,.543563,100543e-9,0,.619048,.52176,976182e-10,0,.650794,.500188,947099e-10,0,.68254,.479204,919929e-10,0,.714286,.458413,886139e-10,0,.746032,.438314,857839e-10,0,.777778,.418573,82411e-9,0,.809524,.39947,792211e-10,0,.84127,.380892,759546e-10,0,.873016,.362953,727571e-10,0,.904762,.345601,695738e-10,0,.936508,.328895,664907e-10,0,.968254,.312808,634277e-10,0,1,1,628647e-13,0,0,1,628705e-13,0,0,1,629587e-13,0,0,1,633441e-13,0,0,.999999,644087e-13,0,0,.999998,667856e-13,0,0,.999997,715889e-13,0,0,.999995,809577e-13,0,0,.999989,992764e-13,0,0,.999983,135834e-12,0,0,.999974,210482e-12,0,0,.999959,365215e-12,0,0,.999939,686693e-12,0,0,.999911,13472e-10,0,0,.999868,26731e-10,0,0,.999804,524756e-11,0,0,.9997,100403e-10,0,0,.99951,185019e-10,0,0,.999078,322036e-10,0,620676e-11,.997428,470002e-10,0,341552e-9,.99162,287123e-10,0,.00143727,.987479,234706e-10,0,.00349201,.983582,260083e-10,0,.0066242,.979186,337927e-10,0,.0109113,.97325,454689e-10,0,.0164064,.965221,573759e-10,0,.0231463,.957262,544114e-10,0,.0311571,.952211,587006e-10,0,.0404572,.946631,692256e-10,0,.0510592,.939391,787819e-10,0,.0629723,.929795,792368e-10,0,.0762025,.91965,875075e-10,0,.090753,.907737,950903e-10,0,.106626,.893899,972963e-10,0,.123822,.880239,10459e-8,0,.142337,.866562,107689e-9,0,.16217,.85164,113081e-9,0,.183314,.835021,116636e-9,0,.20576,.817311,120074e-9,0,.229496,.798845,121921e-9,0,.254502,.780479,12475e-8,0,.280753,.760694,125255e-9,0,.308212,.740142,126719e-9,0,.336825,.719248,12636e-8,0,.366517,.698209,126712e-9,0,.397167,.676398,125769e-9,0,.428578,.654378,124432e-9,0,.460318,.632484,123272e-9,0,.492064,.610113,12085e-8,0,.52381,.587931,118411e-9,0,.555556,.565872,11569e-8,0,.587302,.543814,112521e-9,0,.619048,.522265,109737e-9,0,.650794,.500835,106228e-9,0,.68254,.479818,102591e-9,0,.714286,.459258,991288e-10,0,.746032,.439061,952325e-10,0,.777778,.419552,91895e-9,0,.809524,.400399,879051e-10,0,.84127,.381976,844775e-10,0,.873016,.364009,806316e-10,0,.904762,.346761,771848e-10,0,.936508,.330049,735429e-10,0,.968254,.314018,702103e-10,0,1,1,139968e-12,0,0,1,139979e-12,0,0,1,140145e-12,0,0,1,14087e-11,0,0,.999999,142865e-12,0,0,.999998,147279e-12,0,0,.999997,156057e-12,0,0,.999992,17276e-11,0,0,.999989,204352e-12,0,0,.99998,26494e-11,0,0,.999969,383435e-12,0,0,.999953,618641e-12,0,0,.999929,108755e-11,0,0,.999898,201497e-11,0,0,.999849,381346e-11,0,0,.999778,719815e-11,0,0,.999661,133215e-10,0,0,.999451,238313e-10,0,0,.998936,401343e-10,0,113724e-9,.99662,517346e-10,0,820171e-9,.991094,304323e-10,0,.00238143,.987487,281757e-10,0,.00493527,.983731,320048e-10,0,.00856859,.979647,423905e-10,0,.0133393,.973837,562935e-10,0,.0192863,.96584,677442e-10,0,.0264369,.956309,623073e-10,0,.03481,.951523,704131e-10,0,.0444184,.946003,836594e-10,0,.0552713,.938454,911736e-10,0,.0673749,.929279,938264e-10,0,.0807329,.919239,103754e-9,0,.0953479,.907293,109928e-9,0,.111221,.893936,115257e-9,0,.128352,.879674,122265e-9,0,.14674,.865668,125733e-9,0,.166382,.850998,132305e-9,0,.187276,.834498,134844e-9,0,.209413,.816903,139276e-9,0,.232786,.798235,140984e-9,0,.257382,.779724,14378e-8,0,.283181,.760251,144623e-9,0,.310156,.739808,145228e-9,0,.338269,.718762,14539e-8,0,.367461,.697815,144432e-9,0,.397646,.67631,143893e-9,0,.428685,.654278,141846e-9,0,.460318,.632347,13935e-8,0,.492064,.610296,137138e-9,0,.52381,.588039,133806e-9,0,.555556,.566218,130755e-9,0,.587302,.544346,127128e-9,0,.619048,.522701,123002e-9,0,.650794,.501542,119443e-9,0,.68254,.480508,115055e-9,0,.714286,.460092,111032e-9,0,.746032,.440021,106635e-9,0,.777778,.420446,102162e-9,0,.809524,.401512,98184e-9,0,.84127,.38299,936497e-10,0,.873016,.365232,89813e-9,0,.904762,.347865,853073e-10,0,.936508,.331342,817068e-10,0,.968254,.315202,773818e-10,0,1,1,29368e-11,0,0,1,2937e-10,0,0,1,293998e-12,0,0,1,295298e-12,0,0,.999999,298865e-12,0,0,.999998,3067e-10,0,0,.999995,322082e-12,0,0,.999992,350767e-12,0,0,.999986,403538e-12,0,0,.999976,501372e-12,0,0,.999964,68562e-11,0,0,.999945,10374e-10,0,0,.999919,171269e-11,0,0,.999882,300175e-11,0,0,.999829,542144e-11,0,0,.999749,984182e-11,0,0,.99962,176213e-10,0,0,.999382,305995e-10,0,138418e-10,.998751,496686e-10,0,389844e-9,.995344,510733e-10,0,.00150343,.990768,345829e-10,0,.00352451,.987464,342841e-10,0,.00655379,.983846,399072e-10,0,.0106554,.980007,533219e-10,0,.0158723,.974494,696992e-10,0,.0222333,.96622,776754e-10,0,.029758,.956273,747718e-10,0,.0384596,.950952,864611e-10,0,.0483473,.945215,100464e-9,0,.0594266,.937287,103729e-9,0,.0717019,.928649,111665e-9,0,.0851752,.918791,12353e-8,0,.0998479,.906685,127115e-9,0,.115721,.893706,13628e-8,0,.132794,.879248,142427e-9,0,.151067,.864685,148091e-9,0,.170538,.850032,153517e-9,0,.191204,.833853,157322e-9,0,.213063,.816353,161086e-9,0,.236107,.797834,164111e-9,0,.260329,.778831,165446e-9,0,.285714,.759756,167492e-9,0,.312243,.739419,166928e-9,0,.339887,.718491,167e-6,0,.368604,.697392,165674e-9,0,.398329,.676102,163815e-9,0,.428961,.654243,162003e-9,0,.460331,.632176,158831e-9,0,.492064,.610407,155463e-9,0,.52381,.588394,152062e-9,0,.555556,.56645,147665e-9,0,.587302,.5449,14375e-8,0,.619048,.523276,138905e-9,0,.650794,.502179,134189e-9,0,.68254,.481359,129392e-9,0,.714286,.46092,124556e-9,0,.746032,.441084,11957e-8,0,.777778,.421517,114652e-9,0,.809524,.402721,109688e-9,0,.84127,.384222,104667e-9,0,.873016,.366534,999633e-10,0,.904762,.349205,950177e-10,0,.936508,.332702,907301e-10,0,.968254,.316599,859769e-10,0,1,1,585473e-12,0,0,1,585507e-12,0,0,1,58602e-11,0,0,.999999,588259e-12,0,0,.999999,594381e-12,0,0,.999998,607754e-12,0,0,.999995,633729e-12,0,0,.99999,68137e-11,0,0,.999984,767003e-12,0,0,.999973,921212e-12,0,0,.999959,120218e-11,0,0,.999936,172024e-11,0,0,.999907,268088e-11,0,0,.999866,445512e-11,0,0,.999806,768481e-11,0,0,.999716,1342e-8,0,0,.999576,232473e-10,0,0,.9993,391694e-10,0,129917e-9,.998498,608429e-10,0,845035e-9,.994132,489743e-10,0,.00237616,.99031,384644e-10,0,.00484456,.987409,421768e-10,0,.00832472,.983981,504854e-10,0,.0128643,.980268,671028e-10,0,.0184947,.974875,852749e-10,0,.025237,.966063,85531e-9,0,.0331046,.956779,900588e-10,0,.0421067,.950259,10577e-8,0,.0522487,.944239,119458e-9,0,.0635343,.936341,122164e-9,0,.0759654,.928047,134929e-9,0,.0895434,.918065,145544e-9,0,.104269,.906267,150531e-9,0,.120142,.893419,161652e-9,0,.137163,.878758,16593e-8,0,.15533,.863699,174014e-9,0,.174645,.848876,177877e-9,0,.195106,.833032,184049e-9,0,.21671,.815557,186088e-9,0,.239454,.797323,19054e-8,0,.263332,.778124,191765e-9,0,.288336,.758929,192535e-9,0,.314451,.738979,192688e-9,0,.341658,.718213,191522e-9,0,.369924,.696947,190491e-9,0,.399202,.675807,187913e-9,0,.429416,.654147,184451e-9,0,.460447,.63229,181442e-9,0,.492064,.610499,177139e-9,0,.523809,.588747,172596e-9,0,.555555,.566783,167457e-9,0,.587301,.545359,162518e-9,0,.619048,.523984,156818e-9,0,.650794,.502917,151884e-9,0,.68254,.482294,145514e-9,0,.714286,.461945,140199e-9,0,.746032,.442133,134101e-9,0,.777778,.422705,128374e-9,0,.809524,.403916,122996e-9,0,.84127,.38554,116808e-9,0,.873016,.367909,111973e-9,0,.904762,.350651,105938e-9,0,.936508,.334208,101355e-9,0,.968254,.318123,957629e-10,0,1,1,111633e-11,0,0,1,111639e-11,0,0,1,111725e-11,0,0,1,112096e-11,0,0,.999999,11311e-10,0,0,.999997,115315e-11,0,0,.999995,11956e-10,0,0,.999989,127239e-11,0,0,.999981,140772e-11,0,0,.999969,164541e-11,0,0,.999952,206607e-11,0,0,.999928,281783e-11,0,0,.999895,416835e-11,0,0,.999848,658728e-11,0,0,.999781,108648e-10,0,0,.999682,182579e-10,0,0,.999523,306003e-10,0,159122e-10,.999205,499862e-10,0,391184e-9,.998131,73306e-9,0,.00147534,.993334,513229e-10,0,.0034227,.99016,467783e-10,0,.00632232,.987321,523413e-10,0,.0102295,.984099,64267e-9,0,.0151794,.980432,843042e-10,0,.0211947,.974976,102819e-9,0,.0282899,.966429,996234e-10,0,.0364739,.957633,111074e-9,0,.0457522,.949422,128644e-9,0,.0561278,.943045,140076e-9,0,.0676023,.935448,146349e-9,0,.0801762,.927225,161854e-9,0,.0938499,.917033,169135e-9,0,.108623,.905762,179987e-9,0,.124496,.892879,189832e-9,0,.141469,.878435,195881e-9,0,.159541,.863114,20466e-8,0,.178713,.84776,209473e-9,0,.198985,.832084,214861e-9,0,.220355,.814915,217695e-9,0,.242823,.796711,220313e-9,0,.266385,.777603,22313e-8,0,.291036,.757991,222471e-9,0,.316767,.738371,222869e-9,0,.343563,.717872,221243e-9,0,.371402,.696619,218089e-9,0,.400248,.675379,21562e-8,0,.430047,.65411,21169e-8,0,.460709,.63241,206947e-9,0,.492079,.61046,201709e-9,0,.52381,.58903,196753e-9,0,.555556,.567267,189637e-9,0,.587302,.545886,184735e-9,0,.619048,.524714,177257e-9,0,.650794,.503789,171424e-9,0,.68254,.483204,164688e-9,0,.714286,.462976,157172e-9,0,.746032,.443294,151341e-9,0,.777778,.423988,143737e-9,0,.809524,.405325,138098e-9,0,.84127,.386981,130698e-9,0,.873016,.369436,125276e-9,0,.904762,.35219,118349e-9,0,.936508,.335804,11312e-8,0,.968254,.319749,106687e-9,0,1,1,204685e-11,0,0,1,204694e-11,0,0,1,204831e-11,0,0,.999999,205428e-11,0,0,.999999,207056e-11,0,0,.999997,210581e-11,0,0,.999993,21732e-10,0,0,.999987,229365e-11,0,0,.999979,250243e-11,0,0,.999965,286127e-11,0,0,.999947,348028e-11,0,0,.999918,455588e-11,0,0,.999881,643303e-11,0,0,.999828,970064e-11,0,0,.999753,153233e-10,0,0,.999642,24793e-9,0,0,.999464,402032e-10,0,122947e-9,.999089,635852e-10,0,807414e-9,.997567,857026e-10,0,.00227206,.992903,594912e-10,0,.00462812,.990011,578515e-10,0,.00794162,.987192,65399e-9,0,.0122534,.98418,819675e-10,0,.0175888,.980491,105514e-9,0,.0239635,.974779,121532e-9,0,.031387,.96675,119144e-9,0,.0398644,.958248,136125e-9,0,.0493982,.948884,155408e-9,0,.0599896,.941673,162281e-9,0,.0716382,.934521,176754e-9,0,.0843437,.926205,192873e-9,0,.0981056,.916089,200038e-9,0,.112923,.904963,213624e-9,0,.128796,.892089,221834e-9,0,.145725,.878028,232619e-9,0,.163709,.86249,238632e-9,0,.182749,.846587,247002e-9,0,.202847,.830988,250702e-9,0,.224001,.814165,255562e-9,0,.246214,.796135,257505e-9,0,.269482,.777052,258625e-9,0,.293805,.757201,258398e-9,0,.319176,.737655,256714e-9,0,.345587,.717477,255187e-9,0,.373021,.696433,251792e-9,0,.401454,.675084,247223e-9,0,.430844,.653907,242213e-9,0,.461125,.632561,237397e-9,0,.492187,.610658,229313e-9,0,.52381,.589322,224402e-9,0,.555556,.567857,216116e-9,0,.587302,.54652,209124e-9,0,.619048,.525433,201601e-9,0,.650794,.504679,192957e-9,0,.68254,.484203,186052e-9,0,.714286,.464203,177672e-9,0,.746032,.444549,170005e-9,0,.777778,.425346,162401e-9,0,.809524,.406706,1544e-7,0,.84127,.388576,147437e-9,0,.873016,.37094,139493e-9,0,.904762,.353996,133219e-9,0,.936508,.337391,125573e-9,0,.968254,.321648,119867e-9,0,1,1,362511e-11,0,0,1,362525e-11,0,0,1,362739e-11,0,0,.999999,363673e-11,0,0,.999998,366214e-11,0,0,.999996,371698e-11,0,0,.999992,382116e-11,0,0,.999986,400554e-11,0,0,.999976,432058e-11,0,0,.999961,485194e-11,0,0,.999938,574808e-11,0,0,.999908,726643e-11,0,0,.999865,984707e-11,0,0,.999807,142217e-10,0,0,.999723,215581e-10,0,0,.999602,336114e-10,0,119113e-10,.999398,527353e-10,0,355813e-9,.998946,805809e-10,0,.00137768,.996647,942908e-10,0,.00322469,.992298,668733e-10,0,.00597897,.989802,716564e-10,0,.00968903,.987019,821355e-10,0,.0143845,.984219,104555e-9,0,.0200831,.980425,131245e-9,0,.0267948,.974241,139613e-9,0,.034525,.967006,145931e-9,0,.0432757,.95893,167153e-9,0,.0530471,.949157,188146e-9,0,.0638386,.94062,194625e-9,0,.0756487,.933509,213721e-9,0,.0884762,.925088,229616e-9,0,.10232,.915178,239638e-9,0,.117178,.904093,254814e-9,0,.133051,.891337,263685e-9,0,.149939,.877326,274789e-9,0,.167841,.861794,280534e-9,0,.18676,.845758,289534e-9,0,.206696,.829792,294446e-9,0,.22765,.813037,296877e-9,0,.249625,.795285,300217e-9,0,.27262,.776323,299826e-9,0,.296636,.756673,299787e-9,0,.321671,.736856,297867e-9,0,.347718,.716883,294052e-9,0,.374768,.696089,289462e-9,0,.402804,.67505,285212e-9,0,.431796,.653509,27653e-8,0,.461695,.63258,271759e-9,0,.49242,.61104,262811e-9,0,.523822,.589567,255151e-9,0,.555556,.568322,246434e-9,0,.587302,.547235,237061e-9,0,.619048,.52616,228343e-9,0,.650794,.505716,219236e-9,0,.68254,.485274,209595e-9,0,.714286,.465411,201011e-9,0,.746032,.445854,19109e-8,0,.777778,.426911,182897e-9,0,.809524,.408222,173569e-9,0,.84127,.390307,165496e-9,0,.873016,.372624,156799e-9,0,.904762,.355804,14917e-8,0,.936508,.33924,140907e-9,0,.968254,.323534,134062e-9,0,1,1,622487e-11,0,0,1,62251e-10,0,0,1,622837e-11,0,0,.999999,624259e-11,0,0,.999998,628127e-11,0,0,.999996,636451e-11,0,0,.999991,65218e-10,0,0,.999984,679782e-11,0,0,.999973,726361e-11,0,0,.999955,803644e-11,0,0,.999931,931397e-11,0,0,.999896,114299e-10,0,0,.999847,149402e-10,0,0,.999784,207461e-10,0,0,.999692,302493e-10,0,0,.999554,454957e-10,0,997275e-10,.999326,690762e-10,0,724813e-9,.998757,101605e-9,0,.0020972,.995367,958745e-10,0,.00432324,.99209,832808e-10,0,.00746347,.989517,887601e-10,0,.0115534,.987008,10564e-8,0,.0166134,.98421,133179e-9,0,.0226552,.98021,161746e-9,0,.0296838,.973676,161821e-9,0,.0377016,.967052,178635e-9,0,.0467079,.959385,206765e-9,0,.0567013,.949461,22476e-8,0,.0676796,.939578,23574e-8,0,.0796403,.932416,25893e-8,0,.0925812,.923759,271228e-9,0,.106501,.914223,289165e-9,0,.121397,.902942,301156e-9,0,.13727,.890419,313852e-9,0,.15412,.876639,324408e-9,0,.171946,.861316,33249e-8,0,.190751,.84496,338497e-9,0,.210537,.828427,345861e-9,0,.231305,.811871,347863e-9,0,.253057,.794397,350225e-9,0,.275797,.775726,349915e-9,0,.299525,.75617,347297e-9,0,.324242,.736091,344232e-9,0,.349947,.716213,340835e-9,0,.376633,.695736,332369e-9,0,.404289,.674961,327943e-9,0,.432895,.653518,318533e-9,0,.462415,.632574,310391e-9,0,.492788,.61134,300755e-9,0,.523909,.590017,290506e-9,0,.555556,.568752,280446e-9,0,.587302,.548061,269902e-9,0,.619048,.52711,258815e-9,0,.650794,.506682,248481e-9,0,.68254,.486524,237141e-9,0,.714286,.466812,226872e-9,0,.746032,.44732,216037e-9,0,.777778,.428473,205629e-9,0,.809524,.409921,195691e-9,0,.84127,.392028,185457e-9,0,.873016,.374606,176436e-9,0,.904762,.357601,166508e-9,0,.936508,.341348,158385e-9,0,.968254,.32542,149203e-9,0,1,1,103967e-10,0,0,1,10397e-9,0,0,1,104019e-10,0,0,.999999,104231e-10,0,0,.999998,104806e-10,0,0,.999995,106042e-10,0,0,.999991,108366e-10,0,0,.999982,112415e-10,0,0,.999968,119174e-10,0,0,.99995,130227e-10,0,0,.999922,148176e-10,0,0,.999884,177303e-10,0,0,.99983,224564e-10,0,0,.999758,300966e-10,0,0,.999654,423193e-10,0,549083e-11,.999503,614848e-10,0,296087e-9,.999237,903576e-10,0,.00123144,.998491,1271e-7,0,.00295954,.994594,107754e-9,0,.00555829,.99178,103025e-9,0,.00907209,.989265,11154e-8,0,.0135257,.986998,136296e-9,0,.0189327,.984137,169154e-9,0,.0252993,.979798,196671e-9,0,.0326272,.97337,196678e-9,0,.0409157,.967239,223121e-9,0,.0501623,.959543,253809e-9,0,.0603638,.949466,265972e-9,0,.0715171,.939074,288372e-9,0,.0836187,.931118,310983e-9,0,.0966657,.922525,325561e-9,0,.110656,.912983,345725e-9,0,.125588,.901617,3556e-7,0,.141461,.889487,374012e-9,0,.158275,.875787,383445e-9,0,.176031,.860654,393972e-9,0,.19473,.844417,400311e-9,0,.214374,.82741,405004e-9,0,.234967,.810545,407378e-9,0,.256512,.793312,407351e-9,0,.279011,.774847,406563e-9,0,.302468,.755621,404903e-9,0,.326887,.735511,397486e-9,0,.352266,.715435,39357e-8,0,.378605,.695403,384739e-9,0,.405897,.674681,376108e-9,0,.43413,.65359,365997e-9,0,.463277,.632471,354957e-9,0,.493295,.61151,343593e-9,0,.524106,.59064,331841e-9,0,.555561,.569386,318891e-9,0,.587302,.548785,3072e-7,0,.619048,.528146,29361e-8,0,.650794,.507872,281709e-9,0,.68254,.487805,268627e-9,0,.714286,.468196,255887e-9,0,.746032,.448922,243997e-9,0,.777778,.430093,231662e-9,0,.809524,.411845,220339e-9,0,.84127,.393808,208694e-9,0,.873016,.376615,198045e-9,0,.904762,.359655,187375e-9,0,.936508,.343452,177371e-9,0,.968254,.32765,167525e-9,0,1,1,169351e-10,0,0,1,169356e-10,0,0,1,169427e-10,0,0,.999999,169736e-10,0,0,.999998,170575e-10,0,0,.999995,172372e-10,0,0,.99999,175739e-10,0,0,.999979,181568e-10,0,0,.999966,191206e-10,0,0,.999944,20677e-9,0,0,.999912,231644e-10,0,0,.999869,271268e-10,0,0,.999811,334272e-10,0,0,.99973,433979e-10,0,0,.999617,590083e-10,0,680315e-10,.999445,829497e-10,0,612796e-9,.999138,118019e-9,0,.00187408,.998095,156712e-9,0,.00395791,.993919,125054e-9,0,.00692144,.991333,126091e-9,0,.0107962,.989226,144912e-9,0,.0155986,.986954,175737e-9,0,.0213364,.983982,213883e-9,0,.0280114,.979128,234526e-9,0,.0356226,.973327,243725e-9,0,.0441668,.967416,2773e-7,0,.0536399,.959729,308799e-9,0,.0640376,.949758,322447e-9,0,.0753554,.939173,350021e-9,0,.0875893,.9296,370089e-9,0,.100736,.921181,391365e-9,0,.114793,.91164,413636e-9,0,.129759,.900435,427068e-9,0,.145632,.888183,441046e-9,0,.162412,.874772,454968e-9,0,.180101,.859566,461882e-9,0,.1987,.843579,471556e-9,0,.218213,.826453,474335e-9,0,.238641,.809164,477078e-9,0,.259989,.792179,47755e-8,0,.282262,.773866,472573e-9,0,.305464,.754944,469765e-9,0,.329599,.735133,462371e-9,0,.35467,.714858,453674e-9,0,.380678,.694829,443888e-9,0,.407622,.674453,432052e-9,0,.435493,.653685,420315e-9,0,.464275,.632666,406829e-9,0,.493938,.611676,392234e-9,0,.524422,.591193,379208e-9,0,.555624,.570145,36319e-8,0,.587302,.549566,349111e-9,0,.619048,.529278,334166e-9,0,.650794,.509026,318456e-9,0,.68254,.489186,30449e-8,0,.714286,.469662,289051e-9,0,.746032,.450691,275494e-9,0,.777778,.431841,261437e-9,0,.809524,.413752,247846e-9,0,.84127,.395951,235085e-9,0,.873016,.378633,222245e-9,0,.904762,.36194,210533e-9,0,.936508,.345599,198494e-9,0,.968254,.329999,188133e-9,0,1,1,269663e-10,0,0,1,26967e-9,0,0,1,269772e-10,0,0,.999999,270214e-10,0,0,.999998,271415e-10,0,0,.999994,27398e-9,0,0,.999988,278771e-10,0,0,.999977,287019e-10,0,0,.999961,300544e-10,0,0,.999937,322138e-10,0,0,.999904,356163e-10,0,0,.999854,409465e-10,0,0,.99979,492651e-10,0,0,.999699,621722e-10,0,88288e-11,.999572,819715e-10,0,223369e-9,.999381,111689e-9,0,.00105414,.999016,153862e-9,0,.0026493,.997437,187667e-9,0,.00508608,.993545,155672e-9,0,.00840554,.991135,161455e-9,0,.012629,.989157,188241e-9,0,.0177661,.986874,226229e-9,0,.0238198,.983714,268668e-9,0,.0307887,.978301,277109e-9,0,.0386688,.973227,303446e-9,0,.0474554,.967317,341851e-9,0,.0571428,.959477,370885e-9,0,.0677256,.950012,392753e-9,0,.0791988,.939484,42781e-8,0,.0915576,.928135,443866e-9,0,.104798,.919819,472959e-9,0,.118918,.910049,491551e-9,0,.133915,.899181,512616e-9,0,.149788,.886881,523563e-9,0,.166537,.87359,540183e-9,0,.184164,.858613,547386e-9,0,.202669,.842809,554809e-9,0,.222056,.825727,558316e-9,0,.242329,.808086,557824e-9,0,.263492,.790728,556346e-9,0,.285551,.772987,552672e-9,0,.30851,.7541,543738e-9,0,.332376,.734669,536107e-9,0,.357153,.714411,523342e-9,0,.382845,.694196,512238e-9,0,.409454,.674252,497465e-9,0,.436977,.65357,481096e-9,0,.465404,.632999,467054e-9,0,.494713,.611994,448771e-9,0,.524864,.591604,431889e-9,0,.555779,.571134,415238e-9,0,.587302,.550528,396369e-9,0,.619048,.530292,379477e-9,0,.650794,.510364,361488e-9,0,.68254,.490749,343787e-9,0,.714286,.471266,327822e-9,0,.746032,.452462,310626e-9,0,.777778,.433907,295352e-9,0,.809524,.415659,279179e-9,0,.84127,.398138,264685e-9,0,.873016,.380833,249905e-9,0,.904762,.364247,236282e-9,0,.936508,.348041,222905e-9,0,.968254,.332389,210522e-9,0,1,1,420604e-10,0,0,1,420614e-10,0,0,1,420757e-10,0,0,.999999,42138e-9,0,0,.999997,423067e-10,0,0,.999993,426668e-10,0,0,.999986,433372e-10,0,0,.999974,444857e-10,0,0,.999956,463554e-10,0,0,.99993,493105e-10,0,0,.999892,539077e-10,0,0,.999838,610005e-10,0,0,.999767,718822e-10,0,0,.999666,884581e-10,0,365471e-10,.999525,113398e-9,0,485623e-9,.999311,150043e-9,0,.00162096,.998865,200063e-9,0,.00355319,.996278,211014e-9,0,.00633818,.992956,189672e-9,0,.0100043,.991017,210262e-9,0,.0145648,.989055,244292e-9,0,.0200237,.986741,290481e-9,0,.0263798,.983288,334303e-9,0,.033629,.977784,340307e-9,0,.0417652,.973037,377864e-9,0,.0507821,.967181,4239e-7,0,.060673,.958971,443854e-9,0,.0714314,.950093,483039e-9,0,.0830518,.939552,517934e-9,0,.0955288,.927678,539449e-9,0,.108859,.918278,568604e-9,0,.123038,.908449,588505e-9,0,.138065,.897713,612473e-9,0,.153938,.885533,625575e-9,0,.170657,.872131,63854e-8,0,.188224,.857517,647034e-9,0,.20664,.841796,65209e-8,0,.225909,.824726,6544e-7,0,.246035,.807297,655744e-9,0,.267022,.789058,646716e-9,0,.288878,.77189,643898e-9,0,.311607,.753082,629973e-9,0,.335216,.7341,621564e-9,0,.359713,.714094,605171e-9,0,.385103,.693839,588752e-9,0,.41139,.673891,573294e-9,0,.438576,.653565,552682e-9,0,.466656,.633326,533446e-9,0,.495617,.612582,514635e-9,0,.525431,.59205,49303e-8,0,.556041,.571918,471842e-9,0,.587338,.551572,451713e-9,0,.619048,.531553,430049e-9,0,.650794,.51175,410445e-9,0,.68254,.49238,390098e-9,0,.714286,.473143,370033e-9,0,.746032,.45423,351205e-9,0,.777778,.435963,332049e-9,0,.809524,.41787,315021e-9,0,.84127,.400387,297315e-9,0,.873016,.383332,281385e-9,0,.904762,.366665,265397e-9,0,.936508,.350633,250601e-9,0,.968254,.334964,23589e-8,0,1,1,643736e-10,0,0,1,64375e-9,0,0,1,643947e-10,0,0,.999999,64481e-9,0,0,.999997,647143e-10,0,0,.999994,652119e-10,0,0,.999985,661359e-10,0,0,.999972,677116e-10,0,0,.999952,702599e-10,0,0,.999922,742517e-10,0,0,.99988,803906e-10,0,0,.99982,897315e-10,0,0,.999741,103838e-9,0,0,.999629,12496e-8,0,149024e-9,.999474,156161e-9,0,861027e-9,.999229,201034e-9,0,.00231198,.998662,259069e-9,0,.00458147,.995299,245439e-9,0,.00770895,.992732,24498e-8,0,.0117126,.990847,273211e-9,0,.0165989,.988911,316492e-9,0,.0223674,.98654,37161e-8,0,.0290135,.982636,410352e-9,0,.0365309,.977346,421756e-9,0,.0449117,.972909,475578e-9,0,.0541481,.966821,522482e-9,0,.0642326,.958686,545008e-9,0,.075158,.949754,589286e-9,0,.0869181,.939184,619995e-9,0,.0995074,.927505,654266e-9,0,.112922,.916606,682362e-9,0,.127157,.906707,704286e-9,0,.142212,.895937,725909e-9,0,.158085,.883913,743939e-9,0,.174776,.870642,755157e-9,0,.192287,.856241,764387e-9,0,.210619,.84069,771032e-9,0,.229775,.823728,765906e-9,0,.249761,.806481,767604e-9,0,.270582,.787924,754385e-9,0,.292243,.770588,749668e-9,0,.314753,.751991,731613e-9,0,.338118,.733407,717655e-9,0,.362347,.713688,700604e-9,0,.387447,.693595,678765e-9,0,.413424,.673426,657042e-9,0,.440284,.65359,635892e-9,0,.468027,.633576,611569e-9,0,.496645,.613144,586011e-9,0,.526122,.592711,563111e-9,0,.556417,.572722,537699e-9,0,.587451,.552762,512556e-9,0,.619048,.532985,489757e-9,0,.650794,.513219,464139e-9,0,.68254,.493992,442193e-9,0,.714286,.47509,418629e-9,0,.746032,.456287,397045e-9,0,.777778,.438152,375504e-9,0,.809524,.420294,35492e-8,0,.84127,.402749,335327e-9,0,.873016,.385879,316422e-9,0,.904762,.369352,298333e-9,0,.936508,.353301,281417e-9,0,.968254,.337781,265203e-9,0,1,1,968267e-10,0,0,1,968284e-10,0,0,1,968556e-10,0,0,.999999,969733e-10,0,0,.999997,972913e-10,0,0,.999993,979688e-10,0,0,.999984,992239e-10,0,0,.999969,101356e-9,0,0,.999946,104784e-9,0,0,.999913,110111e-9,0,0,.999868,118217e-9,0,0,.999801,130396e-9,0,0,.999712,148523e-9,0,124907e-10,.999589,175233e-9,0,355405e-9,.999416,213999e-9,0,.0013528,.999136,268529e-9,0,.00312557,.998367,333088e-9,0,.00573045,.994701,304757e-9,0,.00919397,.992497,318031e-9,0,.0135261,.990608,353863e-9,0,.0187278,.988715,409044e-9,0,.0247947,.986241,472967e-9,0,.0317196,.981696,495104e-9,0,.039494,.977097,532873e-9,0,.0481087,.972583,594447e-9,0,.0575549,.966142,636867e-9,0,.0678242,.95823,669899e-9,0,.0789089,.949677,719499e-9,0,.0908023,.939226,750584e-9,0,.103499,.927501,793183e-9,0,.116993,.915199,81995e-8,0,.131282,.90498,847654e-9,0,.146364,.894243,868929e-9,0,.162237,.882154,884278e-9,0,.178902,.869161,898108e-9,0,.196358,.854751,901254e-9,0,.21461,.839368,90679e-8,0,.23366,.822874,901541e-9,0,.253512,.805514,897297e-9,0,.274174,.78716,881856e-9,0,.29565,.769061,870032e-9,0,.31795,.751,851719e-9,0,.341081,.732614,830671e-9,0,.365053,.713171,806569e-9,0,.389874,.693472,78338e-8,0,.415553,.673528,756404e-9,0,.442098,.653397,726872e-9,0,.469512,.633781,700494e-9,0,.497794,.613877,67105e-8,0,.526935,.593506,640361e-9,0,.556908,.573667,613502e-9,0,.587657,.553932,583177e-9,0,.61906,.534345,554375e-9,0,.650794,.515042,527811e-9,0,.68254,.495674,499367e-9,0,.714286,.477132,47429e-8,0,.746032,.458609,447726e-9,0,.777778,.440354,424205e-9,0,.809524,.422765,399549e-9,0,.84127,.405472,378315e-9,0,.873016,.388482,355327e-9,0,.904762,.372191,336122e-9,0,.936508,.356099,315247e-9,0,.968254,.340737,29794e-8,0,1,1,143327e-9,0,0,1,14333e-8,0,0,1,143366e-9,0,0,.999999,143524e-9,0,0,.999996,143952e-9,0,0,.999991,144862e-9,0,0,.999981,146544e-9,0,0,.999966,149391e-9,0,0,.999941,153946e-9,0,0,.999905,160971e-9,0,0,.999852,171562e-9,0,0,.99978,18729e-8,0,0,.999681,210386e-9,0,826239e-10,.999546,243906e-9,0,664807e-9,.999352,291739e-9,0,.00196192,.999027,357419e-9,0,.00405941,.997886,422349e-9,0,.00699664,.99419,385008e-9,0,.0107896,.99214,409775e-9,0,.0154415,.990274,456418e-9,0,.0209488,.988455,527008e-9,0,.0273037,.985804,597685e-9,0,.0344969,.98103,613124e-9,0,.0425183,.976674,668321e-9,0,.0513575,.972021,736985e-9,0,.0610046,.965274,773789e-9,0,.0714508,.958046,830852e-9,0,.0826877,.949333,875766e-9,0,.0947085,.939135,917088e-9,0,.107507,.927119,952244e-9,0,.121078,.91469,990626e-9,0,.135419,.903006,.00101304,0,.150526,.892368,.00103834,0,.166399,.880231,.00105002,0,.183038,.867432,.00106331,0,.200443,.853208,.00106783,0,.218618,.837956,.00106458,0,.237566,.821772,.00105945,0,.257291,.804328,.00104685,0,.2778,.786465,.00103178,0,.2991,.768004,.00101077,0,.321199,.74972,985504e-9,0,.344106,.731682,962893e-9,0,.36783,.712813,932146e-9,0,.392383,.693139,89871e-8,0,.417774,.673566,869678e-9,0,.444013,.653483,835525e-9,0,.471107,.633891,799853e-9,0,.49906,.614433,766838e-9,0,.527869,.594586,732227e-9,0,.557517,.574769,696442e-9,0,.587966,.555149,663935e-9,0,.61913,.535898,629826e-9,0,.650794,.516753,596486e-9,0,.68254,.497816,567078e-9,0,.714286,.479034,534399e-9,0,.746032,.460975,507013e-9,0,.777778,.442935,477421e-9,0,.809524,.425263,451101e-9,0,.84127,.408248,424964e-9,0,.873016,.391339,39993e-8,0,.904762,.37513,377619e-9,0,.936508,.359172,354418e-9,0,.968254,.343876,334823e-9,0,1,1,209042e-9,0,0,1,209045e-9,0,0,1,209093e-9,0,0,.999999,209304e-9,0,0,.999996,209871e-9,0,0,.999991,211078e-9,0,0,.999979,213304e-9,0,0,.999963,217061e-9,0,0,.999933,223042e-9,0,0,.999894,232206e-9,0,0,.999837,245901e-9,0,0,.999756,266023e-9,0,102927e-11,.999648,295204e-9,0,233468e-9,.999499,336958e-9,0,.00108237,.999283,395563e-9,0,.00268832,.998896,473785e-9,0,.00511138,.997006,520008e-9,0,.00837705,.993819,497261e-9,0,.0124928,.991632,523722e-9,0,.0174561,.989875,587258e-9,0,.0232596,.988109,676329e-9,0,.0298932,.985155,747701e-9,0,.0373453,.980479,768803e-9,0,.0456045,.976271,841054e-9,0,.0546593,.971347,911469e-9,0,.0644994,.964528,953057e-9,0,.0751152,.957632,.00102221,0,.0864981,.948681,.00106122,0,.0986407,.938716,.00111857,0,.111537,.926629,.00114762,0,.125182,.914025,.00118995,0,.139571,.901026,.00121228,0,.154703,.890358,.00123946,0,.170576,.878283,.0012527,0,.18719,.865459,.00125536,0,.204547,.851407,.00126134,0,.222648,.836276,.00124759,0,.241498,.820436,.00124443,0,.261101,.803253,.00122071,0,.281465,.785562,.00120107,0,.302595,.76718,.00117762,0,.324501,.748551,.00114289,0,.347192,.730564,.00110872,0,.370679,.712253,.00107636,0,.394973,.692867,.00103646,0,.420085,.673695,996793e-9,0,.446027,.653912,95675e-8,0,.47281,.634129,916739e-9,0,.500441,.615004,874401e-9,0,.528921,.595587,833411e-9,0,.558244,.575965,794556e-9,0,.588384,.5566,75196e-8,0,.619281,.537428,716381e-9,0,.650795,.518623,676558e-9,0,.68254,.499964,64074e-8,0,.714286,.481356,605984e-9,0,.746032,.463279,570256e-9,0,.777778,.445673,540138e-9,0,.809524,.428032,507299e-9,0,.84127,.411112,479553e-9,0,.873016,.394444,450737e-9,0,.904762,.378247,424269e-9,0,.936508,.362415,399111e-9,0,.968254,.347103,375274e-9,0,1,1,300729e-9,0,0,1,300733e-9,0,0,1,300797e-9,0,0,.999998,301072e-9,0,0,.999996,301817e-9,0,0,.999989,303398e-9,0,0,.999977,306309e-9,0,0,.999958,311209e-9,0,0,.999927,318975e-9,0,0,.999884,330804e-9,0,0,.99982,34834e-8,0,0,.999733,373854e-9,0,326995e-10,.999613,410424e-9,0,477174e-9,.999447,462047e-9,0,.00161099,.999204,533322e-9,0,.00353153,.998725,624964e-9,0,.00627965,.995871,631786e-9,0,.0098693,.993194,632017e-9,0,.0143011,.991541,68923e-8,0,.019568,.989773,766892e-9,0,.0256593,.987647,863668e-9,0,.0325625,.984193,922089e-9,0,.0402647,.980016,970749e-9,0,.0487532,.975859,.00106027,0,.058016,.970514,.00112239,0,.0680419,.963625,.00117212,0,.0788208,.956959,.00125211,0,.0903439,.947956,.00129411,0,.102604,.93809,.00135879,0,.115594,.92659,.00139309,0,.129309,.913829,.00143253,0,.143745,.90005,.00145809,0,.158901,.888129,.0014748,0,.174774,.87607,.00148756,0,.191365,.863461,.00148714,0,.208674,.849594,.00148892,0,.226705,.834531,.00146496,0,.245461,.81903,.0014579,0,.264947,.802122,.00143039,0,.28517,.78445,.00139717,0,.306137,.766434,.00136312,0,.327857,.747816,.00132597,0,.350341,.729519,.00128323,0,.373598,.711454,.00123803,0,.397642,.692699,.00119097,0,.422485,.673723,.00114565,0,.448139,.654386,.00109552,0,.474619,.634673,.00104553,0,.501933,.615554,99985e-8,0,.530089,.596462,948207e-9,0,.559087,.577385,902299e-9,0,.588913,.558257,856448e-9,0,.619525,.5392,810395e-9,0,.650826,.520543,768558e-9,0,.68254,.502206,7239e-7,0,.714286,.48402,685794e-9,0,.746032,.465779,64471e-8,0,.777778,.448455,609583e-9,0,.809524,.431091,57227e-8,0,.84127,.414147,54042e-8,0,.873016,.39765,506545e-9,0,.904762,.381576,477635e-9,0,.936508,.365881,448446e-9,0,.968254,.350582,421424e-9,0,1,1,427144e-9,0,0,1,427151e-9,0,0,1,427232e-9,0,0,.999998,42759e-8,0,0,.999995,428555e-9,0,0,.999988,430603e-9,0,0,.999976,434368e-9,0,0,.999952,440688e-9,0,0,.999919,450667e-9,0,0,.999871,46578e-8,0,0,.999801,488024e-9,0,0,.999704,520092e-9,0,129791e-9,.999572,565553e-9,0,821056e-9,.999389,628906e-9,0,.00225241,.999114,714911e-9,0,.00449109,.998488,819218e-9,0,.00756249,.995234,80415e-8,0,.0114716,.993021,830181e-9,0,.0162131,.991407,902645e-9,0,.021776,.989625,996934e-9,0,.0281471,.987064,.00109707,0,.0353118,.983265,.00114353,0,.0432562,.979535,.0012272,0,.0519665,.975224,.00132642,0,.0614298,.969574,.00138092,0,.0716348,.963021,.00145896,0,.0825709,.956046,.00152834,0,.094229,.947136,.00158217,0,.106602,.937313,.0016347,0,.119682,.926073,.00168383,0,.133465,.913121,.00171627,0,.147947,.899165,.00174229,0,.163125,.885891,.00176137,0,.178998,.873783,.00176406,0,.195566,.861331,.00176156,0,.21283,.847569,.00175346,0,.230793,.832785,.00172753,0,.249459,.817442,.00170204,0,.268832,.800613,.00166576,0,.28892,.783597,.00162909,0,.30973,.76571,.0015826,0,.331271,.747021,.00153106,0,.353554,.728593,.00148036,0,.37659,.710661,.00142808,0,.400391,.692426,.00136906,0,.424973,.673623,.00131066,0,.450347,.65494,.00125569,0,.476531,.635448,.00119517,0,.503535,.616221,.00113828,0,.531372,.597531,.0010816,0,.560047,.578795,.00102673,0,.589554,.559892,970985e-9,0,.619869,.541307,919773e-9,0,.650923,.522608,868479e-9,0,.68254,.504484,82137e-8,0,.714286,.486603,772916e-9,0,.746032,.468802,730353e-9,0,.777778,.451172,684955e-9,0,.809524,.434348,647565e-9,0,.84127,.417445,605863e-9,0,.873016,.401077,571885e-9,0,.904762,.385039,536034e-9,0,.936508,.369483,504227e-9,0,.968254,.354272,473165e-9,0,1,1,599525e-9,0,0,1,599533e-9,0,0,1,599639e-9,0,0,.999998,600097e-9,0,0,.999994,601336e-9,0,0,.999987,603958e-9,0,0,.999972,608775e-9,0,0,.999949,616842e-9,0,0,.999912,629534e-9,0,0,.999857,648658e-9,0,0,.999781,676615e-9,0,538873e-11,.999674,716574e-9,0,308602e-9,.999528,772641e-9,0,.00127003,.999326,849806e-9,0,.00300783,.999009,952682e-9,0,.00556637,.998112,.00106394,0,.00895889,.994496,.00102228,0,.0131827,.992806,.00108586,0,.0182277,.991211,.0011759,0,.0240795,.989415,.00128955,0,.030723,.986499,.00139038,0,.0381418,.982679,.00144539,0,.046321,.978839,.00153954,0,.0552459,.974295,.00164417,0,.0649034,.968784,.00171517,0,.0752814,.962324,.00180282,0,.0863693,.954956,.00186387,0,.0981578,.94624,.00193817,0,.110639,.936517,.00198156,0,.123806,.925186,.00203042,0,.137655,.91252,.0020664,0,.15218,.898441,.00207822,0,.16738,.884394,.0020992,0,.183253,.871273,.00208748,0,.199799,.859057,.00208686,0,.21702,.845243,.00205519,0,.234918,.830723,.00202868,0,.253496,.815801,.00199501,0,.272761,.79914,.00194193,0,.292719,.782372,.00188824,0,.313377,.76482,.00183695,0,.334745,.746586,.00177418,0,.356833,.7281,.00170628,0,.379654,.709842,.00164063,0,.403221,.692019,.00157355,0,.427548,.67364,.00150262,0,.452651,.655277,.00143473,0,.478545,.636438,.00136371,0,.505246,.617364,.00129911,0,.532768,.598603,.00123014,0,.561122,.580195,.00116587,0,.590309,.561786,.00110398,0,.620318,.543377,.00104148,0,.651102,.525093,983984e-9,0,.682545,.506791,92667e-8,0,.714286,.489291,874326e-9,0,.746032,.471811,821734e-9,0,.777778,.454435,774698e-9,0,.809524,.437493,727302e-9,0,.84127,.420977,684039e-9,0,.873016,.404729,64373e-8,0,.904762,.388756,60285e-8,0,.936508,.373344,56765e-8,0,.968254,.358191,531929e-9,0,1,1,832169e-9,0,0,1,832178e-9,0,0,1,83231e-8,0,0,.999998,832893e-9,0,0,.999995,834465e-9,0,0,.999985,837791e-9,0,0,.999969,843893e-9,0,0,.999944,854086e-9,0,0,.999903,870071e-9,0,0,.999843,894042e-9,0,0,.999759,928865e-9,0,531805e-10,.999643,978242e-9,0,579365e-9,.99948,.00104684,0,.00182774,.999255,.00114012,0,.00387804,.998885,.00126188,0,.00675709,.997405,.00135888,0,.010468,.99424,.00133626,0,.0150018,.992458,.00140905,0,.0203443,.990929,.00152305,0,.0264786,.989116,.00165882,0,.0333875,.985624,.00174128,0,.0410536,.982003,.00182108,0,.0494609,.978336,.00194498,0,.0585941,.973184,.00202708,0,.0684396,.9678,.00212166,0,.0789851,.961348,.00221366,0,.0902199,.953841,.00228219,0,.102134,.94534,.00235662,0,.114721,.935552,.00240572,0,.127972,.924064,.00244405,0,.141884,.911827,.00247557,0,.156451,.897731,.00248374,0,.171672,.883409,.00249863,0,.187545,.868625,.00246688,0,.20407,.856529,.00246523,0,.221249,.842999,.00242368,0,.239083,.828505,.00237354,0,.257578,.813825,.00232588,0,.276738,.797813,.00226731,0,.296569,.781097,.00219704,0,.31708,.764038,.00212394,0,.338281,.746067,.00204786,0,.360181,.727687,.00196728,0,.382794,.709571,.00188779,0,.406133,.691503,.00180532,0,.430213,.673673,.00171849,0,.45505,.655732,.00164147,0,.480662,.637399,.00155858,0,.507065,.618616,.00147641,0,.534278,.60005,.00140125,0,.562313,.581713,.00132441,0,.59118,.563546,.00125014,0,.620875,.545605,.00118249,0,.651373,.527559,.0011116,0,.682593,.509764,.00104979,0,.714286,.49193,985977e-9,0,.746032,.475011,928592e-9,0,.777778,.457878,873466e-9,0,.809524,.440979,819585e-9,0,.84127,.424613,772365e-9,0,.873016,.408549,722195e-9,0,.904762,.392771,680014e-9,0,.936508,.377317,636797e-9,0,.968254,.362352,598318e-9,0,1,1,.00114313,0,0,1,.00114314,0,0,.999999,.00114331,0,0,.999998,.00114404,0,0,.999994,.00114601,0,0,.999984,.00115019,0,0,.999967,.00115784,0,0,.999937,.0011706,0,0,.999894,.00119054,0,0,.999828,.00122031,0,0,.999735,.00126331,0,169263e-9,.999606,.00132382,0,949167e-9,.999426,.0014071,0,.00249668,.999173,.00151895,0,.00486392,.99873,.00166102,0,.00806323,.996243,.0017023,0,.0120895,.993779,.00172782,0,.0169288,.9919,.0018108,0,.0225633,.990524,.00196028,0,.028974,.98868,.00212014,0,.036142,.984663,.00217598,0,.044049,.981457,.00230563,0,.0526781,.977608,.00243966,0,.0620137,.972215,.00251336,0,.0720418,.966798,.0026285,0,.0827499,.960241,.00271409,0,.0941271,.952489,.00278381,0,.106164,.944127,.00285399,0,.118852,.934282,.00290994,0,.132185,.923271,.00294558,0,.146157,.910803,.00296269,0,.160766,.896705,.00296803,0,.176007,.88238,.00296637,0,.19188,.867116,.00293163,0,.208385,.853636,.00289418,0,.225523,.840469,.00284663,0,.243296,.82639,.00278594,0,.261709,.811759,.00271618,0,.280767,.796113,.00263187,0,.300476,.779518,.00254589,0,.320845,.763142,.00246003,0,.341883,.745464,.00236529,0,.363601,.727491,.00226536,0,.386011,.709414,.00216375,0,.409128,.691396,.00207127,0,.432967,.67368,.00197106,0,.457545,.656049,.00187022,0,.482881,.638188,.00177605,0,.508992,.620177,.00168482,0,.535899,.601506,.00158909,0,.563619,.58362,.00150583,0,.592165,.565496,.00141791,0,.621544,.54789,.00133693,0,.651743,.530323,.00126038,0,.682709,.512795,.00118556,0,.714286,.495199,.00111527,0,.746032,.478101,.0010489,0,.777778,.461511,984264e-9,0,.809524,.444879,92591e-8,0,.84127,.428424,866582e-9,0,.873016,.412495,814463e-9,0,.904762,.396975,764498e-9,0,.936508,.381614,715967e-9,0,.968254,.366732,672483e-9,0,1,1,.00155501,0,0,1,.00155503,0,0,1,.00155524,0,0,.999998,.00155615,0,0,.999994,.0015586,0,0,.999983,.00156379,0,0,.999963,.0015733,0,0,.999932,.00158911,0,0,.999882,.00161376,0,0,.99981,.00165041,0,100875e-10,.999708,.00170304,0,367658e-9,.999565,.00177658,0,.0014234,.999368,.00187688,0,.00327939,.999081,.00200989,0,.00596629,.99852,.00217177,0,.0094852,.99549,.0021745,0,.013824,.993252,.00222357,0,.0189642,.991727,.00235022,0,.0248856,.989951,.00250561,0,.0315669,.988029,.00268829,0,.0389882,.984029,.0027496,0,.0471302,.980683,.00289793,0,.0559754,.976554,.00303315,0,.0655081,.97139,.00313257,0,.0757138,.965544,.00323656,0,.08658,.95912,.00333432,0,.0980954,.951183,.0034039,0,.110251,.942974,.00347515,0,.123038,.932642,.00350381,0,.13645,.922158,.00354519,0,.150482,.909404,.00353851,0,.165129,.896071,.0035435,0,.18039,.881206,.00349936,0,.196263,.866077,.00347256,0,.212748,.85093,.003415,0,.229847,.837703,.00333367,0,.247561,.823878,.003249,0,.265895,.809449,.00316347,0,.284854,.794379,.00306351,0,.304445,.778138,.0029499,0,.324675,.761997,.00284099,0,.345555,.744938,.00272104,0,.367095,.727212,.00260715,0,.389309,.709549,.00248855,0,.41221,.691704,.00236783,0,.435814,.673689,.00225178,0,.460138,.656453,.00213765,0,.485203,.639128,.00202178,0,.511028,.621512,.00191443,0,.537634,.603598,.00180977,0,.565041,.58559,.00170456,0,.593268,.567852,.00160927,0,.622327,.5503,.00151395,0,.652217,.533033,.00142499,0,.682907,.515942,.00133955,0,.714296,.498814,.0012602,0,.746032,.481595,.00118188,0,.777778,.465117,.00111171,0,.809524,.448865,.00104091,0,.84127,.432711,976618e-9,0,.873016,.416822,91859e-8,0,.904762,.401272,857704e-9,0,.936508,.386226,807172e-9,0,.968254,.371321,75464e-8,0,1,1,.00209596,0,0,1,.00209598,0,0,1,.00209624,0,0,.999997,.00209736,0,0,.999991,.00210039,0,0,.999979,.00210678,0,0,.999959,.00211847,0,0,.999925,.0021379,0,0,.99987,.00216809,0,0,.999791,.00221281,0,681487e-10,.999677,.00227669,0,658161e-9,.999521,.00236533,0,.00200635,.999301,.00248514,0,.0041779,.998977,.00264185,0,.00718648,.998191,.00281695,0,.0110239,.994801,.00278518,0,.015672,.993091,.00288774,0,.0211091,.991571,.00303931,0,.0273123,.9897,.00321643,0,.034259,.987023,.00337332,0,.0419282,.983289,.00346146,0,.0502998,.979892,.00363704,0,.0593562,.975111,.00373601,0,.069081,.970351,.0038842,0,.0794598,.964131,.00397053,0,.0904798,.957747,.00408078,0,.10213,.949536,.00413533,0,.1144,.941372,.00420305,0,.127284,.931049,.00422815,0,.140772,.920647,.00425048,0,.154862,.908033,.0042281,0,.169548,.895028,.00422026,0,.184828,.879968,.00415042,0,.200701,.864875,.00408821,0,.217167,.84918,.00400909,0,.234227,.834934,.00391178,0,.251884,.821397,.00380066,0,.270141,.807135,.00367974,0,.289004,.792363,.00355172,0,.308479,.776661,.003411,0,.328575,.760705,.00328123,0,.349301,.744408,.00314003,0,.370668,.726994,.0029906,0,.392689,.709598,.00285034,0,.415379,.692112,.00271179,0,.438754,.674435,.00257185,0,.46283,.65676,.00243425,0,.48763,.639982,.00230351,0,.513173,.622983,.0021777,0,.539482,.605471,.00204991,0,.566579,.58796,.00193759,0,.594488,.570463,.00181976,0,.623226,.553058,.00171497,0,.6528,.535894,.00161109,0,.683198,.519089,.00151394,0,.714354,.502454,.00142122,0,.746032,.485681,.00133488,0,.777778,.468935,.00124975,0,.809524,.452951,.00117309,0,.84127,.437139,.00110155,0,.873016,.421446,.00103124,0,.904762,.405951,966387e-9,0,.936508,.391003,908119e-9,0,.968254,.376198,848057e-9,0,1,1,.00280076,0,0,1,.00280078,0,0,.999999,.00280109,0,0,.999997,.00280246,0,0,.999992,.00280616,0,0,.999979,.00281396,0,0,.999956,.00282822,0,0,.999916,.00285186,0,0,.999857,.0028885,0,0,.999768,.00294259,0,196026e-9,.999645,.00301946,0,.00104842,.99947,.00312541,0,.00270199,.999229,.00326733,0,.00519449,.998852,.00344992,0,.00852602,.997558,.00361052,0,.0126804,.994417,.0035898,0,.017635,.992824,.00372393,0,.023365,.991344,.00390695,0,.0298456,.989337,.00410392,0,.0370529,.985811,.00420987,0,.0449651,.982772,.00437488,0,.0535615,.979001,.00455069,0,.0628243,.974102,.00464462,0,.0727368,.969197,.00480577,0,.0832844,.962759,.00487818,0,.0944545,.956207,.00498176,0,.106236,.947909,.00503392,0,.118619,.939596,.00507474,0,.131595,.929642,.00509798,0,.145159,.918807,.00508476,0,.159305,.906921,.00505634,0,.174028,.893312,.00498845,0,.189327,.878933,.0049133,0,.2052,.863986,.0048259,0,.221647,.847936,.00470848,0,.23867,.832253,.00456889,0,.25627,.818619,.00442726,0,.274453,.804788,.00427677,0,.293222,.790241,.00411906,0,.312585,.775162,.00394833,0,.33255,.759463,.00377366,0,.353126,.743598,.00361026,0,.374324,.72697,.00343627,0,.396158,.709646,.00326422,0,.418641,.69277,.00309717,0,.44179,.675371,.0029356,0,.465624,.657863,.00277712,0,.490163,.640772,.00261738,0,.515429,.624441,.0024737,0,.541445,.607497,.00233125,0,.568236,.590438,.00218994,0,.595828,.573224,.0020664,0,.624242,.556168,.00193526,0,.653496,.539232,.00182463,0,.683588,.522352,.00170735,0,.714482,.506172,.00160555,0,.746032,.489842,.00150451,0,.777778,.473463,.00140938,0,.809524,.457266,.00132568,0,.84127,.441609,.0012376,0,.873016,.426348,.00116265,0,.904762,.411002,.00108935,0,.936508,.396045,.00101946,0,.968254,.381448,955665e-9,0,1,1,.0037121,0,0,1,.00371213,0,0,1,.00371251,0,0,.999997,.00371417,0,0,.99999,.00371863,0,0,.999977,.00372807,0,0,.99995,.00374529,0,0,.999908,.0037738,0,0,.999843,.00381789,0,123596e-10,.999745,.00388273,0,407442e-9,.999608,.00397443,0,.0015447,.999415,.00409998,0,.00351385,.999143,.00426662,0,.0063316,.9987,.00447625,0,.00998679,.996363,.00455323,0,.0144569,.994021,.00461052,0,.0197151,.992372,.00476359,0,.0257344,.991007,.00499101,0,.0324882,.988767,.0051972,0,.0399517,.984872,.00528407,0,.0481022,.982004,.00548926,0,.0569191,.977714,.00564385,0,.0663839,.973076,.0057693,0,.0764801,.967565,.0058924,0,.0871928,.961384,.00599629,0,.0985095,.954435,.00605998,0,.110419,.946303,.0061133,0,.122912,.937662,.00612028,0,.13598,.927867,.00612209,0,.149617,.916475,.00604813,0,.163817,.90541,.00603088,0,.178577,.891591,.00592218,0,.193894,.877573,.00578854,0,.209767,.862511,.00566648,0,.226196,.846861,.00551481,0,.243182,.83068,.00533754,0,.260728,.815725,.00515487,0,.278837,.802321,.0049655,0,.297515,.787826,.00475421,0,.316768,.773454,.00456002,0,.336605,.758224,.00434727,0,.357034,.74265,.00414444,0,.378067,.726729,.00393738,0,.399717,.710155,.00373575,0,.421998,.693312,.00353736,0,.444928,.67653,.00334368,0,.468523,.659444,.00315981,0,.492806,.642051,.00297809,0,.517798,.625758,.00280592,0,.543525,.609615,.00264254,0,.570012,.592919,.00248459,0,.597288,.576298,.00233327,0,.625379,.559489,.00219519,0,.654307,.542891,.00205441,0,.684084,.526255,.00193385,0,.714693,.509853,.00180745,0,.746044,.494131,.00169817,0,.777778,.478114,.0015913,0,.809524,.462274,.00148981,0,.84127,.446412,.00139537,0,.873016,.431274,.00130984,0,.904762,.41635,.00122403,0,.936508,.401476,.00114809,0,.968254,.386993,.00107563,0,1,1,.00488216,0,0,1,.0048822,0,0,1,.00488265,0,0,.999997,.00488463,0,0,.999988,.00488999,0,0,.999974,.00490129,0,0,.999946,.00492191,0,0,.999897,.00495598,0,0,.999825,.00500855,0,744791e-10,.999718,.00508559,0,712744e-9,.999565,.005194,0,.00215249,.999352,.00534147,0,.00444576,.999046,.00553523,0,.00759218,.998492,.00577016,0,.0115714,.995564,.00578487,0,.0163557,.993339,.00586414,0,.021915,.991834,.00606002,0,.0282201,.990496,.00633312,0,.0352433,.987826,.00651941,0,.042959,.98383,.00660842,0,.0513439,.98109,.00685523,0,.0603772,.976131,.00695778,0,.0700402,.971922,.00714236,0,.0803163,.965901,.00721437,0,.0911908,.959606,.00732017,0,.102651,.952504,.00735788,0,.114686,.944365,.00738493,0,.127286,.935652,.00737969,0,.140443,.925813,.00733612,0,.154151,.914397,.00723094,0,.168405,.903257,.00714002,0,.183201,.890015,.00700149,0,.198536,.876014,.00682813,0,.214409,.861436,.00665567,0,.23082,.845752,.00644526,0,.24777,.829169,.00621635,0,.265263,.813435,.00597789,0,.283301,.799701,.00575694,0,.301889,.785726,.00549866,0,.321035,.77152,.0052503,0,.340746,.75683,.00499619,0,.361032,.741951,.0047543,0,.381904,.726367,.0045084,0,.403374,.710537,.00426784,0,.425457,.693965,.00403487,0,.448169,.677724,.0038075,0,.47153,.66117,.00359431,0,.495561,.644274,.00338354,0,.520284,.627449,.00318163,0,.545725,.611645,.00299672,0,.571911,.595614,.00281016,0,.598873,.579426,.00264252,0,.62664,.563016,.00247509,0,.655239,.546728,.00232647,0,.684692,.530539,.00217803,0,.714999,.514164,.00204216,0,.746106,.498344,.00191403,0,.777778,.482957,.00179203,0,.809524,.467336,.00167695,0,.84127,.451994,.00157567,0,.873016,.436514,.00147113,0,.904762,.42178,.00138034,0,.936508,.407271,.00129219,0,.968254,.392822,.0012098,0,1,1,.00637427,0,0,1,.00637431,0,0,.999999,.00637485,0,0,.999996,.00637721,0,0,.999987,.00638357,0,0,.999971,.006397,0,0,.999939,.00642142,0,0,.999888,.00646177,0,0,.999807,.00652387,0,207916e-9,.999689,.00661454,0,.00112051,.99952,.00674155,0,.00287719,.999283,.00691313,0,.00550145,.998936,.00713598,0,.00897928,.998165,.00738501,0,.0132829,.994847,.00734388,0,.01838,.993182,.00749991,0,.0242381,.991665,.0077246,0,.030826,.989708,.00797579,0,.0381152,.986663,.00813011,0,.0460794,.983288,.00830365,0,.0546951,.980104,.00853496,0,.0639411,.974855,.00861045,0,.0737988,.97045,.00879133,0,.0842516,.964509,.00886377,0,.0952848,.957594,.00890346,0,.106886,.950546,.00893289,0,.119044,.942225,.00890074,0,.131749,.933365,.00886826,0,.144994,.923202,.0087316,0,.158772,.912605,.00863082,0,.173078,.901099,.00847403,0,.187908,.888177,.00825838,0,.203261,.873955,.00801834,0,.219134,.860091,.00779026,0,.235527,.84434,.00752478,0,.252443,.828517,.00724074,0,.269883,.81239,.00693769,0,.287851,.79721,.00664817,0,.306352,.783489,.00634763,0,.325393,.769514,.00604221,0,.344981,.755419,.00573568,0,.365126,.741083,.00544359,0,.385839,.726059,.00515515,0,.407132,.710809,.00487139,0,.42902,.695052,.00459846,0,.45152,.678886,.00433412,0,.474651,.663042,.00407981,0,.498433,.646634,.00384264,0,.52289,.630117,.00360897,0,.548048,.613804,.00338863,0,.573936,.598338,.00318486,0,.600584,.582687,.00298377,0,.628027,.566809,.00280082,0,.656295,.550817,.00262255,0,.685417,.534937,.00245835,0,.715406,.519151,.00230574,0,.74624,.503118,.0021549,0,.777778,.487723,.00202008,0,.809524,.472725,.00189355,0,.84127,.457599,.00177108,0,.873016,.442558,.00165843,0,.904762,.427624,.00155494,0,.936508,.413171,.00145273,0,.968254,.399122,.00136454,0,1,1,.00826496,0,0,1,.00826499,0,0,1,.00826564,0,0,.999996,.00826842,0,0,.999987,.00827589,0,0,.999967,.00829167,0,0,.999933,.00832037,0,0,.999876,.00836768,0,109338e-10,.999786,.00844031,0,427145e-9,.999655,.00854603,0,.0016384,.999468,.00869337,0,.00372392,.999203,.008891,0,.00668513,.998803,.00914387,0,.0104968,.99748,.00935838,0,.015125,.994446,.00933309,0,.0205338,.99292,.00953084,0,.0266884,.991414,.0097893,0,.0335565,.989049,.0100228,0,.0411086,.98582,.0101664,0,.0493181,.982441,.0103582,0,.0581613,.978595,.0105292,0,.0676169,.973495,.0106274,0,.0776661,.968405,.0107261,0,.0882926,.962717,.0108234,0,.0994817,.955478,.0108102,0,.111221,.948275,.0107914,0,.123499,.940006,.0107161,0,.136308,.930831,.0106309,0,.149639,.920648,.0104083,0,.163485,.910205,.0102312,0,.177843,.898445,.0100051,0,.192707,.885986,.00971928,0,.208077,.872204,.00940747,0,.22395,.858436,.0091085,0,.240326,.843454,.00876595,0,.257208,.827437,.00839794,0,.274596,.811488,.00803692,0,.292496,.796039,.00767352,0,.310911,.781083,.0073097,0,.329849,.767642,.00694032,0,.349316,.753901,.00657476,0,.369323,.740131,.00622699,0,.38988,.725845,.0058838,0,.410999,.710991,.00555586,0,.432696,.696002,.00523089,0,.454987,.680461,.00492494,0,.47789,.664875,.00463464,0,.501426,.649273,.00435422,0,.52562,.63302,.0040875,0,.550498,.61705,.00384075,0,.576089,.601154,.00359557,0,.602427,.586008,.00337636,0,.629544,.570699,.00316019,0,.657479,.555166,.00296033,0,.686264,.539645,.00277552,0,.715924,.524159,.00259499,0,.746459,.508682,.00243257,0,.777789,.493163,.00227851,0,.809524,.478004,.00213083,0,.84127,.46347,.00199502,0,.873016,.448778,.00186967,0,.904762,.434105,.00174732,0,.936508,.419576,.00163861,0,.968254,.405541,.00153341,0,1,1,.0106462,0,0,1,.0106462,0,0,.999999,.010647,0,0,.999995,.0106502,0,0,.999985,.0106589,0,0,.999964,.0106773,0,0,.999925,.0107106,0,0,.999861,.0107655,0,712986e-10,.999763,.0108497,0,743959e-9,.999616,.0109716,0,.00227361,.999408,.0111408,0,.0046983,.999112,.0113659,0,.00800158,.998637,.0116475,0,.0121493,.996223,.0117231,0,.0171023,.994006,.0118064,0,.0228218,.992444,.0120254,0,.0292711,.991028,.0123314,0,.036417,.98803,.0124954,0,.0442295,.984816,.0126538,0,.0526815,.981399,.0128537,0,.0617492,.977085,.0129694,0,.0714114,.972154,.013091,0,.0816495,.966617,.0131166,0,.0924472,.960628,.0131583,0,.10379,.953295,.0131094,0,.115665,.94575,.0129966,0,.128062,.937654,.0128796,0,.140972,.927716,.0126477,0,.154387,.917932,.0123889,0,.168301,.907719,.012131,0,.182709,.89584,.0118013,0,.197608,.883526,.0114145,0,.212994,.870301,.0110075,0,.228867,.856272,.0106019,0,.245227,.842251,.0101938,0,.262074,.826466,.00973254,0,.279412,.810859,.0092846,0,.297244,.795051,.00883304,0,.315575,.780053,.00840272,0,.334412,.76575,.00796438,0,.35376,.752298,.00752526,0,.373631,.739153,.00711486,0,.394034,.725514,.00670361,0,.414983,.711473,.00632656,0,.436491,.696936,.00595206,0,.458575,.682126,.00559191,0,.481253,.667027,.00525362,0,.504547,.651875,.00493805,0,.528481,.636463,.00462848,0,.553081,.620641,.00433936,0,.578377,.604931,.00407,0,.604404,.589549,.00380864,0,.631197,.574712,.00357049,0,.658795,.559775,.00334466,0,.687238,.544514,.00312505,0,.716559,.529555,.00293199,0,.746776,.514402,.00274204,0,.777849,.499302,.00256647,0,.809524,.484114,.00239901,0,.84127,.469308,.00225148,0,.873016,.455133,.00210178,0,.904762,.440939,.0019727,0,.936508,.426627,.00184382,0,.968254,.412509,.00172548,0,1,1,.013628,0,0,1,.0136281,0,0,.999999,.0136289,0,0,.999995,.0136327,0,0,.999983,.0136427,0,0,.99996,.0136638,0,0,.999917,.0137022,0,0,.999846,.0137652,0,204597e-9,.999736,.0138615,0,.00116837,.999573,.0140007,0,.00303325,.99934,.0141927,0,.00580613,.999004,.0144457,0,.00945626,.998407,.0147489,0,.0139421,.995464,.014731,0,.0192202,.993328,.0148283,0,.0252495,.991799,.0150797,0,.0319921,.990397,.0154316,0,.0394138,.986835,.0155005,0,.0474843,.983938,.0157308,0,.0561763,.980154,.0158753,0,.0654661,.975659,.0159581,0,.0753326,.970171,.0159832,0,.0857571,.964803,.0160084,0,.0967236,.958366,.0159484,0,.108218,.950613,.0158001,0,.120227,.942874,.0155845,0,.132741,.935005,.0154292,0,.145751,.924991,.0150742,0,.159249,.914814,.0146757,0,.17323,.904743,.0143097,0,.187687,.893216,.0138695,0,.202619,.880769,.0133706,0,.218021,.868136,.0128606,0,.233894,.85469,.0123403,0,.250238,.840593,.0118091,0,.267052,.825808,.011253,0,.284341,.81009,.0107099,0,.302106,.79504,.0101636,0,.320354,.779757,.00964041,0,.33909,.764697,.00911896,0,.358322,.750913,.00859533,0,.378059,.738175,.00811592,0,.398311,.725242,.00764504,0,.41909,.711864,.00718885,0,.440412,.698009,.00675843,0,.462292,.683841,.00634984,0,.484748,.669391,.00595502,0,.507802,.654731,.00558671,0,.531477,.639805,.00523578,0,.555802,.624789,.00490834,0,.580805,.609325,.00459448,0,.606522,.593975,.00430342,0,.63299,.578983,.00403019,0,.66025,.564442,.0037707,0,.688346,.549835,.0035316,0,.717319,.535039,.00330255,0,.7472,.520403,.00308932,0,.777982,.505687,.00289335,0,.809524,.490939,.00270818,0,.84127,.476233,.0025343,0,.873016,.461624,.00237097,0,.904762,.447833,.00222065,0,.936508,.433992,.00207561,0,.968254,.420147,.00194955,0,1,1,.0173415,0,0,1,.0173416,0,0,.999999,.0173426,0,0,.999995,.0173468,0,0,.999983,.0173582,0,0,.999954,.0173822,0,0,.999908,.0174258,0,669501e-11,.999828,.0174973,0,427399e-9,.999705,.0176063,0,.00171019,.999524,.0177631,0,.0039248,.999263,.0179781,0,.00705382,.998878,.018258,0,.0110552,.998012,.0185551,0,.0158812,.994614,.0184264,0,.0214852,.993132,.0186385,0,.0278239,.991563,.0189067,0,.0348585,.989298,.0191577,0,.0425544,.986036,.0192522,0,.050881,.982558,.0194063,0,.059811,.978531,.019486,0,.0693209,.974198,.0195847,0,.0793895,.968148,.0194749,0,.0899984,.962565,.0194277,0,.101132,.956041,.0192991,0,.112775,.947749,.0189893,0,.124917,.94018,.018704,0,.137547,.93165,.0183458,0,.150655,.921798,.0178775,0,.164236,.911573,.0173618,0,.178281,.901569,.0168482,0,.192788,.890341,.016265,0,.207752,.877835,.0156199,0,.223171,.865472,.0149516,0,.239044,.852905,.0143274,0,.255371,.838906,.0136643,0,.272153,.824888,.0129903,0,.289393,.809977,.0123218,0,.307093,.794697,.0116572,0,.325259,.780028,.0110307,0,.343896,.765124,.0104236,0,.363012,.750411,.0098219,0,.382617,.737264,.00924397,0,.402719,.724799,.00868719,0,.423332,.712253,.00816476,0,.444469,.699267,.00767262,0,.466146,.685618,.00719746,0,.488383,.671736,.00673916,0,.511199,.657777,.00631937,0,.534618,.643497,.00592411,0,.558668,.62889,.00553928,0,.58338,.614299,.0051934,0,.608787,.599197,.00485985,0,.634929,.584175,.00454357,0,.661849,.569541,.00425787,0,.689594,.555193,.00397905,0,.718211,.540947,.00372364,0,.747742,.526593,.00348599,0,.778205,.512335,.00326103,0,.80953,.498017,.00305137,0,.84127,.483609,.00285485,0,.873016,.469368,.00267472,0,.904762,.455037,.00249945,0,.936508,.441493,.00234792,0,.968254,.428147,.00219936,0,1,1,.0219422,0,0,1,.0219423,0,0,.999998,.0219434,0,0,.999993,.0219481,0,0,.999981,.021961,0,0,.999949,.0219879,0,0,.999896,.0220367,0,593194e-10,.999808,.0221167,0,75364e-8,.99967,.0222383,0,.00237884,.999466,.0224125,0,.00495612,.999174,.0226495,0,.00844887,.998725,.0229525,0,.0128058,.996979,.0231123,0,.0179742,.994317,.0230742,0,.0239047,.992781,.0232895,0,.0305526,.991191,.0235734,0,.0378786,.987787,.0236152,0,.0458475,.985092,.0237994,0,.0544287,.981121,.0238553,0,.0635952,.976924,.0238706,0,.0733233,.97218,.0238704,0,.0835922,.965956,.0236598,0,.0943839,.959998,.0234735,0,.105682,.953245,.0232277,0,.117474,.944445,.0226973,0,.129747,.937087,.0223527,0,.142491,.928341,.0218144,0,.155697,.9184,.0211516,0,.169358,.907959,.0204553,0,.183469,.89808,.0197673,0,.198024,.887047,.0189915,0,.21302,.875221,.0182082,0,.228455,.86269,.0173584,0,.244329,.850735,.0165718,0,.260639,.837545,.0157524,0,.277389,.823639,.0149482,0,.29458,.809699,.0141431,0,.312216,.794797,.0133527,0,.3303,.780578,.0126193,0,.34884,.766019,.0118914,0,.367842,.751447,.0111839,0,.387315,.737275,.010514,0,.40727,.724545,.00987277,0,.427717,.712644,.00926569,0,.448671,.700432,.00869029,0,.470149,.687664,.00814691,0,.492167,.674288,.00763012,0,.514746,.660966,.00714437,0,.537911,.647264,.00668457,0,.561688,.633431,.00626581,0,.586108,.619133,.00585593,0,.611206,.604935,.00548188,0,.637022,.590236,.00513288,0,.663599,.575473,.0047906,0,.690989,.561228,.00448895,0,.719242,.547054,.00420233,0,.748411,.533175,.00392869,0,.778531,.519163,.00367445,0,.809583,.505328,.00344097,0,.84127,.491446,.00322003,0,.873016,.477356,.00301283,0,.904762,.46356,.00282592,0,.936508,.449623,.00264956,0,.968254,.436068,.00246956,0,1,1,.0276135,0,0,1,.0276136,0,0,.999998,.0276148,0,0,.999993,.0276201,0,0,.999976,.0276342,0,0,.999945,.027664,0,0,.999884,.0277179,0,18679e-8,.999784,.027806,0,.00119607,.99963,.0279394,0,.00318407,.999401,.0281295,0,.00613601,.999066,.0283858,0,.00999963,.998524,.0287027,0,.0147164,.995702,.0286256,0,.0202295,.993593,.0286733,0,.0264876,.992067,.0288989,0,.0334452,.990548,.0292135,0,.0410621,.986775,.0291296,0,.0493032,.984054,.0293099,0,.0581381,.979481,.0291881,0,.0675397,.975297,.0291598,0,.0774848,.96981,.028954,0,.0879528,.963524,.028628,0,.0989258,.957398,.0283135,0,.110388,.950088,.0278469,0,.122327,.941538,.0271798,0,.134729,.933332,.0265388,0,.147587,.924392,.0257776,0,.160889,.914581,.024916,0,.174631,.904347,.0240242,0,.188806,.894324,.0231229,0,.203409,.883724,.022153,0,.218437,.872207,.0211355,0,.233888,.859927,.0201048,0,.249761,.848373,.0191263,0,.266056,.836023,.0181306,0,.282774,.82289,.0171718,0,.299917,.809324,.0162196,0,.317488,.795361,.0152622,0,.335493,.781253,.01439,0,.353936,.767338,.013533,0,.372825,.753156,.0127244,0,.392168,.739122,.0119454,0,.411976,.725358,.0112054,0,.432259,.712949,.010487,0,.453032,.701621,.00984032,0,.47431,.689703,.00921495,0,.496111,.677216,.00862492,0,.518456,.664217,.00806882,0,.541367,.65137,.00755922,0,.564872,.638,.00705705,0,.589001,.62453,.00661266,0,.613789,.610601,.00618432,0,.639277,.59676,.00578033,0,.66551,.582433,.00540927,0,.692539,.568026,.00506104,0,.720422,.55414,.0047353,0,.749216,.540178,.00442889,0,.778974,.526513,.00414363,0,.809711,.512954,.00388237,0,.84127,.499403,.00362875,0,.873016,.486026,.00340827,0,.904762,.472345,.00318598,0,.936508,.458828,.00297635,0,.968254,.445379,.00279447,0,1,1,.0345716,0,0,1,.0345717,0,0,.999999,.034573,0,0,.999991,.0345787,0,0,.999974,.0345941,0,0,.999937,.0346263,0,188589e-11,.999869,.0346847,0,409238e-9,.999757,.0347798,0,.0017674,.999582,.0349233,0,.00413658,.999322,.0351265,0,.00747408,.998939,.0353967,0,.0117157,.998219,.0357018,0,.0167966,.994974,.0354726,0,.0226572,.993201,.0355621,0,.0292445,.991573,.0357641,0,.0365123,.989301,.0359252,0,.0444203,.985712,.0358017,0,.0529334,.982411,.0358353,0,.0620214,.977827,.035617,0,.0716574,.973278,.0354398,0,.0818186,.967397,.0350483,0,.0924846,.960696,.0344795,0,.103638,.954349,.0339861,0,.115263,.946066,.0331323,0,.127348,.938012,.032359,0,.13988,.929413,.0314413,0,.152849,.920355,.0304103,0,.166248,.910586,.0292785,0,.18007,.900609,.0281391,0,.194308,.890093,.0269103,0,.208958,.880013,.0257269,0,.224018,.869001,.0244671,0,.239485,.85751,.0232252,0,.255359,.84582,.0220117,0,.271638,.834383,.0208274,0,.288324,.822158,.0196628,0,.305419,.809056,.0185306,0,.322927,.795832,.0174174,0,.340851,.782547,.0163758,0,.359199,.7689,.015391,0,.377975,.755526,.0144488,0,.397189,.741681,.0135372,0,.416851,.728178,.0126957,0,.436971,.714642,.0118812,0,.457564,.702756,.0111165,0,.478644,.69175,.0104145,0,.500229,.680159,.00974439,0,.522339,.668073,.00911926,0,.544997,.655405,.00851393,0,.56823,.642921,.00797637,0,.592068,.629993,.00745119,0,.616546,.616828,.00696972,0,.641705,.603305,.00652425,0,.66759,.589833,.00610188,0,.694255,.575945,.00570834,0,.72176,.561745,.00533384,0,.750168,.548277,.00500001,0,.779545,.534467,.00467582,0,.809933,.521032,.00438092,0,.841272,.507877,.00410348,0,.873016,.494654,.00383618,0,.904762,.481592,.00358699,0,.936508,.468509,.00337281,0,.968254,.455293,.00316196,0,1,1,.0430698,0,0,1,.0430699,0,0,.999998,.0430713,0,0,.999991,.0430773,0,0,.99997,.0430936,0,0,.999928,.0431277,0,406396e-10,.999852,.0431893,0,744376e-9,.999724,.0432895,0,.0024806,.999527,.0434397,0,.00524779,.99923,.0436507,0,.00898164,.998783,.0439255,0,.0136083,.997507,.0441104,0,.0190582,.994418,.0438225,0,.0252694,.992864,.0439396,0,.0321879,.991127,.0440962,0,.039767,.987331,.0438408,0,.0479667,.984819,.0438991,0,.056752,.980384,.0435906,0,.0660929,.975846,.0432543,0,.075963,.970748,.0428293,0,.0863398,.964303,.042153,0,.0972035,.95772,.0414111,0,.108537,.950747,.0405893,0,.120325,.942533,.0394887,0,.132554,.934045,.0383544,0,.145215,.924942,.037057,0,.158296,.915811,.0356993,0,.17179,.90612,.0342401,0,.185691,.896434,.0328078,0,.199993,.886021,.031288,0,.214691,.876081,.0297776,0,.229782,.865608,.0282334,0,.245265,.854924,.026749,0,.261138,.843607,.02526,0,.277401,.832456,.0238214,0,.294056,.821342,.0224682,0,.311104,.809303,.0211297,0,.328548,.796468,.0198387,0,.346394,.784046,.0186227,0,.364645,.771262,.0174561,0,.38331,.758118,.0163806,0,.402396,.745075,.0153287,0,.421912,.731926,.0143647,0,.44187,.71863,.0134363,0,.462283,.705414,.0125603,0,.483165,.693792,.0117508,0,.504535,.683108,.0110016,0,.52641,.67183,.0102757,0,.548816,.66015,.00962044,0,.571776,.647907,.00898031,0,.595323,.635734,.00840811,0,.619489,.623208,.00786211,0,.644317,.610438,.00734953,0,.669852,.597345,.00687688,0,.696148,.584138,.00643469,0,.723267,.5707,.00602236,0,.75128,.556966,.0056324,0,.780258,.543607,.00528277,0,.810268,.530213,.00493999,0,.841311,.516912,.00462265,0,.873016,.503916,.0043307,0,.904762,.491146,.00406858,0,.936508,.478439,.00381436,0,.968254,.465834,.00358003,0,1,1,.0534039,0,0,1,.053404,0,0,.999998,.0534055,0,0,.999989,.0534116,0,0,.999968,.0534283,0,0,.999918,.0534633,0,155895e-9,.99983,.0535262,0,.00120914,.999685,.0536281,0,.00334944,.999461,.0537799,0,.00653077,.999119,.0539902,0,.0106718,.998582,.0542524,0,.0156907,.995919,.0540318,0,.0215147,.993735,.0538914,0,.0280801,.992126,.0539557,0,.0353323,.990266,.0540401,0,.0432247,.986317,.0536064,0,.0517172,.983213,.0534425,0,.0607754,.978303,.0528622,0,.0703698,.973665,.0523363,0,.0804742,.968091,.0516165,0,.0910667,.961026,.0505434,0,.102128,.954333,.049523,0,.113641,.946372,.0481698,0,.125591,.938254,.0467674,0,.137965,.929516,.0452341,0,.150754,.920106,.0435083,0,.163947,.910899,.0417399,0,.177537,.901532,.0399389,0,.191516,.891919,.0380901,0,.205881,.882006,.0362341,0,.220626,.871965,.0343444,0,.235749,.862145,.0324832,0,.251248,.852058,.0306681,0,.267121,.84161,.0289097,0,.283368,.830806,.0272079,0,.299992,.820476,.0256089,0,.316992,.809514,.0240394,0,.334374,.797865,.0225379,0,.35214,.785621,.0211235,0,.370296,.773765,.0197908,0,.388849,.761629,.0185235,0,.407807,.748891,.0173358,0,.427178,.736437,.0162305,0,.446974,.723707,.0151778,0,.467207,.710606,.0141791,0,.487892,.698019,.0132592,0,.509046,.686203,.0123887,0,.530687,.675692,.0115976,0,.552839,.664826,.0108325,0,.575527,.65349,.0101348,0,.59878,.641774,.00947756,0,.622634,.629794,.00886058,0,.647128,.617647,.00828526,0,.672308,.60534,.00775312,0,.698231,.592718,.00726033,0,.724958,.579746,.00679731,0,.752563,.566763,.00636111,0,.781127,.553515,.00595228,0,.810733,.540118,.00556876,0,.841426,.527325,.00523051,0,.873016,.514265,.00490712,0,.904762,.501406,.00460297,0,.936508,.488922,.00431247,0,.968254,.476541,.0040472,0,1,1,.0659184,0,0,1,.0659185,0,0,.999998,.06592,0,0,.999988,.0659259,0,0,.999963,.0659423,0,0,.999907,.0659764,0,374198e-9,.999806,.0660376,0,.00182071,.999639,.0661361,0,.0043894,.999378,.0662814,0,.00800055,.998985,.0664779,0,.0125594,.998285,.0666914,0,.0179786,.995071,.0661989,0,.0241822,.993172,.0660454,0,.031106,.991438,.0660105,0,.0386952,.988428,.0656875,0,.0469032,.985218,.0652913,0,.0556905,.981128,.0647107,0,.065023,.976015,.0638491,0,.0748717,.97097,.062993,0,.0852112,.964582,.0617927,0,.0960199,.957383,.0603626,0,.107279,.949969,.0588128,0,.118971,.941843,.0570274,0,.131084,.933624,.0551885,0,.143604,.924543,.053122,0,.156521,.914919,.0508897,0,.169825,.905773,.0486418,0,.18351,.896434,.0463364,0,.197569,.887195,.0440623,0,.211997,.877706,.0417799,0,.226789,.867719,.03945,0,.241944,.858587,.037243,0,.257458,.849317,.0350956,0,.273331,.839585,.0329852,0,.289563,.829856,.0310028,0,.306154,.819589,.0290953,0,.323108,.809714,.0272738,0,.340426,.79934,.0255631,0,.358113,.788224,.0239175,0,.376175,.776619,.0223831,0,.394616,.76521,.0209298,0,.413445,.753716,.0195786,0,.432671,.741564,.0183001,0,.452305,.729413,.0171259,0,.472358,.717146,.0159933,0,.492845,.70436,.0149495,0,.513783,.69219,.0139681,0,.535189,.680289,.0130577,0,.557087,.669611,.0122198,0,.5795,.659113,.0114174,0,.602459,.648148,.0106729,0,.625997,.636905,.00998997,0,.650154,.625154,.00934313,0,.674976,.613481,.00874839,0,.700518,.60154,.00818265,0,.726845,.58943,.00766889,0,.754032,.576828,.00717153,0,.782167,.564194,.00672696,0,.811344,.551501,.00630863,0,.841644,.538635,.00592177,0,.873016,.525724,.00554888,0,.904762,.513209,.00520225,0,.936508,.500457,.00488231,0,.968254,.48799,.00457153,0,1,1,.0810131,0,0,1,.0810133,0,0,.999997,.0810145,0,0,.999985,.08102,0,0,.999956,.0810347,0,195026e-10,.999893,.0810656,0,719316e-9,.999777,.0811205,0,.00259774,.999583,.081208,0,.00561807,.999281,.0813343,0,.00967472,.998813,.0814969,0,.0146627,.997597,.0815217,0,.0204902,.994379,.0808502,0,.0270802,.992744,.0806792,0,.0343674,.990745,.0804589,0,.0422974,.986646,.0796107,0,.0508242,.983611,.0790913,0,.0599087,.978869,.0780746,0,.0695175,.973475,.0768218,0,.0796223,.967845,.0754926,0,.0901983,.960778,.0737063,0,.101224,.953333,.0718052,0,.112682,.945274,.0695946,0,.124555,.936955,.0672492,0,.136831,.928319,.0647732,0,.149496,.919075,.0620947,0,.162542,.909114,.0591816,0,.175958,.900137,.0563917,0,.189739,.891069,.0535392,0,.203877,.882262,.0507642,0,.218368,.873232,.0479793,0,.233208,.864042,.045226,0,.248393,.855002,.0425413,0,.263923,.846569,.0400126,0,.279796,.837714,.0375269,0,.296012,.828918,.0352027,0,.312573,.819783,.0330011,0,.329479,.810129,.0308908,0,.346734,.800866,.0289112,0,.364342,.79093,.0270255,0,.382307,.780593,.0252758,0,.400637,.769511,.0236178,0,.419337,.758558,.0220652,0,.438418,.747632,.0206289,0,.457889,.736146,.0192873,0,.477761,.724093,.0180333,0,.49805,.71234,.0168264,0,.51877,.700201,.015746,0,.53994,.687949,.0147027,0,.561581,.676163,.0137512,0,.583718,.665001,.0128655,0,.60638,.65472,.0120366,0,.629599,.644213,.0112604,0,.653415,.633382,.0105413,0,.677874,.62212,.00986498,0,.70303,.610631,.00923308,0,.728948,.599078,.00864206,0,.755706,.587519,.00811784,0,.783396,.575505,.00761237,0,.812121,.563148,.00713949,0,.841989,.550828,.00668379,0,.873035,.538458,.00627715,0,.904762,.525905,.00588336,0,.936508,.513517,.00552687,0,.968254,.501395,.00519681,0,1,1,.0991506,0,0,1,.0991504,0,0,.999996,.0991515,0,0,.999984,.0991558,0,0,.999947,.0991672,0,114389e-9,.999874,.0991912,0,.00121503,.999739,.0992331,0,.00356108,.999514,.0992983,0,.00705578,.999159,.0993877,0,.011574,.998586,.0994837,0,.017003,.995731,.0988425,0,.0232484,.993384,.098276,0,.0302318,.991615,.0979269,0,.0378884,.989029,.0973432,0,.0461641,.985373,.0963539,0,.0550136,.981278,.0952306,0,.0643988,.975777,.0936233,0,.0742868,.970526,.0920219,0,.0846501,.963755,.0898912,0,.0954644,.956676,.0876064,0,.106709,.948099,.0847751,0,.118367,.939718,.0818638,0,.130423,.931305,.078857,0,.142862,.922342,.0756127,0,.155674,.912842,.0721473,0,.168849,.903304,.0686195,0,.182378,.89411,.0650589,0,.196255,.885512,.0616022,0,.210473,.877193,.0582434,0,.225027,.86877,.0548979,0,.239915,.860267,.0516095,0,.255132,.851915,.048468,0,.270678,.843912,.0454447,0,.286551,.83604,.0425612,0,.302751,.828245,.0398752,0,.31928,.820159,.0373198,0,.336138,.81167,.034916,0,.35333,.802659,.0326402,0,.370858,.793921,.0304901,0,.388728,.784713,.0284857,0,.406944,.774946,.0266186,0,.425515,.76448,.0248593,0,.444449,.753793,.0232114,0,.463756,.743506,.0217039,0,.483447,.732555,.0202841,0,.503535,.720965,.0189648,0,.524036,.709422,.0177189,0,.544968,.697756,.0165626,0,.56635,.685565,.015483,0,.588208,.673987,.0144892,0,.610569,.66244,.0135607,0,.633466,.651675,.0126956,0,.656936,.641598,.0118788,0,.681025,.63121,.0111261,0,.705788,.620514,.010437,0,.731289,.609366,.00978747,0,.757606,.598137,.00917257,0,.784834,.586966,.00859778,0,.813085,.575549,.00806803,0,.842485,.563797,.00757294,0,.87313,.551758,.00710592,0,.904762,.539894,.0066841,0,.936508,.527901,.00627901,0,.968254,.515819,.00590506,0,1,1,.120864,0,0,1,.120864,0,0,.999996,.120864,0,0,.99998,.120867,0,0,.99994,.120872,0,323781e-9,.999852,.120884,0,.00188693,.999693,.120903,0,.00473489,.999426,.120929,0,.00872704,.999002,.120955,0,.0137237,.998235,.120918,0,.0196068,.994608,.119764,0,.0262803,.992997,.119265,0,.0336657,.990968,.11863,0,.0416987,.987002,.117261,0,.0503261,.983524,.116009,0,.0595035,.97875,.114252,0,.0691935,.972652,.11193,0,.0793645,.966613,.109555,0,.0899894,.959275,.106612,0,.101045,.951272,.103375,0,.112512,.942323,.0996594,0,.124372,.933679,.0958841,0,.136611,.924822,.0919265,0,.149216,.915742,.0878061,0,.162176,.906348,.0834894,0,.175482,.896883,.079085,0,.189125,.88774,.0746745,0,.203098,.87986,.0705773,0,.217396,.871998,.0665005,0,.232015,.864325,.0625413,0,.24695,.856685,.0586781,0,.2622,.84925,.0550063,0,.277761,.841719,.0514727,0,.293634,.834755,.0481398,0,.309819,.827853,.0450172,0,.326315,.820888,.0420969,0,.343126,.813616,.0393702,0,.360254,.805767,.0367771,0,.377701,.797338,.0343274,0,.395474,.789122,.0320529,0,.413577,.780601,.0299485,0,.432018,.771424,.0279812,0,.450804,.761502,.0261054,0,.469944,.751166,.0243942,0,.489451,.741276,.0228087,0,.509337,.730898,.0213265,0,.529617,.719878,.0199307,0,.550307,.708379,.0186574,0,.571428,.697165,.0174446,0,.593003,.685554,.0163144,0,.615059,.673631,.015276,0,.637628,.662385,.0143003,0,.660746,.651059,.0134112,0,.68446,.640451,.0125794,0,.70882,.630536,.011793,0,.733893,.620316,.0110547,0,.759756,.609722,.0103668,0,.786505,.598804,.00973009,0,.814259,.587871,.00912812,0,.843157,.577121,.00858916,0,.87334,.566019,.00807333,0,.904762,.554664,.00759687,0,.936508,.543101,.00714759,0,.968254,.531558,.00673418,0,1,1,.146767,0,0,1,.146767,0,0,.999997,.146767,0,0,.999977,.146765,0,320658e-11,.999929,.146762,0,682576e-9,.999823,.146753,0,.00276402,.999633,.146735,0,.00614771,.999314,.146699,0,.0106613,.998796,.14662,0,.0161546,.997124,.146107,0,.0225063,.994062,.144857,0,.0296198,.992154,.144011,0,.037417,.989186,.142712,0,.0458348,.985279,.140926,0,.0548211,.980826,.13885,0,.0643326,.975056,.136168,0,.074333,.969005,.133217,0,.0847917,.961554,.12959,0,.0956828,.954206,.125886,0,.106984,.945046,.121335,0,.118675,.935678,.116492,0,.130741,.926748,.111635,0,.143166,.917764,.106625,0,.155939,.908358,.101325,0,.169049,.899219,.0960249,0,.182487,.890089,.0906527,0,.196245,.881488,.0853905,0,.210317,.874031,.0804177,0,.224697,.866932,.0756005,0,.23938,.859976,.0709019,0,.254364,.853375,.0664391,0,.269646,.846971,.0622012,0,.285223,.840483,.058129,0,.301096,.833969,.0542762,0,.317265,.82806,.0507042,0,.333729,.822128,.047368,0,.350491,.815989,.044272,0,.367554,.809336,.0413444,0,.38492,.802177,.038601,0,.402594,.79441,.0360227,0,.420582,.786573,.0336383,0,.438891,.778619,.0314321,0,.457527,.77,.029362,0,.476499,.760698,.0274102,0,.49582,.750932,.0256146,0,.5155,.740993,.023974,0,.535555,.731159,.0224182,0,.556,.720836,.0209889,0,.576855,.709913,.0196411,0,.598143,.698415,.0183824,0,.619888,.68745,.0172222,0,.642123,.676154,.0161509,0,.664883,.664383,.0151397,0,.688211,.6533,.0141873,0,.71216,.642072,.0133105,0,.736792,.631412,.0124932,0,.762186,.621622,.0117408,0,.788439,.611681,.0110358,0,.815672,.60142,.0103775,0,.844034,.59083,.00975623,0,.873699,.580254,.00918084,0,.904765,.569841,.00864721,0,.936508,.559224,.00815731,0,.968254,.548315,.00767924,0,1,1,.177563,0,0,1,.177563,0,0,.999994,.177562,0,0,.999972,.177555,0,664171e-10,.999914,.177536,0,.0012276,.999787,.177496,0,.00388025,.999556,.17742,0,.00783463,.999165,.177285,0,.0128953,.9985,.177037,0,.0189053,.995388,.175634,0,.025742,.993102,.174375,0,.033309,.990992,.173121,0,.0415298,.986932,.170896,0,.0503425,.982786,.16847,0,.0596964,.977592,.165455,0,.0695498,.971075,.161676,0,.0798676,.963967,.157458,0,.0906201,.956397,.152836,0,.101783,.947489,.147467,0,.113333,.937564,.14145,0,.125254,.928182,.135383,0,.137529,.919027,.129212,0,.150144,.909618,.12276,0,.163088,.900492,.116273,0,.176351,.891671,.1098,0,.189924,.883146,.103362,0,.203799,.875151,.0970799,0,.21797,.868338,.0911732,0,.232433,.862033,.0854966,0,.247182,.856107,.0800691,0,.262216,.850644,.0749618,0,.27753,.845261,.070079,0,.293124,.839885,.0654321,0,.308997,.834609,.0610975,0,.325149,.829083,.0569741,0,.341581,.82404,.0531736,0,.358294,.818968,.049665,0,.37529,.813496,.0463856,0,.392573,.807533,.0433217,0,.410148,.80099,.0404402,0,.428019,.793891,.0377578,0,.446192,.786281,.0352616,0,.464676,.778773,.0329577,0,.483478,.770737,.030808,0,.502608,.762094,.0287964,0,.522079,.752898,.0269254,0,.541905,.743306,.0251926,0,.5621,.733416,.023595,0,.582684,.723742,.0221155,0,.603677,.713542,.0207435,0,.625106,.702755,.019434,0,.646998,.691484,.0182046,0,.66939,.680531,.0170771,0,.692324,.66953,.0160339,0,.715849,.658126,.0150677,0,.740028,.646933,.0141551,0,.764937,.636107,.0133179,0,.790673,.625271,.0125284,0,.817358,.615225,.0117937,0,.84515,.605678,.0111181,0,.874244,.59583,.0104759,0,.904828,.585704,.00986672,0,.936508,.575413,.00929712,0,.968254,.565373,.00876713,0,1,1,.214058,0,0,.999999,.214058,0,0,.999994,.214055,0,0,.999966,.214039,0,259642e-9,.999893,.213998,0,.00200075,.999737,.21391,0,.00527775,.999449,.213745,0,.00983959,.99896,.213458,0,.0154755,.9979,.212855,0,.0220249,.994278,.210779,0,.0293654,.992254,.20926,0,.0374021,.98881,.206908,0,.0460604,.984715,.204009,0,.0552802,.979738,.200471,0,.0650127,.972884,.195813,0,.0752175,.965996,.190856,0,.0858612,.957974,.185077,0,.0969155,.949155,.17868,0,.108356,.939288,.171513,0,.120163,.928996,.163838,0,.132319,.919563,.156246,0,.144808,.910004,.148359,0,.157618,.900791,.140417,0,.170737,.892135,.132569,0,.184155,.883803,.124741,0,.197866,.876034,.117091,0,.211861,.869219,.109835,0,.226134,.863062,.102859,0,.240682,.857795,.0962928,0,.255499,.853009,.0900725,0,.270583,.848603,.0842101,0,.285931,.844335,.0786527,0,.301542,.840208,.0734397,0,.317415,.836035,.0685334,0,.33355,.83172,.0639275,0,.349948,.827135,.0595909,0,.36661,.822797,.0556204,0,.383539,.818387,.0519394,0,.400738,.813565,.0485317,0,.41821,.808142,.0453138,0,.435961,.802212,.0423354,0,.453997,.79573,.0395553,0,.472324,.788741,.036988,0,.490951,.781093,.0345688,0,.509887,.773597,.0323297,0,.529144,.765622,.0302719,0,.548735,.757083,.0283477,0,.568674,.747992,.0265562,0,.588979,.738591,.0248844,0,.609671,.728719,.0233342,0,.630773,.719146,.0219081,0,.652314,.709165,.0205711,0,.674328,.69875,.0193248,0,.696854,.687884,.0181582,0,.719942,.676818,.0170746,0,.743651,.666247,.0160718,0,.768057,.655284,.0151262,0,.793253,.64401,.0142561,0,.819363,.633353,.0134327,0,.846547,.622674,.012653,0,.875017,.612265,.0119354,0,.905021,.602455,.0112533,0,.936508,.593147,.0106234,0,.968254,.583592,.0100213,0,1,1,.25717,0,0,1,.25717,0,0,.999992,.257164,0,0,.999958,.257135,0,641715e-9,.999864,.25706,0,.00305314,.999666,.256897,0,.00700975,.999302,.256596,0,.0122194,.998663,.25607,0,.0184622,.995607,.254123,0,.0255773,.993094,.252081,0,.0334439,.9907,.249867,0,.0419696,.98594,.246118,0,.0510823,.981214,.242049,0,.0607242,.974966,.236869,0,.0708486,.967589,.230724,0,.081417,.95915,.223635,0,.0923974,.950257,.21596,0,.103763,.940165,.207296,0,.115491,.929396,.197901,0,.127562,.919288,.188437,0,.13996,.909428,.178762,0,.15267,.900105,.169072,0,.165679,.891418,.159478,0,.178979,.883347,.15002,0,.192558,.875992,.140813,0,.20641,.869466,.13196,0,.220529,.863699,.123501,0,.234907,.858553,.115436,0,.249542,.854379,.107901,0,.264428,.850894,.10088,0,.279564,.847632,.0942296,0,.294947,.844571,.0879861,0,.310575,.84163,.0821534,0,.326448,.838542,.0766409,0,.342566,.835412,.0715322,0,.358929,.831899,.0666883,0,.37554,.828177,.0622175,0,.392399,.82416,.0580452,0,.409511,.820393,.054267,0,.426878,.816068,.0507172,0,.444506,.811201,.0474041,0,.4624,.805785,.0443174,0,.480566,.799878,.0414562,0,.499013,.793469,.0388147,0,.517749,.786473,.0363453,0,.536785,.778874,.0340225,0,.556134,.771277,.0318599,0,.575809,.763426,.0298859,0,.595827,.755044,.0280357,0,.616207,.746161,.0262979,0,.636973,.737124,.0247295,0,.65815,.72761,.0232514,0,.679772,.717822,.0218755,0,.701876,.708279,.0205942,0,.724509,.698333,.0193947,0,.74773,.68802,.0182717,0,.771609,.677321,.0172044,0,.79624,.666504,.0162122,0,.821743,.656184,.0152924,0,.84828,.64556,.0144326,0,.876069,.634636,.0136157,0,.905404,.624124,.0128612,0,.936508,.613914,.0121435,0,.968254,.603589,.0114887,0,1,1,.307946,0,0,.999999,.307945,0,0,.999988,.307934,0,204479e-10,.999944,.307886,0,.00127833,.999824,.307756,0,.00445047,.999565,.30748,0,.00914673,.999085,.306966,0,.0150498,.998103,.306004,0,.0219367,.994249,.303028,0,.0296485,.991807,.300435,0,.038068,.987773,.296554,0,.0471062,.982673,.2916,0,.0566942,.976623,.285641,0,.0667768,.968757,.27815,0,.0773099,.959849,.269529,0,.088257,.950663,.260248,0,.0995879,.940129,.249704,0,.111277,.92895,.238291,0,.123304,.917996,.226501,0,.13565,.907813,.214669,0,.148299,.898305,.202835,0,.161237,.889626,.191158,0,.174455,.88175,.179695,0,.187941,.874715,.168548,0,.201687,.868746,.15792,0,.215687,.863703,.147807,0,.229933,.859315,.138149,0,.24442,.855538,.128993,0,.259145,.852428,.120414,0,.274103,.850168,.112498,0,.289293,.848132,.105054,0,.304711,.846291,.0981087,0,.320357,.844431,.0915942,0,.33623,.842493,.0855056,0,.35233,.840368,.0798204,0,.368658,.83798,.0745097,0,.385214,.83523,.0695424,0,.402002,.832091,.0649092,0,.419023,.828667,.0606291,0,.436282,.824805,.0566523,0,.453782,.820988,.0530229,0,.471529,.816635,.0496364,0,.489528,.811725,.0464658,0,.507788,.806316,.0435082,0,.526317,.800469,.0407873,0,.545124,.794107,.038255,0,.564221,.787218,.0358825,0,.583621,.779872,.0336785,0,.603341,.772097,.0316379,0,.623397,.764484,.0297379,0,.643812,.756428,.0279581,0,.664611,.748022,.0263153,0,.685824,.739268,.0247799,0,.707488,.73024,.0233385,0,.729646,.720893,.0220035,0,.752354,.71119,.0207555,0,.77568,.701791,.0195843,0,.799715,.692184,.0184891,0,.824574,.682258,.0174541,0,.850417,.67206,.0164873,0,.877466,.661717,.0155959,0,.90604,.651462,.0147519,0,.936528,.641467,.0139727,0,.968254,.631229,.0132363,0,1,1,.367573,0,0,.999999,.367571,0,0,.999984,.367553,0,183382e-9,.999925,.367473,0,.00225254,.999759,.367259,0,.00628165,.99941,.366801,0,.0117858,.998739,.365946,0,.0184359,.995529,.363191,0,.0260114,.992875,.360171,0,.0343581,.989135,.355981,0,.0433637,.984166,.350401,0,.0529438,.977871,.343348,0,.0630334,.96951,.334341,0,.0735805,.959964,.323862,0,.0845437,.950162,.312521,0,.095889,.938882,.299577,0,.107588,.926992,.285573,0,.119617,.915589,.271212,0,.131957,.904791,.256611,0,.144591,.895177,.242224,0,.157503,.886403,.227952,0,.170682,.878957,.214192,0,.184117,.872418,.200795,0,.197799,.867029,.188015,0,.21172,.862835,.175975,0,.225873,.859411,.164526,0,.240253,.856655,.153693,0,.254854,.854519,.14352,0,.269673,.852828,.13397,0,.284707,.851412,.124984,0,.299953,.850609,.116748,0,.315408,.849855,.10905,0,.331073,.849017,.101839,0,.346946,.848079,.0951359,0,.363028,.846911,.0888774,0,.379318,.845445,.0830375,0,.395818,.84362,.0775844,0,.41253,.841411,.0725054,0,.429457,.838768,.0677691,0,.446602,.835801,.0634016,0,.463968,.832341,.0593095,0,.481561,.828424,.0555121,0,.499386,.824312,.052024,0,.51745,.819918,.0487865,0,.535761,.815072,.0457801,0,.554328,.809863,.0430184,0,.573162,.804164,.0404245,0,.592275,.798034,.0380146,0,.611681,.791436,.0357436,0,.631398,.784498,.0336475,0,.651445,.777125,.0316666,0,.671845,.769365,.0298122,0,.692628,.761579,.0281001,0,.713827,.753746,.0265049,0,.735484,.745573,.0250067,0,.75765,.737083,.0236026,0,.78039,.728545,.0223302,0,.803789,.719691,.0211243,0,.82796,.710569,.0199983,0,.853056,.701216,.0189569,0,.879298,.692094,.0179702,0,.907014,.682909,.0170418,0,.936691,.673509,.0161732,0,.968254,.663863,.0153406,0,1,1,.437395,0,0,.999998,.437394,0,0,.99998,.437363,0,616704e-9,.999891,.437232,0,.00367925,.999656,.436877,0,.00867446,.999148,.436121,0,.0150679,.997959,.434564,0,.022531,.993464,.430134,0,.0308507,.990606,.426077,0,.0398805,.985027,.419397,0,.0495148,.978491,.41118,0,.0596749,.969643,.40048,0,.0703001,.959189,.38769,0,.0813427,.948223,.373575,0,.0927641,.935955,.357622,0,.104533,.923237,.34043,0,.116624,.911074,.322735,0,.129015,.899724,.30479,0,.141687,.890189,.287392,0,.154626,.881796,.270248,0,.167818,.874781,.253659,0,.181252,.869166,.237786,0,.194918,.864725,.222618,0,.208807,.861565,.208356,0,.222913,.859284,.194867,0,.237229,.857677,.18212,0,.25175,.856714,.17018,0,.266473,.856155,.158969,0,.281392,.8558,.148413,0,.296505,.855672,.138578,0,.311811,.855538,.129345,0,.327306,.855689,.120861,0,.342991,.855767,.112969,0,.358864,.855618,.105593,0,.374925,.85525,.0987451,0,.391176,.854583,.0923727,0,.407616,.853534,.0864143,0,.424249,.852061,.0808338,0,.441076,.850253,.0756771,0,.4581,.848004,.0708612,0,.475324,.845333,.0663784,0,.492754,.842376,.0622631,0,.510394,.838956,.0584112,0,.528251,.835121,.0548328,0,.546331,.830842,.0514838,0,.564644,.826212,.048355,0,.583198,.821522,.0454714,0,.602005,.816551,.0428263,0,.621078,.811211,.0403612,0,.640434,.805479,.038039,0,.660089,.799409,.0358739,0,.680066,.79306,.0338727,0,.70039,.786395,.0319985,0,.721094,.779416,.030241,0,.742215,.77214,.0285951,0,.7638,.764636,.0270747,0,.785912,.756836,.0256354,0,.808628,.749315,.0243027,0,.832055,.741561,.0230497,0,.856338,.733589,.0218801,0,.88169,.725479,.020784,0,.908441,.717255,.0197702,0,.937125,.708829,.0188168,0,.968254,.700191,.0179113,0,1,1,.518937,0,0,.999998,.518933,0,0,.999967,.518883,0,.00147741,.999832,.51866,0,.00573221,.999466,.518057,0,.011826,.998644,.516752,0,.0192116,.994458,.512347,0,.027573,.991223,.507675,0,.0367099,.985515,.500188,0,.046487,.978308,.490408,0,.0568071,.968359,.477357,0,.0675984,.95682,.461752,0,.0788059,.943929,.443796,0,.090386,.930224,.423893,0,.102304,.916514,.402682,0,.114532,.903653,.380914,0,.127047,.892315,.359212,0,.139828,.882942,.338102,0,.152861,.875438,.31773,0,.16613,.869642,.298186,0,.179624,.865304,.279491,0,.193332,.862382,.261804,0,.207247,.860666,.245146,0,.22136,.859788,.229406,0,.235666,.859608,.214605,0,.250158,.859912,.200691,0,.264832,.86053,.187623,0,.279684,.861368,.17539,0,.294711,.862237,.163901,0,.309911,.863127,.153175,0,.32528,.863923,.143147,0,.340819,.864567,.133781,0,.356524,.865013,.125042,0,.372397,.86539,.116952,0,.388438,.865591,.109476,0,.404645,.865517,.102542,0,.421022,.865084,.0960688,0,.437569,.864309,.0900499,0,.454287,.863151,.0844328,0,.471181,.861649,.0792218,0,.488253,.859742,.0743482,0,.505507,.857446,.0697963,0,.522947,.854757,.0655364,0,.54058,.851783,.061608,0,.558412,.848516,.0579701,0,.576449,.844897,.0545742,0,.594701,.840956,.0514167,0,.613178,.836676,.0484598,0,.631892,.832075,.0456934,0,.650856,.827191,.0431178,0,.670088,.822295,.0407718,0,.689606,.817294,.0386032,0,.709434,.812013,.0365675,0,.7296,.806465,.0346547,0,.750138,.800691,.0328717,0,.771093,.794709,.031211,0,.792519,.788493,.0296504,0,.814488,.782049,.0281782,0,.837097,.775403,.0267965,0,.860481,.76857,.0255002,0,.884842,.761536,.0242759,0,.910494,.754303,.0231142,0,.937985,.74692,.0220305,0,.968254,.739745,.0210192,0,1,1,.613914,0,0,.999996,.613907,0,963597e-10,.999942,.613814,0,.00301247,.999704,.613407,0,.00870385,.999046,.612302,0,.0160714,.995516,.608266,0,.0245899,.991726,.602863,0,.0339681,.985157,.593956,0,.0440254,.97642,.581748,0,.0546409,.964404,.565183,0,.0657284,.950601,.545273,0,.0772246,.935158,.522129,0,.0890812,.919364,.496782,0,.10126,.904754,.470571,0,.113731,.89176,.444037,0,.126469,.881492,.418322,0,.139454,.873656,.393522,0,.15267,.868053,.369795,0,.166101,.864336,.347171,0,.179736,.862259,.325737,0,.193565,.861556,.305532,0,.207578,.861776,.286416,0,.221769,.862661,.268355,0,.23613,.864015,.251334,0,.250656,.865711,.235352,0,.265343,.867519,.220302,0,.280187,.869351,.206161,0,.295183,.871144,.192908,0,.31033,.872839,.180505,0,.325624,.874307,.168848,0,.341065,.875667,.158021,0,.35665,.876758,.147877,0,.37238,.87764,.138441,0,.388253,.878237,.129627,0,.404269,.878563,.121415,0,.42043,.878572,.113741,0,.436735,.87842,.106652,0,.453187,.878057,.100097,0,.469786,.877413,.0940128,0,.486536,.87646,.0883462,0,.503439,.875233,.0830924,0,.520498,.8737,.0781975,0,.537717,.871873,.07364,0,.555102,.86978,.0694103,0,.572657,.867405,.0654696,0,.59039,.864751,.0617914,0,.608307,.861818,.0583491,0,.626419,.858645,.0551443,0,.644733,.855307,.0521894,0,.663264,.851736,.0494334,0,.682025,.847927,.0468504,0,.701032,.843888,.0444261,0,.720308,.839629,.0421497,0,.739875,.835158,.0400082,0,.759764,.830509,.0380076,0,.780014,.825714,.0361488,0,.800673,.820729,.0343956,0,.821803,.815751,.0327781,0,.843492,.810752,.031275,0,.86586,.805587,.0298542,0,.889087,.800317,.0285397,0,.913466,.79489,.0272948,0,.93952,.789314,.0261139,0,.96835,.783593,.0249938,0,1,1,.724258,0,0,.999992,.724243,0,726889e-9,.99987,.724044,0,.00569574,.999336,.72317,0,.0131702,.996271,.719432,0,.0220738,.991159,.712576,0,.0319405,.982465,.700927,0,.0425202,.97049,.684297,0,.0536599,.953973,.661244,0,.065258,.935546,.633804,0,.0772427,.916596,.603071,0,.0895616,.899353,.57105,0,.102175,.885216,.539206,0,.11505,.875076,.508714,0,.128164,.868334,.479571,0,.141495,.864414,.451796,0,.155026,.862678,.425328,0,.168745,.862835,.400352,0,.182639,.864067,.376532,0,.196699,.866086,.35391,0,.210915,.868557,.332424,0,.225282,.871271,.312053,0,.239792,.874058,.292764,0,.25444,.8768,.27453,0,.269223,.87939,.257297,0,.284135,.8819,.24114,0,.299174,.884187,.225934,0,.314337,.886262,.211669,0,.329622,.888119,.198311,0,.345026,.889709,.185783,0,.360549,.891054,.174063,0,.376189,.892196,.163143,0,.391946,.893101,.152952,0,.407819,.893803,.143475,0,.423808,.894277,.134647,0,.439914,.894532,.126434,0,.456137,.894576,.1188,0,.472479,.894393,.111694,0,.48894,.893976,.105069,0,.505523,.893346,.0989077,0,.52223,.892502,.0931724,0,.539064,.891441,.0878276,0,.556028,.890276,.082903,0,.573125,.888972,.0783505,0,.590361,.887469,.0741083,0,.607741,.885785,.0701633,0,.62527,.883914,.0664835,0,.642957,.881872,.0630567,0,.660809,.879651,.0598527,0,.678836,.877267,.0568615,0,.69705,.874717,.05406,0,.715465,.872012,.0514378,0,.734098,.869157,.0489805,0,.752968,.866155,.0466727,0,.772101,.863014,.0445056,0,.791529,.859748,.0424733,0,.81129,.856416,.0405957,0,.831438,.852958,.0388273,0,.852044,.849382,.0371619,0,.87321,.845694,.0355959,0,.89509,.841893,.0341155,0,.917932,.837981,.0327141,0,.942204,.833963,.0313856,0,.968981,.829847,.0301275,0,1,1,.85214,0,0,.999969,.852095,0,.00279627,.999483,.851408,0,.0107635,.994545,.84579,0,.0206454,.986188,.835231,0,.0315756,.969847,.814687,0,.0432021,.945951,.783735,0,.0553396,.91917,.746074,0,.0678766,.895488,.706938,0,.0807395,.878232,.669534,0,.0938767,.868252,.635168,0,.10725,.863873,.603069,0,.120832,.863369,.572514,0,.134598,.86545,.543169,0,.148533,.868803,.514578,0,.16262,.872794,.486762,0,.176849,.87702,.459811,0,.19121,.881054,.433654,0,.205694,.884974,.408574,0,.220294,.888587,.384525,0,.235005,.891877,.36156,0,.24982,.894793,.339661,0,.264737,.89743,.318913,0,.279751,.899796,.299302,0,.294859,.901943,.280843,0,.310058,.903858,.263481,0,.325346,.905574,.247197,0,.340721,.907069,.231915,0,.356181,.908379,.217614,0,.371725,.90952,.20425,0,.387353,.910483,.191758,0,.403063,.91128,.180092,0,.418854,.911936,.169222,0,.434727,.912454,.159098,0,.450682,.912835,.149668,0,.466718,.913078,.140884,0,.482837,.913192,.132709,0,.499038,.913175,.125095,0,.515324,.91304,.118012,0,.531695,.912781,.111417,0,.548153,.91241,.105281,0,.5647,.911924,.0995691,0,.581338,.911331,.0942531,0,.59807,.910637,.0893076,0,.6149,.90984,.0846998,0,.63183,.908941,.0804044,0,.648865,.907944,.0763984,0,.666011,.906857,.0726638,0,.683273,.90568,.0691783,0,.700659,.904416,.0659222,0,.718176,.903067,.0628782,0,.735834,.901637,.0600307,0,.753646,.900128,.0573647,0,.771625,.898544,.0548668,0,.78979,.89689,.052527,0,.808162,.895165,.0503306,0,.826771,.893371,.0482668,0,.845654,.891572,.0463605,0,.864863,.889763,.0445998,0,.884472,.887894,.0429451,0,.904592,.885967,.0413884,0,.925407,.883984,.0399225,0,.947271,.881945,.0385405,0,.97105,.879854,.0372362,0,1,.999804,.995833,0,0,.938155,.933611,0,.0158731,.864755,.854311,0,.0317461,.888594,.865264,0,.0476191,.905575,.863922,0,.0634921,.915125,.850558,0,.0793651,.920665,.829254,0,.0952381,.924073,.802578,0,.111111,.926304,.772211,0,.126984,.927829,.739366,0,.142857,.928924,.705033,0,.15873,.92973,.670019,0,.174603,.930339,.634993,0,.190476,.930811,.600485,0,.206349,.931191,.566897,0,.222222,.93149,.534485,0,.238095,.931737,.503429,0,.253968,.931939,.473811,0,.269841,.932108,.445668,0,.285714,.93225,.418993,0,.301587,.932371,.393762,0,.31746,.932474,.369939,0,.333333,.932562,.347479,0,.349206,.932638,.326336,0,.365079,.932703,.306462,0,.380952,.93276,.287805,0,.396825,.932809,.270313,0,.412698,.932851,.253933,0,.428571,.932887,.23861,0,.444444,.932917,.224289,0,.460317,.932943,.210917,0,.47619,.932965,.19844,0,.492063,.932982,.186807,0,.507937,.932995,.175966,0,.52381,.933005,.165869,0,.539683,.933011,.156468,0,.555556,.933013,.147719,0,.571429,.933013,.139579,0,.587302,.93301,.132007,0,.603175,.933004,.124965,0,.619048,.932994,.118416,0,.634921,.932982,.112326,0,.650794,.932968,.106663,0,.666667,.93295,.101397,0,.68254,.932931,.0964993,0,.698413,.932908,.0919438,0,.714286,.932883,.0877057,0,.730159,.932856,.0837623,0,.746032,.932827,.0800921,0,.761905,.932796,.0766754,0,.777778,.932762,.0734936,0,.793651,.932727,.0705296,0,.809524,.932689,.0677676,0,.825397,.93265,.0651929,0,.84127,.932609,.0627917,0,.857143,.932565,.0605515,0,.873016,.932521,.0584606,0,.888889,.932474,.0565082,0,.904762,.932427,.0546841,0,.920635,.932377,.0529793,0,.936508,.932326,.0513851,0,.952381,.932274,.0498936,0,.968254,.93222,.0484975,0,.984127,.932164,.0471899,0,1],Sa=new Float32Array(Aa),Ma=new Float32Array(ba);J.UniformsLib.LTC_FLOAT_1=new J.DataTexture(Sa,64,64,J.RGBAFormat,J.FloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_FLOAT_2=new J.DataTexture(Ma,64,64,J.RGBAFormat,J.FloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_FLOAT_1.needsUpdate=!0,J.UniformsLib.LTC_FLOAT_2.needsUpdate=!0;const Ra=new Uint16Array(Aa.length);Aa.forEach(function(La,Fa){Ra[Fa]=J.DataUtils.toHalfFloat(La)});const Ia=new Uint16Array(ba.length);ba.forEach(function(La,Fa){Ia[Fa]=J.DataUtils.toHalfFloat(La)}),J.UniformsLib.LTC_HALF_1=new J.DataTexture(Ra,64,64,J.RGBAFormat,J.HalfFloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_HALF_2=new J.DataTexture(Ia,64,64,J.RGBAFormat,J.HalfFloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_HALF_1.needsUpdate=!0,J.UniformsLib.LTC_HALF_2.needsUpdate=!0}}ua.RectAreaLightUniformsLib=la}(RectAreaLightUniformsLib)),RectAreaLightUniformsLib}var LightProbeGenerator={},hasRequiredLightProbeGenerator;function requireLightProbeGenerator(){return hasRequiredLightProbeGenerator||(hasRequiredLightProbeGenerator=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la{static fromCubeTexture(Aa){let ba=0;const Sa=new J.Vector3,Ma=new J.Vector3,Ra=new J.Color,Ia=[0,0,0,0,0,0,0,0,0],La=new J.SphericalHarmonics3,Fa=La.coefficients;for(let el=0;el<6;el++){const tl=Aa.image[el],rl=tl.width,il=tl.height,nl=document.createElement("canvas");nl.width=rl,nl.height=il;const sl=nl.getContext("2d");sl.drawImage(tl,0,0,rl,il);const ll=sl.getImageData(0,0,rl,il),dl=ll.data,gl=ll.width,_l=2/gl;for(let vl=0,Tl=dl.length;vl<Tl;vl+=4){Ra.setRGB(dl[vl]/255,dl[vl+1]/255,dl[vl+2]/255),"colorSpace"in Aa?Aa.colorSpace==="srgb"&&Ra.convertSRGBToLinear():Aa.encoding===3001&&Ra.convertSRGBToLinear();const Ll=vl/4,Il=-1+(Ll%gl+.5)*_l,Fl=1-(Math.floor(Ll/gl)+.5)*_l;switch(el){case 0:Sa.set(-1,Fl,-Il);break;case 1:Sa.set(1,Fl,Il);break;case 2:Sa.set(-Il,1,-Fl);break;case 3:Sa.set(-Il,-1,Fl);break;case 4:Sa.set(-Il,Fl,1);break;case 5:Sa.set(Il,Fl,-1);break}const Ol=Sa.lengthSq(),ql=4/(Math.sqrt(Ol)*Ol);ba+=ql,Ma.copy(Sa).normalize(),J.SphericalHarmonics3.getBasisAt(Ma,Ia);for(let rc=0;rc<9;rc++)Fa[rc].x+=Ia[rc]*Ra.r*ql,Fa[rc].y+=Ia[rc]*Ra.g*ql,Fa[rc].z+=Ia[rc]*Ra.b*ql}}const ka=4*Math.PI/ba;for(let el=0;el<9;el++)Fa[el].x*=ka,Fa[el].y*=ka,Fa[el].z*=ka;return new J.LightProbe(La)}static fromCubeRenderTarget(Aa,ba){let Sa=0;const Ma=new J.Vector3,Ra=new J.Vector3,Ia=new J.Color,La=[0,0,0,0,0,0,0,0,0],Fa=new J.SphericalHarmonics3,ka=Fa.coefficients;for(let tl=0;tl<6;tl++){const rl=ba.width,il=new Uint8Array(rl*rl*4);Aa.readRenderTargetPixels(ba,0,0,rl,rl,il,tl);const nl=2/rl;for(let sl=0,ll=il.length;sl<ll;sl+=4){Ia.setRGB(il[sl]/255,il[sl+1]/255,il[sl+2]/255),"colorSpace"in ba.texture?ba.texture.colorSpace==="srgb"&&Ia.convertSRGBToLinear():ba.texture.encoding===3001&&Ia.convertSRGBToLinear();const dl=sl/4,gl=-1+(dl%rl+.5)*nl,_l=1-(Math.floor(dl/rl)+.5)*nl;switch(tl){case 0:Ma.set(1,_l,-gl);break;case 1:Ma.set(-1,_l,gl);break;case 2:Ma.set(gl,1,-_l);break;case 3:Ma.set(gl,-1,_l);break;case 4:Ma.set(gl,_l,1);break;case 5:Ma.set(-gl,_l,-1);break}const vl=Ma.lengthSq(),Tl=4/(Math.sqrt(vl)*vl);Sa+=Tl,Ra.copy(Ma).normalize(),J.SphericalHarmonics3.getBasisAt(Ra,La);for(let Ll=0;Ll<9;Ll++)ka[Ll].x+=La[Ll]*Ia.r*Tl,ka[Ll].y+=La[Ll]*Ia.g*Tl,ka[Ll].z+=La[Ll]*Ia.b*Tl}}const el=4*Math.PI/Sa;for(let tl=0;tl<9;tl++)ka[tl].x*=el,ka[tl].y*=el,ka[tl].z*=el;return new J.LightProbe(Fa)}}ua.LightProbeGenerator=la}(LightProbeGenerator)),LightProbeGenerator}var NURBSSurface={},hasRequiredNURBSSurface;function requireNURBSSurface(){return hasRequiredNURBSSurface||(hasRequiredNURBSSurface=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=requireNURBSUtils();class xa{constructor(ba,Sa,Ma,Ra,Ia){this.degree1=ba,this.degree2=Sa,this.knots1=Ma,this.knots2=Ra,this.controlPoints=[];const La=Ma.length-ba-1,Fa=Ra.length-Sa-1;for(let ka=0;ka<La;++ka){this.controlPoints[ka]=[];for(let el=0;el<Fa;++el){const tl=Ia[ka][el];this.controlPoints[ka][el]=new J.Vector4(tl.x,tl.y,tl.z,tl.w)}}}getPoint(ba,Sa,Ma){const Ra=this.knots1[0]+ba*(this.knots1[this.knots1.length-1]-this.knots1[0]),Ia=this.knots2[0]+Sa*(this.knots2[this.knots2.length-1]-this.knots2[0]);la.calcSurfacePoint(this.degree1,this.degree2,this.knots1,this.knots2,this.controlPoints,Ra,Ia,Ma)}}ua.NURBSSurface=xa}(NURBSSurface)),NURBSSurface}var CurveExtras={},hasRequiredCurveExtras;function requireCurveExtras(){return hasRequiredCurveExtras||(hasRequiredCurveExtras=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la extends J.Curve{getPoint(sl,ll=new J.Vector3){const dl=ll;sl=2*Math.PI*sl;const gl=-.22*Math.cos(sl)-1.28*Math.sin(sl)-.44*Math.cos(3*sl)-.78*Math.sin(3*sl),_l=-.1*Math.cos(2*sl)-.27*Math.sin(2*sl)+.38*Math.cos(4*sl)+.46*Math.sin(4*sl),vl=.7*Math.cos(3*sl)-.4*Math.sin(3*sl);return dl.set(gl,_l,vl).multiplyScalar(20)}}class xa extends J.Curve{constructor(sl=5){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=2*Math.PI;const gl=16*Math.pow(Math.sin(sl),3),_l=13*Math.cos(sl)-5*Math.cos(2*sl)-2*Math.cos(3*sl)-Math.cos(4*sl);return dl.set(gl,_l,0).multiplyScalar(this.scale)}}class Aa extends J.Curve{constructor(sl=70){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl=sl*4*Math.PI;const gl=this.scale/2,_l=gl*(1+Math.cos(sl)),vl=gl*Math.sin(sl),Tl=2*gl*Math.sin(sl/2);return dl.set(_l,vl,Tl)}}class ba extends J.Curve{getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=2*Math.PI;const gl=10,_l=50,vl=_l*Math.sin(sl),Tl=Math.cos(sl)*(gl+_l*Math.cos(sl)),Ll=Math.sin(sl)*(gl+_l*Math.cos(sl));return dl.set(vl,Tl,Ll)}}class Sa extends J.Curve{getPoint(sl,ll=new J.Vector3){const dl=ll,gl=30,_l=150,vl=2*Math.PI*sl*_l/30,Tl=Math.cos(vl)*gl,Ll=Math.sin(vl)*gl,Il=_l*sl;return dl.set(Tl,Ll,Il)}}class Ma extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=Math.PI*2;const gl=(2+Math.cos(3*sl))*Math.cos(2*sl),_l=(2+Math.cos(3*sl))*Math.sin(2*sl),vl=Math.sin(3*sl);return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}class Ra extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=3,_l=4;sl*=Math.PI*2;const vl=(2+Math.cos(_l*sl))*Math.cos(gl*sl),Tl=(2+Math.cos(_l*sl))*Math.sin(gl*sl),Ll=Math.sin(_l*sl);return dl.set(vl,Tl,Ll).multiplyScalar(this.scale)}}class Ia extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=2,_l=5;sl*=Math.PI*2;const vl=(2+Math.cos(_l*sl))*Math.cos(gl*sl),Tl=(2+Math.cos(_l*sl))*Math.sin(gl*sl),Ll=Math.sin(_l*sl);return dl.set(vl,Tl,Ll).multiplyScalar(this.scale)}}class La extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl=sl*4-2;const gl=Math.pow(sl,3)-3*sl,_l=Math.pow(sl,4)-4*sl*sl,vl=1/5*Math.pow(sl,5)-2*sl;return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}function Fa(nl,sl,ll){const dl=sl-nl;return ll*dl+nl}class ka extends J.Curve{constructor(sl=1){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl=Fa(-4,4,sl);const gl=2/5*sl*(sl*sl-7)*(sl*sl-10),_l=Math.pow(sl,4)-13*sl*sl,vl=1/10*sl*(sl*sl-4)*(sl*sl-9)*(sl*sl-12);return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}class el extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=Math.PI*2;const gl=Math.cos(2*sl)*(1+.6*(Math.cos(5*sl)+.75*Math.cos(10*sl))),_l=Math.sin(2*sl)*(1+.6*(Math.cos(5*sl)+.75*Math.cos(10*sl))),vl=.35*Math.sin(5*sl);return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}class tl extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=sl*Math.PI*2,_l=Math.cos(2*gl)*(1+.45*Math.cos(3*gl)+.4*Math.cos(9*gl)),vl=Math.sin(2*gl)*(1+.45*Math.cos(3*gl)+.4*Math.cos(9*gl)),Tl=.2*Math.sin(9*gl);return dl.set(_l,vl,Tl).multiplyScalar(this.scale)}}class rl extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=sl*Math.PI*2,_l=Math.cos(3*gl)*(1+.3*Math.cos(5*gl)+.5*Math.cos(10*gl)),vl=Math.sin(3*gl)*(1+.3*Math.cos(5*gl)+.5*Math.cos(10*gl)),Tl=.2*Math.sin(20*gl);return dl.set(_l,vl,Tl).multiplyScalar(this.scale)}}class il extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=sl*Math.PI*2,_l=Math.cos(4*gl)*(1+.5*(Math.cos(5*gl)+.4*Math.cos(20*gl))),vl=Math.sin(4*gl)*(1+.5*(Math.cos(5*gl)+.4*Math.cos(20*gl))),Tl=.35*Math.sin(15*gl);return dl.set(_l,vl,Tl).multiplyScalar(this.scale)}}ua.CinquefoilKnot=Ia,ua.DecoratedTorusKnot4a=el,ua.DecoratedTorusKnot4b=tl,ua.DecoratedTorusKnot5a=rl,ua.DecoratedTorusKnot5c=il,ua.FigureEightPolynomialKnot=ka,ua.GrannyKnot=la,ua.HeartCurve=xa,ua.HelixCurve=Sa,ua.KnotCurve=ba,ua.TorusKnot=Ra,ua.TrefoilKnot=Ma,ua.TrefoilPolynomialKnot=La,ua.VivianiCurve=Aa}(CurveExtras)),CurveExtras}var Geometry={},hasRequiredGeometry;function requireGeometry(){return hasRequiredGeometry||(hasRequiredGeometry=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=new J.Matrix4,xa=new J.Object3D,Aa=new J.Vector3;class ba extends J.EventDispatcher{static createBufferGeometryFromObject(Ia){let La=new J.BufferGeometry;const Fa=Ia.geometry;if(Ia.isPoints||Ia.isLine){const ka=new J.Float32BufferAttribute(Fa.vertices.length*3,3),el=new J.Float32BufferAttribute(Fa.colors.length*3,3);if(La.setAttribute("position",ka.copyVector3sArray(Fa.vertices)),La.setAttribute("color",el.copyColorsArray(Fa.colors)),Fa.lineDistances&&Fa.lineDistances.length===Fa.vertices.length){const tl=new J.Float32BufferAttribute(Fa.lineDistances.length,1);La.setAttribute("lineDistance",tl.copyArray(Fa.lineDistances))}Fa.boundingSphere!==null&&(La.boundingSphere=Fa.boundingSphere.clone()),Fa.boundingBox!==null&&(La.boundingBox=Fa.boundingBox.clone())}else Ia.isMesh&&(La=Fa.toBufferGeometry());return La}constructor(){super(),this.isGeometry=!0,this.uuid=J.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(Ia){const La=new J.Matrix3().getNormalMatrix(Ia);for(let Fa=0,ka=this.vertices.length;Fa<ka;Fa++)this.vertices[Fa].applyMatrix4(Ia);for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa];el.normal.applyMatrix3(La).normalize();for(let tl=0,rl=el.vertexNormals.length;tl<rl;tl++)el.vertexNormals[tl].applyMatrix3(La).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(Ia){return la.makeRotationX(Ia),this.applyMatrix4(la),this}rotateY(Ia){return la.makeRotationY(Ia),this.applyMatrix4(la),this}rotateZ(Ia){return la.makeRotationZ(Ia),this.applyMatrix4(la),this}translate(Ia,La,Fa){return la.makeTranslation(Ia,La,Fa),this.applyMatrix4(la),this}scale(Ia,La,Fa){return la.makeScale(Ia,La,Fa),this.applyMatrix4(la),this}lookAt(Ia){return xa.lookAt(Ia),xa.updateMatrix(),this.applyMatrix4(xa.matrix),this}fromBufferGeometry(Ia){const La=this,Fa=Ia.index!==null?Ia.index:void 0,ka=Ia.attributes;if(ka.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;const el=ka.position,tl=ka.normal,rl=ka.color,il=ka.uv,nl=ka.uv2;nl!==void 0&&(this.faceVertexUvs[1]=[]);for(let dl=0;dl<el.count;dl++)La.vertices.push(new J.Vector3().fromBufferAttribute(el,dl)),rl!==void 0&&La.colors.push(new J.Color().fromBufferAttribute(rl,dl));function sl(dl,gl,_l,vl){const Tl=rl===void 0?[]:[La.colors[dl].clone(),La.colors[gl].clone(),La.colors[_l].clone()],Ll=tl===void 0?[]:[new J.Vector3().fromBufferAttribute(tl,dl),new J.Vector3().fromBufferAttribute(tl,gl),new J.Vector3().fromBufferAttribute(tl,_l)],Il=new Ma(dl,gl,_l,Ll,Tl,vl);La.faces.push(Il),il!==void 0&&La.faceVertexUvs[0].push([new J.Vector2().fromBufferAttribute(il,dl),new J.Vector2().fromBufferAttribute(il,gl),new J.Vector2().fromBufferAttribute(il,_l)]),nl!==void 0&&La.faceVertexUvs[1].push([new J.Vector2().fromBufferAttribute(nl,dl),new J.Vector2().fromBufferAttribute(nl,gl),new J.Vector2().fromBufferAttribute(nl,_l)])}const ll=Ia.groups;if(ll.length>0)for(let dl=0;dl<ll.length;dl++){const gl=ll[dl],_l=gl.start,vl=gl.count;for(let Tl=_l,Ll=_l+vl;Tl<Ll;Tl+=3)Fa!==void 0?sl(Fa.getX(Tl),Fa.getX(Tl+1),Fa.getX(Tl+2),gl.materialIndex):sl(Tl,Tl+1,Tl+2,gl.materialIndex)}else if(Fa!==void 0)for(let dl=0;dl<Fa.count;dl+=3)sl(Fa.getX(dl),Fa.getX(dl+1),Fa.getX(dl+2));else for(let dl=0;dl<el.count;dl+=3)sl(dl,dl+1,dl+2);return this.computeFaceNormals(),Ia.boundingBox!==null&&(this.boundingBox=Ia.boundingBox.clone()),Ia.boundingSphere!==null&&(this.boundingSphere=Ia.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Aa).negate(),this.translate(Aa.x,Aa.y,Aa.z),this}normalize(){this.computeBoundingSphere();const Ia=this.boundingSphere.center,La=this.boundingSphere.radius,Fa=La===0?1:1/La,ka=new J.Matrix4;return ka.set(Fa,0,0,-Fa*Ia.x,0,Fa,0,-Fa*Ia.y,0,0,Fa,-Fa*Ia.z,0,0,0,1),this.applyMatrix4(ka),this}computeFaceNormals(){const Ia=new J.Vector3,La=new J.Vector3;for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa],tl=this.vertices[el.a],rl=this.vertices[el.b],il=this.vertices[el.c];Ia.subVectors(il,rl),La.subVectors(tl,rl),Ia.cross(La),Ia.normalize(),el.normal.copy(Ia)}}computeVertexNormals(Ia=!0){const La=new Array(this.vertices.length);for(let Fa=0,ka=this.vertices.length;Fa<ka;Fa++)La[Fa]=new J.Vector3;if(Ia){const Fa=new J.Vector3,ka=new J.Vector3;for(let el=0,tl=this.faces.length;el<tl;el++){const rl=this.faces[el],il=this.vertices[rl.a],nl=this.vertices[rl.b],sl=this.vertices[rl.c];Fa.subVectors(sl,nl),ka.subVectors(il,nl),Fa.cross(ka),La[rl.a].add(Fa),La[rl.b].add(Fa),La[rl.c].add(Fa)}}else{this.computeFaceNormals();for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa];La[el.a].add(el.normal),La[el.b].add(el.normal),La[el.c].add(el.normal)}}for(let Fa=0,ka=this.vertices.length;Fa<ka;Fa++)La[Fa].normalize();for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa],tl=el.vertexNormals;tl.length===3?(tl[0].copy(La[el.a]),tl[1].copy(La[el.b]),tl[2].copy(La[el.c])):(tl[0]=La[el.a].clone(),tl[1]=La[el.b].clone(),tl[2]=La[el.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let Ia=0,La=this.faces.length;Ia<La;Ia++){const Fa=this.faces[Ia],ka=Fa.vertexNormals;ka.length===3?(ka[0].copy(Fa.normal),ka[1].copy(Fa.normal),ka[2].copy(Fa.normal)):(ka[0]=Fa.normal.clone(),ka[1]=Fa.normal.clone(),ka[2]=Fa.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let La=0,Fa=this.faces.length;La<Fa;La++){const ka=this.faces[La];ka.__originalFaceNormal?ka.__originalFaceNormal.copy(ka.normal):ka.__originalFaceNormal=ka.normal.clone(),ka.__originalVertexNormals||(ka.__originalVertexNormals=[]);for(let el=0,tl=ka.vertexNormals.length;el<tl;el++)ka.__originalVertexNormals[el]?ka.__originalVertexNormals[el].copy(ka.vertexNormals[el]):ka.__originalVertexNormals[el]=ka.vertexNormals[el].clone()}const Ia=new ba;Ia.faces=this.faces;for(let La=0,Fa=this.morphTargets.length;La<Fa;La++){if(!this.morphNormals[La]){this.morphNormals[La]={},this.morphNormals[La].faceNormals=[],this.morphNormals[La].vertexNormals=[];const el=this.morphNormals[La].faceNormals,tl=this.morphNormals[La].vertexNormals;for(let rl=0,il=this.faces.length;rl<il;rl++){const nl=new J.Vector3,sl={a:new J.Vector3,b:new J.Vector3,c:new J.Vector3};el.push(nl),tl.push(sl)}}const ka=this.morphNormals[La];Ia.vertices=this.morphTargets[La].vertices,Ia.computeFaceNormals(),Ia.computeVertexNormals();for(let el=0,tl=this.faces.length;el<tl;el++){const rl=this.faces[el],il=ka.faceNormals[el],nl=ka.vertexNormals[el];il.copy(rl.normal),nl.a.copy(rl.vertexNormals[0]),nl.b.copy(rl.vertexNormals[1]),nl.c.copy(rl.vertexNormals[2])}}for(let La=0,Fa=this.faces.length;La<Fa;La++){const ka=this.faces[La];ka.normal=ka.__originalFaceNormal,ka.vertexNormals=ka.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new J.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new J.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(Ia,La,Fa=0){if(!(Ia&&Ia.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",Ia);return}let ka;const el=this.vertices.length,tl=this.vertices,rl=Ia.vertices,il=this.faces,nl=Ia.faces,sl=this.colors,ll=Ia.colors;La!==void 0&&(ka=new J.Matrix3().getNormalMatrix(La));for(let dl=0,gl=rl.length;dl<gl;dl++){const vl=rl[dl].clone();La!==void 0&&vl.applyMatrix4(La),tl.push(vl)}for(let dl=0,gl=ll.length;dl<gl;dl++)sl.push(ll[dl].clone());for(let dl=0,gl=nl.length;dl<gl;dl++){const _l=nl[dl];let vl,Tl;const Ll=_l.vertexNormals,Il=_l.vertexColors,Fl=new Ma(_l.a+el,_l.b+el,_l.c+el);Fl.normal.copy(_l.normal),ka!==void 0&&Fl.normal.applyMatrix3(ka).normalize();for(let Ol=0,ql=Ll.length;Ol<ql;Ol++)vl=Ll[Ol].clone(),ka!==void 0&&vl.applyMatrix3(ka).normalize(),Fl.vertexNormals.push(vl);Fl.color.copy(_l.color);for(let Ol=0,ql=Il.length;Ol<ql;Ol++)Tl=Il[Ol],Fl.vertexColors.push(Tl.clone());Fl.materialIndex=_l.materialIndex+Fa,il.push(Fl)}for(let dl=0,gl=Ia.faceVertexUvs.length;dl<gl;dl++){const _l=Ia.faceVertexUvs[dl];this.faceVertexUvs[dl]===void 0&&(this.faceVertexUvs[dl]=[]);for(let vl=0,Tl=_l.length;vl<Tl;vl++){const Ll=_l[vl],Il=[];for(let Fl=0,Ol=Ll.length;Fl<Ol;Fl++)Il.push(Ll[Fl].clone());this.faceVertexUvs[dl].push(Il)}}}mergeMesh(Ia){if(!(Ia&&Ia.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",Ia);return}Ia.matrixAutoUpdate&&Ia.updateMatrix(),this.merge(Ia.geometry,Ia.matrix)}mergeVertices(Ia=4){const La={},Fa=[],ka=[],el=Math.pow(10,Ia);for(let il=0,nl=this.vertices.length;il<nl;il++){const sl=this.vertices[il],ll=`${Math.round(sl.x*el)}_${Math.round(sl.y*el)}_${Math.round(sl.z*el)}`;La[ll]===void 0?(La[ll]=il,Fa.push(this.vertices[il]),ka[il]=Fa.length-1):ka[il]=ka[La[ll]]}const tl=[];for(let il=0,nl=this.faces.length;il<nl;il++){const sl=this.faces[il];sl.a=ka[sl.a],sl.b=ka[sl.b],sl.c=ka[sl.c];const ll=[sl.a,sl.b,sl.c];for(let dl=0;dl<3;dl++)if(ll[dl]===ll[(dl+1)%3]){tl.push(il);break}}for(let il=tl.length-1;il>=0;il--){const nl=tl[il];this.faces.splice(nl,1);for(let sl=0,ll=this.faceVertexUvs.length;sl<ll;sl++)this.faceVertexUvs[sl].splice(nl,1)}const rl=this.vertices.length-Fa.length;return this.vertices=Fa,rl}setFromPoints(Ia){this.vertices=[];for(let La=0,Fa=Ia.length;La<Fa;La++){const ka=Ia[La];this.vertices.push(new J.Vector3(ka.x,ka.y,ka.z||0))}return this}sortFacesByMaterialIndex(){const Ia=this.faces,La=Ia.length;for(let il=0;il<La;il++)Ia[il]._id=il;function Fa(il,nl){return il.materialIndex-nl.materialIndex}Ia.sort(Fa);const ka=this.faceVertexUvs[0],el=this.faceVertexUvs[1];let tl,rl;ka&&ka.length===La&&(tl=[]),el&&el.length===La&&(rl=[]);for(let il=0;il<La;il++){const nl=Ia[il]._id;tl&&tl.push(ka[nl]),rl&&rl.push(el[nl])}tl&&(this.faceVertexUvs[0]=tl),rl&&(this.faceVertexUvs[1]=rl)}toJSON(){const Ia={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(Ia.uuid=this.uuid,Ia.type=this.type,this.name!==""&&(Ia.name=this.name),this.parameters!==void 0){const _l=this.parameters;for(let vl in _l)_l[vl]!==void 0&&(Ia[vl]=_l[vl]);return Ia}const La=[];for(let _l=0;_l<this.vertices.length;_l++){const vl=this.vertices[_l];La.push(vl.x,vl.y,vl.z)}const Fa=[],ka=[],el={},tl=[],rl={},il=[],nl={};for(let _l=0;_l<this.faces.length;_l++){const vl=this.faces[_l],Tl=!0,Ll=!1,Il=this.faceVertexUvs[0][_l]!==void 0,Fl=vl.normal.length()>0,Ol=vl.vertexNormals.length>0,ql=vl.color.r!==1||vl.color.g!==1||vl.color.b!==1,rc=vl.vertexColors.length>0;let sc=0;if(sc=sl(sc,0,0),sc=sl(sc,1,Tl),sc=sl(sc,2,Ll),sc=sl(sc,3,Il),sc=sl(sc,4,Fl),sc=sl(sc,5,Ol),sc=sl(sc,6,ql),sc=sl(sc,7,rc),Fa.push(sc),Fa.push(vl.a,vl.b,vl.c),Fa.push(vl.materialIndex),Il){const Kl=this.faceVertexUvs[0][_l];Fa.push(gl(Kl[0]),gl(Kl[1]),gl(Kl[2]))}if(Fl&&Fa.push(ll(vl.normal)),Ol){const Kl=vl.vertexNormals;Fa.push(ll(Kl[0]),ll(Kl[1]),ll(Kl[2]))}if(ql&&Fa.push(dl(vl.color)),rc){const Kl=vl.vertexColors;Fa.push(dl(Kl[0]),dl(Kl[1]),dl(Kl[2]))}}function sl(_l,vl,Tl){return Tl?_l|1<<vl:_l&~(1<<vl)}function ll(_l){const vl=_l.x.toString()+_l.y.toString()+_l.z.toString();return el[vl]!==void 0||(el[vl]=ka.length/3,ka.push(_l.x,_l.y,_l.z)),el[vl]}function dl(_l){const vl=_l.r.toString()+_l.g.toString()+_l.b.toString();return rl[vl]!==void 0||(rl[vl]=tl.length,tl.push(_l.getHex())),rl[vl]}function gl(_l){const vl=_l.x.toString()+_l.y.toString();return nl[vl]!==void 0||(nl[vl]=il.length/2,il.push(_l.x,_l.y)),nl[vl]}return Ia.data={},Ia.data.vertices=La,Ia.data.normals=ka,tl.length>0&&(Ia.data.colors=tl),il.length>0&&(Ia.data.uvs=[il]),Ia.data.faces=Fa,Ia}clone(){return new ba().copy(this)}copy(Ia){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=Ia.name;const La=Ia.vertices;for(let dl=0,gl=La.length;dl<gl;dl++)this.vertices.push(La[dl].clone());const Fa=Ia.colors;for(let dl=0,gl=Fa.length;dl<gl;dl++)this.colors.push(Fa[dl].clone());const ka=Ia.faces;for(let dl=0,gl=ka.length;dl<gl;dl++)this.faces.push(ka[dl].clone());for(let dl=0,gl=Ia.faceVertexUvs.length;dl<gl;dl++){const _l=Ia.faceVertexUvs[dl];this.faceVertexUvs[dl]===void 0&&(this.faceVertexUvs[dl]=[]);for(let vl=0,Tl=_l.length;vl<Tl;vl++){const Ll=_l[vl],Il=[];for(let Fl=0,Ol=Ll.length;Fl<Ol;Fl++){const ql=Ll[Fl];Il.push(ql.clone())}this.faceVertexUvs[dl].push(Il)}}const el=Ia.morphTargets;for(let dl=0,gl=el.length;dl<gl;dl++){const _l={};if(_l.name=el[dl].name,el[dl].vertices!==void 0){_l.vertices=[];for(let vl=0,Tl=el[dl].vertices.length;vl<Tl;vl++)_l.vertices.push(el[dl].vertices[vl].clone())}if(el[dl].normals!==void 0){_l.normals=[];for(let vl=0,Tl=el[dl].normals.length;vl<Tl;vl++)_l.normals.push(el[dl].normals[vl].clone())}this.morphTargets.push(_l)}const tl=Ia.morphNormals;for(let dl=0,gl=tl.length;dl<gl;dl++){const _l={};if(tl[dl].vertexNormals!==void 0){_l.vertexNormals=[];for(let vl=0,Tl=tl[dl].vertexNormals.length;vl<Tl;vl++){const Ll=tl[dl].vertexNormals[vl],Il={};Il.a=Ll.a.clone(),Il.b=Ll.b.clone(),Il.c=Ll.c.clone(),_l.vertexNormals.push(Il)}}if(tl[dl].faceNormals!==void 0){_l.faceNormals=[];for(let vl=0,Tl=tl[dl].faceNormals.length;vl<Tl;vl++)_l.faceNormals.push(tl[dl].faceNormals[vl].clone())}this.morphNormals.push(_l)}const rl=Ia.skinWeights;for(let dl=0,gl=rl.length;dl<gl;dl++)this.skinWeights.push(rl[dl].clone());const il=Ia.skinIndices;for(let dl=0,gl=il.length;dl<gl;dl++)this.skinIndices.push(il[dl].clone());const nl=Ia.lineDistances;for(let dl=0,gl=nl.length;dl<gl;dl++)this.lineDistances.push(nl[dl]);const sl=Ia.boundingBox;sl!==null&&(this.boundingBox=sl.clone());const ll=Ia.boundingSphere;return ll!==null&&(this.boundingSphere=ll.clone()),this.elementsNeedUpdate=Ia.elementsNeedUpdate,this.verticesNeedUpdate=Ia.verticesNeedUpdate,this.uvsNeedUpdate=Ia.uvsNeedUpdate,this.normalsNeedUpdate=Ia.normalsNeedUpdate,this.colorsNeedUpdate=Ia.colorsNeedUpdate,this.lineDistancesNeedUpdate=Ia.lineDistancesNeedUpdate,this.groupsNeedUpdate=Ia.groupsNeedUpdate,this}toBufferGeometry(){const Ia=new Sa().fromGeometry(this),La=new J.BufferGeometry,Fa=new Float32Array(Ia.vertices.length*3);if(La.setAttribute("position",new J.BufferAttribute(Fa,3).copyVector3sArray(Ia.vertices)),Ia.normals.length>0){const ka=new Float32Array(Ia.normals.length*3);La.setAttribute("normal",new J.BufferAttribute(ka,3).copyVector3sArray(Ia.normals))}if(Ia.colors.length>0){const ka=new Float32Array(Ia.colors.length*3);La.setAttribute("color",new J.BufferAttribute(ka,3).copyColorsArray(Ia.colors))}if(Ia.uvs.length>0){const ka=new Float32Array(Ia.uvs.length*2);La.setAttribute("uv",new J.BufferAttribute(ka,2).copyVector2sArray(Ia.uvs))}if(Ia.uvs2.length>0){const ka=new Float32Array(Ia.uvs2.length*2);La.setAttribute("uv2",new J.BufferAttribute(ka,2).copyVector2sArray(Ia.uvs2))}La.groups=Ia.groups;for(let ka in Ia.morphTargets){const el=[],tl=Ia.morphTargets[ka];for(let rl=0,il=tl.length;rl<il;rl++){const nl=tl[rl],sl=new J.Float32BufferAttribute(nl.data.length*3,3);sl.name=nl.name,el.push(sl.copyVector3sArray(nl.data))}La.morphAttributes[ka]=el}if(Ia.skinIndices.length>0){const ka=new J.Float32BufferAttribute(Ia.skinIndices.length*4,4);La.setAttribute("skinIndex",ka.copyVector4sArray(Ia.skinIndices))}if(Ia.skinWeights.length>0){const ka=new J.Float32BufferAttribute(Ia.skinWeights.length*4,4);La.setAttribute("skinWeight",ka.copyVector4sArray(Ia.skinWeights))}return Ia.boundingSphere!==null&&(La.boundingSphere=Ia.boundingSphere.clone()),Ia.boundingBox!==null&&(La.boundingBox=Ia.boundingBox.clone()),La}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(Ia){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(Ia)}dispose(){this.dispatchEvent({type:"dispose"})}}class Sa{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(Ia){const La=[];let Fa,ka,el;const tl=Ia.faces;for(ka=0;ka<tl.length;ka++){const rl=tl[ka];rl.materialIndex!==el&&(el=rl.materialIndex,Fa!==void 0&&(Fa.count=ka*3-Fa.start,La.push(Fa)),Fa={start:ka*3,materialIndex:el})}Fa!==void 0&&(Fa.count=ka*3-Fa.start,La.push(Fa)),this.groups=La}fromGeometry(Ia){const La=Ia.faces,Fa=Ia.vertices,ka=Ia.faceVertexUvs,el=ka[0]&&ka[0].length>0,tl=ka[1]&&ka[1].length>0,rl=Ia.morphTargets,il=rl.length;let nl;if(il>0){nl=[];for(let Ll=0;Ll<il;Ll++)nl[Ll]={name:rl[Ll].name,data:[]};this.morphTargets.position=nl}const sl=Ia.morphNormals,ll=sl.length;let dl;if(ll>0){dl=[];for(let Ll=0;Ll<ll;Ll++)dl[Ll]={name:sl[Ll].name,data:[]};this.morphTargets.normal=dl}const gl=Ia.skinIndices,_l=Ia.skinWeights,vl=gl.length===Fa.length,Tl=_l.length===Fa.length;Fa.length>0&&La.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let Ll=0;Ll<La.length;Ll++){const Il=La[Ll];this.vertices.push(Fa[Il.a],Fa[Il.b],Fa[Il.c]);const Fl=Il.vertexNormals;if(Fl.length===3)this.normals.push(Fl[0],Fl[1],Fl[2]);else{const ql=Il.normal;this.normals.push(ql,ql,ql)}const Ol=Il.vertexColors;if(Ol.length===3)this.colors.push(Ol[0],Ol[1],Ol[2]);else{const ql=Il.color;this.colors.push(ql,ql,ql)}if(el===!0){const ql=ka[0][Ll];ql!==void 0?this.uvs.push(ql[0],ql[1],ql[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",Ll),this.uvs.push(new J.Vector2,new J.Vector2,new J.Vector2))}if(tl===!0){const ql=ka[1][Ll];ql!==void 0?this.uvs2.push(ql[0],ql[1],ql[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",Ll),this.uvs2.push(new J.Vector2,new J.Vector2,new J.Vector2))}for(let ql=0;ql<il;ql++){const rc=rl[ql].vertices;nl[ql].data.push(rc[Il.a],rc[Il.b],rc[Il.c])}for(let ql=0;ql<ll;ql++){const rc=sl[ql].vertexNormals[Ll];dl[ql].data.push(rc.a,rc.b,rc.c)}vl&&this.skinIndices.push(gl[Il.a],gl[Il.b],gl[Il.c]),Tl&&this.skinWeights.push(_l[Il.a],_l[Il.b],_l[Il.c])}return this.computeGroups(Ia),this.verticesNeedUpdate=Ia.verticesNeedUpdate,this.normalsNeedUpdate=Ia.normalsNeedUpdate,this.colorsNeedUpdate=Ia.colorsNeedUpdate,this.uvsNeedUpdate=Ia.uvsNeedUpdate,this.groupsNeedUpdate=Ia.groupsNeedUpdate,Ia.boundingSphere!==null&&(this.boundingSphere=Ia.boundingSphere.clone()),Ia.boundingBox!==null&&(this.boundingBox=Ia.boundingBox.clone()),this}}class Ma{constructor(Ia,La,Fa,ka,el,tl=0){this.a=Ia,this.b=La,this.c=Fa,this.normal=ka&&ka.isVector3?ka:new J.Vector3,this.vertexNormals=Array.isArray(ka)?ka:[],this.color=el&&el.isColor?el:new J.Color,this.vertexColors=Array.isArray(el)?el:[],this.materialIndex=tl}clone(){return new this.constructor().copy(this)}copy(Ia){this.a=Ia.a,this.b=Ia.b,this.c=Ia.c,this.normal.copy(Ia.normal),this.color.copy(Ia.color),this.materialIndex=Ia.materialIndex;for(let La=0,Fa=Ia.vertexNormals.length;La<Fa;La++)this.vertexNormals[La]=Ia.vertexNormals[La].clone();for(let La=0,Fa=Ia.vertexColors.length;La<Fa;La++)this.vertexColors[La]=Ia.vertexColors[La].clone();return this}}ua.Face3=Ma,ua.Geometry=ba}(Geometry)),Geometry}var MeshoptDecoder$1={},hasRequiredMeshoptDecoder;function requireMeshoptDecoder(){return hasRequiredMeshoptDecoder||(hasRequiredMeshoptDecoder=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});let J;const la=()=>{if(J)return J;const xa="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",Aa="B9h9z9tFBBBFiI9gBB9gLaaaaaFa9gEaaaB9gFaFaEMcBBFBFFGGGEILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBOn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBNI9z9iqlBVc+N9IcIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMk8lLbaE97F9+FaL978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAeDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAeDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBReCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBH8ZCFD9tA8ZAPD9OD9hD9RH8ZDQBTFtGmEYIPLdKeOnHpAIAQJDBIBHyCFD9tAyAPD9OD9hD9RHyAIASJDBIBH8cCFD9tA8cAPD9OD9hD9RH8cDQBTFtGmEYIPLdKeOnH8dDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAeD9uHeDyBjGBAEAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeApA8dDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNiV8ZcpMyS8cQ8df8eb8fHdAyA8cDQNiV8ZcpMyS8cQ8df8eb8fH8ZDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/dLEK97FaF97GXGXAGCI9HQBAF9FQFCBRGEXABABDBBBHECiD+rFCiD+sFD/6FHIAECND+rFCiD+sFD/6FAID/gFAECTD+rFCiD+sFD/6FHLD/gFD/kFD/lFHKCBDtD+2FHOAICUUUU94DtHND9OD9RD/kFHI9DBB/+hDYAIAID/mFAKAKD/mFALAOALAND9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHLD/mF9DBBX9LDYHOD/kFCgFDtD9OAECUUU94DtD9OD9QAIALD/mFAOD/kFCND+rFCU/+EDtD9OD9QAKALD/mFAOD/kFCTD+rFCUU/8ODtD9OD9QDMBBABCTJRBAGCIJHGAF9JQBSGMMAF9FQBCBRGEXABCTJHVAVDBBBHECBDtHOCUU98D8cFCUU98D8cEHND9OABDBBBHKAEDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAKAEDQBFGENVcMTtmYi8ZpyHECTD+sFD/6FHID/gFAECTD+rFCTD+sFD/6FHLD/gFD/kFD/lFHE9DB/+g6DYALAEAOD+2FHOALCUUUU94DtHcD9OD9RD/kFHLALD/mFAEAED/mFAIAOAIAcD9OD9RD/kFHEAED/mFD/kFD/kFD/jFD/nFHID/mF9DBBX9LDYHOD/kFCTD+rFALAID/mFAOD/kFCggEDtD9OD9QHLAEAID/mFAOD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHEDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAKAND9OALAEDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM/hEIGaF97FaL978jUUUUBCTlREGXAF9FQBCBRIEXAEABDBBBHLABCTJHKDBBBHODQILKOSQfbPden8c8d8e8fHNCTD+sFHVCID+rFDMIBAB9DBBU8/DY9D/zI818/DYAVCEDtD9QD/6FD/nFHVALAODQBFGENVcMTtmYi8ZpyHLCTD+rFCTD+sFD/6FD/mFHOAOD/mFAVALCTD+sFD/6FD/mFHcAcD/mFAVANCTD+rFCTD+sFD/6FD/mFHNAND/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHVD/mF9DBBX9LDYHLD/kFCggEDtHMD9OAcAVD/mFALD/kFCTD+rFD9QHcANAVD/mFALD/kFCTD+rFAOAVD/mFALD/kFAMD9OD9QHVDQBFTtGEmYILPdKOenHLD8dBAEDBIBDyB+t+J83EBABCNJALD8dFAEDBIBDyF+t+J83EBAKAcAVDQNVi8ZcMpySQ8c8dfb8e8fHVD8dBAEDBIBDyG+t+J83EBABCiJAVD8dFAEDBIBDyE+t+J83EBABCAJRBAICIJHIAF9JQBMMM9jFF97GXAGCGrAF9sHG9FQBCBRFEXABABDBBBHECND+rFCND+sFD/6FAECiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBABCTJRBAFCIJHFAG9JQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",ba=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),Sa=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if(typeof WebAssembly!="object")return{supported:!1};let Ma=xa;WebAssembly.validate(ba)&&(Ma=Aa);let Ra;const Ia=WebAssembly.instantiate(La(Ma),{}).then(tl=>{Ra=tl.instance,Ra.exports.__wasm_call_ctors()});function La(tl){const rl=new Uint8Array(tl.length);for(let nl=0;nl<tl.length;++nl){const sl=tl.charCodeAt(nl);rl[nl]=sl>96?sl-71:sl>64?sl-65:sl>47?sl+4:sl>46?63:62}let il=0;for(let nl=0;nl<tl.length;++nl)rl[il++]=rl[nl]<60?Sa[rl[nl]]:(rl[nl]-60)*64+rl[++nl];return rl.buffer.slice(0,il)}function Fa(tl,rl,il,nl,sl,ll){const dl=Ra.exports.sbrk,gl=il+3&-4,_l=dl(gl*nl),vl=dl(sl.length),Tl=new Uint8Array(Ra.exports.memory.buffer);Tl.set(sl,vl);const Ll=tl(_l,il,nl,vl,sl.length);if(Ll===0&&ll&&ll(_l,gl,nl),rl.set(Tl.subarray(_l,_l+il*nl)),dl(_l-dl(0)),Ll!==0)throw new Error(`Malformed buffer data: ${Ll}`)}const ka={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},el={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return J={ready:Ia,supported:!0,decodeVertexBuffer(tl,rl,il,nl,sl){Fa(Ra.exports.meshopt_decodeVertexBuffer,tl,rl,il,nl,Ra.exports[ka[sl]])},decodeIndexBuffer(tl,rl,il,nl){Fa(Ra.exports.meshopt_decodeIndexBuffer,tl,rl,il,nl)},decodeIndexSequence(tl,rl,il,nl){Fa(Ra.exports.meshopt_decodeIndexSequence,tl,rl,il,nl)},decodeGltfBuffer(tl,rl,il,nl,sl,ll){Fa(Ra.exports[el[sl]],tl,rl,il,nl,Ra.exports[ka[ll]])}},J};ua.MeshoptDecoder=la}(MeshoptDecoder$1)),MeshoptDecoder$1}var hasRequiredThreeStdlib;function requireThreeStdlib(){return hasRequiredThreeStdlib||(hasRequiredThreeStdlib=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireMD2CharacterComplex(),la=requireConvexObjectBreaker(),xa=requireMorphBlendMesh(),Aa=requireGPUComputationRenderer(),ba=requireGyroscope(),Sa=requireMorphAnimMesh(),Ma=requireRollerCoaster(),Ra=requireTimer(),Ia=requireWebGL(),La=requireMD2Character(),Fa=requireVolumeSlice(),ka=requireTubePainter(),el=requireVolume$1(),tl=requireProgressiveLightmap(),rl=requireCSS2DRenderer(),il=requireCSS3DRenderer(),nl=requireProjector(),sl=requireSVGRenderer(),ll=requireFlakesTexture(),dl=requireCurveModifier(),gl=requireSimplifyModifier(),_l=requireEdgeSplitModifier(),vl=requireTessellateModifier(),Tl=requireGLTFExporter(),Ll=requireUSDZExporter(),Il=requirePLYExporter(),Fl=requireDRACOExporter(),Ol=requireColladaExporter(),ql=requireMMDExporter(),rc=requireSTLExporter(),sc=requireOBJExporter(),Kl=requireRoomEnvironment(),Gl=requireAnimationClipCreator(),kl=requireCCDIKSolver(),Wl=requireMMDPhysics(),tc=requireMMDAnimationHelper(),Zl=requireBatchedMesh(),ac=requireReflector(),Cc=requireRefractor(),_c=requireShadowMesh(),Dc=requireLensflare(),Uc=requireWater(),Oc=requireMarchingCubes(),jc=requireLightningStorm(),Bc=requireReflectorRTT(),vc=requireReflectorForSSRPass(),Mc=requireSky(),kc=requireWater2(),Jc=requireGroundProjectedEnv(),fu=requireSceneUtils(),hu=requireUVsDebug(),wu=requireGeometryUtils(),pu=requireRoughnessMipmapper(),Eu=requireSkeletonUtils(),Tu=requireShadowMapViewer(),mu=requireBufferGeometryUtils(),gu=requireGeometryCompressionUtils(),Gu=requireCinematicCamera(),Ou=requireConvexHull(),x0=requireMeshSurfaceSampler(),I0=requireSimplexNoise(),k0=requireOBB(),ku=requireCapsule(),Du=requireColorConverter(),f0=requireImprovedNoise(),Ru=requireOctree(),Wc=requireLut(),bu=requireCameraControls(),Mu=requireFirstPersonControls(),vu=requireTransformControls(),n0=requireDragControls(),Yu=requirePointerLockControls(),u0=requireDeviceOrientationControls(),ou=requireTrackballControls(),t0=requireOrbitControls(),a0=requireArcballControls(),$0=requireFlyControls(),yd=requireLUTPass(),Dd=requireClearPass(),gf=requireGlitchPass(),Rd=requireHalftonePass(),Pf=requireSMAAPass(),Q0=requireFilmPass(),ff=requireOutlinePass(),Ef=requireSSAOPass(),Bf=requireSavePass(),zf=requireBokehPass(),Ff=requirePass(),ld=requireTexturePass(),nf=requireAdaptiveToneMappingPass(),lf=requireUnrealBloomPass(),uf=requireCubeTexturePass(),Mf=requireSAOPass(),Qh=requireAfterimagePass(),P0=requireMaskPass(),$u=requireEffectComposer(),A0=requireDotScreenPass(),Vu=requireSSRPass(),z0=requireTAARenderPass(),qh=requireShaderPass(),Rc=requireSSAARenderPass(),Gc=requireRenderPass(),Iu=requireRenderPixelatedPass(),Xu=requireBloomPass(),_0=requireWaterPass(),B0=requireARButton(),G0=requireOculusHandModel(),wd=requireOculusHandPointerModel(),_d=requireText2D(),Cd=requireVRButton(),Jd=requireXRControllerModelFactory(),pf=requireXREstimatedLight(),nd=requireXRHandMeshModel(),Su=requireXRHandModelFactory(),Ju=requireXRHandPrimitiveModel(),y0=requireParametricGeometries(),j0=requireParametricGeometry(),hd=requireConvexGeometry(),qd=requireLightningStrike(),df=requireRoundedBoxGeometry(),Ad=requireBoxLineGeometry(),q0=requireDecalGeometry(),Bd=requireTeapotGeometry(),af=requireTextGeometry(),Gd=requireCSM(),bf=requireCSMFrustum(),dp=requireCSMHelper(),m0=requireCSMShader(),s0=requireACESFilmicToneMappingShader(),v0=requireAfterimageShader(),Y0=requireBasicShader(),Id=requireBleachBypassShader(),Ld=requireBlendShader(),Lf=requireBokehShader(),Sf=requireBokehShader2(),tp=requireBrightnessContrastShader(),Rf=requireColorCorrectionShader(),Pp=requireColorifyShader(),yp=requireConvolutionShader(),Np=requireCopyShader(),L0=requireDOFMipMapShader(),b0=requireDepthLimitedBlurShader(),N0=requireDigitalGlitch(),X0=requireDotScreenShader(),H0=requireFXAAShader(),vf=requireFilmShader(),kd=requireFocusShader(),gp=requireFreiChenShader(),_p=requireFresnelShader(),$p=requireGammaCorrectionShader(),rp=requireGodRaysShader(),ap=requireHalftoneShader(),qm=requireHorizontalBlurShader(),hm=requireHorizontalTiltShiftShader(),g1=requireHueSaturationShader(),xm=requireKaleidoShader(),Bm=requireLuminosityHighPassShader(),u1=requireLuminosityShader(),Tm=requireMirrorShader(),am=requireNormalMapShader(),x1=requireParallaxShader(),Y1=requirePixelShader(),Dv=requireRGBShiftShader(),Fm=requireSAOShader(),qp=requireSMAAShader(),Xg=requireSSAOShader(),yu=requireSSRShader(),T0=requireSepiaShader(),Sd=requireSobelOperatorShader(),Wd=requireSubsurfaceScatteringShader(),_f=requireTechnicolorShader(),kp=requireToneMapShader(),up=requireToonShader(),Zp=requireTriangleBlurShader(),lm=requireUnpackDepthRGBAShader(),Wm=requireVerticalBlurShader(),d1=requireVerticalTiltShiftShader(),Xp=requireVignetteShader(),eg=requireVolumeShader(),S1=requireWaterRefractionShader(),C1=requireHTMLMesh(),l1=requireInteractiveGroup(),q3=requireSelectionHelper(),Vg=requireSelectionBox(),m_=requireAmmoPhysics(),zy=requireParallaxBarrierEffect(),N9=requirePeppersGhostEffect(),I_=requireOutlineEffect(),M5=requireAnaglyphEffect(),X_=requireAsciiEffect(),L_=requireStereoEffect(),O9=requireFBXLoader(),X5=requireFontLoader(),Y5=requireTGALoader(),Q9=requireLUTCubeLoader(),b_=requireNRRDLoader(),Xy=requireSTLLoader(),a9=requireMTLLoader(),S_=requireXLoader(),A2=requireBVHLoader(),f3=requireKMZLoader(),Sy=requireVRMLoader(),Yy=requireVRMLLoader(),ny=requireKTX2Loader(),e3=requireLottieLoader(),Qv=requireTTFLoader(),Z3=requireRGBELoader(),Ey=requireAssimpLoader(),M3=requireColladaLoader(),Bg=requireMDDLoader(),A3=requireEXRLoader(),O3=require_3MFLoader(),w3=requireXYZLoader(),o2=requireVTKLoader(),l2=requireLUT3dlLoader(),I2=requireDDSLoader(),u9=requirePVRLoader(),P9=requireGCodeLoader(),Z9=requireBasisTextureLoader(),Yg=requireTDSLoader(),h9=requireLDrawLoader(),Ty=requireGLTFLoader(),k3=requireSVGLoader(),yy=require_3DMLoader(),iy=requireOBJLoader(),vg=requireAMFLoader(),Py=requireMMDLoader(),Vp=requireMD2Loader(),n1=requireKTXLoader(),N1=requireTiltLoader(),I9=requireDRACOLoader(),Gp=requireHDRCubeTextureLoader(),tg=requirePDBLoader(),L2=requirePRWMLoader(),K1=requireRGBMLoader(),I3=requireVOXLoader(),lg=requirePCDLoader(),Cv=requireLWOLoader(),Sg=requirePLYLoader(),t3=requireLineSegmentsGeometry(),D1=requireLineGeometry(),i1=requireWireframe(),zm=requireWireframeGeometry2(),$m=requireLine2$1(),A1=requireLineMaterial(),Ng=requireLineSegments2(),r3=requireLightProbeHelper(),D2=requireVertexTangentsHelper(),Xm=requirePositionalAudioHelper(),cy=requireVertexNormalsHelper(),rv=requireRectAreaLightHelper(),Wv=requireRectAreaLightUniformsLib(),yg=requireLightProbeGenerator(),yv=requireNURBSUtils(),n3=requireNURBSCurve(),ay=requireNURBSSurface(),cg=requireCurveExtras(),uy=requireGeometry(),Op=requireMeshoptDecoder(),p1=requireMotionControllers();ua.MD2CharacterComplex=J.MD2CharacterComplex,ua.ConvexObjectBreaker=la.ConvexObjectBreaker,ua.MorphBlendMesh=xa.MorphBlendMesh,ua.GPUComputationRenderer=Aa.GPUComputationRenderer,ua.Gyroscope=ba.Gyroscope,ua.MorphAnimMesh=Sa.MorphAnimMesh,ua.RollerCoasterGeometry=Ma.RollerCoasterGeometry,ua.RollerCoasterLiftersGeometry=Ma.RollerCoasterLiftersGeometry,ua.RollerCoasterShadowGeometry=Ma.RollerCoasterShadowGeometry,ua.SkyGeometry=Ma.SkyGeometry,ua.TreesGeometry=Ma.TreesGeometry,ua.Timer=Ra.Timer,ua.getErrorMessage=Ia.getErrorMessage,ua.getWebGL2ErrorMessage=Ia.getWebGL2ErrorMessage,ua.getWebGLErrorMessage=Ia.getWebGLErrorMessage,ua.isWebGL2Available=Ia.isWebGL2Available,ua.isWebGLAvailable=Ia.isWebGLAvailable,ua.MD2Character=La.MD2Character,ua.VolumeSlice=Fa.VolumeSlice,ua.TubePainter=ka.TubePainter,ua.Volume=el.Volume,ua.ProgressiveLightMap=tl.ProgressiveLightMap,ua.CSS2DObject=rl.CSS2DObject,ua.CSS2DRenderer=rl.CSS2DRenderer,ua.CSS3DObject=il.CSS3DObject,ua.CSS3DRenderer=il.CSS3DRenderer,ua.CSS3DSprite=il.CSS3DSprite,ua.Projector=nl.Projector,ua.RenderableFace=nl.RenderableFace,ua.RenderableLine=nl.RenderableLine,ua.RenderableObject=nl.RenderableObject,ua.RenderableSprite=nl.RenderableSprite,ua.RenderableVertex=nl.RenderableVertex,ua.SVGObject=sl.SVGObject,ua.SVGRenderer=sl.SVGRenderer,ua.FlakesTexture=ll.FlakesTexture,ua.Flow=dl.Flow,ua.InstancedFlow=dl.InstancedFlow,ua.getUniforms=dl.getUniforms,ua.initSplineTexture=dl.initSplineTexture,ua.modifyShader=dl.modifyShader,ua.updateSplineTexture=dl.updateSplineTexture,ua.SimplifyModifier=gl.SimplifyModifier,ua.EdgeSplitModifier=_l.EdgeSplitModifier,ua.TessellateModifier=vl.TessellateModifier,ua.GLTFExporter=Tl.GLTFExporter,ua.USDZExporter=Ll.USDZExporter,ua.PLYExporter=Il.PLYExporter,ua.DRACOExporter=Fl.DRACOExporter,ua.ColladaExporter=Ol.ColladaExporter,ua.MMDExporter=ql.MMDExporter,ua.STLExporter=rc.STLExporter,ua.OBJExporter=sc.OBJExporter,ua.RoomEnvironment=Kl.RoomEnvironment,ua.AnimationClipCreator=Gl.AnimationClipCreator,ua.CCDIKHelper=kl.CCDIKHelper,ua.CCDIKSolver=kl.CCDIKSolver,ua.MMDPhysics=Wl.MMDPhysics,ua.MMDAnimationHelper=tc.MMDAnimationHelper,ua.BatchedMesh=Zl.BatchedMesh,ua.Reflector=ac.Reflector,ua.Refractor=Cc.Refractor,ua.ShadowMesh=_c.ShadowMesh,ua.Lensflare=Dc.Lensflare,ua.LensflareElement=Dc.LensflareElement,ua.Water=Uc.Water,ua.MarchingCubes=Oc.MarchingCubes,ua.edgeTable=Oc.edgeTable,ua.triTable=Oc.triTable,ua.LightningStorm=jc.LightningStorm,ua.ReflectorRTT=Bc.ReflectorRTT,ua.ReflectorForSSRPass=vc.ReflectorForSSRPass,ua.Sky=Mc.Sky,ua.Water2=kc.Water2,ua.GroundProjectedEnv=Jc.GroundProjectedEnv,ua.SceneUtils=fu.SceneUtils,ua.UVsDebug=hu.UVsDebug,ua.GeometryUtils=wu.GeometryUtils,ua.RoughnessMipmapper=pu.RoughnessMipmapper,ua.SkeletonUtils=Eu.SkeletonUtils,ua.ShadowMapViewer=Tu.ShadowMapViewer,ua.computeMorphedAttributes=mu.computeMorphedAttributes,ua.estimateBytesUsed=mu.estimateBytesUsed,ua.interleaveAttributes=mu.interleaveAttributes,ua.mergeBufferAttributes=mu.mergeBufferAttributes,ua.mergeBufferGeometries=mu.mergeBufferGeometries,ua.mergeVertices=mu.mergeVertices,ua.toCreasedNormals=mu.toCreasedNormals,ua.toTrianglesDrawMode=mu.toTrianglesDrawMode,ua.GeometryCompressionUtils=gu.GeometryCompressionUtils,ua.PackedPhongMaterial=gu.PackedPhongMaterial,ua.CinematicCamera=Gu.CinematicCamera,ua.ConvexHull=Ou.ConvexHull,ua.Face=Ou.Face,ua.HalfEdge=Ou.HalfEdge,ua.VertexList=Ou.VertexList,ua.VertexNode=Ou.VertexNode,ua.MeshSurfaceSampler=x0.MeshSurfaceSampler,ua.SimplexNoise=I0.SimplexNoise,ua.OBB=k0.OBB,ua.Capsule=ku.Capsule,ua.ColorConverter=Du.ColorConverter,ua.ImprovedNoise=f0.ImprovedNoise,ua.Octree=Ru.Octree,ua.ColorMapKeywords=Wc.ColorMapKeywords,ua.Lut=Wc.Lut,ua.CameraControls=bu.CameraControls,ua.MapControlsExp=bu.MapControlsExp,ua.OrbitControlsExp=bu.OrbitControlsExp,ua.STATE=bu.STATE,ua.TrackballControlsExp=bu.TrackballControlsExp,ua.FirstPersonControls=Mu.FirstPersonControls,ua.TransformControls=vu.TransformControls,ua.TransformControlsGizmo=vu.TransformControlsGizmo,ua.TransformControlsPlane=vu.TransformControlsPlane,ua.DragControls=n0.DragControls,ua.PointerLockControls=Yu.PointerLockControls,ua.DeviceOrientationControls=u0.DeviceOrientationControls,ua.TrackballControls=ou.TrackballControls,ua.MapControls=t0.MapControls,ua.OrbitControls=t0.OrbitControls,ua.ArcballControls=a0.ArcballControls,ua.FlyControls=$0.FlyControls,ua.LUTPass=yd.LUTPass,ua.ClearPass=Dd.ClearPass,ua.GlitchPass=gf.GlitchPass,ua.HalftonePass=Rd.HalftonePass,ua.SMAAPass=Pf.SMAAPass,ua.FilmPass=Q0.FilmPass,ua.OutlinePass=ff.OutlinePass,ua.SSAOPass=Ef.SSAOPass,ua.SavePass=Bf.SavePass,ua.BokehPass=zf.BokehPass,ua.FullScreenQuad=Ff.FullScreenQuad,ua.Pass=Ff.Pass,ua.TexturePass=ld.TexturePass,ua.AdaptiveToneMappingPass=nf.AdaptiveToneMappingPass,ua.UnrealBloomPass=lf.UnrealBloomPass,ua.CubeTexturePass=uf.CubeTexturePass,ua.SAOPass=Mf.SAOPass,ua.AfterimagePass=Qh.AfterimagePass,ua.ClearMaskPass=P0.ClearMaskPass,ua.MaskPass=P0.MaskPass,ua.EffectComposer=$u.EffectComposer,ua.DotScreenPass=A0.DotScreenPass,ua.SSRPass=Vu.SSRPass,ua.TAARenderPass=z0.TAARenderPass,ua.ShaderPass=qh.ShaderPass,ua.SSAARenderPass=Rc.SSAARenderPass,ua.RenderPass=Gc.RenderPass,ua.RenderPixelatedPass=Iu.RenderPixelatedPass,ua.BloomPass=Xu.BloomPass,ua.WaterPass=_0.WaterPass,ua.ARButton=B0.ARButton,ua.OculusHandModel=G0.OculusHandModel,ua.OculusHandPointerModel=wd.OculusHandPointerModel,ua.createText=_d.createText,ua.VRButton=Cd.VRButton,ua.XRControllerModelFactory=Jd.XRControllerModelFactory,ua.XREstimatedLight=pf.XREstimatedLight,ua.XRHandMeshModel=nd.XRHandMeshModel,ua.XRHandModelFactory=Su.XRHandModelFactory,ua.XRHandPrimitiveModel=Ju.XRHandPrimitiveModel,ua.ParametricGeometries=y0.ParametricGeometries,ua.ParametricGeometry=j0.ParametricGeometry,ua.ConvexGeometry=hd.ConvexGeometry,ua.LightningStrike=qd.LightningStrike,ua.RoundedBoxGeometry=df.RoundedBoxGeometry,ua.BoxLineGeometry=Ad.BoxLineGeometry,ua.DecalGeometry=q0.DecalGeometry,ua.DecalVertex=q0.DecalVertex,ua.TeapotGeometry=Bd.TeapotGeometry,ua.TextBufferGeometry=af.TextGeometry,ua.TextGeometry=af.TextGeometry,ua.CSM=Gd.CSM,ua.CSMFrustum=bf.CSMFrustum,ua.CSMHelper=dp.CSMHelper,ua.CSMShader=m0.CSMShader,ua.ACESFilmicToneMappingShader=s0.ACESFilmicToneMappingShader,ua.AfterimageShader=v0.AfterimageShader,ua.BasicShader=Y0.BasicShader,ua.BleachBypassShader=Id.BleachBypassShader,ua.BlendShader=Ld.BlendShader,ua.BokehShader=Lf.BokehShader,ua.BokehDepthShader=Sf.BokehDepthShader,ua.BokehShader2=Sf.BokehShader2,ua.BrightnessContrastShader=tp.BrightnessContrastShader,ua.ColorCorrectionShader=Rf.ColorCorrectionShader,ua.ColorifyShader=Pp.ColorifyShader,ua.ConvolutionShader=yp.ConvolutionShader,ua.CopyShader=Np.CopyShader,ua.DOFMipMapShader=L0.DOFMipMapShader,ua.BlurShaderUtils=b0.BlurShaderUtils,ua.DepthLimitedBlurShader=b0.DepthLimitedBlurShader,ua.DigitalGlitch=N0.DigitalGlitch,ua.DotScreenShader=X0.DotScreenShader,ua.FXAAShader=H0.FXAAShader,ua.FilmShader=vf.FilmShader,ua.FocusShader=kd.FocusShader,ua.FreiChenShader=gp.FreiChenShader,ua.FresnelShader=_p.FresnelShader,ua.GammaCorrectionShader=$p.GammaCorrectionShader,ua.GodRaysCombineShader=rp.GodRaysCombineShader,ua.GodRaysDepthMaskShader=rp.GodRaysDepthMaskShader,ua.GodRaysFakeSunShader=rp.GodRaysFakeSunShader,ua.GodRaysGenerateShader=rp.GodRaysGenerateShader,ua.HalftoneShader=ap.HalftoneShader,ua.HorizontalBlurShader=qm.HorizontalBlurShader,ua.HorizontalTiltShiftShader=hm.HorizontalTiltShiftShader,ua.HueSaturationShader=g1.HueSaturationShader,ua.KaleidoShader=xm.KaleidoShader,ua.LuminosityHighPassShader=Bm.LuminosityHighPassShader,ua.LuminosityShader=u1.LuminosityShader,ua.MirrorShader=Tm.MirrorShader,ua.NormalMapShader=am.NormalMapShader,ua.ParallaxShader=x1.ParallaxShader,ua.PixelShader=Y1.PixelShader,ua.RGBShiftShader=Dv.RGBShiftShader,ua.SAOShader=Fm.SAOShader,ua.SMAABlendShader=qp.SMAABlendShader,ua.SMAAEdgesShader=qp.SMAAEdgesShader,ua.SMAAWeightsShader=qp.SMAAWeightsShader,ua.SSAOBlurShader=Xg.SSAOBlurShader,ua.SSAODepthShader=Xg.SSAODepthShader,ua.SSAOShader=Xg.SSAOShader,ua.SSRBlurShader=yu.SSRBlurShader,ua.SSRDepthShader=yu.SSRDepthShader,ua.SSRShader=yu.SSRShader,ua.SepiaShader=T0.SepiaShader,ua.SobelOperatorShader=Sd.SobelOperatorShader,ua.SubsurfaceScatteringShader=Wd.SubsurfaceScatteringShader,ua.TechnicolorShader=_f.TechnicolorShader,ua.ToneMapShader=kp.ToneMapShader,ua.ToonShader1=up.ToonShader1,ua.ToonShader2=up.ToonShader2,ua.ToonShaderDotted=up.ToonShaderDotted,ua.ToonShaderHatching=up.ToonShaderHatching,ua.TriangleBlurShader=Zp.TriangleBlurShader,ua.UnpackDepthRGBAShader=lm.UnpackDepthRGBAShader,ua.VerticalBlurShader=Wm.VerticalBlurShader,ua.VerticalTiltShiftShader=d1.VerticalTiltShiftShader,ua.VignetteShader=Xp.VignetteShader,ua.VolumeRenderShader1=eg.VolumeRenderShader1,ua.WaterRefractionShader=S1.WaterRefractionShader,ua.HTMLMesh=C1.HTMLMesh,ua.InteractiveGroup=l1.InteractiveGroup,ua.SelectionHelper=q3.SelectionHelper,ua.SelectionBox=Vg.SelectionBox,ua.AmmoPhysics=m_.AmmoPhysics,ua.ParallaxBarrierEffect=zy.ParallaxBarrierEffect,ua.PeppersGhostEffect=N9.PeppersGhostEffect,ua.OutlineEffect=I_.OutlineEffect,ua.AnaglyphEffect=M5.AnaglyphEffect,ua.AsciiEffect=X_.AsciiEffect,ua.StereoEffect=L_.StereoEffect,ua.FBXLoader=O9.FBXLoader,ua.Font=X5.Font,ua.FontLoader=X5.FontLoader,ua.TGALoader=Y5.TGALoader,ua.LUTCubeLoader=Q9.LUTCubeLoader,ua.NRRDLoader=b_.NRRDLoader,ua.STLLoader=Xy.STLLoader,ua.MTLLoader=a9.MTLLoader,ua.XLoader=S_.XLoader,ua.BVHLoader=A2.BVHLoader,ua.KMZLoader=f3.KMZLoader,ua.VRMLoader=Sy.VRMLoader,ua.VRMLLoader=Yy.VRMLLoader,ua.KTX2Loader=ny.KTX2Loader,ua.LottieLoader=e3.LottieLoader,ua.TTFLoader=Qv.TTFLoader,ua.RGBELoader=Z3.RGBELoader,ua.AssimpLoader=Ey.AssimpLoader,ua.ColladaLoader=M3.ColladaLoader,ua.MDDLoader=Bg.MDDLoader,ua.EXRLoader=A3.EXRLoader,ua.ThreeMFLoader=O3.ThreeMFLoader,ua.XYZLoader=w3.XYZLoader,ua.VTKLoader=o2.VTKLoader,ua.LUT3dlLoader=l2.LUT3dlLoader,ua.DDSLoader=I2.DDSLoader,ua.PVRLoader=u9.PVRLoader,ua.GCodeLoader=P9.GCodeLoader,ua.BasisTextureLoader=Z9.BasisTextureLoader,ua.TDSLoader=Yg.TDSLoader,ua.LDrawLoader=h9.LDrawLoader,ua.GLTFLoader=Ty.GLTFLoader,ua.SVGLoader=k3.SVGLoader,ua.Rhino3dmLoader=yy.Rhino3dmLoader,ua.OBJLoader=iy.OBJLoader,ua.AMFLoader=vg.AMFLoader,ua.MMDLoader=Py.MMDLoader,ua.MD2Loader=Vp.MD2Loader,ua.KTXLoader=n1.KTXLoader,ua.TiltLoader=N1.TiltLoader,ua.DRACOLoader=I9.DRACOLoader,ua.HDRCubeTextureLoader=Gp.HDRCubeTextureLoader,ua.PDBLoader=tg.PDBLoader,ua.PRWMLoader=L2.PRWMLoader,ua.RGBMLoader=K1.RGBMLoader,ua.VOXData3DTexture=I3.VOXData3DTexture,ua.VOXLoader=I3.VOXLoader,ua.VOXMesh=I3.VOXMesh,ua.PCDLoader=lg.PCDLoader,ua.LWOLoader=Cv.LWOLoader,ua.PLYLoader=Sg.PLYLoader,ua.LineSegmentsGeometry=t3.LineSegmentsGeometry,ua.LineGeometry=D1.LineGeometry,ua.Wireframe=i1.Wireframe,ua.WireframeGeometry2=zm.WireframeGeometry2,ua.Line2=$m.Line2,ua.LineMaterial=A1.LineMaterial,ua.LineSegments2=Ng.LineSegments2,ua.LightProbeHelper=r3.LightProbeHelper,ua.VertexTangentsHelper=D2.VertexTangentsHelper,ua.PositionalAudioHelper=Xm.PositionalAudioHelper,ua.VertexNormalsHelper=cy.VertexNormalsHelper,ua.RectAreaLightHelper=rv.RectAreaLightHelper,ua.RectAreaLightUniformsLib=Wv.RectAreaLightUniformsLib,ua.LightProbeGenerator=yg.LightProbeGenerator,ua.calcBSplineDerivatives=yv.calcBSplineDerivatives,ua.calcBSplinePoint=yv.calcBSplinePoint,ua.calcBasisFunctionDerivatives=yv.calcBasisFunctionDerivatives,ua.calcBasisFunctions=yv.calcBasisFunctions,ua.calcKoverI=yv.calcKoverI,ua.calcNURBSDerivatives=yv.calcNURBSDerivatives,ua.calcRationalCurveDerivatives=yv.calcRationalCurveDerivatives,ua.calcSurfacePoint=yv.calcSurfacePoint,ua.findSpan=yv.findSpan,ua.NURBSCurve=n3.NURBSCurve,ua.NURBSSurface=ay.NURBSSurface,ua.CinquefoilKnot=cg.CinquefoilKnot,ua.DecoratedTorusKnot4a=cg.DecoratedTorusKnot4a,ua.DecoratedTorusKnot4b=cg.DecoratedTorusKnot4b,ua.DecoratedTorusKnot5a=cg.DecoratedTorusKnot5a,ua.DecoratedTorusKnot5c=cg.DecoratedTorusKnot5c,ua.FigureEightPolynomialKnot=cg.FigureEightPolynomialKnot,ua.GrannyKnot=cg.GrannyKnot,ua.HeartCurve=cg.HeartCurve,ua.HelixCurve=cg.HelixCurve,ua.KnotCurve=cg.KnotCurve,ua.TorusKnot=cg.TorusKnot,ua.TrefoilKnot=cg.TrefoilKnot,ua.TrefoilPolynomialKnot=cg.TrefoilPolynomialKnot,ua.VivianiCurve=cg.VivianiCurve,ua.Face3=uy.Face3,ua.Geometry=uy.Geometry,ua.MeshoptDecoder=Op.MeshoptDecoder,ua.MotionController=p1.MotionController,ua.MotionControllerConstants=p1.MotionControllerConstants,ua.fetchProfile=p1.fetchProfile,ua.fetchProfilesList=p1.fetchProfilesList}(threeStdlib)),threeStdlib}var unitToMm={in:25.4,inch:25.4,mil:.0254,mm:1,m:1e3,cm:10,ft:304.8,feet:304.8},mm=ua=>{let J=typeof ua=="number"?"mm":ua.replace(/^[^a-zA-Z]+/g,"").toLowerCase();J||(J="mm");const la=typeof ua=="number"?ua:Number.parseFloat(ua.split(J)[0]);if(J in unitToMm)return la*unitToMm[J];throw new Error(`Unsupported unit: ${J}`)},mm_default=mm,util$2;(function(ua){ua.assertEqual=Aa=>Aa;function J(Aa){}ua.assertIs=J;function la(Aa){throw new Error}ua.assertNever=la,ua.arrayToEnum=Aa=>{const ba={};for(const Sa of Aa)ba[Sa]=Sa;return ba},ua.getValidEnumValues=Aa=>{const ba=ua.objectKeys(Aa).filter(Ma=>typeof Aa[Aa[Ma]]!="number"),Sa={};for(const Ma of ba)Sa[Ma]=Aa[Ma];return ua.objectValues(Sa)},ua.objectValues=Aa=>ua.objectKeys(Aa).map(function(ba){return Aa[ba]}),ua.objectKeys=typeof Object.keys=="function"?Aa=>Object.keys(Aa):Aa=>{const ba=[];for(const Sa in Aa)Object.prototype.hasOwnProperty.call(Aa,Sa)&&ba.push(Sa);return ba},ua.find=(Aa,ba)=>{for(const Sa of Aa)if(ba(Sa))return Sa},ua.isInteger=typeof Number.isInteger=="function"?Aa=>Number.isInteger(Aa):Aa=>typeof Aa=="number"&&isFinite(Aa)&&Math.floor(Aa)===Aa;function xa(Aa,ba=" | "){return Aa.map(Sa=>typeof Sa=="string"?`'${Sa}'`:Sa).join(ba)}ua.joinValues=xa,ua.jsonStringifyReplacer=(Aa,ba)=>typeof ba=="bigint"?ba.toString():ba})(util$2||(util$2={}));var objectUtil$1;(function(ua){ua.mergeShapes=(J,la)=>({...J,...la})})(objectUtil$1||(objectUtil$1={}));const ZodParsedType$1=util$2.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType$1=ua=>{switch(typeof ua){case"undefined":return ZodParsedType$1.undefined;case"string":return ZodParsedType$1.string;case"number":return isNaN(ua)?ZodParsedType$1.nan:ZodParsedType$1.number;case"boolean":return ZodParsedType$1.boolean;case"function":return ZodParsedType$1.function;case"bigint":return ZodParsedType$1.bigint;case"symbol":return ZodParsedType$1.symbol;case"object":return Array.isArray(ua)?ZodParsedType$1.array:ua===null?ZodParsedType$1.null:ua.then&&typeof ua.then=="function"&&ua.catch&&typeof ua.catch=="function"?ZodParsedType$1.promise:typeof Map<"u"&&ua instanceof Map?ZodParsedType$1.map:typeof Set<"u"&&ua instanceof Set?ZodParsedType$1.set:typeof Date<"u"&&ua instanceof Date?ZodParsedType$1.date:ZodParsedType$1.object;default:return ZodParsedType$1.unknown}},ZodIssueCode$1=util$2.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),quotelessJson$1=ua=>JSON.stringify(ua,null,2).replace(/"([^"]+)":/g,"$1:");let ZodError$2=class HM extends Error{constructor(J){super(),this.issues=[],this.addIssue=xa=>{this.issues=[...this.issues,xa]},this.addIssues=(xa=[])=>{this.issues=[...this.issues,...xa]};const la=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,la):this.__proto__=la,this.name="ZodError",this.issues=J}get errors(){return this.issues}format(J){const la=J||function(ba){return ba.message},xa={_errors:[]},Aa=ba=>{for(const Sa of ba.issues)if(Sa.code==="invalid_union")Sa.unionErrors.map(Aa);else if(Sa.code==="invalid_return_type")Aa(Sa.returnTypeError);else if(Sa.code==="invalid_arguments")Aa(Sa.argumentsError);else if(Sa.path.length===0)xa._errors.push(la(Sa));else{let Ma=xa,Ra=0;for(;Ra<Sa.path.length;){const Ia=Sa.path[Ra];Ra===Sa.path.length-1?(Ma[Ia]=Ma[Ia]||{_errors:[]},Ma[Ia]._errors.push(la(Sa))):Ma[Ia]=Ma[Ia]||{_errors:[]},Ma=Ma[Ia],Ra++}}};return Aa(this),xa}static assert(J){if(!(J instanceof HM))throw new Error(`Not a ZodError: ${J}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util$2.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(J=la=>la.message){const la={},xa=[];for(const Aa of this.issues)Aa.path.length>0?(la[Aa.path[0]]=la[Aa.path[0]]||[],la[Aa.path[0]].push(J(Aa))):xa.push(J(Aa));return{formErrors:xa,fieldErrors:la}}get formErrors(){return this.flatten()}};ZodError$2.create=ua=>new ZodError$2(ua);const errorMap$1=(ua,J)=>{let la;switch(ua.code){case ZodIssueCode$1.invalid_type:ua.received===ZodParsedType$1.undefined?la="Required":la=`Expected ${ua.expected}, received ${ua.received}`;break;case ZodIssueCode$1.invalid_literal:la=`Invalid literal value, expected ${JSON.stringify(ua.expected,util$2.jsonStringifyReplacer)}`;break;case ZodIssueCode$1.unrecognized_keys:la=`Unrecognized key(s) in object: ${util$2.joinValues(ua.keys,", ")}`;break;case ZodIssueCode$1.invalid_union:la="Invalid input";break;case ZodIssueCode$1.invalid_union_discriminator:la=`Invalid discriminator value. Expected ${util$2.joinValues(ua.options)}`;break;case ZodIssueCode$1.invalid_enum_value:la=`Invalid enum value. Expected ${util$2.joinValues(ua.options)}, received '${ua.received}'`;break;case ZodIssueCode$1.invalid_arguments:la="Invalid function arguments";break;case ZodIssueCode$1.invalid_return_type:la="Invalid function return type";break;case ZodIssueCode$1.invalid_date:la="Invalid date";break;case ZodIssueCode$1.invalid_string:typeof ua.validation=="object"?"includes"in ua.validation?(la=`Invalid input: must include "${ua.validation.includes}"`,typeof ua.validation.position=="number"&&(la=`${la} at one or more positions greater than or equal to ${ua.validation.position}`)):"startsWith"in ua.validation?la=`Invalid input: must start with "${ua.validation.startsWith}"`:"endsWith"in ua.validation?la=`Invalid input: must end with "${ua.validation.endsWith}"`:util$2.assertNever(ua.validation):ua.validation!=="regex"?la=`Invalid ${ua.validation}`:la="Invalid";break;case ZodIssueCode$1.too_small:ua.type==="array"?la=`Array must contain ${ua.exact?"exactly":ua.inclusive?"at least":"more than"} ${ua.minimum} element(s)`:ua.type==="string"?la=`String must contain ${ua.exact?"exactly":ua.inclusive?"at least":"over"} ${ua.minimum} character(s)`:ua.type==="number"?la=`Number must be ${ua.exact?"exactly equal to ":ua.inclusive?"greater than or equal to ":"greater than "}${ua.minimum}`:ua.type==="date"?la=`Date must be ${ua.exact?"exactly equal to ":ua.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(ua.minimum))}`:la="Invalid input";break;case ZodIssueCode$1.too_big:ua.type==="array"?la=`Array must contain ${ua.exact?"exactly":ua.inclusive?"at most":"less than"} ${ua.maximum} element(s)`:ua.type==="string"?la=`String must contain ${ua.exact?"exactly":ua.inclusive?"at most":"under"} ${ua.maximum} character(s)`:ua.type==="number"?la=`Number must be ${ua.exact?"exactly":ua.inclusive?"less than or equal to":"less than"} ${ua.maximum}`:ua.type==="bigint"?la=`BigInt must be ${ua.exact?"exactly":ua.inclusive?"less than or equal to":"less than"} ${ua.maximum}`:ua.type==="date"?la=`Date must be ${ua.exact?"exactly":ua.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(ua.maximum))}`:la="Invalid input";break;case ZodIssueCode$1.custom:la="Invalid input";break;case ZodIssueCode$1.invalid_intersection_types:la="Intersection results could not be merged";break;case ZodIssueCode$1.not_multiple_of:la=`Number must be a multiple of ${ua.multipleOf}`;break;case ZodIssueCode$1.not_finite:la="Number must be finite";break;default:la=J.defaultError,util$2.assertNever(ua)}return{message:la}};let overrideErrorMap$1=errorMap$1;function setErrorMap$1(ua){overrideErrorMap$1=ua}function getErrorMap$1(){return overrideErrorMap$1}const makeIssue$1=ua=>{const{data:J,path:la,errorMaps:xa,issueData:Aa}=ua,ba=[...la,...Aa.path||[]],Sa={...Aa,path:ba};if(Aa.message!==void 0)return{...Aa,path:ba,message:Aa.message};let Ma="";const Ra=xa.filter(Ia=>!!Ia).slice().reverse();for(const Ia of Ra)Ma=Ia(Sa,{data:J,defaultError:Ma}).message;return{...Aa,path:ba,message:Ma}},EMPTY_PATH$1=[];function addIssueToContext$1(ua,J){const la=getErrorMap$1(),xa=makeIssue$1({issueData:J,data:ua.data,path:ua.path,errorMaps:[ua.common.contextualErrorMap,ua.schemaErrorMap,la,la===errorMap$1?void 0:errorMap$1].filter(Aa=>!!Aa)});ua.common.issues.push(xa)}let ParseStatus$1=class qM{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(J,la){const xa=[];for(const Aa of la){if(Aa.status==="aborted")return INVALID$1;Aa.status==="dirty"&&J.dirty(),xa.push(Aa.value)}return{status:J.value,value:xa}}static async mergeObjectAsync(J,la){const xa=[];for(const Aa of la){const ba=await Aa.key,Sa=await Aa.value;xa.push({key:ba,value:Sa})}return qM.mergeObjectSync(J,xa)}static mergeObjectSync(J,la){const xa={};for(const Aa of la){const{key:ba,value:Sa}=Aa;if(ba.status==="aborted"||Sa.status==="aborted")return INVALID$1;ba.status==="dirty"&&J.dirty(),Sa.status==="dirty"&&J.dirty(),ba.value!=="__proto__"&&(typeof Sa.value<"u"||Aa.alwaysSet)&&(xa[ba.value]=Sa.value)}return{status:J.value,value:xa}}};const INVALID$1=Object.freeze({status:"aborted"}),DIRTY$1=ua=>({status:"dirty",value:ua}),OK$1=ua=>({status:"valid",value:ua}),isAborted$1=ua=>ua.status==="aborted",isDirty$1=ua=>ua.status==="dirty",isValid$2=ua=>ua.status==="valid",isAsync$1=ua=>typeof Promise<"u"&&ua instanceof Promise;function __classPrivateFieldGet$1(ua,J,la,xa){if(typeof J=="function"?ua!==J||!xa:!J.has(ua))throw new TypeError("Cannot read private member from an object whose class did not declare it");return J.get(ua)}function __classPrivateFieldSet$1(ua,J,la,xa,Aa){if(typeof J=="function"?ua!==J||!Aa:!J.has(ua))throw new TypeError("Cannot write private member to an object whose class did not declare it");return J.set(ua,la),la}typeof SuppressedError=="function"&&SuppressedError;var errorUtil$2;(function(ua){ua.errToObj=J=>typeof J=="string"?{message:J}:J||{},ua.toString=J=>typeof J=="string"?J:J==null?void 0:J.message})(errorUtil$2||(errorUtil$2={}));var _ZodEnum_cache$1,_ZodNativeEnum_cache$1;let ParseInputLazyPath$1=class{constructor(J,la,xa,Aa){this._cachedPath=[],this.parent=J,this.data=la,this._path=xa,this._key=Aa}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}};const handleResult$1=(ua,J)=>{if(isValid$2(J))return{success:!0,data:J.value};if(!ua.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const la=new ZodError$2(ua.common.issues);return this._error=la,this._error}}};function processCreateParams$1(ua){if(!ua)return{};const{errorMap:J,invalid_type_error:la,required_error:xa,description:Aa}=ua;if(J&&(la||xa))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return J?{errorMap:J,description:Aa}:{errorMap:(Sa,Ma)=>{var Ra,Ia;const{message:La}=ua;return Sa.code==="invalid_enum_value"?{message:La??Ma.defaultError}:typeof Ma.data>"u"?{message:(Ra=La??xa)!==null&&Ra!==void 0?Ra:Ma.defaultError}:Sa.code!=="invalid_type"?{message:Ma.defaultError}:{message:(Ia=La??la)!==null&&Ia!==void 0?Ia:Ma.defaultError}},description:Aa}}let ZodType$1=class{constructor(J){this.spa=this.safeParseAsync,this._def=J,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(J){return getParsedType$1(J.data)}_getOrReturnCtx(J,la){return la||{common:J.parent.common,data:J.data,parsedType:getParsedType$1(J.data),schemaErrorMap:this._def.errorMap,path:J.path,parent:J.parent}}_processInputParams(J){return{status:new ParseStatus$1,ctx:{common:J.parent.common,data:J.data,parsedType:getParsedType$1(J.data),schemaErrorMap:this._def.errorMap,path:J.path,parent:J.parent}}}_parseSync(J){const la=this._parse(J);if(isAsync$1(la))throw new Error("Synchronous parse encountered promise.");return la}_parseAsync(J){const la=this._parse(J);return Promise.resolve(la)}parse(J,la){const xa=this.safeParse(J,la);if(xa.success)return xa.data;throw xa.error}safeParse(J,la){var xa;const Aa={common:{issues:[],async:(xa=la==null?void 0:la.async)!==null&&xa!==void 0?xa:!1,contextualErrorMap:la==null?void 0:la.errorMap},path:(la==null?void 0:la.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:J,parsedType:getParsedType$1(J)},ba=this._parseSync({data:J,path:Aa.path,parent:Aa});return handleResult$1(Aa,ba)}async parseAsync(J,la){const xa=await this.safeParseAsync(J,la);if(xa.success)return xa.data;throw xa.error}async safeParseAsync(J,la){const xa={common:{issues:[],contextualErrorMap:la==null?void 0:la.errorMap,async:!0},path:(la==null?void 0:la.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:J,parsedType:getParsedType$1(J)},Aa=this._parse({data:J,path:xa.path,parent:xa}),ba=await(isAsync$1(Aa)?Aa:Promise.resolve(Aa));return handleResult$1(xa,ba)}refine(J,la){const xa=Aa=>typeof la=="string"||typeof la>"u"?{message:la}:typeof la=="function"?la(Aa):la;return this._refinement((Aa,ba)=>{const Sa=J(Aa),Ma=()=>ba.addIssue({code:ZodIssueCode$1.custom,...xa(Aa)});return typeof Promise<"u"&&Sa instanceof Promise?Sa.then(Ra=>Ra?!0:(Ma(),!1)):Sa?!0:(Ma(),!1)})}refinement(J,la){return this._refinement((xa,Aa)=>J(xa)?!0:(Aa.addIssue(typeof la=="function"?la(xa,Aa):la),!1))}_refinement(J){return new ZodEffects$1({schema:this,typeName:ZodFirstPartyTypeKind$1.ZodEffects,effect:{type:"refinement",refinement:J}})}superRefine(J){return this._refinement(J)}optional(){return ZodOptional$1.create(this,this._def)}nullable(){return ZodNullable$1.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray$1.create(this,this._def)}promise(){return ZodPromise$1.create(this,this._def)}or(J){return ZodUnion$1.create([this,J],this._def)}and(J){return ZodIntersection$1.create(this,J,this._def)}transform(J){return new ZodEffects$1({...processCreateParams$1(this._def),schema:this,typeName:ZodFirstPartyTypeKind$1.ZodEffects,effect:{type:"transform",transform:J}})}default(J){const la=typeof J=="function"?J:()=>J;return new ZodDefault$1({...processCreateParams$1(this._def),innerType:this,defaultValue:la,typeName:ZodFirstPartyTypeKind$1.ZodDefault})}brand(){return new ZodBranded$1({typeName:ZodFirstPartyTypeKind$1.ZodBranded,type:this,...processCreateParams$1(this._def)})}catch(J){const la=typeof J=="function"?J:()=>J;return new ZodCatch$1({...processCreateParams$1(this._def),innerType:this,catchValue:la,typeName:ZodFirstPartyTypeKind$1.ZodCatch})}describe(J){const la=this.constructor;return new la({...this._def,description:J})}pipe(J){return ZodPipeline$1.create(this,J)}readonly(){return ZodReadonly$1.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};const cuidRegex$1=/^c[^\s-]{8,}$/i,cuid2Regex$1=/^[0-9a-z]+$/,ulidRegex$1=/^[0-9A-HJKMNP-TV-Z]{26}$/,uuidRegex$1=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,nanoidRegex$1=/^[a-z0-9_-]{21}$/i,durationRegex$1=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,emailRegex$1=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex$1="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let emojiRegex$1;const ipv4Regex$1=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6Regex$1=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,base64Regex$1=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,dateRegexSource$1="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",dateRegex$1=new RegExp(`^${dateRegexSource$1}$`);function timeRegexSource$1(ua){let J="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return ua.precision?J=`${J}\\.\\d{${ua.precision}}`:ua.precision==null&&(J=`${J}(\\.\\d+)?`),J}function timeRegex$1(ua){return new RegExp(`^${timeRegexSource$1(ua)}$`)}function datetimeRegex$1(ua){let J=`${dateRegexSource$1}T${timeRegexSource$1(ua)}`;const la=[];return la.push(ua.local?"Z?":"Z"),ua.offset&&la.push("([+-]\\d{2}:?\\d{2})"),J=`${J}(${la.join("|")})`,new RegExp(`^${J}$`)}function isValidIP$1(ua,J){return!!((J==="v4"||!J)&&ipv4Regex$1.test(ua)||(J==="v6"||!J)&&ipv6Regex$1.test(ua))}let ZodString$1=class iE extends ZodType$1{_parse(J){if(this._def.coerce&&(J.data=String(J.data)),this._getType(J)!==ZodParsedType$1.string){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.string,received:ba.parsedType}),INVALID$1}const xa=new ParseStatus$1;let Aa;for(const ba of this._def.checks)if(ba.kind==="min")J.data.length<ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_small,minimum:ba.value,type:"string",inclusive:!0,exact:!1,message:ba.message}),xa.dirty());else if(ba.kind==="max")J.data.length>ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_big,maximum:ba.value,type:"string",inclusive:!0,exact:!1,message:ba.message}),xa.dirty());else if(ba.kind==="length"){const Sa=J.data.length>ba.value,Ma=J.data.length<ba.value;(Sa||Ma)&&(Aa=this._getOrReturnCtx(J,Aa),Sa?addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_big,maximum:ba.value,type:"string",inclusive:!0,exact:!0,message:ba.message}):Ma&&addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_small,minimum:ba.value,type:"string",inclusive:!0,exact:!0,message:ba.message}),xa.dirty())}else if(ba.kind==="email")emailRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"email",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="emoji")emojiRegex$1||(emojiRegex$1=new RegExp(_emojiRegex$1,"u")),emojiRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"emoji",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="uuid")uuidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"uuid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="nanoid")nanoidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"nanoid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="cuid")cuidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"cuid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="cuid2")cuid2Regex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"cuid2",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="ulid")ulidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"ulid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="url")try{new URL(J.data)}catch{Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"url",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()}else ba.kind==="regex"?(ba.regex.lastIndex=0,ba.regex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"regex",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty())):ba.kind==="trim"?J.data=J.data.trim():ba.kind==="includes"?J.data.includes(ba.value,ba.position)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:{includes:ba.value,position:ba.position},message:ba.message}),xa.dirty()):ba.kind==="toLowerCase"?J.data=J.data.toLowerCase():ba.kind==="toUpperCase"?J.data=J.data.toUpperCase():ba.kind==="startsWith"?J.data.startsWith(ba.value)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:{startsWith:ba.value},message:ba.message}),xa.dirty()):ba.kind==="endsWith"?J.data.endsWith(ba.value)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:{endsWith:ba.value},message:ba.message}),xa.dirty()):ba.kind==="datetime"?datetimeRegex$1(ba).test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:"datetime",message:ba.message}),xa.dirty()):ba.kind==="date"?dateRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:"date",message:ba.message}),xa.dirty()):ba.kind==="time"?timeRegex$1(ba).test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:"time",message:ba.message}),xa.dirty()):ba.kind==="duration"?durationRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"duration",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="ip"?isValidIP$1(J.data,ba.version)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"ip",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="base64"?base64Regex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"base64",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()):util$2.assertNever(ba);return{status:xa.value,value:J.data}}_regex(J,la,xa){return this.refinement(Aa=>J.test(Aa),{validation:la,code:ZodIssueCode$1.invalid_string,...errorUtil$2.errToObj(xa)})}_addCheck(J){return new iE({...this._def,checks:[...this._def.checks,J]})}email(J){return this._addCheck({kind:"email",...errorUtil$2.errToObj(J)})}url(J){return this._addCheck({kind:"url",...errorUtil$2.errToObj(J)})}emoji(J){return this._addCheck({kind:"emoji",...errorUtil$2.errToObj(J)})}uuid(J){return this._addCheck({kind:"uuid",...errorUtil$2.errToObj(J)})}nanoid(J){return this._addCheck({kind:"nanoid",...errorUtil$2.errToObj(J)})}cuid(J){return this._addCheck({kind:"cuid",...errorUtil$2.errToObj(J)})}cuid2(J){return this._addCheck({kind:"cuid2",...errorUtil$2.errToObj(J)})}ulid(J){return this._addCheck({kind:"ulid",...errorUtil$2.errToObj(J)})}base64(J){return this._addCheck({kind:"base64",...errorUtil$2.errToObj(J)})}ip(J){return this._addCheck({kind:"ip",...errorUtil$2.errToObj(J)})}datetime(J){var la,xa;return typeof J=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:J}):this._addCheck({kind:"datetime",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,offset:(la=J==null?void 0:J.offset)!==null&&la!==void 0?la:!1,local:(xa=J==null?void 0:J.local)!==null&&xa!==void 0?xa:!1,...errorUtil$2.errToObj(J==null?void 0:J.message)})}date(J){return this._addCheck({kind:"date",message:J})}time(J){return typeof J=="string"?this._addCheck({kind:"time",precision:null,message:J}):this._addCheck({kind:"time",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,...errorUtil$2.errToObj(J==null?void 0:J.message)})}duration(J){return this._addCheck({kind:"duration",...errorUtil$2.errToObj(J)})}regex(J,la){return this._addCheck({kind:"regex",regex:J,...errorUtil$2.errToObj(la)})}includes(J,la){return this._addCheck({kind:"includes",value:J,position:la==null?void 0:la.position,...errorUtil$2.errToObj(la==null?void 0:la.message)})}startsWith(J,la){return this._addCheck({kind:"startsWith",value:J,...errorUtil$2.errToObj(la)})}endsWith(J,la){return this._addCheck({kind:"endsWith",value:J,...errorUtil$2.errToObj(la)})}min(J,la){return this._addCheck({kind:"min",value:J,...errorUtil$2.errToObj(la)})}max(J,la){return this._addCheck({kind:"max",value:J,...errorUtil$2.errToObj(la)})}length(J,la){return this._addCheck({kind:"length",value:J,...errorUtil$2.errToObj(la)})}nonempty(J){return this.min(1,errorUtil$2.errToObj(J))}trim(){return new iE({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new iE({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new iE({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(J=>J.kind==="datetime")}get isDate(){return!!this._def.checks.find(J=>J.kind==="date")}get isTime(){return!!this._def.checks.find(J=>J.kind==="time")}get isDuration(){return!!this._def.checks.find(J=>J.kind==="duration")}get isEmail(){return!!this._def.checks.find(J=>J.kind==="email")}get isURL(){return!!this._def.checks.find(J=>J.kind==="url")}get isEmoji(){return!!this._def.checks.find(J=>J.kind==="emoji")}get isUUID(){return!!this._def.checks.find(J=>J.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(J=>J.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(J=>J.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(J=>J.kind==="cuid2")}get isULID(){return!!this._def.checks.find(J=>J.kind==="ulid")}get isIP(){return!!this._def.checks.find(J=>J.kind==="ip")}get isBase64(){return!!this._def.checks.find(J=>J.kind==="base64")}get minLength(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxLength(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}};ZodString$1.create=ua=>{var J;return new ZodString$1({checks:[],typeName:ZodFirstPartyTypeKind$1.ZodString,coerce:(J=ua==null?void 0:ua.coerce)!==null&&J!==void 0?J:!1,...processCreateParams$1(ua)})};function floatSafeRemainder$1(ua,J){const la=(ua.toString().split(".")[1]||"").length,xa=(J.toString().split(".")[1]||"").length,Aa=la>xa?la:xa,ba=parseInt(ua.toFixed(Aa).replace(".","")),Sa=parseInt(J.toFixed(Aa).replace(".",""));return ba%Sa/Math.pow(10,Aa)}let ZodNumber$1=class NT extends ZodType$1{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(J){if(this._def.coerce&&(J.data=Number(J.data)),this._getType(J)!==ZodParsedType$1.number){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.number,received:ba.parsedType}),INVALID$1}let xa;const Aa=new ParseStatus$1;for(const ba of this._def.checks)ba.kind==="int"?util$2.isInteger(J.data)||(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:"integer",received:"float",message:ba.message}),Aa.dirty()):ba.kind==="min"?(ba.inclusive?J.data<ba.value:J.data<=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,minimum:ba.value,type:"number",inclusive:ba.inclusive,exact:!1,message:ba.message}),Aa.dirty()):ba.kind==="max"?(ba.inclusive?J.data>ba.value:J.data>=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,maximum:ba.value,type:"number",inclusive:ba.inclusive,exact:!1,message:ba.message}),Aa.dirty()):ba.kind==="multipleOf"?floatSafeRemainder$1(J.data,ba.value)!==0&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.not_multiple_of,multipleOf:ba.value,message:ba.message}),Aa.dirty()):ba.kind==="finite"?Number.isFinite(J.data)||(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.not_finite,message:ba.message}),Aa.dirty()):util$2.assertNever(ba);return{status:Aa.value,value:J.data}}gte(J,la){return this.setLimit("min",J,!0,errorUtil$2.toString(la))}gt(J,la){return this.setLimit("min",J,!1,errorUtil$2.toString(la))}lte(J,la){return this.setLimit("max",J,!0,errorUtil$2.toString(la))}lt(J,la){return this.setLimit("max",J,!1,errorUtil$2.toString(la))}setLimit(J,la,xa,Aa){return new NT({...this._def,checks:[...this._def.checks,{kind:J,value:la,inclusive:xa,message:errorUtil$2.toString(Aa)}]})}_addCheck(J){return new NT({...this._def,checks:[...this._def.checks,J]})}int(J){return this._addCheck({kind:"int",message:errorUtil$2.toString(J)})}positive(J){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil$2.toString(J)})}negative(J){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil$2.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil$2.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil$2.toString(J)})}multipleOf(J,la){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil$2.toString(la)})}finite(J){return this._addCheck({kind:"finite",message:errorUtil$2.toString(J)})}safe(J){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil$2.toString(J)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil$2.toString(J)})}get minValue(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxValue(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}get isInt(){return!!this._def.checks.find(J=>J.kind==="int"||J.kind==="multipleOf"&&util$2.isInteger(J.value))}get isFinite(){let J=null,la=null;for(const xa of this._def.checks){if(xa.kind==="finite"||xa.kind==="int"||xa.kind==="multipleOf")return!0;xa.kind==="min"?(la===null||xa.value>la)&&(la=xa.value):xa.kind==="max"&&(J===null||xa.value<J)&&(J=xa.value)}return Number.isFinite(la)&&Number.isFinite(J)}};ZodNumber$1.create=ua=>new ZodNumber$1({checks:[],typeName:ZodFirstPartyTypeKind$1.ZodNumber,coerce:(ua==null?void 0:ua.coerce)||!1,...processCreateParams$1(ua)});let ZodBigInt$1=class OT extends ZodType$1{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(J){if(this._def.coerce&&(J.data=BigInt(J.data)),this._getType(J)!==ZodParsedType$1.bigint){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.bigint,received:ba.parsedType}),INVALID$1}let xa;const Aa=new ParseStatus$1;for(const ba of this._def.checks)ba.kind==="min"?(ba.inclusive?J.data<ba.value:J.data<=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,type:"bigint",minimum:ba.value,inclusive:ba.inclusive,message:ba.message}),Aa.dirty()):ba.kind==="max"?(ba.inclusive?J.data>ba.value:J.data>=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,type:"bigint",maximum:ba.value,inclusive:ba.inclusive,message:ba.message}),Aa.dirty()):ba.kind==="multipleOf"?J.data%ba.value!==BigInt(0)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.not_multiple_of,multipleOf:ba.value,message:ba.message}),Aa.dirty()):util$2.assertNever(ba);return{status:Aa.value,value:J.data}}gte(J,la){return this.setLimit("min",J,!0,errorUtil$2.toString(la))}gt(J,la){return this.setLimit("min",J,!1,errorUtil$2.toString(la))}lte(J,la){return this.setLimit("max",J,!0,errorUtil$2.toString(la))}lt(J,la){return this.setLimit("max",J,!1,errorUtil$2.toString(la))}setLimit(J,la,xa,Aa){return new OT({...this._def,checks:[...this._def.checks,{kind:J,value:la,inclusive:xa,message:errorUtil$2.toString(Aa)}]})}_addCheck(J){return new OT({...this._def,checks:[...this._def.checks,J]})}positive(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil$2.toString(J)})}negative(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil$2.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil$2.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil$2.toString(J)})}multipleOf(J,la){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil$2.toString(la)})}get minValue(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxValue(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}};ZodBigInt$1.create=ua=>{var J;return new ZodBigInt$1({checks:[],typeName:ZodFirstPartyTypeKind$1.ZodBigInt,coerce:(J=ua==null?void 0:ua.coerce)!==null&&J!==void 0?J:!1,...processCreateParams$1(ua)})};let ZodBoolean$1=class extends ZodType$1{_parse(J){if(this._def.coerce&&(J.data=!!J.data),this._getType(J)!==ZodParsedType$1.boolean){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.boolean,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodBoolean$1.create=ua=>new ZodBoolean$1({typeName:ZodFirstPartyTypeKind$1.ZodBoolean,coerce:(ua==null?void 0:ua.coerce)||!1,...processCreateParams$1(ua)});let ZodDate$1=class jM extends ZodType$1{_parse(J){if(this._def.coerce&&(J.data=new Date(J.data)),this._getType(J)!==ZodParsedType$1.date){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.date,received:ba.parsedType}),INVALID$1}if(isNaN(J.data.getTime())){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_date}),INVALID$1}const xa=new ParseStatus$1;let Aa;for(const ba of this._def.checks)ba.kind==="min"?J.data.getTime()<ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_small,message:ba.message,inclusive:!0,exact:!1,minimum:ba.value,type:"date"}),xa.dirty()):ba.kind==="max"?J.data.getTime()>ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_big,message:ba.message,inclusive:!0,exact:!1,maximum:ba.value,type:"date"}),xa.dirty()):util$2.assertNever(ba);return{status:xa.value,value:new Date(J.data.getTime())}}_addCheck(J){return new jM({...this._def,checks:[...this._def.checks,J]})}min(J,la){return this._addCheck({kind:"min",value:J.getTime(),message:errorUtil$2.toString(la)})}max(J,la){return this._addCheck({kind:"max",value:J.getTime(),message:errorUtil$2.toString(la)})}get minDate(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J!=null?new Date(J):null}get maxDate(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J!=null?new Date(J):null}};ZodDate$1.create=ua=>new ZodDate$1({checks:[],coerce:(ua==null?void 0:ua.coerce)||!1,typeName:ZodFirstPartyTypeKind$1.ZodDate,...processCreateParams$1(ua)});let ZodSymbol$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.symbol){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.symbol,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodSymbol$1.create=ua=>new ZodSymbol$1({typeName:ZodFirstPartyTypeKind$1.ZodSymbol,...processCreateParams$1(ua)});let ZodUndefined$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.undefined){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.undefined,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodUndefined$1.create=ua=>new ZodUndefined$1({typeName:ZodFirstPartyTypeKind$1.ZodUndefined,...processCreateParams$1(ua)});let ZodNull$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.null){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.null,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodNull$1.create=ua=>new ZodNull$1({typeName:ZodFirstPartyTypeKind$1.ZodNull,...processCreateParams$1(ua)});let ZodAny$1=class extends ZodType$1{constructor(){super(...arguments),this._any=!0}_parse(J){return OK$1(J.data)}};ZodAny$1.create=ua=>new ZodAny$1({typeName:ZodFirstPartyTypeKind$1.ZodAny,...processCreateParams$1(ua)});let ZodUnknown$1=class extends ZodType$1{constructor(){super(...arguments),this._unknown=!0}_parse(J){return OK$1(J.data)}};ZodUnknown$1.create=ua=>new ZodUnknown$1({typeName:ZodFirstPartyTypeKind$1.ZodUnknown,...processCreateParams$1(ua)});let ZodNever$1=class extends ZodType$1{_parse(J){const la=this._getOrReturnCtx(J);return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.never,received:la.parsedType}),INVALID$1}};ZodNever$1.create=ua=>new ZodNever$1({typeName:ZodFirstPartyTypeKind$1.ZodNever,...processCreateParams$1(ua)});let ZodVoid$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.undefined){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.void,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodVoid$1.create=ua=>new ZodVoid$1({typeName:ZodFirstPartyTypeKind$1.ZodVoid,...processCreateParams$1(ua)});let ZodArray$1=class PE extends ZodType$1{_parse(J){const{ctx:la,status:xa}=this._processInputParams(J),Aa=this._def;if(la.parsedType!==ZodParsedType$1.array)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.array,received:la.parsedType}),INVALID$1;if(Aa.exactLength!==null){const Sa=la.data.length>Aa.exactLength.value,Ma=la.data.length<Aa.exactLength.value;(Sa||Ma)&&(addIssueToContext$1(la,{code:Sa?ZodIssueCode$1.too_big:ZodIssueCode$1.too_small,minimum:Ma?Aa.exactLength.value:void 0,maximum:Sa?Aa.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:Aa.exactLength.message}),xa.dirty())}if(Aa.minLength!==null&&la.data.length<Aa.minLength.value&&(addIssueToContext$1(la,{code:ZodIssueCode$1.too_small,minimum:Aa.minLength.value,type:"array",inclusive:!0,exact:!1,message:Aa.minLength.message}),xa.dirty()),Aa.maxLength!==null&&la.data.length>Aa.maxLength.value&&(addIssueToContext$1(la,{code:ZodIssueCode$1.too_big,maximum:Aa.maxLength.value,type:"array",inclusive:!0,exact:!1,message:Aa.maxLength.message}),xa.dirty()),la.common.async)return Promise.all([...la.data].map((Sa,Ma)=>Aa.type._parseAsync(new ParseInputLazyPath$1(la,Sa,la.path,Ma)))).then(Sa=>ParseStatus$1.mergeArray(xa,Sa));const ba=[...la.data].map((Sa,Ma)=>Aa.type._parseSync(new ParseInputLazyPath$1(la,Sa,la.path,Ma)));return ParseStatus$1.mergeArray(xa,ba)}get element(){return this._def.type}min(J,la){return new PE({...this._def,minLength:{value:J,message:errorUtil$2.toString(la)}})}max(J,la){return new PE({...this._def,maxLength:{value:J,message:errorUtil$2.toString(la)}})}length(J,la){return new PE({...this._def,exactLength:{value:J,message:errorUtil$2.toString(la)}})}nonempty(J){return this.min(1,J)}};ZodArray$1.create=(ua,J)=>new ZodArray$1({type:ua,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind$1.ZodArray,...processCreateParams$1(J)});function deepPartialify$1(ua){if(ua instanceof ZodObject$1){const J={};for(const la in ua.shape){const xa=ua.shape[la];J[la]=ZodOptional$1.create(deepPartialify$1(xa))}return new ZodObject$1({...ua._def,shape:()=>J})}else return ua instanceof ZodArray$1?new ZodArray$1({...ua._def,type:deepPartialify$1(ua.element)}):ua instanceof ZodOptional$1?ZodOptional$1.create(deepPartialify$1(ua.unwrap())):ua instanceof ZodNullable$1?ZodNullable$1.create(deepPartialify$1(ua.unwrap())):ua instanceof ZodTuple$1?ZodTuple$1.create(ua.items.map(J=>deepPartialify$1(J))):ua}let ZodObject$1=class t7 extends ZodType$1{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const J=this._def.shape(),la=util$2.objectKeys(J);return this._cached={shape:J,keys:la}}_parse(J){if(this._getType(J)!==ZodParsedType$1.object){const Ia=this._getOrReturnCtx(J);return addIssueToContext$1(Ia,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.object,received:Ia.parsedType}),INVALID$1}const{status:xa,ctx:Aa}=this._processInputParams(J),{shape:ba,keys:Sa}=this._getCached(),Ma=[];if(!(this._def.catchall instanceof ZodNever$1&&this._def.unknownKeys==="strip"))for(const Ia in Aa.data)Sa.includes(Ia)||Ma.push(Ia);const Ra=[];for(const Ia of Sa){const La=ba[Ia],Fa=Aa.data[Ia];Ra.push({key:{status:"valid",value:Ia},value:La._parse(new ParseInputLazyPath$1(Aa,Fa,Aa.path,Ia)),alwaysSet:Ia in Aa.data})}if(this._def.catchall instanceof ZodNever$1){const Ia=this._def.unknownKeys;if(Ia==="passthrough")for(const La of Ma)Ra.push({key:{status:"valid",value:La},value:{status:"valid",value:Aa.data[La]}});else if(Ia==="strict")Ma.length>0&&(addIssueToContext$1(Aa,{code:ZodIssueCode$1.unrecognized_keys,keys:Ma}),xa.dirty());else if(Ia!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const Ia=this._def.catchall;for(const La of Ma){const Fa=Aa.data[La];Ra.push({key:{status:"valid",value:La},value:Ia._parse(new ParseInputLazyPath$1(Aa,Fa,Aa.path,La)),alwaysSet:La in Aa.data})}}return Aa.common.async?Promise.resolve().then(async()=>{const Ia=[];for(const La of Ra){const Fa=await La.key,ka=await La.value;Ia.push({key:Fa,value:ka,alwaysSet:La.alwaysSet})}return Ia}).then(Ia=>ParseStatus$1.mergeObjectSync(xa,Ia)):ParseStatus$1.mergeObjectSync(xa,Ra)}get shape(){return this._def.shape()}strict(J){return errorUtil$2.errToObj,new t7({...this._def,unknownKeys:"strict",...J!==void 0?{errorMap:(la,xa)=>{var Aa,ba,Sa,Ma;const Ra=(Sa=(ba=(Aa=this._def).errorMap)===null||ba===void 0?void 0:ba.call(Aa,la,xa).message)!==null&&Sa!==void 0?Sa:xa.defaultError;return la.code==="unrecognized_keys"?{message:(Ma=errorUtil$2.errToObj(J).message)!==null&&Ma!==void 0?Ma:Ra}:{message:Ra}}}:{}})}strip(){return new t7({...this._def,unknownKeys:"strip"})}passthrough(){return new t7({...this._def,unknownKeys:"passthrough"})}extend(J){return new t7({...this._def,shape:()=>({...this._def.shape(),...J})})}merge(J){return new t7({unknownKeys:J._def.unknownKeys,catchall:J._def.catchall,shape:()=>({...this._def.shape(),...J._def.shape()}),typeName:ZodFirstPartyTypeKind$1.ZodObject})}setKey(J,la){return this.augment({[J]:la})}catchall(J){return new t7({...this._def,catchall:J})}pick(J){const la={};return util$2.objectKeys(J).forEach(xa=>{J[xa]&&this.shape[xa]&&(la[xa]=this.shape[xa])}),new t7({...this._def,shape:()=>la})}omit(J){const la={};return util$2.objectKeys(this.shape).forEach(xa=>{J[xa]||(la[xa]=this.shape[xa])}),new t7({...this._def,shape:()=>la})}deepPartial(){return deepPartialify$1(this)}partial(J){const la={};return util$2.objectKeys(this.shape).forEach(xa=>{const Aa=this.shape[xa];J&&!J[xa]?la[xa]=Aa:la[xa]=Aa.optional()}),new t7({...this._def,shape:()=>la})}required(J){const la={};return util$2.objectKeys(this.shape).forEach(xa=>{if(J&&!J[xa])la[xa]=this.shape[xa];else{let ba=this.shape[xa];for(;ba instanceof ZodOptional$1;)ba=ba._def.innerType;la[xa]=ba}}),new t7({...this._def,shape:()=>la})}keyof(){return createZodEnum$1(util$2.objectKeys(this.shape))}};ZodObject$1.create=(ua,J)=>new ZodObject$1({shape:()=>ua,unknownKeys:"strip",catchall:ZodNever$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodObject,...processCreateParams$1(J)}),ZodObject$1.strictCreate=(ua,J)=>new ZodObject$1({shape:()=>ua,unknownKeys:"strict",catchall:ZodNever$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodObject,...processCreateParams$1(J)}),ZodObject$1.lazycreate=(ua,J)=>new ZodObject$1({shape:ua,unknownKeys:"strip",catchall:ZodNever$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodObject,...processCreateParams$1(J)});let ZodUnion$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J),xa=this._def.options;function Aa(ba){for(const Ma of ba)if(Ma.result.status==="valid")return Ma.result;for(const Ma of ba)if(Ma.result.status==="dirty")return la.common.issues.push(...Ma.ctx.common.issues),Ma.result;const Sa=ba.map(Ma=>new ZodError$2(Ma.ctx.common.issues));return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_union,unionErrors:Sa}),INVALID$1}if(la.common.async)return Promise.all(xa.map(async ba=>{const Sa={...la,common:{...la.common,issues:[]},parent:null};return{result:await ba._parseAsync({data:la.data,path:la.path,parent:Sa}),ctx:Sa}})).then(Aa);{let ba;const Sa=[];for(const Ra of xa){const Ia={...la,common:{...la.common,issues:[]},parent:null},La=Ra._parseSync({data:la.data,path:la.path,parent:Ia});if(La.status==="valid")return La;La.status==="dirty"&&!ba&&(ba={result:La,ctx:Ia}),Ia.common.issues.length&&Sa.push(Ia.common.issues)}if(ba)return la.common.issues.push(...ba.ctx.common.issues),ba.result;const Ma=Sa.map(Ra=>new ZodError$2(Ra));return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_union,unionErrors:Ma}),INVALID$1}}get options(){return this._def.options}};ZodUnion$1.create=(ua,J)=>new ZodUnion$1({options:ua,typeName:ZodFirstPartyTypeKind$1.ZodUnion,...processCreateParams$1(J)});const getDiscriminator$1=ua=>ua instanceof ZodLazy$1?getDiscriminator$1(ua.schema):ua instanceof ZodEffects$1?getDiscriminator$1(ua.innerType()):ua instanceof ZodLiteral$1?[ua.value]:ua instanceof ZodEnum$1?ua.options:ua instanceof ZodNativeEnum$1?util$2.objectValues(ua.enum):ua instanceof ZodDefault$1?getDiscriminator$1(ua._def.innerType):ua instanceof ZodUndefined$1?[void 0]:ua instanceof ZodNull$1?[null]:ua instanceof ZodOptional$1?[void 0,...getDiscriminator$1(ua.unwrap())]:ua instanceof ZodNullable$1?[null,...getDiscriminator$1(ua.unwrap())]:ua instanceof ZodBranded$1||ua instanceof ZodReadonly$1?getDiscriminator$1(ua.unwrap()):ua instanceof ZodCatch$1?getDiscriminator$1(ua._def.innerType):[];let ZodDiscriminatedUnion$1=class QM extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType$1.object)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.object,received:la.parsedType}),INVALID$1;const xa=this.discriminator,Aa=la.data[xa],ba=this.optionsMap.get(Aa);return ba?la.common.async?ba._parseAsync({data:la.data,path:la.path,parent:la}):ba._parseSync({data:la.data,path:la.path,parent:la}):(addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[xa]}),INVALID$1)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(J,la,xa){const Aa=new Map;for(const ba of la){const Sa=getDiscriminator$1(ba.shape[J]);if(!Sa.length)throw new Error(`A discriminator value for key \`${J}\` could not be extracted from all schema options`);for(const Ma of Sa){if(Aa.has(Ma))throw new Error(`Discriminator property ${String(J)} has duplicate value ${String(Ma)}`);Aa.set(Ma,ba)}}return new QM({typeName:ZodFirstPartyTypeKind$1.ZodDiscriminatedUnion,discriminator:J,options:la,optionsMap:Aa,...processCreateParams$1(xa)})}};function mergeValues$1(ua,J){const la=getParsedType$1(ua),xa=getParsedType$1(J);if(ua===J)return{valid:!0,data:ua};if(la===ZodParsedType$1.object&&xa===ZodParsedType$1.object){const Aa=util$2.objectKeys(J),ba=util$2.objectKeys(ua).filter(Ma=>Aa.indexOf(Ma)!==-1),Sa={...ua,...J};for(const Ma of ba){const Ra=mergeValues$1(ua[Ma],J[Ma]);if(!Ra.valid)return{valid:!1};Sa[Ma]=Ra.data}return{valid:!0,data:Sa}}else if(la===ZodParsedType$1.array&&xa===ZodParsedType$1.array){if(ua.length!==J.length)return{valid:!1};const Aa=[];for(let ba=0;ba<ua.length;ba++){const Sa=ua[ba],Ma=J[ba],Ra=mergeValues$1(Sa,Ma);if(!Ra.valid)return{valid:!1};Aa.push(Ra.data)}return{valid:!0,data:Aa}}else return la===ZodParsedType$1.date&&xa===ZodParsedType$1.date&&+ua==+J?{valid:!0,data:ua}:{valid:!1}}let ZodIntersection$1=class extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J),Aa=(ba,Sa)=>{if(isAborted$1(ba)||isAborted$1(Sa))return INVALID$1;const Ma=mergeValues$1(ba.value,Sa.value);return Ma.valid?((isDirty$1(ba)||isDirty$1(Sa))&&la.dirty(),{status:la.value,value:Ma.data}):(addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_intersection_types}),INVALID$1)};return xa.common.async?Promise.all([this._def.left._parseAsync({data:xa.data,path:xa.path,parent:xa}),this._def.right._parseAsync({data:xa.data,path:xa.path,parent:xa})]).then(([ba,Sa])=>Aa(ba,Sa)):Aa(this._def.left._parseSync({data:xa.data,path:xa.path,parent:xa}),this._def.right._parseSync({data:xa.data,path:xa.path,parent:xa}))}};ZodIntersection$1.create=(ua,J,la)=>new ZodIntersection$1({left:ua,right:J,typeName:ZodFirstPartyTypeKind$1.ZodIntersection,...processCreateParams$1(la)});let ZodTuple$1=class WM extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.array)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.array,received:xa.parsedType}),INVALID$1;if(xa.data.length<this._def.items.length)return addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID$1;!this._def.rest&&xa.data.length>this._def.items.length&&(addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),la.dirty());const ba=[...xa.data].map((Sa,Ma)=>{const Ra=this._def.items[Ma]||this._def.rest;return Ra?Ra._parse(new ParseInputLazyPath$1(xa,Sa,xa.path,Ma)):null}).filter(Sa=>!!Sa);return xa.common.async?Promise.all(ba).then(Sa=>ParseStatus$1.mergeArray(la,Sa)):ParseStatus$1.mergeArray(la,ba)}get items(){return this._def.items}rest(J){return new WM({...this._def,rest:J})}};ZodTuple$1.create=(ua,J)=>{if(!Array.isArray(ua))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple$1({items:ua,typeName:ZodFirstPartyTypeKind$1.ZodTuple,rest:null,...processCreateParams$1(J)})};let ZodRecord$1=class UT extends ZodType$1{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.object)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.object,received:xa.parsedType}),INVALID$1;const Aa=[],ba=this._def.keyType,Sa=this._def.valueType;for(const Ma in xa.data)Aa.push({key:ba._parse(new ParseInputLazyPath$1(xa,Ma,xa.path,Ma)),value:Sa._parse(new ParseInputLazyPath$1(xa,xa.data[Ma],xa.path,Ma)),alwaysSet:Ma in xa.data});return xa.common.async?ParseStatus$1.mergeObjectAsync(la,Aa):ParseStatus$1.mergeObjectSync(la,Aa)}get element(){return this._def.valueType}static create(J,la,xa){return la instanceof ZodType$1?new UT({keyType:J,valueType:la,typeName:ZodFirstPartyTypeKind$1.ZodRecord,...processCreateParams$1(xa)}):new UT({keyType:ZodString$1.create(),valueType:J,typeName:ZodFirstPartyTypeKind$1.ZodRecord,...processCreateParams$1(la)})}},ZodMap$1=class extends ZodType$1{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.map)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.map,received:xa.parsedType}),INVALID$1;const Aa=this._def.keyType,ba=this._def.valueType,Sa=[...xa.data.entries()].map(([Ma,Ra],Ia)=>({key:Aa._parse(new ParseInputLazyPath$1(xa,Ma,xa.path,[Ia,"key"])),value:ba._parse(new ParseInputLazyPath$1(xa,Ra,xa.path,[Ia,"value"]))}));if(xa.common.async){const Ma=new Map;return Promise.resolve().then(async()=>{for(const Ra of Sa){const Ia=await Ra.key,La=await Ra.value;if(Ia.status==="aborted"||La.status==="aborted")return INVALID$1;(Ia.status==="dirty"||La.status==="dirty")&&la.dirty(),Ma.set(Ia.value,La.value)}return{status:la.value,value:Ma}})}else{const Ma=new Map;for(const Ra of Sa){const Ia=Ra.key,La=Ra.value;if(Ia.status==="aborted"||La.status==="aborted")return INVALID$1;(Ia.status==="dirty"||La.status==="dirty")&&la.dirty(),Ma.set(Ia.value,La.value)}return{status:la.value,value:Ma}}}};ZodMap$1.create=(ua,J,la)=>new ZodMap$1({valueType:J,keyType:ua,typeName:ZodFirstPartyTypeKind$1.ZodMap,...processCreateParams$1(la)});let ZodSet$1=class kT extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.set)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.set,received:xa.parsedType}),INVALID$1;const Aa=this._def;Aa.minSize!==null&&xa.data.size<Aa.minSize.value&&(addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,minimum:Aa.minSize.value,type:"set",inclusive:!0,exact:!1,message:Aa.minSize.message}),la.dirty()),Aa.maxSize!==null&&xa.data.size>Aa.maxSize.value&&(addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,maximum:Aa.maxSize.value,type:"set",inclusive:!0,exact:!1,message:Aa.maxSize.message}),la.dirty());const ba=this._def.valueType;function Sa(Ra){const Ia=new Set;for(const La of Ra){if(La.status==="aborted")return INVALID$1;La.status==="dirty"&&la.dirty(),Ia.add(La.value)}return{status:la.value,value:Ia}}const Ma=[...xa.data.values()].map((Ra,Ia)=>ba._parse(new ParseInputLazyPath$1(xa,Ra,xa.path,Ia)));return xa.common.async?Promise.all(Ma).then(Ra=>Sa(Ra)):Sa(Ma)}min(J,la){return new kT({...this._def,minSize:{value:J,message:errorUtil$2.toString(la)}})}max(J,la){return new kT({...this._def,maxSize:{value:J,message:errorUtil$2.toString(la)}})}size(J,la){return this.min(J,la).max(J,la)}nonempty(J){return this.min(1,J)}};ZodSet$1.create=(ua,J)=>new ZodSet$1({valueType:ua,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind$1.ZodSet,...processCreateParams$1(J)});let ZodFunction$1=class IE extends ZodType$1{constructor(){super(...arguments),this.validate=this.implement}_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType$1.function)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.function,received:la.parsedType}),INVALID$1;function xa(Ma,Ra){return makeIssue$1({data:Ma,path:la.path,errorMaps:[la.common.contextualErrorMap,la.schemaErrorMap,getErrorMap$1(),errorMap$1].filter(Ia=>!!Ia),issueData:{code:ZodIssueCode$1.invalid_arguments,argumentsError:Ra}})}function Aa(Ma,Ra){return makeIssue$1({data:Ma,path:la.path,errorMaps:[la.common.contextualErrorMap,la.schemaErrorMap,getErrorMap$1(),errorMap$1].filter(Ia=>!!Ia),issueData:{code:ZodIssueCode$1.invalid_return_type,returnTypeError:Ra}})}const ba={errorMap:la.common.contextualErrorMap},Sa=la.data;if(this._def.returns instanceof ZodPromise$1){const Ma=this;return OK$1(async function(...Ra){const Ia=new ZodError$2([]),La=await Ma._def.args.parseAsync(Ra,ba).catch(el=>{throw Ia.addIssue(xa(Ra,el)),Ia}),Fa=await Reflect.apply(Sa,this,La);return await Ma._def.returns._def.type.parseAsync(Fa,ba).catch(el=>{throw Ia.addIssue(Aa(Fa,el)),Ia})})}else{const Ma=this;return OK$1(function(...Ra){const Ia=Ma._def.args.safeParse(Ra,ba);if(!Ia.success)throw new ZodError$2([xa(Ra,Ia.error)]);const La=Reflect.apply(Sa,this,Ia.data),Fa=Ma._def.returns.safeParse(La,ba);if(!Fa.success)throw new ZodError$2([Aa(La,Fa.error)]);return Fa.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...J){return new IE({...this._def,args:ZodTuple$1.create(J).rest(ZodUnknown$1.create())})}returns(J){return new IE({...this._def,returns:J})}implement(J){return this.parse(J)}strictImplement(J){return this.parse(J)}static create(J,la,xa){return new IE({args:J||ZodTuple$1.create([]).rest(ZodUnknown$1.create()),returns:la||ZodUnknown$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodFunction,...processCreateParams$1(xa)})}},ZodLazy$1=class extends ZodType$1{get schema(){return this._def.getter()}_parse(J){const{ctx:la}=this._processInputParams(J);return this._def.getter()._parse({data:la.data,path:la.path,parent:la})}};ZodLazy$1.create=(ua,J)=>new ZodLazy$1({getter:ua,typeName:ZodFirstPartyTypeKind$1.ZodLazy,...processCreateParams$1(J)});let ZodLiteral$1=class extends ZodType$1{_parse(J){if(J.data!==this._def.value){const la=this._getOrReturnCtx(J);return addIssueToContext$1(la,{received:la.data,code:ZodIssueCode$1.invalid_literal,expected:this._def.value}),INVALID$1}return{status:"valid",value:J.data}}get value(){return this._def.value}};ZodLiteral$1.create=(ua,J)=>new ZodLiteral$1({value:ua,typeName:ZodFirstPartyTypeKind$1.ZodLiteral,...processCreateParams$1(J)});function createZodEnum$1(ua,J){return new ZodEnum$1({values:ua,typeName:ZodFirstPartyTypeKind$1.ZodEnum,...processCreateParams$1(J)})}let ZodEnum$1=class zT extends ZodType$1{constructor(){super(...arguments),_ZodEnum_cache$1.set(this,void 0)}_parse(J){if(typeof J.data!="string"){const la=this._getOrReturnCtx(J),xa=this._def.values;return addIssueToContext$1(la,{expected:util$2.joinValues(xa),received:la.parsedType,code:ZodIssueCode$1.invalid_type}),INVALID$1}if(__classPrivateFieldGet$1(this,_ZodEnum_cache$1)||__classPrivateFieldSet$1(this,_ZodEnum_cache$1,new Set(this._def.values)),!__classPrivateFieldGet$1(this,_ZodEnum_cache$1).has(J.data)){const la=this._getOrReturnCtx(J),xa=this._def.values;return addIssueToContext$1(la,{received:la.data,code:ZodIssueCode$1.invalid_enum_value,options:xa}),INVALID$1}return OK$1(J.data)}get options(){return this._def.values}get enum(){const J={};for(const la of this._def.values)J[la]=la;return J}get Values(){const J={};for(const la of this._def.values)J[la]=la;return J}get Enum(){const J={};for(const la of this._def.values)J[la]=la;return J}extract(J,la=this._def){return zT.create(J,{...this._def,...la})}exclude(J,la=this._def){return zT.create(this.options.filter(xa=>!J.includes(xa)),{...this._def,...la})}};_ZodEnum_cache$1=new WeakMap,ZodEnum$1.create=createZodEnum$1;let ZodNativeEnum$1=class extends ZodType$1{constructor(){super(...arguments),_ZodNativeEnum_cache$1.set(this,void 0)}_parse(J){const la=util$2.getValidEnumValues(this._def.values),xa=this._getOrReturnCtx(J);if(xa.parsedType!==ZodParsedType$1.string&&xa.parsedType!==ZodParsedType$1.number){const Aa=util$2.objectValues(la);return addIssueToContext$1(xa,{expected:util$2.joinValues(Aa),received:xa.parsedType,code:ZodIssueCode$1.invalid_type}),INVALID$1}if(__classPrivateFieldGet$1(this,_ZodNativeEnum_cache$1)||__classPrivateFieldSet$1(this,_ZodNativeEnum_cache$1,new Set(util$2.getValidEnumValues(this._def.values))),!__classPrivateFieldGet$1(this,_ZodNativeEnum_cache$1).has(J.data)){const Aa=util$2.objectValues(la);return addIssueToContext$1(xa,{received:xa.data,code:ZodIssueCode$1.invalid_enum_value,options:Aa}),INVALID$1}return OK$1(J.data)}get enum(){return this._def.values}};_ZodNativeEnum_cache$1=new WeakMap,ZodNativeEnum$1.create=(ua,J)=>new ZodNativeEnum$1({values:ua,typeName:ZodFirstPartyTypeKind$1.ZodNativeEnum,...processCreateParams$1(J)});let ZodPromise$1=class extends ZodType$1{unwrap(){return this._def.type}_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType$1.promise&&la.common.async===!1)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.promise,received:la.parsedType}),INVALID$1;const xa=la.parsedType===ZodParsedType$1.promise?la.data:Promise.resolve(la.data);return OK$1(xa.then(Aa=>this._def.type.parseAsync(Aa,{path:la.path,errorMap:la.common.contextualErrorMap})))}};ZodPromise$1.create=(ua,J)=>new ZodPromise$1({type:ua,typeName:ZodFirstPartyTypeKind$1.ZodPromise,...processCreateParams$1(J)});let ZodEffects$1=class extends ZodType$1{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind$1.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(J){const{status:la,ctx:xa}=this._processInputParams(J),Aa=this._def.effect||null,ba={addIssue:Sa=>{addIssueToContext$1(xa,Sa),Sa.fatal?la.abort():la.dirty()},get path(){return xa.path}};if(ba.addIssue=ba.addIssue.bind(ba),Aa.type==="preprocess"){const Sa=Aa.transform(xa.data,ba);if(xa.common.async)return Promise.resolve(Sa).then(async Ma=>{if(la.value==="aborted")return INVALID$1;const Ra=await this._def.schema._parseAsync({data:Ma,path:xa.path,parent:xa});return Ra.status==="aborted"?INVALID$1:Ra.status==="dirty"||la.value==="dirty"?DIRTY$1(Ra.value):Ra});{if(la.value==="aborted")return INVALID$1;const Ma=this._def.schema._parseSync({data:Sa,path:xa.path,parent:xa});return Ma.status==="aborted"?INVALID$1:Ma.status==="dirty"||la.value==="dirty"?DIRTY$1(Ma.value):Ma}}if(Aa.type==="refinement"){const Sa=Ma=>{const Ra=Aa.refinement(Ma,ba);if(xa.common.async)return Promise.resolve(Ra);if(Ra instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return Ma};if(xa.common.async===!1){const Ma=this._def.schema._parseSync({data:xa.data,path:xa.path,parent:xa});return Ma.status==="aborted"?INVALID$1:(Ma.status==="dirty"&&la.dirty(),Sa(Ma.value),{status:la.value,value:Ma.value})}else return this._def.schema._parseAsync({data:xa.data,path:xa.path,parent:xa}).then(Ma=>Ma.status==="aborted"?INVALID$1:(Ma.status==="dirty"&&la.dirty(),Sa(Ma.value).then(()=>({status:la.value,value:Ma.value}))))}if(Aa.type==="transform")if(xa.common.async===!1){const Sa=this._def.schema._parseSync({data:xa.data,path:xa.path,parent:xa});if(!isValid$2(Sa))return Sa;const Ma=Aa.transform(Sa.value,ba);if(Ma instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:la.value,value:Ma}}else return this._def.schema._parseAsync({data:xa.data,path:xa.path,parent:xa}).then(Sa=>isValid$2(Sa)?Promise.resolve(Aa.transform(Sa.value,ba)).then(Ma=>({status:la.value,value:Ma})):Sa);util$2.assertNever(Aa)}};ZodEffects$1.create=(ua,J,la)=>new ZodEffects$1({schema:ua,typeName:ZodFirstPartyTypeKind$1.ZodEffects,effect:J,...processCreateParams$1(la)}),ZodEffects$1.createWithPreprocess=(ua,J,la)=>new ZodEffects$1({schema:J,effect:{type:"preprocess",transform:ua},typeName:ZodFirstPartyTypeKind$1.ZodEffects,...processCreateParams$1(la)});let ZodOptional$1=class extends ZodType$1{_parse(J){return this._getType(J)===ZodParsedType$1.undefined?OK$1(void 0):this._def.innerType._parse(J)}unwrap(){return this._def.innerType}};ZodOptional$1.create=(ua,J)=>new ZodOptional$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodOptional,...processCreateParams$1(J)});let ZodNullable$1=class extends ZodType$1{_parse(J){return this._getType(J)===ZodParsedType$1.null?OK$1(null):this._def.innerType._parse(J)}unwrap(){return this._def.innerType}};ZodNullable$1.create=(ua,J)=>new ZodNullable$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodNullable,...processCreateParams$1(J)});let ZodDefault$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J);let xa=la.data;return la.parsedType===ZodParsedType$1.undefined&&(xa=this._def.defaultValue()),this._def.innerType._parse({data:xa,path:la.path,parent:la})}removeDefault(){return this._def.innerType}};ZodDefault$1.create=(ua,J)=>new ZodDefault$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodDefault,defaultValue:typeof J.default=="function"?J.default:()=>J.default,...processCreateParams$1(J)});let ZodCatch$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J),xa={...la,common:{...la.common,issues:[]}},Aa=this._def.innerType._parse({data:xa.data,path:xa.path,parent:{...xa}});return isAsync$1(Aa)?Aa.then(ba=>({status:"valid",value:ba.status==="valid"?ba.value:this._def.catchValue({get error(){return new ZodError$2(xa.common.issues)},input:xa.data})})):{status:"valid",value:Aa.status==="valid"?Aa.value:this._def.catchValue({get error(){return new ZodError$2(xa.common.issues)},input:xa.data})}}removeCatch(){return this._def.innerType}};ZodCatch$1.create=(ua,J)=>new ZodCatch$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodCatch,catchValue:typeof J.catch=="function"?J.catch:()=>J.catch,...processCreateParams$1(J)});let ZodNaN$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.nan){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.nan,received:xa.parsedType}),INVALID$1}return{status:"valid",value:J.data}}};ZodNaN$1.create=ua=>new ZodNaN$1({typeName:ZodFirstPartyTypeKind$1.ZodNaN,...processCreateParams$1(ua)});const BRAND$1=Symbol("zod_brand");let ZodBranded$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J),xa=la.data;return this._def.type._parse({data:xa,path:la.path,parent:la})}unwrap(){return this._def.type}},ZodPipeline$1=class XM extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.common.async)return(async()=>{const ba=await this._def.in._parseAsync({data:xa.data,path:xa.path,parent:xa});return ba.status==="aborted"?INVALID$1:ba.status==="dirty"?(la.dirty(),DIRTY$1(ba.value)):this._def.out._parseAsync({data:ba.value,path:xa.path,parent:xa})})();{const Aa=this._def.in._parseSync({data:xa.data,path:xa.path,parent:xa});return Aa.status==="aborted"?INVALID$1:Aa.status==="dirty"?(la.dirty(),{status:"dirty",value:Aa.value}):this._def.out._parseSync({data:Aa.value,path:xa.path,parent:xa})}}static create(J,la){return new XM({in:J,out:la,typeName:ZodFirstPartyTypeKind$1.ZodPipeline})}},ZodReadonly$1=class extends ZodType$1{_parse(J){const la=this._def.innerType._parse(J),xa=Aa=>(isValid$2(Aa)&&(Aa.value=Object.freeze(Aa.value)),Aa);return isAsync$1(la)?la.then(Aa=>xa(Aa)):xa(la)}unwrap(){return this._def.innerType}};ZodReadonly$1.create=(ua,J)=>new ZodReadonly$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodReadonly,...processCreateParams$1(J)});function custom$1(ua,J={},la){return ua?ZodAny$1.create().superRefine((xa,Aa)=>{var ba,Sa;if(!ua(xa)){const Ma=typeof J=="function"?J(xa):typeof J=="string"?{message:J}:J,Ra=(Sa=(ba=Ma.fatal)!==null&&ba!==void 0?ba:la)!==null&&Sa!==void 0?Sa:!0,Ia=typeof Ma=="string"?{message:Ma}:Ma;Aa.addIssue({code:"custom",...Ia,fatal:Ra})}}):ZodAny$1.create()}const late$1={object:ZodObject$1.lazycreate};var ZodFirstPartyTypeKind$1;(function(ua){ua.ZodString="ZodString",ua.ZodNumber="ZodNumber",ua.ZodNaN="ZodNaN",ua.ZodBigInt="ZodBigInt",ua.ZodBoolean="ZodBoolean",ua.ZodDate="ZodDate",ua.ZodSymbol="ZodSymbol",ua.ZodUndefined="ZodUndefined",ua.ZodNull="ZodNull",ua.ZodAny="ZodAny",ua.ZodUnknown="ZodUnknown",ua.ZodNever="ZodNever",ua.ZodVoid="ZodVoid",ua.ZodArray="ZodArray",ua.ZodObject="ZodObject",ua.ZodUnion="ZodUnion",ua.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ua.ZodIntersection="ZodIntersection",ua.ZodTuple="ZodTuple",ua.ZodRecord="ZodRecord",ua.ZodMap="ZodMap",ua.ZodSet="ZodSet",ua.ZodFunction="ZodFunction",ua.ZodLazy="ZodLazy",ua.ZodLiteral="ZodLiteral",ua.ZodEnum="ZodEnum",ua.ZodEffects="ZodEffects",ua.ZodNativeEnum="ZodNativeEnum",ua.ZodOptional="ZodOptional",ua.ZodNullable="ZodNullable",ua.ZodDefault="ZodDefault",ua.ZodCatch="ZodCatch",ua.ZodPromise="ZodPromise",ua.ZodBranded="ZodBranded",ua.ZodPipeline="ZodPipeline",ua.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind$1||(ZodFirstPartyTypeKind$1={}));const instanceOfType$1=(ua,J={message:`Input not instance of ${ua.name}`})=>custom$1(la=>la instanceof ua,J),stringType$1=ZodString$1.create,numberType$1=ZodNumber$1.create,nanType$1=ZodNaN$1.create,bigIntType$1=ZodBigInt$1.create,booleanType$1=ZodBoolean$1.create,dateType$1=ZodDate$1.create,symbolType$1=ZodSymbol$1.create,undefinedType$1=ZodUndefined$1.create,nullType$1=ZodNull$1.create,anyType$1=ZodAny$1.create,unknownType$1=ZodUnknown$1.create,neverType$1=ZodNever$1.create,voidType$1=ZodVoid$1.create,arrayType$1=ZodArray$1.create,objectType$1=ZodObject$1.create,strictObjectType$1=ZodObject$1.strictCreate,unionType$1=ZodUnion$1.create,discriminatedUnionType$1=ZodDiscriminatedUnion$1.create,intersectionType$1=ZodIntersection$1.create,tupleType$1=ZodTuple$1.create,recordType$1=ZodRecord$1.create,mapType$1=ZodMap$1.create,setType$1=ZodSet$1.create,functionType$1=ZodFunction$1.create,lazyType$1=ZodLazy$1.create,literalType$1=ZodLiteral$1.create,enumType$1=ZodEnum$1.create,nativeEnumType$1=ZodNativeEnum$1.create,promiseType$1=ZodPromise$1.create,effectsType$1=ZodEffects$1.create,optionalType$1=ZodOptional$1.create,nullableType$1=ZodNullable$1.create,preprocessType$1=ZodEffects$1.createWithPreprocess,pipelineType$1=ZodPipeline$1.create,ostring$1=()=>stringType$1().optional(),onumber$1=()=>numberType$1().optional(),oboolean$1=()=>booleanType$1().optional(),coerce$1={string:ua=>ZodString$1.create({...ua,coerce:!0}),number:ua=>ZodNumber$1.create({...ua,coerce:!0}),boolean:ua=>ZodBoolean$1.create({...ua,coerce:!0}),bigint:ua=>ZodBigInt$1.create({...ua,coerce:!0}),date:ua=>ZodDate$1.create({...ua,coerce:!0})},NEVER$1=INVALID$1;var z$3=Object.freeze({__proto__:null,defaultErrorMap:errorMap$1,setErrorMap:setErrorMap$1,getErrorMap:getErrorMap$1,makeIssue:makeIssue$1,EMPTY_PATH:EMPTY_PATH$1,addIssueToContext:addIssueToContext$1,ParseStatus:ParseStatus$1,INVALID:INVALID$1,DIRTY:DIRTY$1,OK:OK$1,isAborted:isAborted$1,isDirty:isDirty$1,isValid:isValid$2,isAsync:isAsync$1,get util(){return util$2},get objectUtil(){return objectUtil$1},ZodParsedType:ZodParsedType$1,getParsedType:getParsedType$1,ZodType:ZodType$1,datetimeRegex:datetimeRegex$1,ZodString:ZodString$1,ZodNumber:ZodNumber$1,ZodBigInt:ZodBigInt$1,ZodBoolean:ZodBoolean$1,ZodDate:ZodDate$1,ZodSymbol:ZodSymbol$1,ZodUndefined:ZodUndefined$1,ZodNull:ZodNull$1,ZodAny:ZodAny$1,ZodUnknown:ZodUnknown$1,ZodNever:ZodNever$1,ZodVoid:ZodVoid$1,ZodArray:ZodArray$1,ZodObject:ZodObject$1,ZodUnion:ZodUnion$1,ZodDiscriminatedUnion:ZodDiscriminatedUnion$1,ZodIntersection:ZodIntersection$1,ZodTuple:ZodTuple$1,ZodRecord:ZodRecord$1,ZodMap:ZodMap$1,ZodSet:ZodSet$1,ZodFunction:ZodFunction$1,ZodLazy:ZodLazy$1,ZodLiteral:ZodLiteral$1,ZodEnum:ZodEnum$1,ZodNativeEnum:ZodNativeEnum$1,ZodPromise:ZodPromise$1,ZodEffects:ZodEffects$1,ZodTransformer:ZodEffects$1,ZodOptional:ZodOptional$1,ZodNullable:ZodNullable$1,ZodDefault:ZodDefault$1,ZodCatch:ZodCatch$1,ZodNaN:ZodNaN$1,BRAND:BRAND$1,ZodBranded:ZodBranded$1,ZodPipeline:ZodPipeline$1,ZodReadonly:ZodReadonly$1,custom:custom$1,Schema:ZodType$1,ZodSchema:ZodType$1,late:late$1,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind$1},coerce:coerce$1,any:anyType$1,array:arrayType$1,bigint:bigIntType$1,boolean:booleanType$1,date:dateType$1,discriminatedUnion:discriminatedUnionType$1,effect:effectsType$1,enum:enumType$1,function:functionType$1,instanceof:instanceOfType$1,intersection:intersectionType$1,lazy:lazyType$1,literal:literalType$1,map:mapType$1,nan:nanType$1,nativeEnum:nativeEnumType$1,never:neverType$1,null:nullType$1,nullable:nullableType$1,number:numberType$1,object:objectType$1,oboolean:oboolean$1,onumber:onumber$1,optional:optionalType$1,ostring:ostring$1,pipeline:pipelineType$1,preprocess:preprocessType$1,promise:promiseType$1,record:recordType$1,set:setType$1,strictObject:strictObjectType$1,string:stringType$1,symbol:symbolType$1,transformer:effectsType$1,tuple:tupleType$1,undefined:undefinedType$1,union:unionType$1,unknown:unknownType$1,void:voidType$1,NEVER:NEVER$1,ZodIssueCode:ZodIssueCode$1,quotelessJson:quotelessJson$1,ZodError:ZodError$2});const urlAlphabet$1="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let random=ua=>crypto.getRandomValues(new Uint8Array(ua)),customRandom=(ua,J,la)=>{let xa=(2<<Math.log2(ua.length-1))-1,Aa=-~(1.6*xa*J/ua.length);return(ba=J)=>{let Sa="";for(;;){let Ma=la(Aa),Ra=Aa|0;for(;Ra--;)if(Sa+=ua[Ma[Ra]&xa]||"",Sa.length>=ba)return Sa}}},customAlphabet=(ua,J=21)=>customRandom(ua,J|0,random),nanoid$1=(ua=21)=>{let J="",la=crypto.getRandomValues(new Uint8Array(ua|=0));for(;ua--;)J+=urlAlphabet$1[la[ua]&63];return J};const index_browser=Object.freeze(Object.defineProperty({__proto__:null,customAlphabet,customRandom,nanoid:nanoid$1,random,urlAlphabet:urlAlphabet$1},Symbol.toStringTag,{value:"Module"}));var unitMappings$3={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},unitMappingAndVariantSuffixes$2=new Set;for(const[ua,J]of Object.entries(unitMappings$3)){unitMappingAndVariantSuffixes$2.add(ua);for(const la of Object.keys(J.variants))unitMappingAndVariantSuffixes$2.add(la)}function getBaseTscircuitUnit$3(ua){for(const[J,la]of Object.entries(unitMappings$3))if(ua in la.variants)return{baseUnit:la.baseUnit,conversionFactor:la.variants[ua]};return{baseUnit:ua,conversionFactor:1}}var si_prefix_multiplier$2={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},parseAndConvertSiUnit$3=ua=>{var Ma;if(typeof ua>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof ua=="string"&&ua.match(/^[\d\.]+$/))return{value:Number.parseFloat(ua),parsedUnit:null,unitOfValue:null};if(typeof ua=="number")return{value:ua,parsedUnit:null,unitOfValue:null};if(typeof ua=="object"&&"x"in ua&&"y"in ua){const{parsedUnit:Ra,unitOfValue:Ia}=parseAndConvertSiUnit$3(ua.x);return{parsedUnit:Ra,unitOfValue:Ia,value:{x:parseAndConvertSiUnit$3(ua.x).value,y:parseAndConvertSiUnit$3(ua.y).value}}}const la=(Ma=ua.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:Ma[0];if(!la)throw new Error(`Could not determine unit: "${ua}"`);const xa=la.split("").reverse().join(""),Aa=ua.slice(0,-xa.length);if(xa in si_prefix_multiplier$2&&!unitMappingAndVariantSuffixes$2.has(xa)){const Ra=si_prefix_multiplier$2[xa];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(Aa)*Ra}}const{baseUnit:ba,conversionFactor:Sa}=getBaseTscircuitUnit$3(xa);return{parsedUnit:xa,unitOfValue:ba,value:Sa*Number.parseFloat(Aa)}},resistance$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),capacitance$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),inductance$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),voltage$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),length$4=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),frequency$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),distance$6=length$4,current$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),time$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),rotation$5=z$3.string().or(z$3.number()).transform(ua=>typeof ua=="number"?ua:ua.endsWith("deg")?Number.parseFloat(ua.split("deg")[0]):ua.endsWith("rad")?Number.parseFloat(ua.split("rad")[0])*180/Math.PI:Number.parseFloat(ua)),battery_capacity$3=z$3.number().or(z$3.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),point$4=z$3.object({x:distance$6,y:distance$6}),position$4=point$4,point3$4=z$3.object({x:distance$6,y:distance$6,z:distance$6}),position3$2=point3$4,size$6=z$3.object({width:z$3.number(),height:z$3.number()}),getZodPrefixedIdWithDefault$3=ua=>z$3.string().optional().default(()=>`${ua}_${nanoid$1(10)}`),supplier_name$3=z$3.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base$3=z$3.object({type:z$3.literal("source_component"),ftype:z$3.string().optional(),source_component_id:z$3.string(),name:z$3.string(),manufacturer_part_number:z$3.string().optional(),supplier_part_numbers:z$3.record(supplier_name$3,z$3.array(z$3.string())).optional(),display_value:z$3.string().optional()}),source_simple_capacitor$3=source_component_base$3.extend({ftype:z$3.literal("simple_capacitor"),capacitance:capacitance$3}),source_simple_resistor$3=source_component_base$3.extend({ftype:z$3.literal("simple_resistor"),resistance:resistance$3}),source_simple_diode$3=source_component_base$3.extend({ftype:z$3.literal("simple_diode")}),source_simple_ground$3=source_component_base$3.extend({ftype:z$3.literal("simple_ground")}),source_simple_bug$3=source_component_base$3.extend({ftype:z$3.literal("simple_bug")}).describe("@deprecated"),source_simple_chip$3=source_component_base$3.extend({ftype:z$3.literal("simple_chip")}),source_led$3=source_simple_diode$3.extend({ftype:z$3.literal("led")}),source_simple_power_source$3=source_component_base$3.extend({ftype:z$3.literal("simple_power_source"),voltage:voltage$3}),source_simple_battery$3=source_component_base$3.extend({ftype:z$3.literal("simple_battery"),capacity:battery_capacity$3}),source_simple_inductor$3=source_component_base$3.extend({ftype:z$3.literal("simple_inductor"),inductance:inductance$3}),source_simple_push_button$2=source_component_base$3.extend({ftype:z$3.literal("simple_push_button")}),source_simple_potentiometer$2=source_component_base$3.extend({ftype:z$3.literal("simple_potentiometer"),max_resistance:resistance$3}),source_simple_crystal$2=source_component_base$3.extend({ftype:z$3.literal("simple_crystal"),frequency:z$3.number().describe("Frequency in Hz"),load_capacitance:z$3.number().optional().describe("Load capacitance in pF")}),source_simple_pin_header$2=source_component_base$3.extend({ftype:z$3.literal("simple_pin_header"),pin_count:z$3.number(),gender:z$3.enum(["male","female"]).optional().default("male")}),source_simple_resonator$2=source_component_base$3.extend({ftype:z$3.literal("simple_resonator"),load_capacitance:capacitance$3,equivalent_series_resistance:resistance$3.optional(),frequency:frequency$2}),source_simple_transistor$2=source_component_base$3.extend({ftype:z$3.literal("simple_transistor"),transistor_type:z$3.enum(["npn","pnp"])}),any_source_component$3=z$3.union([source_simple_resistor$3,source_simple_capacitor$3,source_simple_diode$3,source_simple_ground$3,source_simple_chip$3,source_simple_bug$3,source_led$3,source_simple_power_source$3,source_simple_battery$3,source_simple_inductor$3,source_simple_push_button$2,source_simple_potentiometer$2,source_simple_crystal$2,source_simple_pin_header$2,source_simple_resonator$2,source_simple_transistor$2]),source_port$3=z$3.object({type:z$3.literal("source_port"),pin_number:z$3.number().optional(),port_hints:z$3.array(z$3.string()).optional(),name:z$3.string(),source_port_id:z$3.string(),source_component_id:z$3.string()}),source_trace$3=z$3.object({type:z$3.literal("source_trace"),source_trace_id:z$3.string(),connected_source_port_ids:z$3.array(z$3.string()),connected_source_net_ids:z$3.array(z$3.string()),subcircuit_connectivity_map_key:z$3.string().optional()}),source_group$3=z$3.object({type:z$3.literal("source_group"),source_group_id:z$3.string(),name:z$3.string().optional()}),source_net$3=z$3.object({type:z$3.literal("source_net"),source_net_id:z$3.string(),name:z$3.string(),member_source_group_ids:z$3.array(z$3.string()),is_power:z$3.boolean().optional(),is_ground:z$3.boolean().optional(),is_digital_signal:z$3.boolean().optional(),is_analog_signal:z$3.boolean().optional(),trace_width:z$3.number().optional()}),schematic_box$3=z$3.object({type:z$3.literal("schematic_box"),schematic_component_id:z$3.string(),width:distance$6,height:distance$6,x:distance$6,y:distance$6}).describe("Draws a box on the schematic"),schematic_path$3=z$3.object({type:z$3.literal("schematic_path"),schematic_component_id:z$3.string(),fill_color:z$3.enum(["red","blue"]).optional(),is_filled:z$3.boolean().optional(),points:z$3.array(point$4)}),schematic_pin_styles$3=z$3.record(z$3.object({left_margin:length$4.optional(),right_margin:length$4.optional(),top_margin:length$4.optional(),bottom_margin:length$4.optional()})),schematic_component_port_arrangement_by_size$2=z$3.object({left_size:z$3.number(),right_size:z$3.number(),top_size:z$3.number().optional(),bottom_size:z$3.number().optional()}),schematic_component_port_arrangement_by_sides$2=z$3.object({left_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional()}),port_arrangement$2=z$3.union([schematic_component_port_arrangement_by_size$2,schematic_component_port_arrangement_by_sides$2]),schematic_component$3=z$3.object({type:z$3.literal("schematic_component"),rotation:rotation$5.default(0),size:size$6,center:point$4,source_component_id:z$3.string(),schematic_component_id:z$3.string(),pin_spacing:length$4.optional(),pin_styles:schematic_pin_styles$3.optional(),box_width:length$4.optional(),symbol_name:z$3.string().optional(),port_arrangement:port_arrangement$2.optional(),port_labels:z$3.record(z$3.string()).optional(),symbol_display_value:z$3.string().optional()}),schematic_line$3=z$3.object({type:z$3.literal("schematic_line"),schematic_component_id:z$3.string(),x1:distance$6,x2:distance$6,y1:distance$6,y2:distance$6}),schematic_trace$3=z$3.object({type:z$3.literal("schematic_trace"),schematic_trace_id:z$3.string(),source_trace_id:z$3.string(),junctions:z$3.array(z$3.object({x:z$3.number(),y:z$3.number()})),edges:z$3.array(z$3.object({from:z$3.object({x:z$3.number(),y:z$3.number()}),to:z$3.object({x:z$3.number(),y:z$3.number()}),is_crossing:z$3.boolean().optional(),from_schematic_port_id:z$3.string().optional(),to_schematic_port_id:z$3.string().optional()}))}),schematic_text$3=z$3.object({type:z$3.literal("schematic_text"),schematic_component_id:z$3.string(),schematic_text_id:z$3.string(),text:z$3.string(),position:z$3.object({x:distance$6,y:distance$6}),rotation:z$3.number().default(0),anchor:z$3.enum(["center","left","right","top","bottom"]).default("center"),color:z$3.string().default("#000000")}),schematic_port$3=z$3.object({type:z$3.literal("schematic_port"),schematic_port_id:z$3.string(),source_port_id:z$3.string(),schematic_component_id:z$3.string().optional(),center:point$4,facing_direction:z$3.enum(["up","down","left","right"]).optional(),distance_from_component_edge:z$3.number().optional(),side_of_component:z$3.enum(["top","bottom","left","right"]).optional(),true_ccw_index:z$3.number().optional(),pin_number:z$3.number().optional(),display_pin_label:z$3.string().optional()}).describe("Defines a port on a schematic component"),schematic_net_label$3=z$3.object({type:z$3.literal("schematic_net_label"),source_net_id:z$3.string(),center:point$4,anchor_position:point$4.optional(),anchor_side:z$3.enum(["top","bottom","left","right"]),text:z$3.string(),symbol_name:z$3.string().optional()}),schematic_error$3=z$3.object({type:z$3.literal("schematic_error"),schematic_error_id:z$3.string(),error_type:z$3.literal("schematic_port_not_found"),message:z$3.string()}).describe("Defines a schematic error on the schematic"),schematic_debug_object_base$3=z$3.object({type:z$3.literal("schematic_debug_object"),label:z$3.string().optional()}),schematic_debug_rect$3=schematic_debug_object_base$3.extend({shape:z$3.literal("rect"),center:point$4,size:size$6}),schematic_debug_line$3=schematic_debug_object_base$3.extend({shape:z$3.literal("line"),start:point$4,end:point$4}),schematic_debug_point$3=schematic_debug_object_base$3.extend({shape:z$3.literal("point"),center:point$4}),schematic_debug_object$3=z$3.discriminatedUnion("shape",[schematic_debug_rect$3,schematic_debug_line$3,schematic_debug_point$3]),schematic_voltage_probe$2=z$3.object({type:z$3.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$3.string(),position:point$4,schematic_trace_id:z$3.string(),voltage:voltage$3.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers$3=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string$3=z$3.enum(all_layers$3),layer_ref$3=layer_string$3.or(z$3.object({name:layer_string$3})).transform(ua=>typeof ua=="string"?ua:ua.name),visible_layer$3=z$3.enum(["top","bottom"]),pcb_route_hint$3=z$3.object({x:distance$6,y:distance$6,via:z$3.boolean().optional(),via_to_layer:layer_ref$3.optional()}),pcb_route_hints$2=z$3.array(pcb_route_hint$3),route_hint_point$3=z$3.object({x:distance$6,y:distance$6,via:z$3.boolean().optional(),to_layer:layer_ref$3.optional(),trace_width:distance$6.optional()}),pcb_component$3=z$3.object({type:z$3.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault$3("pcb_component"),source_component_id:z$3.string(),center:point$4,layer:layer_ref$3,rotation:rotation$5,width:length$4,height:length$4}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square$3=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$3("pcb_hole"),hole_shape:z$3.enum(["circle","square"]),hole_diameter:z$3.number(),x:distance$6,y:distance$6}),pcb_hole_circle_or_square_shape$2=pcb_hole_circle_or_square$3.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval$3=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$3("pcb_hole"),hole_shape:z$3.literal("oval"),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$6,y:distance$6}),pcb_hole_oval_shape$2=pcb_hole_oval$3.describe("Defines an oval hole on the PCB"),pcb_hole$3=pcb_hole_circle_or_square$3.or(pcb_hole_oval$3),pcb_plated_hole_circle$3=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.literal("circle"),outer_diameter:z$3.number(),hole_diameter:z$3.number(),x:distance$6,y:distance$6,layers:z$3.array(layer_ref$3),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$3("pcb_plated_hole")}),pcb_plated_hole_oval$3=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.enum(["oval","pill"]),outer_width:z$3.number(),outer_height:z$3.number(),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$6,y:distance$6,layers:z$3.array(layer_ref$3),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$3("pcb_plated_hole")}),pcb_plated_hole$3=z$3.union([pcb_plated_hole_circle$3,pcb_plated_hole_oval$3]),pcb_port$3=z$3.object({type:z$3.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault$3("pcb_port"),source_port_id:z$3.string(),pcb_component_id:z$3.string(),x:distance$6,y:distance$6,layers:z$3.array(layer_ref$3)}).describe("Defines a port on the PCB"),pcb_smtpad_circle$3=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault$3("pcb_smtpad"),x:distance$6,y:distance$6,radius:z$3.number(),layer:layer_ref$3,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rect$3=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$3("pcb_smtpad"),x:distance$6,y:distance$6,width:z$3.number(),height:z$3.number(),layer:layer_ref$3,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rotated_rect$2=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$3("pcb_smtpad"),x:distance$6,y:distance$6,width:z$3.number(),height:z$3.number(),ccw_rotation:rotation$5,layer:layer_ref$3,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad$3=z$3.union([pcb_smtpad_circle$3,pcb_smtpad_rect$3,pcb_smtpad_rotated_rect$2]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle$3=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$3("pcb_solder_paste"),x:distance$6,y:distance$6,radius:z$3.number(),layer:layer_ref$3,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste_rect$3=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$3("pcb_solder_paste"),x:distance$6,y:distance$6,width:z$3.number(),height:z$3.number(),layer:layer_ref$3,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste$3=z$3.union([pcb_solder_paste_circle$3,pcb_solder_paste_rect$3]).describe("Defines solderpaste on the PCB"),pcb_text$3=z$3.object({type:z$3.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault$3("pcb_text"),text:z$3.string(),center:point$4,layer:layer_ref$3,width:length$4,height:length$4,lines:z$3.number(),align:z$3.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire$3=z$3.object({route_type:z$3.literal("wire"),x:distance$6,y:distance$6,width:distance$6,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$3}),pcb_trace_route_point_via$3=z$3.object({route_type:z$3.literal("via"),x:distance$6,y:distance$6,from_layer:z$3.string(),to_layer:z$3.string()}),pcb_trace_route_point$2=z$3.union([pcb_trace_route_point_wire$3,pcb_trace_route_point_via$3]),pcb_trace$3=z$3.object({type:z$3.literal("pcb_trace"),source_trace_id:z$3.string().optional(),pcb_component_id:z$3.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault$3("pcb_trace"),route_thickness_mode:z$3.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:z$3.number().optional(),should_round_corners:z$3.boolean().optional(),route:z$3.array(z$3.union([z$3.object({route_type:z$3.literal("wire"),x:distance$6,y:distance$6,width:distance$6,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$3}),z$3.object({route_type:z$3.literal("via"),x:distance$6,y:distance$6,from_layer:z$3.string(),to_layer:z$3.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error$3=z$3.object({type:z$3.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault$3("pcb_trace_error"),error_type:z$3.literal("pcb_trace_error"),message:z$3.string(),center:point$4.optional(),pcb_trace_id:z$3.string(),source_trace_id:z$3.string(),pcb_component_ids:z$3.array(z$3.string()),pcb_port_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB"),pcb_port_not_matched_error$3=z$3.object({type:z$3.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault$3("pcb_error"),message:z$3.string(),pcb_component_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB where a port is not matched"),pcb_via$3=z$3.object({type:z$3.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault$3("pcb_via"),x:distance$6,y:distance$6,outer_diameter:distance$6.default("0.6mm"),hole_diameter:distance$6.default("0.25mm"),from_layer:layer_ref$3.optional(),to_layer:layer_ref$3.optional(),layers:z$3.array(layer_ref$3),pcb_trace_id:z$3.string().optional()}).describe("Defines a via on the PCB"),pcb_board$3=z$3.object({type:z$3.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault$3("pcb_board"),width:length$4,height:length$4,center:point$4,thickness:length$4.optional().default(1.4),num_layers:z$3.number().optional().default(4),outline:z$3.array(point$4).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error$3=z$3.object({type:z$3.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault$3("pcb_placement_error"),message:z$3.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint$3=z$3.object({type:z$3.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault$3("pcb_trace_hint"),pcb_port_id:z$3.string(),pcb_component_id:z$3.string(),route:z$3.array(route_hint_point$3)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line$3=z$3.object({type:z$3.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_line"),pcb_component_id:z$3.string(),stroke_width:distance$6.default("0.1mm"),x1:distance$6,y1:distance$6,x2:distance$6,y2:distance$6,layer:visible_layer$3}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path$3=z$3.object({type:z$3.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_path"),pcb_component_id:z$3.string(),layer:visible_layer$3,route:z$3.array(point$4),stroke_width:length$4}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text$3=z$3.object({type:z$3.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_text"),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$6.default("0.2mm"),pcb_component_id:z$3.string(),text:z$3.string(),ccw_rotation:z$3.number().optional(),layer:layer_ref$3,is_mirrored:z$3.boolean().default(!1).optional(),anchor_position:point$4.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),pcb_silkscreen_rect$3=z$3.object({type:z$3.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_rect"),pcb_component_id:z$3.string(),center:point$4,width:length$4,height:length$4,layer:layer_ref$3}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle$3=z$3.object({type:z$3.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_circle"),pcb_component_id:z$3.string(),center:point$4,radius:length$4,layer:visible_layer$3}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval$3=z$3.object({type:z$3.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_oval"),pcb_component_id:z$3.string(),center:point$4,radius_x:distance$6,radius_y:distance$6,layer:visible_layer$3}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text$3=z$3.object({type:z$3.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault$3("pcb_fabrication_note_text"),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$6.default("1mm"),pcb_component_id:z$3.string(),text:z$3.string(),layer:visible_layer$3,anchor_position:point$4.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:z$3.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),pcb_fabrication_note_path$3=z$3.object({type:z$3.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault$3("pcb_fabrication_note_path"),pcb_component_id:z$3.string(),layer:layer_ref$3,route:z$3.array(point$4),stroke_width:length$4,color:z$3.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout$3=z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("rect"),center:point$4,width:distance$6,height:distance$6,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()}).or(z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("circle"),center:point$4,radius:distance$6,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()})),pcb_missing_footprint_error$2=z$3.object({type:z$3.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault$3("pcb_missing_footprint_error"),error_type:z$3.literal("pcb_missing_footprint_error"),source_component_id:z$3.string(),message:z$3.string()}).describe("Defines a missing footprint error on the PCB"),pcb_manual_edit_conflict_error$2=z$3.object({type:z$3.literal("pcb_manual_edit_conflict_error"),pcb_error_id:getZodPrefixedIdWithDefault$3("pcb_manual_edit_conflict_error"),message:z$3.string(),pcb_component_id:z$3.string(),source_component_id:z$3.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),pcb_group$2=z$3.object({type:z$3.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault$3("pcb_group"),width:length$4,height:length$4,center:point$4,pcb_component_ids:z$3.array(z$3.string()),name:z$3.string().optional(),description:z$3.string().optional()}).describe("Defines a group of components on the PCB"),cad_component$3=z$3.object({type:z$3.literal("cad_component"),cad_component_id:z$3.string(),pcb_component_id:z$3.string(),source_component_id:z$3.string(),position:point3$4,rotation:point3$4.optional(),size:point3$4.optional(),layer:layer_ref$3.optional(),footprinter_string:z$3.string().optional(),model_obj_url:z$3.string().optional(),model_stl_url:z$3.string().optional(),model_3mf_url:z$3.string().optional(),model_jscad:z$3.any().optional()}).describe("Defines a component on the PCB"),any_circuit_element$2=z$3.union([source_trace$3,source_port$3,any_source_component$3,source_led$3,source_net$3,source_group$3,source_simple_bug$3,source_simple_chip$3,source_simple_capacitor$3,source_simple_diode$3,source_simple_resistor$3,source_simple_power_source$3,source_simple_battery$3,source_simple_inductor$3,source_simple_pin_header$2,source_simple_resonator$2,source_simple_transistor$2,source_simple_potentiometer$2,source_simple_push_button$2,pcb_component$3,pcb_hole$3,pcb_missing_footprint_error$2,pcb_manual_edit_conflict_error$2,pcb_plated_hole$3,pcb_keepout$3,pcb_port$3,pcb_text$3,pcb_trace$3,pcb_via$3,pcb_smtpad$3,pcb_solder_paste$3,pcb_board$3,pcb_group$2,pcb_trace_hint$3,pcb_silkscreen_line$3,pcb_silkscreen_path$3,pcb_silkscreen_text$3,pcb_silkscreen_rect$3,pcb_silkscreen_circle$3,pcb_silkscreen_oval$3,pcb_trace_error$3,pcb_placement_error$3,pcb_port_not_matched_error$3,pcb_fabrication_note_path$3,pcb_fabrication_note_text$3,schematic_box$3,schematic_text$3,schematic_line$3,schematic_component$3,schematic_port$3,schematic_trace$3,schematic_path$3,schematic_error$3,schematic_net_label$3,schematic_debug_object$3,schematic_voltage_probe$2,cad_component$3]),any_soup_element$2=any_circuit_element$2;const Soup$1=Object.freeze(Object.defineProperty({__proto__:null,all_layers:all_layers$3,any_circuit_element:any_circuit_element$2,any_soup_element:any_soup_element$2,any_source_component:any_source_component$3,battery_capacity:battery_capacity$3,cad_component:cad_component$3,capacitance:capacitance$3,current:current$2,distance:distance$6,frequency:frequency$2,getZodPrefixedIdWithDefault:getZodPrefixedIdWithDefault$3,inductance:inductance$3,layer_ref:layer_ref$3,layer_string:layer_string$3,length:length$4,pcb_board:pcb_board$3,pcb_component:pcb_component$3,pcb_fabrication_note_path:pcb_fabrication_note_path$3,pcb_fabrication_note_text:pcb_fabrication_note_text$3,pcb_group:pcb_group$2,pcb_hole:pcb_hole$3,pcb_hole_circle_or_square_shape:pcb_hole_circle_or_square_shape$2,pcb_hole_oval_shape:pcb_hole_oval_shape$2,pcb_keepout:pcb_keepout$3,pcb_manual_edit_conflict_error:pcb_manual_edit_conflict_error$2,pcb_missing_footprint_error:pcb_missing_footprint_error$2,pcb_placement_error:pcb_placement_error$3,pcb_plated_hole:pcb_plated_hole$3,pcb_port:pcb_port$3,pcb_port_not_matched_error:pcb_port_not_matched_error$3,pcb_route_hint:pcb_route_hint$3,pcb_route_hints:pcb_route_hints$2,pcb_silkscreen_circle:pcb_silkscreen_circle$3,pcb_silkscreen_line:pcb_silkscreen_line$3,pcb_silkscreen_oval:pcb_silkscreen_oval$3,pcb_silkscreen_path:pcb_silkscreen_path$3,pcb_silkscreen_rect:pcb_silkscreen_rect$3,pcb_silkscreen_text:pcb_silkscreen_text$3,pcb_smtpad:pcb_smtpad$3,pcb_solder_paste:pcb_solder_paste$3,pcb_text:pcb_text$3,pcb_trace:pcb_trace$3,pcb_trace_error:pcb_trace_error$3,pcb_trace_hint:pcb_trace_hint$3,pcb_trace_route_point:pcb_trace_route_point$2,pcb_trace_route_point_via:pcb_trace_route_point_via$3,pcb_trace_route_point_wire:pcb_trace_route_point_wire$3,pcb_via:pcb_via$3,point:point$4,point3:point3$4,port_arrangement:port_arrangement$2,position:position$4,position3:position3$2,resistance:resistance$3,rotation:rotation$5,route_hint_point:route_hint_point$3,schematic_box:schematic_box$3,schematic_component:schematic_component$3,schematic_component_port_arrangement_by_sides:schematic_component_port_arrangement_by_sides$2,schematic_component_port_arrangement_by_size:schematic_component_port_arrangement_by_size$2,schematic_debug_line:schematic_debug_line$3,schematic_debug_object:schematic_debug_object$3,schematic_debug_object_base:schematic_debug_object_base$3,schematic_debug_point:schematic_debug_point$3,schematic_debug_rect:schematic_debug_rect$3,schematic_error:schematic_error$3,schematic_line:schematic_line$3,schematic_net_label:schematic_net_label$3,schematic_path:schematic_path$3,schematic_pin_styles:schematic_pin_styles$3,schematic_port:schematic_port$3,schematic_text:schematic_text$3,schematic_trace:schematic_trace$3,schematic_voltage_probe:schematic_voltage_probe$2,size:size$6,source_component_base:source_component_base$3,source_group:source_group$3,source_led:source_led$3,source_net:source_net$3,source_port:source_port$3,source_simple_battery:source_simple_battery$3,source_simple_bug:source_simple_bug$3,source_simple_capacitor:source_simple_capacitor$3,source_simple_chip:source_simple_chip$3,source_simple_crystal:source_simple_crystal$2,source_simple_diode:source_simple_diode$3,source_simple_ground:source_simple_ground$3,source_simple_inductor:source_simple_inductor$3,source_simple_pin_header:source_simple_pin_header$2,source_simple_potentiometer:source_simple_potentiometer$2,source_simple_power_source:source_simple_power_source$3,source_simple_push_button:source_simple_push_button$2,source_simple_resistor:source_simple_resistor$3,source_simple_resonator:source_simple_resonator$2,source_simple_transistor:source_simple_transistor$2,source_trace:source_trace$3,supplier_name:supplier_name$3,time:time$2,visible_layer:visible_layer$3,voltage:voltage$3},Symbol.toStringTag,{value:"Module"}));var __defProp$p=Object.defineProperty,__export$5=(ua,J)=>{for(var la in J)__defProp$p(ua,la,{get:J[la],enumerable:!0})},fn_exports$1={};__export$5(fn_exports$1,{axial:()=>axial$1,bga:()=>bga$1,breakoutheaders:()=>breakoutheaders,cap:()=>cap$1,dfn:()=>dfn$1,diode:()=>diode$1,dip:()=>dip$1,led:()=>led$1,lqfp:()=>lqfp$1,mlp:()=>mlp$1,ms012:()=>ms012$1,ms013:()=>ms013$1,pinrow:()=>pinrow$1,pushbutton:()=>pushbutton$1,qfn:()=>qfn$1,qfp:()=>qfp$1,quad:()=>quad$1,res:()=>res$1,sod123:()=>sod123$1,soic:()=>soic$1,sot23:()=>sot23$1,sot235:()=>sot235$1,sot236:()=>sot236$1,sot363:()=>sot363$1,sot563:()=>sot563$1,sot723:()=>sot723$1,ssop:()=>ssop$1,stampboard:()=>stampboard$1,stampreceiver:()=>stampreceiver$1,tssop:()=>tssop$1});var u_curve$1=Array.from({length:9},(ua,J)=>Math.cos(J/8*Math.PI-Math.PI)).map(ua=>({x:ua,y:-Math.sqrt(1-ua**2)})),platedhole$1=(ua,J,la,xa,Aa)=>({type:"pcb_plated_hole",shape:"circle",x:J,y:la,hole_diameter:mm(xa),outer_diameter:mm(Aa),pcb_port_id:"",layers:["top","bottom"],port_hints:[ua.toString()]}),silkscreenRef$1=(ua,J,la)=>({type:"pcb_silkscreen_text",pcb_silkscreen_text_id:"silkscreen_text_1",font:"tscircuit2024",font_size:la,pcb_component_id:"pcb_component_1",text:"{REF}",layer:"top",anchor_position:{x:ua,y:J},anchor_alignment:"center"}),extendDipDef$1=ua=>z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(6),wide:z$3.boolean().optional(),narrow:z$3.boolean().optional(),w:length$4.optional(),p:length$4.default(length$4.parse(ua.p??"2.54mm")),id:length$4.optional(),od:length$4.optional()}).transform(J=>(!J.id&&!J.od?(J.id=length$4.parse("1.0mm"),J.od=length$4.parse("1.5mm")):J.id?J.od||(J.od=J.id*(1.5/1)):J.id=J.od*(1/1.5),J.w||(J.wide?J.w=length$4.parse("600mil"):J.narrow?J.w=length$4.parse("300mil"):J.w=length$4.parse(ua.w??"300mil")),J)),dip_def$1=extendDipDef$1({}),getCcwDipCoords$1=(ua,J,la,xa)=>{const Aa=ua/2,ba=J<=Aa,Sa=Aa-1,Ma=xa,Ra=Ma*Sa;return ba?{x:-la/2,y:Ra/2-(J-1)*Ma}:{x:la/2,y:-Ra/2+(J-Aa-1)*Ma}},dip$1=ua=>{const J=dip_def$1.parse(ua),la=[];for(let Ra=0;Ra<J.num_pins;Ra++){const{x:Ia,y:La}=getCcwDipCoords$1(J.num_pins,Ra+1,J.w,J.p??2.54);la.push(platedhole$1(Ra+1,Ia,La,J.id??"0.8mm",J.od??"1mm"))}const xa=J.w-J.od-.4,Aa=(J.num_pins/2-1)*J.p+J.od+.4,ba={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-xa/2,y:-Aa/2},{x:-xa/2,y:Aa/2},...u_curve$1.map(({x:Ra,y:Ia})=>({x:Ra*xa/6,y:Ia*xa/6+Aa/2})),{x:xa/2,y:Aa/2},{x:xa/2,y:-Aa/2},{x:-xa/2,y:-Aa/2}],type:"pcb_silkscreen_path",stroke_width:.1},Sa=[];for(let Ra=0;Ra<J.num_pins;Ra++){const Ia=Ra<J.num_pins/2,La=Ia?-J.w/2-J.p/2-.2:J.p/2+J.w/2+.2,Fa=Ia?(-Aa+1.6)/2+Ra*J.p:(-Aa+1.6)/2+(Ra-J.num_pins/2)*J.p,ka={type:"pcb_fabrication_note_text",layer:"top",pcb_component_id:`pin_${Ra+1}`,pcb_silkscreen_text_id:`pin_${Ra+1}`,text:`{pin${Ra+1}}`,anchor_position:{x:La,y:Fa},font_size:.3,font_color:"red",font:"tscircuit2024",anchor_alignment:"top-left"};Sa.push(ka)}const Ma=silkscreenRef$1(0,Aa/2+.5,.4);return{circuitJson:[...la,ba,Ma,...Sa],parameters:J}},rectpad$1=(ua,J,la,xa,Aa)=>({type:"pcb_smtpad",x:J,y:la,width:xa,height:Aa,layer:"top",shape:"rect",pcb_smtpad_id:"",port_hints:Array.isArray(ua)?ua.map(ba=>ba.toString()):[ua.toString()]}),sizes$1=[{imperial:"01005",metric:"0402",Z_mm_min:.58,G_mm_min:.18,X_mm_min:.21,C_mm_ref:.038},{imperial:"0201",metric:"0603",Z_mm_min:.9,G_mm_min:.3,X_mm_min:.3,C_mm_ref:.6},{imperial:"0402",metric:"1005",Z_mm_min:1.6,G_mm_min:.4,X_mm_min:.7,C_mm_ref:1},{imperial:"0603",metric:"1608",Z_mm_min:2.6,G_mm_min:.6,X_mm_min:1,C_mm_ref:1.7},{imperial:"0805",metric:"2012",Z_mm_min:3,G_mm_min:.6,X_mm_min:1.2,C_mm_ref:1.9},{imperial:"1206",metric:"3216",Z_mm_min:4.2,G_mm_min:1.2,X_mm_min:1.4,C_mm_ref:2.8},{imperial:"1210",metric:"3225",Z_mm_min:3.2,G_mm_min:1,X_mm_min:2.5,C_mm_ref:2},{imperial:"2010",metric:"5025",Z_mm_min:5,G_mm_min:1.2,X_mm_min:2.5,C_mm_ref:3.6},{imperial:"2512",metric:"6332",Z_mm_min:6.3,G_mm_min:1.2,X_mm_min:3.2,C_mm_ref:4.5}],metricMap$1=sizes$1.reduce((ua,J)=>(ua[J.metric]=J,ua),{}),imperialMap$1=sizes$1.reduce((ua,J)=>(ua[J.imperial]=J,ua),{});z$3.object({tht:z$3.boolean(),p:length$4,pw:length$4.optional(),ph:length$4.optional(),metric:distance$6.optional(),imperial:distance$6.optional(),w:length$4.optional(),h:length$4.optional()});var deriveXFromH$1=ua=>.079*ua**2+.94*ua-.009,deriveZFromW$1=ua=>1.09*ua+.6,deriveGFromW$1=ua=>.59*ua-.31,deriveCFromW$1=ua=>-.01*ua**2+.94*ua+.03,passive$1=ua=>{let{tht:J,p:la,pw:xa,ph:Aa,metric:ba,imperial:Sa,w:Ma,h:Ra}=ua;if(typeof Ma=="string"&&(Ma=mm_default(Ma)),typeof Ra=="string"&&(Ra=mm_default(Ra)),typeof la=="string"&&(la=mm_default(la)),typeof xa=="string"&&(xa=mm_default(xa)),typeof Aa=="string"&&(Aa=mm_default(Aa)),Ra>Ma)throw new Error("height cannot be greater than width (rotated footprint not yet implemented)");let Ia;if(ba&&(Ia=metricMap$1[ba]),Sa&&(Ia=imperialMap$1[Sa]),!Ia&&Ma&&Ra&&!xa&&!Aa&&(Ia={imperial:"custom",metric:"custom",Z_mm_min:deriveZFromW$1(Ma),G_mm_min:deriveGFromW$1(Ma),X_mm_min:deriveXFromH$1(Ra),C_mm_ref:deriveCFromW$1(Ma)}),Ia&&(Ma=Ia.Z_mm_min,Ra=Ia.X_mm_min,la=Ia.C_mm_ref,xa=(Ia.Z_mm_min-Ia.G_mm_min)/2,Aa=(Ia.Z_mm_min-Ia.G_mm_min)/2),xa===void 0)throw new Error("could not infer pad width");if(Aa===void 0)throw new Error("could not infer pad width");const La=silkscreenRef$1(0,.9,.2);return J?[platedhole$1(1,-la/2,0,xa,xa*1/.8),platedhole$1(2,la/2,0,xa,xa*1/.8),La]:[rectpad$1(["1","left"],-la/2,0,xa,Aa),rectpad$1(["2","right"],la/2,0,xa,Aa),La]},diode$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),cap$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),led$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),res$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),ALPHABET$1="ABCDEFGHIJKLMNOPQRSTUVWXYZ",dim2d$1=z$3.string().transform(ua=>{const[J,la]=ua.split(/[x ]/);return{x:parseFloat(J),y:parseFloat(la)}}).pipe(z$3.object({x:z$3.number(),y:z$3.number()})),function_call$1=z$3.string().or(z$3.array(z$3.any())).transform(ua=>Array.isArray(ua)?ua:(ua.startsWith("(")&&ua.endsWith(")")&&(ua=ua.slice(1,-1)),ua.split(",").map(J=>{const la=Number(J);return isNaN(la)?J:la}))).pipe(z$3.array(z$3.string().or(z$3.number()))),bga_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(64),grid:dim2d$1.optional(),p:distance$6.default("0.8mm"),w:length$4.optional(),h:length$4.optional(),ball:length$4.optional().describe("ball diameter"),pad:length$4.optional().describe("pad width/height"),tlorigin:z$3.boolean().optional(),blorigin:z$3.boolean().optional(),trorigin:z$3.boolean().optional(),brorigin:z$3.boolean().optional(),missing:function_call$1.default([])}).transform(ua=>{let J="tl";if(ua.blorigin&&(J="bl"),ua.trorigin&&(J="tr"),ua.brorigin&&(J="br"),!ua.grid){const xa=Math.ceil(Math.sqrt(ua.num_pins));ua.grid={x:xa,y:xa}}return ua.missing&&(ua.missing=ua.missing.map(xa=>{if(typeof xa=="number")return xa;if(xa==="center")return"center";if(xa==="topleft")return"topleft";const Aa=xa.match(/([A-Z]+)(\d+)/);if(!Aa)return xa;const ba=ALPHABET$1.indexOf(Aa[1]),Sa=Number.parseInt(Aa[2])-1;return ba*ua.grid.x+Sa+1})),{...ua,origin:J}}),bga$1=ua=>{const J=bga_def$1.parse(ua);let{num_pins:la,grid:xa,p:Aa,w:ba,h:Sa,ball:Ma,pad:Ra,missing:Ia}=J;Ma??(Ma=.75/1.27*Aa),Ra??(Ra=Ma*.8);const La=[],Fa=(Ia??[]).filter(il=>typeof il=="number"),ka=xa.x*xa.y-la;if(Ia.length===0&&ka>0&&(Math.sqrt(ka)%1===0?Ia.push("center"):ka===1&&Ia.push("topleft")),Ia!=null&&Ia.includes("center")){const il=Math.floor(Math.sqrt(ka)),nl=Math.floor((xa.x-il)/2),sl=Math.floor((xa.y-il)/2);for(let ll=sl;ll<sl+il;ll++)for(let dl=nl;dl<nl+il;dl++)Fa.push(ll*xa.x+dl+1)}Ia!=null&&Ia.includes("topleft")&&Fa.push(1);const el=new Set(Fa);let tl=0;for(let il=0;il<xa.y;il++)for(let nl=0;nl<xa.x;nl++){let sl=il*xa.x+nl+1;if(el.has(sl)){tl++;continue}sl-=tl;const ll=(nl-(xa.x-1)/2)*Aa,dl=-(il-(xa.y-1)/2)*Aa;La.push(rectpad$1([sl,`${ALPHABET$1[il]}${nl+1}`],ll,dl,Ra,Ra))}const rl=silkscreenRef$1(0,xa.y*Aa/2,.2);return{circuitJson:[...La,rl],parameters:J}},extendSoicDef$1=ua=>z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(8),w:length$4.default(length$4.parse(ua.w??"5.3mm")),p:length$4.default(length$4.parse(ua.p??"1.27mm")),pw:length$4.optional(),pl:length$4.optional(),legsoutside:z$3.boolean().optional().default(ua.legsoutside??!1)}).transform(J=>(!J.pw&&!J.pl?(J.pw=length$4.parse("0.6mm"),J.pl=length$4.parse("1.0mm")):J.pw?J.pl||(J.pl=J.pw*(1/.6)):J.pw=J.pl*(.6/1),J)),soic_def$1=extendSoicDef$1({}),getCcwSoicCoords$1=ua=>{ua.widthincludeslegs!==void 0&&(ua.legsoutside=!ua.widthincludeslegs);const{num_pins:J,pn:la,w:xa,p:Aa,pl:ba,legsoutside:Sa}=ua,Ma=J/2,Ra=la<=Ma,Ia=Ma-1,La=Aa,Fa=La*Ia,ka=Sa?ba/2:-ba/2;return Ra?{x:-xa/2-ka,y:Fa/2-(la-1)*La}:{x:xa/2+ka,y:-Fa/2+(la-Ma-1)*La}},soic$1=ua=>{const J=soic_def$1.parse(ua);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},soicWithoutParsing$1=ua=>{const J=[];for(let Ma=0;Ma<ua.num_pins;Ma++){const{x:Ra,y:Ia}=getCcwSoicCoords$1({num_pins:ua.num_pins,pn:Ma+1,w:ua.w,p:ua.p??1.27,pl:ua.pl,legsoutside:ua.legsoutside});J.push(rectpad$1(Ma+1,Ra,Ia,ua.pl??"1mm",ua.pw??"0.6mm"))}const la=Math.min(1,ua.p/2),xa=ua.w-(ua.legsoutside?0:ua.pl*2)-.2,Aa=(ua.num_pins/2-1)*ua.p+ua.pw+la,ba=silkscreenRef$1(0,Aa/2+.4,Aa/12),Sa={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",stroke_width:.1,route:[{x:-xa/2,y:-Aa/2},{x:-xa/2,y:Aa/2},...u_curve$1.map(({x:Ma,y:Ra})=>({x:Ma*xa/6,y:Ra*xa/6+Aa/2})),{x:xa/2,y:Aa/2},{x:xa/2,y:-Aa/2},{x:-xa/2,y:-Aa/2}]};return[...J,Sa,ba]},pin_order_specifier$1=z$3.enum(["leftside","topside","rightside","bottomside","toppin","bottompin","leftpin","rightpin"]),getQuadPinMap$2=({num_pins:ua,cw:J,ccw:la,startingpin:xa})=>{const Aa=[],ba=ua/4;let Sa=1;const Ma={};for(const Ra of xa??[])Ma[Ra]=!0;!Ma.leftside&&!Ma.topside&&!Ma.rightside&&!Ma.bottomside&&(Ma.leftside=!0),!Ma.bottompin&&!Ma.leftpin&&!Ma.rightpin&&!Ma.toppin&&(Ma.leftside?Ma.toppin=!0:Ma.topside?Ma.rightpin=!0:Ma.rightside?Ma.bottompin=!0:Ma.bottomside&&(Ma.leftpin=!0)),Ma.leftside&&Ma.toppin?Sa=1:Ma.leftside&&Ma.bottompin?Sa=ba:Ma.bottomside&&Ma.leftpin?Sa=ba+1:Ma.bottomside&&Ma.rightpin?Sa=ba*2:Ma.rightside&&Ma.bottompin?Sa=ba*2+1:Ma.rightside&&Ma.toppin?Sa=ba*3:Ma.topside&&Ma.rightpin?Sa=ba*3+1:Ma.topside&&Ma.leftpin&&(Sa=ba*4),Aa.push(-1);for(let Ra=0;Ra<ua;Ra++)Aa[Sa]=Ra+1,la||!J?(Sa++,Sa>ua&&(Sa=1)):(Sa--,Sa<1&&(Sa=ua));return Aa},base_quad_def$1=z$3.object({fn:z$3.string(),cc:z$3.boolean().default(!0).optional(),ccw:z$3.boolean().default(!0).optional(),startingpin:z$3.string().or(z$3.array(pin_order_specifier$1)).transform(ua=>typeof ua=="string"?ua.slice(1,-1).split(","):ua).pipe(z$3.array(pin_order_specifier$1)).optional(),num_pins:z$3.number().optional().default(64),w:length$4.optional(),h:length$4.optional(),p:length$4.default(length$4.parse("0.5mm")),pw:length$4.optional(),pl:length$4.optional(),thermalpad:z$3.union([z$3.literal(!0),dim2d$1]).optional(),legsoutside:z$3.boolean().optional()}),quadTransform$1=ua=>{ua.w&&!ua.h?ua.h=ua.w:!ua.w&&ua.h&&(ua.w=ua.h);const J=ua.num_pins/4;if(!ua.p&&!ua.pw&&!ua.pl&&ua.w){const la=J+4;ua.p=ua.w/la}return!ua.p&&ua.w&&ua.h&&ua.pw&&ua.pl&&(ua.p=(ua.w-ua.pl*2)/(J-1)),!ua.w&&!ua.h&&ua.p&&(ua.w=ua.p*(J+4),ua.h=ua.w),ua.p&&!ua.pw&&!ua.pl?(ua.pw=ua.p/2,ua.pl=ua.p/2):ua.pw?ua.pl||(ua.pl=ua.pw*(1/.6)):ua.pw=ua.pl*(.6/1),ua},quad_def$1=base_quad_def$1.transform(quadTransform$1),SIDES_CCW$1=["left","bottom","right","top"],getQuadCoords$2=ua=>{const{pin_count:J,pn:la,w:xa,h:Aa,p:ba,pl:Sa,legsoutside:Ma}=ua,Ra=J/4,Ia=SIDES_CCW$1[Math.floor((la-1)/Ra)],La=(la-1)%Ra,Fa=ba*(Ra-1),ka=ba*(Ra-1),el=Ma?Sa/2:-Sa/2;switch(Ia){case"left":return{x:-xa/2-el,y:ka/2-La*ba,o:"vert"};case"bottom":return{x:-Fa/2+La*ba,y:-Aa/2-el,o:"horz"};case"right":return{x:xa/2+el,y:-ka/2+La*ba,o:"vert"};case"top":return{x:Fa/2-La*ba,y:Aa/2+el,o:"horz"};default:throw new Error("Invalid pin number")}},quad$1=ua=>{const J=quad_def$1.parse(ua),la=[],xa=getQuadPinMap$2(J),Aa=J.num_pins/4;for(let Ma=0;Ma<J.num_pins;Ma++){const{x:Ra,y:Ia,o:La}=getQuadCoords$2({pin_count:J.num_pins,pn:Ma+1,w:J.w,h:J.h,p:J.p??.5,pl:J.pl,legsoutside:J.legsoutside});let Fa=J.pw,ka=J.pl;La==="vert"&&([Fa,ka]=[ka,Fa]);const el=xa[Ma+1];la.push(rectpad$1(el,Ra,Ia,Fa,ka))}if(J.thermalpad)if(typeof J.thermalpad=="boolean"){const Ma=J.p*(Aa-1)+J.pw,Ra=J.p*(Aa-1)+J.pw;la.push(rectpad$1(["thermalpad"],0,0,Ma,Ra))}else la.push(rectpad$1(["thermalpad"],0,0,J.thermalpad.x,J.thermalpad.y));const ba=[];for(const[Ma,Ra,Ia]of[["top-left",-1,1],["bottom-left",-1,-1],["bottom-right",1,-1],["top-right",1,1]]){const La=J.w/2*Ra,Fa=J.h/2*Ia;let ka="none",el=La,tl=Fa;const rl=J.pw*2;xa[1]===1&&Ma==="top-left"?ka="in1":xa[Aa*4]===1&&Ma==="top-left"||xa[Aa*3+1]===1&&Ma==="top-right"?ka="in2":xa[Aa*3]===1&&Ma==="top-right"||xa[Aa]===1&&Ma==="bottom-left"?ka="in1":xa[Aa+1]===1&&Ma==="bottom-left"?ka="in2":xa[Aa*2]===1&&Ma==="bottom-right"?ka="in1":xa[Aa*2+1]===1&&Ma==="bottom-right"&&(ka="in2");const il=ka==="in1"?1:-1;if(J.legsoutside){const nl=ka==="in1"?J.pl/2:J.pw/2,sl=ka==="in1"?J.pw/2:J.pl/2;el+=nl*Ra*il,tl-=sl*Ia*il}(ka==="none"||J.legsoutside)&&ba.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}`,route:[{x:La-rl*Ra,y:Fa},{x:La,y:Fa},{x:La,y:Fa-rl*Ia}],type:"pcb_silkscreen_path",stroke_width:.1}),(ka==="in1"||ka==="in2")&&!J.legsoutside&&ba.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}_1`,route:[{x:La-rl*Ra,y:Fa},{x:La-rl*Ra/2,y:Fa}],type:"pcb_silkscreen_path",stroke_width:0},{layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}_2`,route:[{x:La,y:Fa-rl*Ia/2},{x:La,y:Fa-rl*Ia}],type:"pcb_silkscreen_path",stroke_width:.1}),(ka==="in1"||ka==="in2")&&ba.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}_3`,route:[{x:el-.2*-Ra,y:tl+.2*il},{x:el,y:tl},{x:el+.2*il*-Ra,y:tl+.2},{x:el-.2*-Ra,y:tl+.2*il}],type:"pcb_silkscreen_path",stroke_width:.1})}const Sa=silkscreenRef$1(0,J.h/2+(J.legsoutside?J.pl*1.2:.5),.3);return{circuitJson:[...la,...ba,Sa],parameters:J}};base_quad_def$1.extend({}).transform(quadTransform$1);var qfn$1=ua=>(ua.legsoutside=!1,quad$1(ua)),qfp$1=ua=>{ua.legsoutside=!0;const J=quad_def$1.parse(ua);if(!ua.p)switch(ua.num_pins){case 44:case 64:ua.p=.8;break;case 52:ua.w===14?ua.p=1:ua.p=.65;break;case 208:ua.p=.5;break}if(!ua.pl)switch(ua.num_pins){case 44:case 52:case 64:ua.pl=2.25;break;case 208:ua.pl=1.65;break;default:ua.pl=J.pl*4;break}if(!ua.pw)switch(ua.num_pins){case 44:case 64:ua.pw=.5;break;case 52:ua.w===14?ua.pw=.45:ua.pw=.55;break;case 208:ua.pw=.3;break;default:ua.pw=J.pw;break}return quad$1(ua)};base_quad_def$1.extend({}).transform(quadTransform$1);var mlp$1=ua=>(ua.legsoutside=!1,ua.thermalpad===void 0&&(ua.thermalpad=!0),quad$1(ua)),ssop_def$1=extendSoicDef$1({w:"3.9mm",p:"1.27mm"}),ssop$1=ua=>{const J=ssop_def$1.parse(ua);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},tssop_def$1=extendSoicDef$1({w:"6.1mm",p:"0.65mm",legsoutside:!0}),tssop$1=ua=>{const J=tssop_def$1.parse(ua);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot236_def$1=extendSoicDef$1({p:"0.95mm",w:"1.6mm",legsoutside:!0}),sot236$1=ua=>{const J=sot236_def$1.parse({...ua,num_pins:6});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot363_def$1=extendSoicDef$1({}),sot363$1=ua=>{const J=sot363_def$1.parse({fn:"sot363",num_pins:6,w:1.94,p:.65,pw:.3,pl:.7,legoutside:!0});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot23_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(3).default(3),w:z$3.string().default("1.92mm"),h:z$3.string().default("2.74mm"),pl:z$3.string().default("0.8mm"),pw:z$3.string().default("0.764mm")}),sot23$1=ua=>{const J=sot23_def$1.parse(ua);return{circuitJson:sot23WithoutParsing$1(J),parameters:J}},getCcwSot23Coords$1=ua=>{const{pn:J,w:la,h:xa,pl:Aa}=ua;return J===1?{x:-1.7,y:0}:J===2?{x:1.7,y:-.95}:{x:1.7,y:.95}},sot23WithoutParsing$1=ua=>{const J=[];for(let xa=0;xa<ua.num_pins;xa++){const{x:Aa,y:ba}=getCcwSot23Coords$1({num_pins:ua.num_pins,pn:xa+1,w:Number.parseFloat(ua.w),h:Number.parseFloat(ua.h),pl:Number.parseFloat(ua.pl)});J.push(rectpad$1(xa+1,Aa,ba,Number.parseFloat(ua.pl),Number.parseFloat(ua.pw)))}const la=silkscreenRef$1(0,Number(ua.h),.3);return[...J,la]},CORNERS$1=[{name:"top-left",dx:-1,dy:1},{name:"top-right",dx:1,dy:1},{name:"bottom-left",dx:-1,dy:-1},{name:"bottom-right",dx:1,dy:-1}],dfn_def$1=extendSoicDef$1({}),dfn$1=ua=>{const J=dfn_def$1.parse(ua),la=[];for(let Fa=0;Fa<J.num_pins;Fa++){const{x:ka,y:el}=getCcwSoicCoords$1({num_pins:J.num_pins,pn:Fa+1,w:J.w,p:J.p??1.27,pl:J.pl,widthincludeslegs:!0});la.push(rectpad$1(Fa+1,ka,el,J.pl??"1mm",J.pw??"0.6mm"))}const xa=Math.min(1,J.p/2),Aa=J.w+xa,ba=(J.num_pins/2-1)*J.p+J.pw+xa,Sa=[];for(const Fa of CORNERS$1){const{dx:ka,dy:el}=Fa;Sa.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",route:[{x:ka*Aa/2-ka*J.p,y:el*ba/2},{x:ka*Aa/2,y:el*ba/2},{x:ka*Aa/2,y:el*ba/2-el*J.p}],type:"pcb_silkscreen_path",stroke_width:.1})}const Ma=J.p/4,Ra=-Aa/2-Ma/2,Ia=ba/2-J.p/2;Sa.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",type:"pcb_silkscreen_path",route:[{x:Ra,y:Ia},{x:Ra-Ma,y:Ia+Ma},{x:Ra-Ma,y:Ia-Ma},{x:Ra,y:Ia}],stroke_width:.1});const La=silkscreenRef$1(0,ba/2+.4,ba/12);return{circuitJson:[...la,La,...Sa],parameters:J}},pinrow_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(6),p:length$4.default("0.1in").describe("pitch"),id:length$4.default("1.0mm").describe("inner diameter"),od:length$4.default("1.5mm").describe("outer diameter")}),pinrow$1=ua=>{const J=pinrow_def$1.parse(ua),{p:la,id:xa,od:Aa}=J,ba=[],Ma=-((J.num_pins-1)/2)*la;for(let Ia=0;Ia<J.num_pins;Ia++)ba.push(platedhole$1(Ia+1,Ma+Ia*la,0,xa,Aa));const Ra=silkscreenRef$1(0,la/2,.5);return{circuitJson:[...ba,Ra],parameters:J}},sot563_def$1=extendSoicDef$1({}),sot563$1=ua=>{const J=sot563_def$1.parse({fn:"sot563",num_pins:6,w:1.94,p:.5,pw:.3,pl:.67,legoutside:!0});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},ms012_def$1=extendSoicDef$1({p:"1.27mm",w:"3.9mm",legsoutside:!0}),ms012$1=ua=>{const J=ms012_def$1.parse({...ua,num_pins:8});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},ms013_def$1=extendSoicDef$1({p:"1.27mm",w:"7.5mm",legsoutside:!0}),ms013$1=ua=>{const J=ms013_def$1.parse({...ua,num_pins:16});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot723_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(3).default(3),w:z$3.string().default("1.2mm"),h:z$3.string().default("1.2mm"),pl:z$3.string().default("0.3mm"),pw:z$3.string().default("0.32mm")}),sot723$1=ua=>{const J=sot723_def$1.parse(ua),la=sot723WithoutParsing$1(J),xa=silkscreenRef$1(.4,length$4.parse(J.h),.2);return{circuitJson:[...la,xa],parameters:J}},getCcwSot723Coords$2=ua=>{const{pn:J,w:la,h:xa,pl:Aa}=ua;return J===1?{x:0,y:0}:J===2?{x:1,y:-.4}:{x:1,y:.4}},sot723WithoutParsing$1=ua=>{const J=[];for(let la=0;la<3;la++){const{x:xa,y:Aa}=getCcwSot723Coords$2({num_pins:ua.num_pins,pn:la+1,w:Number.parseFloat(ua.w),h:Number.parseFloat(ua.h),pl:Number.parseFloat(ua.pl)});J.push(rectpad$1(la+1,xa,Aa,Number.parseFloat(ua.pl),la!==0?Number.parseFloat(ua.pw):.42))}return J},sod_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(2).default(2),w:z$3.string().default("2.36mm"),h:z$3.string().default("1.22mm"),pl:z$3.string().default("0.9mm"),pw:z$3.string().default("0.9mm"),pad_spacing:z$3.string().default("4.19mm")}),sod123$1=ua=>{const J=sod_def$1.parse(ua),la=silkscreenRef$1(0,length$4.parse(J.h)/4+.4,.3);return{circuitJson:sodWithoutParsing$1(J).concat(la),parameters:J}},getSodCoords$1=ua=>{const{pn:J,pad_spacing:la}=ua;return J===1?{x:-la/2,y:0}:{x:la/2,y:0}},sodWithoutParsing$1=ua=>{const J=[];for(let la=1;la<=ua.num_pins;la++){const{x:xa,y:Aa}=getSodCoords$1({pn:la,pad_spacing:Number.parseFloat(ua.pad_spacing)});J.push(rectpad$1(la,xa,Aa,Number.parseFloat(ua.pl),Number.parseFloat(ua.pw)))}return J},axial_def$1=z$3.object({fn:z$3.string(),p:length$4.optional().default("2.54mm"),id:length$4.optional().default("0.7mm"),od:length$4.optional().default("1mm")}),axial$1=ua=>{const J=axial_def$1.parse(ua),{p:la,id:xa,od:Aa}=J,ba=[platedhole$1(1,-la/2,0,xa,Aa),platedhole$1(2,la/2,0,xa,Aa)],Sa={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",route:[{x:-la/2+Aa+xa/2,y:0},{x:la/2-Aa-xa/2,y:0}],stroke_width:.1,pcb_silkscreen_path_id:""},Ma=silkscreenRef$1(0,la/4,.5);return{circuitJson:[...ba,Sa,Ma],parameters:J}},silkscreenpath$1=(ua,J={})=>({type:"pcb_silkscreen_path",layer:J.layer||"top",pcb_component_id:J.pcb_component_id||"",pcb_silkscreen_path_id:J.pcb_silkscreen_path_id||"",route:ua,stroke_width:J.stroke_width||.1}),pushbutton_def$1=z$3.object({fn:z$3.literal("pushbutton"),w:z$3.number().default(4.5),h:z$3.number().default(6.5),id:z$3.number().default(1),od:z$3.number().default(1.2)}),pushbutton$1=ua=>{const J=pushbutton_def$1.parse(ua),la=J.w,xa=J.h,Aa=J.id,ba=[platedhole$1(1,-la/2,xa/2,Aa,Aa*1.2),platedhole$1(2,-la/2,-xa/2,Aa,Aa*1.2),platedhole$1(3,la/2,-xa/2,Aa,Aa*1.2),platedhole$1(4,la/2,xa/2,Aa,Aa*1.2)],Sa=[silkscreenpath$1([{x:-la/2,y:-xa/2},{x:-la/2,y:xa/2}]),silkscreenpath$1([{x:la/2,y:-xa/2},{x:la/2,y:xa/2}]),silkscreenpath$1([{x:-la/2,y:0},{x:-la/5,y:0},{x:la/5*1/Math.sqrt(2),y:xa/8}]),silkscreenpath$1([{x:la/2,y:0},{x:la/5,y:0}])],Ma=silkscreenRef$1(0,xa/2+.4,.5);return{circuitJson:[...ba,...Sa,Ma],parameters:J}},stampboard_def$1=z$3.object({fn:z$3.string(),w:length$4.default("22.58mm"),h:length$4.optional(),left:length$4.optional().default(20),right:length$4.optional().default(20),top:length$4.optional().default(2),bottom:length$4.optional().default(2),p:length$4.default(length$4.parse("2.54mm")),pw:length$4.default(length$4.parse("1.6mm")),pl:length$4.default(length$4.parse("2.4mm")),innerhole:z$3.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight$1=ua=>{const J=stampboard_def$1.parse(ua);return J.left&&J.right?Math.max(J.left,J.right)*J.p:J.left?J.left*J.p:J.right?J.right*J.p:51},getTriangleDir$1=(ua,J,la)=>{let xa=[];return la==="right"&&(xa=[{x:ua+1/2,y:J},{x:ua-1/2,y:J+.6/2},{x:ua-1/2,y:J-.6/2},{x:ua+1/2,y:J}]),la==="left"&&(xa=[{x:ua-1/2,y:J},{x:ua+1/2,y:J+.6/2},{x:ua+1/2,y:J-.6/2},{x:ua-1/2,y:J}]),la==="top"&&(xa=[{x:ua,y:J+1/2},{x:ua-.6/2,y:J-1/2},{x:ua+.6/2,y:J-1/2},{x:ua,y:J+1/2}]),la==="bottom"&&(xa=[{x:ua,y:J-1/2},{x:ua-.6/2,y:J+1/2},{x:ua+.6/2,y:J+1/2},{x:ua,y:J-1/2}]),xa},stampboard$1=ua=>{const J=stampboard_def$1.parse(ua),la=J.h??getHeight$1(J),xa=[],Aa=[];let ba=[];const Sa=1,Ma=1.2,Ra=J.left+J.right+(J.bottom??0)+(J.top??0);if(J.right){const ka=-((J.right-1)/2)*J.p;for(let el=0;el<J.right;el++)el===0&&!J.left&&!J.bottom&&(ba=getTriangleDir$1(J.w/2-J.pl*1.4,ka+el*J.p,"right")),xa.push(rectpad$1(el+1+J.left+(J.bottom??0),J.w/2-J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&(Aa.push(platedhole$1(el+1+J.left+(J.bottom??0)+Ra,J.w/2,ka+el*J.p,Sa,Ma)),Aa.push(platedhole$1(el+1+J.left+(J.bottom??0)+Ra*2,J.w/2-J.innerholeedgedistance,ka+el*J.p,Sa,Ma)))}if(J.left){const ka=-((J.left-1)/2)*J.p;for(let el=0;el<J.left;el++)el===J.left-1&&(ba=getTriangleDir$1(-J.w/2+J.pl*1.4,ka+el*J.p,"left")),xa.push(rectpad$1(el+1,-J.w/2+J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&(Aa.push(platedhole$1(el+1+Ra,-J.w/2,ka+el*J.p,Sa,Ma)),Aa.push(platedhole$1(el+1+Ra*2,-J.w/2+J.innerholeedgedistance,ka+el*J.p,Sa,Ma)))}if(J.top){const ka=-((J.top-1)/2)*J.p;for(let el=0;el<J.top;el++)el===J.top-1&&!J.left&&!J.bottom&&!J.right&&(ba=getTriangleDir$1(ka+el*J.p,la/2-J.pl*1.4,"top")),xa.push(rectpad$1(el+1+J.left+J.right+(J.bottom??0),ka+el*J.p,la/2-J.pl/2,J.pw,J.pl)),J.innerhole&&(Aa.push(platedhole$1(el+1+J.left+J.right+(J.bottom??0)+Ra,ka+el*J.p,la/2,Sa,Ma)),Aa.push(platedhole$1(el+1+J.left+J.right+(J.bottom??0)+Ra*2,ka+el*J.p,la/2-J.innerholeedgedistance,Sa,Ma)))}if(J.bottom){const ka=-((J.bottom-1)/2)*J.p;for(let el=0;el<J.bottom;el++)el===0&&!J.left&&(ba=getTriangleDir$1(ka+el*J.p,-la/2+J.pl*1.4,"bottom")),xa.push(rectpad$1(el+1+J.left,ka+el*J.p,-la/2+J.pl/2,J.pw,J.pl)),J.innerhole&&(Aa.push(platedhole$1(el+1+J.left+Ra,ka+el*J.p,-la/2,Sa,Ma)),Aa.push(platedhole$1(el+1+J.left+Ra*2,ka+el*J.p,-la/2+J.innerholeedgedistance,Sa,Ma)))}const Ia={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_triangle_1",pcb_component_id:"2",route:ba,stroke_width:.1,layer:"top"},La={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2,y:la/2},{x:J.w/2,y:la/2},{x:J.w/2,y:-la/2},{x:-J.w/2,y:-la/2},{x:-J.w/2,y:la/2}],stroke_width:.1,layer:"top"},Fa=silkscreenRef$1(0,la/1.8,la/25);return{circuitJson:[...xa,...Aa,La,Ia,Fa],parameters:J}},stampreceiver_def$1=z$3.object({fn:z$3.string(),w:length$4.default("22.58mm"),h:length$4.optional(),left:length$4.optional().default(20),right:length$4.optional().default(20),top:length$4.optional().default(2),bottom:length$4.optional().default(2),p:length$4.default(length$4.parse("2.54mm")),pw:length$4.default(length$4.parse("1.6mm")),pl:length$4.default(length$4.parse("3.2mm")),innerhole:z$3.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight2$1=ua=>{const J=stampreceiver_def$1.parse(ua);return J.left&&J.right?Math.max(J.left,J.right)*J.p:J.left?J.left*J.p:J.right?J.right*J.p:51},getTriangleDir2$1=(ua,J,la,xa=1,Aa=.6)=>{const ba=xa/2,Sa=Aa/2;return{left:[{x:ua+ba,y:J},{x:ua-ba,y:J+Sa},{x:ua-ba,y:J-Sa},{x:ua+ba,y:J}],right:[{x:ua-ba,y:J},{x:ua+ba,y:J+Sa},{x:ua+ba,y:J-Sa},{x:ua-ba,y:J}],top:[{x:ua,y:J-ba},{x:ua-Sa,y:J+ba},{x:ua+Sa,y:J+ba},{x:ua,y:J-ba}],bottom:[{x:ua,y:J+ba},{x:ua-Sa,y:J-ba},{x:ua+Sa,y:J-ba},{x:ua,y:J+ba}]}[la]},stampreceiver$1=ua=>{const J=stampreceiver_def$1.parse(ua),la=J.h??getHeight2$1(J),xa=[],Aa=[],ba=1,Sa=1.2,Ma=J.left+J.right+(J.bottom??0)+(J.top??0);let Ra=[];if(J.right){const ka=-((J.right-1)/2)*J.p;for(let el=0;el<J.right;el++)el===0&&!J.left&&!J.bottom&&(Ra=getTriangleDir2$1(J.w/2+J.pl*1.4,ka+el*J.p,"right")),xa.push(rectpad$1(el+1+J.left+(J.bottom??0),J.w/2-J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&Aa.push(platedhole$1(el+1+J.left+(J.bottom??0)+Ma,J.w/2-J.innerholeedgedistance,ka+el*J.p,ba,Sa))}if(J.left){const ka=-((J.left-1)/2)*J.p;for(let el=0;el<J.left;el++)el===J.left-1&&(Ra=getTriangleDir2$1(-J.w/2-J.pl/3,ka+el*J.p,"left")),xa.push(rectpad$1(el+1,-J.w/2+J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&Aa.push(platedhole$1(el+1+Ma,-J.w/2+J.innerholeedgedistance,ka+el*J.p,ba,Sa))}if(J.top){const ka=-((J.top-1)/2)*J.p;for(let el=0;el<J.top;el++)el===J.top-1&&!J.left&&!J.bottom&&!J.right&&(Ra=getTriangleDir2$1(ka+el*J.p,la/2+J.pl*1.4,"top")),xa.push(rectpad$1(el+1+J.right+(J.bottom??0)+J.left,ka+el*J.p,la/2-J.pl/2,J.pw,J.pl)),J.innerhole&&Aa.push(platedhole$1(el+1+J.right+(J.bottom??0)+J.left+Ma,ka+el*J.p,la/2-J.innerholeedgedistance,ba,Sa))}if(J.bottom){const ka=-((J.bottom-1)/2)*J.p;for(let el=0;el<J.bottom;el++)el===0&&!J.left&&(Ra=getTriangleDir2$1(ka+el*J.p,-la/2-J.pl*1.4,"bottom")),xa.push(rectpad$1(el+1+J.left,ka+el*J.p,-la/2+J.pl/2,J.pw,J.pl)),J.innerhole&&Aa.push(platedhole$1(el+1+J.left+Ma,ka+el*J.p,-la/2+J.innerholeedgedistance,ba,Sa))}const Ia={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:Ra,stroke_width:.1},La={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2-J.pl/3,y:la/2+J.pl/3},{x:J.w/2+J.pl/3,y:la/2+J.pl/3},{x:J.w/2+J.pl/3,y:-la/2-J.pl/3},{x:-J.w/2-J.pl/3,y:-la/2-J.pl/3},{x:-J.w/2-J.pl/3,y:la/2+J.pl/3}],stroke_width:.1,layer:"top"},Fa=silkscreenRef$1(0,la/1.8,la/25);return{circuitJson:[...Aa,...xa,La,Ia,Fa],parameters:J}},lqfp$1=ua=>(ua.legsoutside=!0,quad$1(ua)),sot235_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(5).default(5),h:z$3.string().default("1.6mm"),pl:z$3.string().default("1mm"),pw:z$3.string().default("0.7mm"),p:z$3.string().default("0.95mm")}),sot235$1=ua=>{const J=sot235_def$1.parse(ua);return{circuitJson:sot23_5WithoutParsing$1(J),parameters:J}},getCcwSot235Coords$1=ua=>{const{p:J,h:la,pn:xa}=ua;if(xa===1)return{x:-la/2-.5,y:J};if(xa===2)return{x:-la/2-.5,y:0};if(xa===3)return{x:-la/2-.5,y:-J};if(xa===4)return{x:la/2+.5,y:-J};if(xa===5)return{x:la/2+.5,y:J};throw new Error("Invalid pin number")},sot23_5WithoutParsing$1=ua=>{const J=[];for(let Fa=1;Fa<=ua.num_pins;Fa++){const{x:ka,y:el}=getCcwSot235Coords$1({h:Number.parseFloat(ua.h),p:Number.parseFloat(ua.p),pn:Fa});J.push(rectpad$1(Fa,ka,el,Number.parseFloat(ua.pl),Number.parseFloat(ua.pw)))}const la=(ua.num_pins+1)/2*Number.parseFloat(ua.p),xa=Number.parseFloat(ua.h),Aa={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-la/3,y:xa/2+Number.parseFloat(ua.p)/1.3},{x:la/3,y:xa/2+Number.parseFloat(ua.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},ba={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_2",route:[{x:-la/3,y:-xa/2-Number.parseFloat(ua.p)/1.3},{x:la/3,y:-xa/2-Number.parseFloat(ua.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},Sa=silkscreenRef$1(0,xa+.3,.3),Ma=getCcwSot235Coords$1({h:Number.parseFloat(ua.h),p:Number.parseFloat(ua.p),pn:1});Ma.x=Ma.x-Number.parseFloat(ua.pw)*1.5;const Ra=.7,Ia=.3,La={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"pin1_indicator",route:[{x:Ma.x+Ra/2,y:Ma.y},{x:Ma.x-Ra/2,y:Ma.y+Ia/2},{x:Ma.x-Ra/2,y:Ma.y-Ia/2},{x:Ma.x+Ra/2,y:Ma.y}],stroke_width:.05};return[...J,Sa,Aa,ba,La]},breakoutheaders_def=z$3.object({fn:z$3.string(),w:length$4.default("10mm"),h:length$4.optional(),left:length$4.optional().default(20),right:length$4.optional().default(20),top:length$4.optional().default(0),bottom:length$4.optional().default(0),p:length$4.default(length$4.parse("2.54mm")),id:length$4.optional().default(length$4.parse("1mm")),od:length$4.optional().default(length$4.parse("1.5mm"))}),getHeight3=ua=>{const J=breakoutheaders_def.parse(ua);return J.left&&J.right?Math.max(J.left,J.right)*J.p:J.left?J.left*J.p:J.right?J.right*J.p:51},getTrianglePath=(ua,J,la,xa=1,Aa=.6)=>{const ba=xa/2,Sa=Aa/2;return{left:[{x:ua+ba,y:J},{x:ua-ba,y:J+Sa},{x:ua-ba,y:J-Sa},{x:ua+ba,y:J}],right:[{x:ua-ba,y:J},{x:ua+ba,y:J+Sa},{x:ua+ba,y:J-Sa},{x:ua-ba,y:J}],top:[{x:ua,y:J-ba},{x:ua-Sa,y:J+ba},{x:ua+Sa,y:J+ba},{x:ua,y:J-ba}],bottom:[{x:ua,y:J+ba},{x:ua-Sa,y:J-ba},{x:ua+Sa,y:J-ba},{x:ua,y:J+ba}]}[la]},breakoutheaders=ua=>{const J=breakoutheaders_def.parse(ua),la=J.h??getHeight3(J),xa=[],Aa=J.id,ba=J.od;let Sa=[];if(J.right){const La=-((J.right-1)/2)*J.p;for(let Fa=0;Fa<J.right;Fa++)Fa===0&&!J.left&&!J.bottom&&(Sa=getTrianglePath(J.w/2+ba*1.4,La+Fa*J.p,"right")),xa.push(platedhole$1(Fa+1+J.left+(J.bottom??0),J.w/2,La+Fa*J.p,Aa,ba))}if(J.left){const La=-((J.left-1)/2)*J.p;for(let Fa=0;Fa<J.left;Fa++)Fa===J.left-1&&(Sa=getTrianglePath(-J.w/2-ba*1.4,La+Fa*J.p,"left")),xa.push(platedhole$1(Fa+1,-J.w/2,La+Fa*J.p,Aa,ba))}if(J.top){const La=-((J.top-1)/2)*J.p;for(let Fa=0;Fa<J.top;Fa++)Fa===J.top-1&&!J.left&&!J.bottom&&!J.right&&(Sa=getTrianglePath(La+Fa*J.p,la/2+ba*1.4,"top")),xa.push(platedhole$1(Fa+1+J.right+(J.bottom??0)+J.left,La+Fa*J.p,la/2,Aa,ba))}if(J.bottom){const La=-((J.bottom-1)/2)*J.p;for(let Fa=0;Fa<J.bottom;Fa++)Fa===0&&!J.left&&(Sa=getTrianglePath(La+Fa*J.p,-la/2-ba*1.4,"bottom")),xa.push(platedhole$1(Fa+1+J.left,La+Fa*J.p,-la/2,Aa,ba))}const Ma={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:Sa,stroke_width:.1},Ra={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2-ba,y:la/2+ba},{x:J.w/2+ba,y:la/2+ba},{x:J.w/2+ba,y:-la/2-ba},{x:-J.w/2-ba,y:-la/2-ba},{x:-J.w/2-ba,y:la/2+ba}],stroke_width:.1,layer:"top"},Ia=silkscreenRef$1(0,la/1.7,la/25);return{circuitJson:[...xa,Ra,Ia,Ma],parameters:J}};function isNotNull$2(ua){return ua!==null}var string$1=ua=>{let J=footprinter$1();(ua.length===4||ua.length===5)&&/^\d+$/.test(ua)&&(ua=`res${ua}`);const la=ua.split("_").map(xa=>{const Aa=xa.match(/([a-z]+)([\(\d\.\+\?].*)?/),[ba,Sa,Ma]=Aa??[];return Ma!=null&&Ma.includes("?")?null:{fn:Aa==null?void 0:Aa[1],v:Aa==null?void 0:Aa[2]}}).filter(isNotNull$2);for(const{fn:xa,v:Aa}of la)J=J[xa](Aa);return J.setString(ua),J},getFootprintNames$1=()=>Object.keys(fn_exports$1),footprinter$1=()=>{const ua=new Proxy({},{get:(J,la)=>{if(la==="soup"||la==="circuitJson"){if("fn"in J&&fn_exports$1[J.fn])return()=>fn_exports$1[J.fn](J).circuitJson;if(!fn_exports$1[J.fn])throw new Error(`Invalid footprint function, got "${J.fn}"${J.string?`, from string "${J.string}"`:""}`);return()=>{throw new Error(`No function found for footprinter, make sure to specify .dip, .lr, .p, etc. Got "${la}"`)}}if(la==="json"){if(!fn_exports$1[J.fn])throw new Error(`Invalid footprint function, got "${J.fn}"${J.string?`, from string "${J.string}"`:""}`);return()=>fn_exports$1[J.fn](J).parameters}return la==="getFootprintNames"?()=>Object.keys(fn_exports$1):la==="params"?()=>J:la==="setString"?xa=>(J.string=xa,ua):xa=>(Object.keys(J).length===0?`${la}${xa}`in fn_exports$1?(J[`${la}${xa}`]=!0,J.fn=`${la}${xa}`):(J[la]=!0,J.fn=la,la==="res"||la==="cap"?xa&&(J.imperial=xa):J.num_pins=Number.isNaN(Number.parseFloat(xa))?void 0:Number.parseFloat(xa)):!xa&&["w","h","p"].includes(la)||(J[la]=xa??!0),ua)}});return ua};footprinter$1.string=string$1,footprinter$1.getFootprintNames=getFootprintNames$1;var fp$1=footprinter$1,unitMappings$2={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},unitMappingAndVariantSuffixes$1=new Set;for(const[ua,J]of Object.entries(unitMappings$2)){unitMappingAndVariantSuffixes$1.add(ua);for(const la of Object.keys(J.variants))unitMappingAndVariantSuffixes$1.add(la)}function getBaseTscircuitUnit$2(ua){for(const[J,la]of Object.entries(unitMappings$2))if(ua in la.variants)return{baseUnit:la.baseUnit,conversionFactor:la.variants[ua]};return{baseUnit:ua,conversionFactor:1}}var si_prefix_multiplier$1={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},parseAndConvertSiUnit$2=ua=>{var Ma;if(typeof ua>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof ua=="string"&&ua.match(/^[\d\.]+$/))return{value:Number.parseFloat(ua),parsedUnit:null,unitOfValue:null};if(typeof ua=="number")return{value:ua,parsedUnit:null,unitOfValue:null};if(typeof ua=="object"&&"x"in ua&&"y"in ua){const{parsedUnit:Ra,unitOfValue:Ia}=parseAndConvertSiUnit$2(ua.x);return{parsedUnit:Ra,unitOfValue:Ia,value:{x:parseAndConvertSiUnit$2(ua.x).value,y:parseAndConvertSiUnit$2(ua.y).value}}}const la=(Ma=ua.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:Ma[0];if(!la)throw new Error(`Could not determine unit: "${ua}"`);const xa=la.split("").reverse().join(""),Aa=ua.slice(0,-xa.length);if(xa in si_prefix_multiplier$1&&!unitMappingAndVariantSuffixes$1.has(xa)){const Ra=si_prefix_multiplier$1[xa];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(Aa)*Ra}}const{baseUnit:ba,conversionFactor:Sa}=getBaseTscircuitUnit$2(xa);return{parsedUnit:xa,unitOfValue:ba,value:Sa*Number.parseFloat(Aa)}},resistance$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),capacitance$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value).transform(ua=>Number.parseFloat(ua.toPrecision(12))),inductance$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),voltage$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),length$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),frequency$1=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),distance$5=length$3,current$1=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),time$1=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),rotation$4=z$3.string().or(z$3.number()).transform(ua=>typeof ua=="number"?ua:ua.endsWith("deg")?Number.parseFloat(ua.split("deg")[0]):ua.endsWith("rad")?Number.parseFloat(ua.split("rad")[0])*180/Math.PI:Number.parseFloat(ua)),battery_capacity$2=z$3.number().or(z$3.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),point$3=z$3.object({x:distance$5,y:distance$5}),position$3=point$3,point3$3=z$3.object({x:distance$5,y:distance$5,z:distance$5}),position3$1=point3$3,size$5=z$3.object({width:z$3.number(),height:z$3.number()}),getZodPrefixedIdWithDefault$2=ua=>z$3.string().optional().default(()=>`${ua}_${nanoid$1(10)}`),supplier_name$2=z$3.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base$2=z$3.object({type:z$3.literal("source_component"),ftype:z$3.string().optional(),source_component_id:z$3.string(),name:z$3.string(),manufacturer_part_number:z$3.string().optional(),supplier_part_numbers:z$3.record(supplier_name$2,z$3.array(z$3.string())).optional(),display_value:z$3.string().optional()}),source_simple_capacitor$2=source_component_base$2.extend({ftype:z$3.literal("simple_capacitor"),capacitance:capacitance$2,display_capacitance:z$3.string().optional(),max_decoupling_trace_length:distance$5.optional()}),source_simple_resistor$2=source_component_base$2.extend({ftype:z$3.literal("simple_resistor"),resistance:resistance$2,display_resistance:z$3.string().optional()}),source_simple_diode$2=source_component_base$2.extend({ftype:z$3.literal("simple_diode")}),source_simple_ground$2=source_component_base$2.extend({ftype:z$3.literal("simple_ground")}),source_simple_bug$2=source_component_base$2.extend({ftype:z$3.literal("simple_bug")}).describe("@deprecated"),source_simple_chip$2=source_component_base$2.extend({ftype:z$3.literal("simple_chip")}),source_led$2=source_simple_diode$2.extend({ftype:z$3.literal("led")}),source_simple_power_source$2=source_component_base$2.extend({ftype:z$3.literal("simple_power_source"),voltage:voltage$2}),source_simple_battery$2=source_component_base$2.extend({ftype:z$3.literal("simple_battery"),capacity:battery_capacity$2}),source_simple_inductor$2=source_component_base$2.extend({ftype:z$3.literal("simple_inductor"),inductance:inductance$2}),source_simple_push_button$1=source_component_base$2.extend({ftype:z$3.literal("simple_push_button")}),source_simple_potentiometer$1=source_component_base$2.extend({ftype:z$3.literal("simple_potentiometer"),max_resistance:resistance$2}),source_simple_crystal$1=source_component_base$2.extend({ftype:z$3.literal("simple_crystal"),frequency:z$3.number().describe("Frequency in Hz"),load_capacitance:z$3.number().optional().describe("Load capacitance in pF")}),source_simple_pin_header$1=source_component_base$2.extend({ftype:z$3.literal("simple_pin_header"),pin_count:z$3.number(),gender:z$3.enum(["male","female"]).optional().default("male")}),source_simple_resonator$1=source_component_base$2.extend({ftype:z$3.literal("simple_resonator"),load_capacitance:capacitance$2,equivalent_series_resistance:resistance$2.optional(),frequency:frequency$1}),source_simple_transistor$1=source_component_base$2.extend({ftype:z$3.literal("simple_transistor"),transistor_type:z$3.enum(["npn","pnp"])}),source_simple_mosfet$1=source_component_base$2.extend({ftype:z$3.literal("simple_mosfet"),channel_type:z$3.enum(["n","p"]),mosfet_mode:z$3.enum(["enhancement","depletion"])}),any_source_component$2=z$3.union([source_simple_resistor$2,source_simple_capacitor$2,source_simple_diode$2,source_simple_ground$2,source_simple_chip$2,source_simple_bug$2,source_led$2,source_simple_power_source$2,source_simple_battery$2,source_simple_inductor$2,source_simple_push_button$1,source_simple_potentiometer$1,source_simple_crystal$1,source_simple_pin_header$1,source_simple_resonator$1,source_simple_transistor$1,source_simple_mosfet$1]),source_port$2=z$3.object({type:z$3.literal("source_port"),pin_number:z$3.number().optional(),port_hints:z$3.array(z$3.string()).optional(),name:z$3.string(),source_port_id:z$3.string(),source_component_id:z$3.string()}),source_trace$2=z$3.object({type:z$3.literal("source_trace"),source_trace_id:z$3.string(),connected_source_port_ids:z$3.array(z$3.string()),connected_source_net_ids:z$3.array(z$3.string()),subcircuit_connectivity_map_key:z$3.string().optional(),max_length:z$3.number().optional(),display_name:z$3.string().optional()}),source_group$2=z$3.object({type:z$3.literal("source_group"),source_group_id:z$3.string(),subcircuit_id:z$3.string().optional(),is_subcircuit:z$3.boolean().optional(),name:z$3.string().optional()}),source_net$2=z$3.object({type:z$3.literal("source_net"),source_net_id:z$3.string(),name:z$3.string(),member_source_group_ids:z$3.array(z$3.string()),is_power:z$3.boolean().optional(),is_ground:z$3.boolean().optional(),is_digital_signal:z$3.boolean().optional(),is_analog_signal:z$3.boolean().optional(),trace_width:z$3.number().optional()}),schematic_box$2=z$3.object({type:z$3.literal("schematic_box"),schematic_component_id:z$3.string(),width:distance$5,height:distance$5,x:distance$5,y:distance$5}).describe("Draws a box on the schematic"),schematic_path$2=z$3.object({type:z$3.literal("schematic_path"),schematic_component_id:z$3.string(),fill_color:z$3.enum(["red","blue"]).optional(),is_filled:z$3.boolean().optional(),points:z$3.array(point$3)}),schematic_pin_styles$2=z$3.record(z$3.object({left_margin:length$3.optional(),right_margin:length$3.optional(),top_margin:length$3.optional(),bottom_margin:length$3.optional()})),schematic_component_port_arrangement_by_size$1=z$3.object({left_size:z$3.number(),right_size:z$3.number(),top_size:z$3.number().optional(),bottom_size:z$3.number().optional()}),schematic_component_port_arrangement_by_sides$1=z$3.object({left_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional()}),port_arrangement$1=z$3.union([schematic_component_port_arrangement_by_size$1,schematic_component_port_arrangement_by_sides$1]),schematic_component$2=z$3.object({type:z$3.literal("schematic_component"),rotation:rotation$4.default(0),size:size$5,center:point$3,source_component_id:z$3.string(),schematic_component_id:z$3.string(),pin_spacing:length$3.optional(),pin_styles:schematic_pin_styles$2.optional(),box_width:length$3.optional(),symbol_name:z$3.string().optional(),port_arrangement:port_arrangement$1.optional(),port_labels:z$3.record(z$3.string()).optional(),symbol_display_value:z$3.string().optional()}),schematic_line$2=z$3.object({type:z$3.literal("schematic_line"),schematic_component_id:z$3.string(),x1:distance$5,x2:distance$5,y1:distance$5,y2:distance$5}),schematic_trace$2=z$3.object({type:z$3.literal("schematic_trace"),schematic_trace_id:z$3.string(),source_trace_id:z$3.string(),junctions:z$3.array(z$3.object({x:z$3.number(),y:z$3.number()})),edges:z$3.array(z$3.object({from:z$3.object({x:z$3.number(),y:z$3.number()}),to:z$3.object({x:z$3.number(),y:z$3.number()}),is_crossing:z$3.boolean().optional(),from_schematic_port_id:z$3.string().optional(),to_schematic_port_id:z$3.string().optional()}))}),schematic_text$2=z$3.object({type:z$3.literal("schematic_text"),schematic_component_id:z$3.string(),schematic_text_id:z$3.string(),text:z$3.string(),position:z$3.object({x:distance$5,y:distance$5}),rotation:z$3.number().default(0),anchor:z$3.enum(["center","left","right","top","bottom"]).default("center"),color:z$3.string().default("#000000")}),schematic_port$2=z$3.object({type:z$3.literal("schematic_port"),schematic_port_id:z$3.string(),source_port_id:z$3.string(),schematic_component_id:z$3.string().optional(),center:point$3,facing_direction:z$3.enum(["up","down","left","right"]).optional(),distance_from_component_edge:z$3.number().optional(),side_of_component:z$3.enum(["top","bottom","left","right"]).optional(),true_ccw_index:z$3.number().optional(),pin_number:z$3.number().optional(),display_pin_label:z$3.string().optional()}).describe("Defines a port on a schematic component"),schematic_net_label$2=z$3.object({type:z$3.literal("schematic_net_label"),source_net_id:z$3.string(),center:point$3,anchor_position:point$3.optional(),anchor_side:z$3.enum(["top","bottom","left","right"]),text:z$3.string(),symbol_name:z$3.string().optional()}),schematic_error$2=z$3.object({type:z$3.literal("schematic_error"),schematic_error_id:z$3.string(),error_type:z$3.literal("schematic_port_not_found"),message:z$3.string()}).describe("Defines a schematic error on the schematic"),schematic_debug_object_base$2=z$3.object({type:z$3.literal("schematic_debug_object"),label:z$3.string().optional()}),schematic_debug_rect$2=schematic_debug_object_base$2.extend({shape:z$3.literal("rect"),center:point$3,size:size$5}),schematic_debug_line$2=schematic_debug_object_base$2.extend({shape:z$3.literal("line"),start:point$3,end:point$3}),schematic_debug_point$2=schematic_debug_object_base$2.extend({shape:z$3.literal("point"),center:point$3}),schematic_debug_object$2=z$3.discriminatedUnion("shape",[schematic_debug_rect$2,schematic_debug_line$2,schematic_debug_point$2]),schematic_voltage_probe$1=z$3.object({type:z$3.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$3.string(),position:point$3,schematic_trace_id:z$3.string(),voltage:voltage$2.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers$2=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string$2=z$3.enum(all_layers$2),layer_ref$2=layer_string$2.or(z$3.object({name:layer_string$2})).transform(ua=>typeof ua=="string"?ua:ua.name),visible_layer$2=z$3.enum(["top","bottom"]),pcb_route_hint$2=z$3.object({x:distance$5,y:distance$5,via:z$3.boolean().optional(),via_to_layer:layer_ref$2.optional()}),pcb_route_hints$1=z$3.array(pcb_route_hint$2),route_hint_point$2=z$3.object({x:distance$5,y:distance$5,via:z$3.boolean().optional(),to_layer:layer_ref$2.optional(),trace_width:distance$5.optional()}),pcb_component$2=z$3.object({type:z$3.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault$2("pcb_component"),source_component_id:z$3.string(),center:point$3,layer:layer_ref$2,rotation:rotation$4,width:length$3,height:length$3,subcircuit_id:z$3.string().optional()}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square$2=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$2("pcb_hole"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),hole_shape:z$3.enum(["circle","square"]),hole_diameter:z$3.number(),x:distance$5,y:distance$5}),pcb_hole_circle_or_square_shape$1=pcb_hole_circle_or_square$2.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval$2=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$2("pcb_hole"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),hole_shape:z$3.literal("oval"),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$5,y:distance$5}),pcb_hole_oval_shape$1=pcb_hole_oval$2.describe("Defines an oval hole on the PCB"),pcb_hole$2=pcb_hole_circle_or_square$2.or(pcb_hole_oval$2),pcb_plated_hole_circle$2=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.literal("circle"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),outer_diameter:z$3.number(),hole_diameter:z$3.number(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$2("pcb_plated_hole")}),pcb_plated_hole_oval$2=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.enum(["oval","pill"]),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),outer_width:z$3.number(),outer_height:z$3.number(),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$2("pcb_plated_hole")}),pcb_circular_hole_with_rect_pad$1=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.literal("circular_hole_with_rect_pad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),hole_shape:z$3.literal("circle"),pad_shape:z$3.literal("rect"),hole_diameter:z$3.number(),rect_pad_width:z$3.number(),rect_pad_height:z$3.number(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$2("pcb_plated_hole")}),pcb_plated_hole$2=z$3.union([pcb_plated_hole_circle$2,pcb_plated_hole_oval$2,pcb_circular_hole_with_rect_pad$1]),pcb_port$2=z$3.object({type:z$3.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault$2("pcb_port"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),source_port_id:z$3.string(),pcb_component_id:z$3.string(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2)}).describe("Defines a port on the PCB"),pcb_smtpad_circle$2=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,radius:z$3.number(),layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rect$2=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rotated_rect$1=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),ccw_rotation:rotation$4,layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_pill=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("pill"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),radius:z$3.number(),layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad$2=z$3.union([pcb_smtpad_circle$2,pcb_smtpad_rect$2,pcb_smtpad_rotated_rect$1,pcb_smtpad_pill]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle$2=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$2("pcb_solder_paste"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,radius:z$3.number(),layer:layer_ref$2,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste_rect$2=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$2("pcb_solder_paste"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),layer:layer_ref$2,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste$2=z$3.union([pcb_solder_paste_circle$2,pcb_solder_paste_rect$2]).describe("Defines solderpaste on the PCB"),pcb_text$2=z$3.object({type:z$3.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault$2("pcb_text"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),text:z$3.string(),center:point$3,layer:layer_ref$2,width:length$3,height:length$3,lines:z$3.number(),align:z$3.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire$2=z$3.object({route_type:z$3.literal("wire"),x:distance$5,y:distance$5,width:distance$5,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$2}),pcb_trace_route_point_via$2=z$3.object({route_type:z$3.literal("via"),x:distance$5,y:distance$5,from_layer:z$3.string(),to_layer:z$3.string()}),pcb_trace_route_point$1=z$3.union([pcb_trace_route_point_wire$2,pcb_trace_route_point_via$2]),pcb_trace$2=z$3.object({type:z$3.literal("pcb_trace"),source_trace_id:z$3.string().optional(),pcb_component_id:z$3.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault$2("pcb_trace"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),route_thickness_mode:z$3.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:z$3.number().optional(),should_round_corners:z$3.boolean().optional(),trace_length:z$3.number().optional(),route:z$3.array(z$3.union([z$3.object({route_type:z$3.literal("wire"),x:distance$5,y:distance$5,width:distance$5,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$2}),z$3.object({route_type:z$3.literal("via"),x:distance$5,y:distance$5,from_layer:z$3.string(),to_layer:z$3.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error$2=z$3.object({type:z$3.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault$2("pcb_trace_error"),error_type:z$3.literal("pcb_trace_error"),message:z$3.string(),center:point$3.optional(),pcb_trace_id:z$3.string(),source_trace_id:z$3.string(),pcb_component_ids:z$3.array(z$3.string()),pcb_port_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB"),pcb_port_not_matched_error$2=z$3.object({type:z$3.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault$2("pcb_error"),message:z$3.string(),pcb_component_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB where a port is not matched"),pcb_via$2=z$3.object({type:z$3.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault$2("pcb_via"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,outer_diameter:distance$5.default("0.6mm"),hole_diameter:distance$5.default("0.25mm"),from_layer:layer_ref$2.optional(),to_layer:layer_ref$2.optional(),layers:z$3.array(layer_ref$2),pcb_trace_id:z$3.string().optional()}).describe("Defines a via on the PCB"),pcb_board$2=z$3.object({type:z$3.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault$2("pcb_board"),is_subcircuit:z$3.boolean().optional(),subcircuit_id:z$3.string().optional(),width:length$3,height:length$3,center:point$3,thickness:length$3.optional().default(1.4),num_layers:z$3.number().optional().default(4),outline:z$3.array(point$3).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error$2=z$3.object({type:z$3.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault$2("pcb_placement_error"),message:z$3.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint$2=z$3.object({type:z$3.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault$2("pcb_trace_hint"),pcb_port_id:z$3.string(),pcb_component_id:z$3.string(),route:z$3.array(route_hint_point$2)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line$2=z$3.object({type:z$3.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_line"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),stroke_width:distance$5.default("0.1mm"),x1:distance$5,y1:distance$5,x2:distance$5,y2:distance$5,layer:visible_layer$2}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path$2=z$3.object({type:z$3.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_path"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),layer:visible_layer$2,route:z$3.array(point$3),stroke_width:length$3}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text$2=z$3.object({type:z$3.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_text"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$5.default("0.2mm"),pcb_component_id:z$3.string(),text:z$3.string(),ccw_rotation:z$3.number().optional(),layer:layer_ref$2,is_mirrored:z$3.boolean().default(!1).optional(),anchor_position:point$3.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),pcb_silkscreen_rect$2=z$3.object({type:z$3.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_rect"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,width:length$3,height:length$3,layer:layer_ref$2}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle$2=z$3.object({type:z$3.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_circle"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,radius:length$3,layer:visible_layer$2}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval$2=z$3.object({type:z$3.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_oval"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,radius_x:distance$5,radius_y:distance$5,layer:visible_layer$2}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text$2=z$3.object({type:z$3.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault$2("pcb_fabrication_note_text"),subcircuit_id:z$3.string().optional(),pcb_group_id:z$3.string().optional(),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$5.default("1mm"),pcb_component_id:z$3.string(),text:z$3.string(),layer:visible_layer$2,anchor_position:point$3.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:z$3.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),pcb_fabrication_note_path$2=z$3.object({type:z$3.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault$2("pcb_fabrication_note_path"),pcb_component_id:z$3.string(),subcircuit_id:z$3.string().optional(),layer:layer_ref$2,route:z$3.array(point$3),stroke_width:length$3,color:z$3.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout$2=z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("rect"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,width:distance$5,height:distance$5,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()}).or(z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("circle"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,radius:distance$5,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()})),pcb_missing_footprint_error$1=z$3.object({type:z$3.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault$2("pcb_missing_footprint_error"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),error_type:z$3.literal("pcb_missing_footprint_error"),source_component_id:z$3.string(),message:z$3.string()}).describe("Defines a missing footprint error on the PCB"),pcb_manual_edit_conflict_error$1=z$3.object({type:z$3.literal("pcb_manual_edit_conflict_error"),pcb_error_id:getZodPrefixedIdWithDefault$2("pcb_manual_edit_conflict_error"),message:z$3.string(),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),source_component_id:z$3.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),pcb_group$1=z$3.object({type:z$3.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault$2("pcb_group"),source_group_id:z$3.string(),is_subcircuit:z$3.boolean().optional(),subcircuit_id:z$3.string().optional(),width:length$3,height:length$3,center:point$3,pcb_component_ids:z$3.array(z$3.string()),name:z$3.string().optional(),description:z$3.string().optional()}).describe("Defines a group of components on the PCB"),cad_component$2=z$3.object({type:z$3.literal("cad_component"),cad_component_id:z$3.string(),pcb_component_id:z$3.string(),source_component_id:z$3.string(),position:point3$3,rotation:point3$3.optional(),size:point3$3.optional(),layer:layer_ref$2.optional(),footprinter_string:z$3.string().optional(),model_obj_url:z$3.string().optional(),model_stl_url:z$3.string().optional(),model_3mf_url:z$3.string().optional(),model_jscad:z$3.any().optional()}).describe("Defines a component on the PCB"),any_circuit_element$1=z$3.union([source_trace$2,source_port$2,any_source_component$2,source_led$2,source_net$2,source_group$2,source_simple_bug$2,source_simple_chip$2,source_simple_capacitor$2,source_simple_diode$2,source_simple_resistor$2,source_simple_power_source$2,source_simple_battery$2,source_simple_inductor$2,source_simple_pin_header$1,source_simple_resonator$1,source_simple_transistor$1,source_simple_mosfet$1,source_simple_potentiometer$1,source_simple_push_button$1,pcb_component$2,pcb_hole$2,pcb_missing_footprint_error$1,pcb_manual_edit_conflict_error$1,pcb_plated_hole$2,pcb_keepout$2,pcb_port$2,pcb_text$2,pcb_trace$2,pcb_via$2,pcb_smtpad$2,pcb_solder_paste$2,pcb_board$2,pcb_group$1,pcb_trace_hint$2,pcb_silkscreen_line$2,pcb_silkscreen_path$2,pcb_silkscreen_text$2,pcb_silkscreen_rect$2,pcb_silkscreen_circle$2,pcb_silkscreen_oval$2,pcb_trace_error$2,pcb_placement_error$2,pcb_port_not_matched_error$2,pcb_fabrication_note_path$2,pcb_fabrication_note_text$2,schematic_box$2,schematic_text$2,schematic_line$2,schematic_component$2,schematic_port$2,schematic_trace$2,schematic_path$2,schematic_error$2,schematic_net_label$2,schematic_debug_object$2,schematic_voltage_probe$1,cad_component$2]),any_soup_element$1=any_circuit_element$1;const Soup=Object.freeze(Object.defineProperty({__proto__:null,all_layers:all_layers$2,any_circuit_element:any_circuit_element$1,any_soup_element:any_soup_element$1,any_source_component:any_source_component$2,battery_capacity:battery_capacity$2,cad_component:cad_component$2,capacitance:capacitance$2,current:current$1,distance:distance$5,frequency:frequency$1,getZodPrefixedIdWithDefault:getZodPrefixedIdWithDefault$2,inductance:inductance$2,layer_ref:layer_ref$2,layer_string:layer_string$2,length:length$3,pcb_board:pcb_board$2,pcb_component:pcb_component$2,pcb_fabrication_note_path:pcb_fabrication_note_path$2,pcb_fabrication_note_text:pcb_fabrication_note_text$2,pcb_group:pcb_group$1,pcb_hole:pcb_hole$2,pcb_hole_circle_or_square_shape:pcb_hole_circle_or_square_shape$1,pcb_hole_oval_shape:pcb_hole_oval_shape$1,pcb_keepout:pcb_keepout$2,pcb_manual_edit_conflict_error:pcb_manual_edit_conflict_error$1,pcb_missing_footprint_error:pcb_missing_footprint_error$1,pcb_placement_error:pcb_placement_error$2,pcb_plated_hole:pcb_plated_hole$2,pcb_port:pcb_port$2,pcb_port_not_matched_error:pcb_port_not_matched_error$2,pcb_route_hint:pcb_route_hint$2,pcb_route_hints:pcb_route_hints$1,pcb_silkscreen_circle:pcb_silkscreen_circle$2,pcb_silkscreen_line:pcb_silkscreen_line$2,pcb_silkscreen_oval:pcb_silkscreen_oval$2,pcb_silkscreen_path:pcb_silkscreen_path$2,pcb_silkscreen_rect:pcb_silkscreen_rect$2,pcb_silkscreen_text:pcb_silkscreen_text$2,pcb_smtpad:pcb_smtpad$2,pcb_smtpad_pill,pcb_solder_paste:pcb_solder_paste$2,pcb_text:pcb_text$2,pcb_trace:pcb_trace$2,pcb_trace_error:pcb_trace_error$2,pcb_trace_hint:pcb_trace_hint$2,pcb_trace_route_point:pcb_trace_route_point$1,pcb_trace_route_point_via:pcb_trace_route_point_via$2,pcb_trace_route_point_wire:pcb_trace_route_point_wire$2,pcb_via:pcb_via$2,point:point$3,point3:point3$3,port_arrangement:port_arrangement$1,position:position$3,position3:position3$1,resistance:resistance$2,rotation:rotation$4,route_hint_point:route_hint_point$2,schematic_box:schematic_box$2,schematic_component:schematic_component$2,schematic_component_port_arrangement_by_sides:schematic_component_port_arrangement_by_sides$1,schematic_component_port_arrangement_by_size:schematic_component_port_arrangement_by_size$1,schematic_debug_line:schematic_debug_line$2,schematic_debug_object:schematic_debug_object$2,schematic_debug_object_base:schematic_debug_object_base$2,schematic_debug_point:schematic_debug_point$2,schematic_debug_rect:schematic_debug_rect$2,schematic_error:schematic_error$2,schematic_line:schematic_line$2,schematic_net_label:schematic_net_label$2,schematic_path:schematic_path$2,schematic_pin_styles:schematic_pin_styles$2,schematic_port:schematic_port$2,schematic_text:schematic_text$2,schematic_trace:schematic_trace$2,schematic_voltage_probe:schematic_voltage_probe$1,size:size$5,source_component_base:source_component_base$2,source_group:source_group$2,source_led:source_led$2,source_net:source_net$2,source_port:source_port$2,source_simple_battery:source_simple_battery$2,source_simple_bug:source_simple_bug$2,source_simple_capacitor:source_simple_capacitor$2,source_simple_chip:source_simple_chip$2,source_simple_crystal:source_simple_crystal$1,source_simple_diode:source_simple_diode$2,source_simple_ground:source_simple_ground$2,source_simple_inductor:source_simple_inductor$2,source_simple_mosfet:source_simple_mosfet$1,source_simple_pin_header:source_simple_pin_header$1,source_simple_potentiometer:source_simple_potentiometer$1,source_simple_power_source:source_simple_power_source$2,source_simple_push_button:source_simple_push_button$1,source_simple_resistor:source_simple_resistor$2,source_simple_resonator:source_simple_resonator$1,source_simple_transistor:source_simple_transistor$1,source_trace:source_trace$2,supplier_name:supplier_name$2,time:time$1,visible_layer:visible_layer$2,voltage:voltage$2},Symbol.toStringTag,{value:"Module"}));var browser={exports:{}},ms$1,hasRequiredMs;function requireMs(){if(hasRequiredMs)return ms$1;hasRequiredMs=1;var ua=1e3,J=ua*60,la=J*60,xa=la*24,Aa=xa*7,ba=xa*365.25;ms$1=function(La,Fa){Fa=Fa||{};var ka=typeof La;if(ka==="string"&&La.length>0)return Sa(La);if(ka==="number"&&isFinite(La))return Fa.long?Ra(La):Ma(La);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(La))};function Sa(La){if(La=String(La),!(La.length>100)){var Fa=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(La);if(Fa){var ka=parseFloat(Fa[1]),el=(Fa[2]||"ms").toLowerCase();switch(el){case"years":case"year":case"yrs":case"yr":case"y":return ka*ba;case"weeks":case"week":case"w":return ka*Aa;case"days":case"day":case"d":return ka*xa;case"hours":case"hour":case"hrs":case"hr":case"h":return ka*la;case"minutes":case"minute":case"mins":case"min":case"m":return ka*J;case"seconds":case"second":case"secs":case"sec":case"s":return ka*ua;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return ka;default:return}}}}function Ma(La){var Fa=Math.abs(La);return Fa>=xa?Math.round(La/xa)+"d":Fa>=la?Math.round(La/la)+"h":Fa>=J?Math.round(La/J)+"m":Fa>=ua?Math.round(La/ua)+"s":La+"ms"}function Ra(La){var Fa=Math.abs(La);return Fa>=xa?Ia(La,Fa,xa,"day"):Fa>=la?Ia(La,Fa,la,"hour"):Fa>=J?Ia(La,Fa,J,"minute"):Fa>=ua?Ia(La,Fa,ua,"second"):La+" ms"}function Ia(La,Fa,ka,el){var tl=Fa>=ka*1.5;return Math.round(La/ka)+" "+el+(tl?"s":"")}return ms$1}var common$2,hasRequiredCommon;function requireCommon(){if(hasRequiredCommon)return common$2;hasRequiredCommon=1;function ua(J){xa.debug=xa,xa.default=xa,xa.coerce=Ia,xa.disable=Ma,xa.enable=ba,xa.enabled=Ra,xa.humanize=requireMs(),xa.destroy=La,Object.keys(J).forEach(Fa=>{xa[Fa]=J[Fa]}),xa.names=[],xa.skips=[],xa.formatters={};function la(Fa){let ka=0;for(let el=0;el<Fa.length;el++)ka=(ka<<5)-ka+Fa.charCodeAt(el),ka|=0;return xa.colors[Math.abs(ka)%xa.colors.length]}xa.selectColor=la;function xa(Fa){let ka,el=null,tl,rl;function il(...nl){if(!il.enabled)return;const sl=il,ll=Number(new Date),dl=ll-(ka||ll);sl.diff=dl,sl.prev=ka,sl.curr=ll,ka=ll,nl[0]=xa.coerce(nl[0]),typeof nl[0]!="string"&&nl.unshift("%O");let gl=0;nl[0]=nl[0].replace(/%([a-zA-Z%])/g,(vl,Tl)=>{if(vl==="%%")return"%";gl++;const Ll=xa.formatters[Tl];if(typeof Ll=="function"){const Il=nl[gl];vl=Ll.call(sl,Il),nl.splice(gl,1),gl--}return vl}),xa.formatArgs.call(sl,nl),(sl.log||xa.log).apply(sl,nl)}return il.namespace=Fa,il.useColors=xa.useColors(),il.color=xa.selectColor(Fa),il.extend=Aa,il.destroy=xa.destroy,Object.defineProperty(il,"enabled",{enumerable:!0,configurable:!1,get:()=>el!==null?el:(tl!==xa.namespaces&&(tl=xa.namespaces,rl=xa.enabled(Fa)),rl),set:nl=>{el=nl}}),typeof xa.init=="function"&&xa.init(il),il}function Aa(Fa,ka){const el=xa(this.namespace+(typeof ka>"u"?":":ka)+Fa);return el.log=this.log,el}function ba(Fa){xa.save(Fa),xa.namespaces=Fa,xa.names=[],xa.skips=[];const ka=(typeof Fa=="string"?Fa:"").trim().replace(" ",",").split(",").filter(Boolean);for(const el of ka)el[0]==="-"?xa.skips.push(el.slice(1)):xa.names.push(el)}function Sa(Fa,ka){let el=0,tl=0,rl=-1,il=0;for(;el<Fa.length;)if(tl<ka.length&&(ka[tl]===Fa[el]||ka[tl]==="*"))ka[tl]==="*"?(rl=tl,il=el,tl++):(el++,tl++);else if(rl!==-1)tl=rl+1,il++,el=il;else return!1;for(;tl<ka.length&&ka[tl]==="*";)tl++;return tl===ka.length}function Ma(){const Fa=[...xa.names,...xa.skips.map(ka=>"-"+ka)].join(",");return xa.enable(""),Fa}function Ra(Fa){for(const ka of xa.skips)if(Sa(Fa,ka))return!1;for(const ka of xa.names)if(Sa(Fa,ka))return!0;return!1}function Ia(Fa){return Fa instanceof Error?Fa.stack||Fa.message:Fa}function La(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return xa.enable(xa.load()),xa}return common$2=ua,common$2}var hasRequiredBrowser;function requireBrowser(){return hasRequiredBrowser||(hasRequiredBrowser=1,function(ua,J){J.formatArgs=xa,J.save=Aa,J.load=ba,J.useColors=la,J.storage=Sa(),J.destroy=(()=>{let Ra=!1;return()=>{Ra||(Ra=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),J.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function la(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let Ra;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(Ra=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(Ra[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function xa(Ra){if(Ra[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+Ra[0]+(this.useColors?"%c ":" ")+"+"+ua.exports.humanize(this.diff),!this.useColors)return;const Ia="color: "+this.color;Ra.splice(1,0,Ia,"color: inherit");let La=0,Fa=0;Ra[0].replace(/%[a-zA-Z%]/g,ka=>{ka!=="%%"&&(La++,ka==="%c"&&(Fa=La))}),Ra.splice(Fa,0,Ia)}J.log=console.debug||console.log||(()=>{});function Aa(Ra){try{Ra?J.storage.setItem("debug",Ra):J.storage.removeItem("debug")}catch{}}function ba(){let Ra;try{Ra=J.storage.getItem("debug")}catch{}return!Ra&&typeof process<"u"&&"env"in process&&(Ra=process.env.DEBUG),Ra}function Sa(){try{return localStorage}catch{}}ua.exports=requireCommon()(J);const{formatters:Ma}=ua.exports;Ma.j=function(Ra){try{return JSON.stringify(Ra)}catch(Ia){return"[UnexpectedJSONParseError]: "+Ia.message}}}(browser,browser.exports)),browser.exports}var browserExports=requireBrowser();const Debug$1=getDefaultExportFromCjs$1(browserExports);var reactReconciler$2={exports:{}},reactReconciler_production={exports:{}},scheduler$1={exports:{}},scheduler_production={};/**
|
|
7139
|
+
`)}),Ma=new J.SphereGeometry(1,32,16);super(Ma,Sa),this.lightProbe=Aa,this.size=ba,this.type="LightProbeHelper",this.onBeforeRender()}dispose(){this.geometry.dispose(),this.material.dispose()}onBeforeRender(){this.position.copy(this.lightProbe.position),this.scale.set(1,1,1).multiplyScalar(this.size),this.material.uniforms.intensity.value=this.lightProbe.intensity}}ua.LightProbeHelper=la}(LightProbeHelper)),LightProbeHelper}var VertexTangentsHelper={},hasRequiredVertexTangentsHelper;function requireVertexTangentsHelper(){return hasRequiredVertexTangentsHelper||(hasRequiredVertexTangentsHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=new J.Vector3,xa=new J.Vector3;class Aa extends J.LineSegments{constructor(Sa,Ma=1,Ra=65535){const Ia=new J.BufferGeometry,La=Sa.geometry.attributes.tangent.count,Fa=new J.Float32BufferAttribute(La*2*3,3);Ia.setAttribute("position",Fa),super(Ia,new J.LineBasicMaterial({color:Ra,toneMapped:!1})),this.object=Sa,this.size=Ma,this.type="VertexTangentsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0);const Sa=this.object.matrixWorld,Ma=this.geometry.attributes.position,Ra=this.object.geometry,Ia=Ra.attributes.position,La=Ra.attributes.tangent;let Fa=0;for(let ka=0,el=Ia.count;ka<el;ka++)la.fromBufferAttribute(Ia,ka).applyMatrix4(Sa),xa.fromBufferAttribute(La,ka),xa.transformDirection(Sa).multiplyScalar(this.size).add(la),Ma.setXYZ(Fa,la.x,la.y,la.z),Fa=Fa+1,Ma.setXYZ(Fa,xa.x,xa.y,xa.z),Fa=Fa+1;Ma.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}ua.VertexTangentsHelper=Aa}(VertexTangentsHelper)),VertexTangentsHelper}var PositionalAudioHelper={},hasRequiredPositionalAudioHelper;function requirePositionalAudioHelper(){return hasRequiredPositionalAudioHelper||(hasRequiredPositionalAudioHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la extends J.Line{constructor(Aa,ba=1,Sa=16,Ma=2){const Ra=new J.BufferGeometry,Ia=Sa+Ma*2,La=new Float32Array((Ia*3+3)*3);Ra.setAttribute("position",new J.BufferAttribute(La,3));const Fa=new J.LineBasicMaterial({color:65280}),ka=new J.LineBasicMaterial({color:16776960});super(Ra,[ka,Fa]),this.type="PositionalAudioHelper",this.audio=Aa,this.range=ba,this.divisionsInnerAngle=Sa,this.divisionsOuterAngle=Ma,this.update()}update(){const Aa=this.audio,ba=this.range,Sa=this.divisionsInnerAngle,Ma=this.divisionsOuterAngle,Ra=J.MathUtils.degToRad(Aa.panner.coneInnerAngle),Ia=J.MathUtils.degToRad(Aa.panner.coneOuterAngle),La=Ra/2,Fa=Ia/2;let ka=0,el=0,tl,rl;const il=this.geometry,nl=il.attributes.position;il.clearGroups();function sl(ll,dl,gl,_l){const vl=(dl-ll)/gl;for(nl.setXYZ(ka,0,0,0),el++,tl=ll;tl<dl;tl+=vl)rl=ka+el,nl.setXYZ(rl,Math.sin(tl)*ba,0,Math.cos(tl)*ba),nl.setXYZ(rl+1,Math.sin(Math.min(tl+vl,dl))*ba,0,Math.cos(Math.min(tl+vl,dl))*ba),nl.setXYZ(rl+2,0,0,0),el+=3;il.addGroup(ka,el,_l),ka+=el,el=0}sl(-Fa,-La,Ma,0),sl(-La,La,Sa,1),sl(La,Fa,Ma,0),nl.needsUpdate=!0,Ra===Ia&&(this.material[0].visible=!1)}dispose(){this.geometry.dispose(),this.material[0].dispose(),this.material[1].dispose()}}ua.PositionalAudioHelper=la}(PositionalAudioHelper)),PositionalAudioHelper}var VertexNormalsHelper={},hasRequiredVertexNormalsHelper;function requireVertexNormalsHelper(){return hasRequiredVertexNormalsHelper||(hasRequiredVertexNormalsHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=new J.Vector3,xa=new J.Vector3,Aa=new J.Matrix3;class ba extends J.LineSegments{constructor(Ma,Ra=1,Ia=16711680){const La=new J.BufferGeometry,Fa=Ma.geometry.attributes.normal.count,ka=new J.Float32BufferAttribute(Fa*2*3,3);La.setAttribute("position",ka),super(La,new J.LineBasicMaterial({color:Ia,toneMapped:!1})),this.object=Ma,this.size=Ra,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),Aa.getNormalMatrix(this.object.matrixWorld);const Ma=this.object.matrixWorld,Ra=this.geometry.attributes.position,Ia=this.object.geometry;if(Ia){const La=Ia.attributes.position,Fa=Ia.attributes.normal;let ka=0;for(let el=0,tl=La.count;el<tl;el++)la.fromBufferAttribute(La,el).applyMatrix4(Ma),xa.fromBufferAttribute(Fa,el),xa.applyMatrix3(Aa).normalize().multiplyScalar(this.size).add(la),Ra.setXYZ(ka,la.x,la.y,la.z),ka=ka+1,Ra.setXYZ(ka,xa.x,xa.y,xa.z),ka=ka+1}Ra.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}ua.VertexNormalsHelper=ba}(VertexNormalsHelper)),VertexNormalsHelper}var RectAreaLightHelper={},hasRequiredRectAreaLightHelper;function requireRectAreaLightHelper(){return hasRequiredRectAreaLightHelper||(hasRequiredRectAreaLightHelper=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la extends J.Line{constructor(Aa,ba){const Sa=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],Ma=new J.BufferGeometry;Ma.setAttribute("position",new J.Float32BufferAttribute(Sa,3)),Ma.computeBoundingSphere();const Ra=new J.LineBasicMaterial({fog:!1});super(Ma,Ra),this.light=Aa,this.color=ba,this.type="RectAreaLightHelper";const Ia=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],La=new J.BufferGeometry;La.setAttribute("position",new J.Float32BufferAttribute(Ia,3)),La.computeBoundingSphere(),this.add(new J.Mesh(La,new J.MeshBasicMaterial({side:J.BackSide,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const Aa=this.material.color,ba=Math.max(Aa.r,Aa.g,Aa.b);ba>1&&Aa.multiplyScalar(1/ba),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}ua.RectAreaLightHelper=la}(RectAreaLightHelper)),RectAreaLightHelper}var RectAreaLightUniformsLib={},hasRequiredRectAreaLightUniformsLib;function requireRectAreaLightUniformsLib(){return hasRequiredRectAreaLightUniformsLib||(hasRequiredRectAreaLightUniformsLib=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la{static init(){const Aa=[1,0,0,2e-5,1,0,0,503905e-9,1,0,0,.00201562,1,0,0,.00453516,1,0,0,.00806253,1,0,0,.0125978,1,0,0,.018141,1,0,0,.0246924,1,0,0,.0322525,1,0,0,.0408213,1,0,0,.0503999,1,0,0,.0609894,1,0,0,.0725906,1,0,0,.0852058,1,0,0,.0988363,1,0,0,.113484,1,0,0,.129153,1,0,0,.145839,1,0,0,.163548,1,0,0,.182266,1,0,0,.201942,1,0,0,.222314,1,0,0,.241906,1,0,0,.262314,1,0,0,.285754,1,0,0,.310159,1,0,0,.335426,1,0,0,.361341,1,0,0,.387445,1,0,0,.412784,1,0,0,.438197,1,0,0,.466966,1,0,0,.49559,1,0,0,.523448,1,0,0,.549938,1,0,0,.57979,1,0,0,.608746,1,0,0,.636185,1,0,0,.664748,1,0,0,.69313,1,0,0,.71966,1,0,0,.747662,1,0,0,.774023,1,0,0,.799775,1,0,0,.825274,1,0,0,.849156,1,0,0,.873248,1,0,0,.89532,1,0,0,.917565,1,0,0,.937863,1,0,0,.958139,1,0,0,.976563,1,0,0,.994658,1,0,0,1.0112,1,0,0,1.02712,1,0,0,1.04189,1,0,0,1.05568,1,0,0,1.06877,1,0,0,1.08058,1,0,0,1.09194,1,0,0,1.10191,1,0,0,1.11161,1,0,0,1.1199,1,0,0,1.12813,.999547,-448815e-12,.0224417,199902e-10,.999495,-113079e-10,.0224406,503651e-9,.999496,-452317e-10,.0224406,.00201461,.999496,-101772e-9,.0224406,.00453287,.999495,-180928e-9,.0224406,.00805845,.999497,-282702e-9,.0224406,.0125914,.999496,-407096e-9,.0224406,.0181319,.999498,-554114e-9,.0224406,.02468,.999499,-723768e-9,.0224406,.0322363,.999495,-916058e-9,.0224405,.0408009,.999499,-.00113101,.0224408,.050375,.999494,-.00136863,.0224405,.0609586,.999489,-.00162896,.0224401,.0725537,.999489,-.00191201,.0224414,.0851619,.999498,-.00221787,.0224413,.0987867,.999492,-.00254642,.0224409,.113426,.999507,-.00289779,.0224417,.129088,.999494,-.0032716,.0224386,.145767,.999546,-.0036673,.0224424,.163472,.999543,-.00408166,.0224387,.182182,.999499,-.00450056,.0224338,.201843,.999503,-.00483661,.0224203,.222198,.999546,-.00452928,.022315,.241714,.999508,-.00587403,.0224329,.262184,.999509,-.00638806,.0224271,.285609,.999501,-.00691028,.0224166,.309998,.999539,-.00741979,.0223989,.335262,.999454,-.00786282,.0223675,.361154,.999529,-.00811928,.0222828,.387224,.999503,-.00799941,.0221063,.41252,.999561,-.00952753,.0223057,.438006,.999557,-.0099134,.0222065,.466735,.999541,-.0100935,.0220402,.495332,.999562,-.00996821,.0218067,.523197,.999556,-.0105031,.0217096,.550223,.999561,-.0114191,.0217215,.579498,.999588,-.0111818,.0213357,.608416,.999633,-.0107725,.0208689,.635965,.999527,-.0121671,.0210149,.664476,.999508,-.0116005,.020431,.692786,.999568,-.0115604,.0199791,.719709,.999671,-.0121117,.0197415,.74737,.999688,-.0110769,.0188846,.773692,.99962,-.0122368,.0188452,.799534,.999823,-.0110325,.0178001,.825046,.999599,-.0114923,.0174221,.849075,.999619,-.0105923,.0164345,.872999,.999613,-.0105988,.0158227,.895371,.99964,-.00979861,.0148131,.917364,.99977,-.00967238,.0140721,.938002,.999726,-.00869175,.0129543,.957917,.99973,-.00866872,.0122329,.976557,.999773,-.00731956,.0108958,.994459,.999811,-.00756027,.0102715,1.01118,.999862,-.00583732,.00878781,1.02701,.999835,-.00631438,.00827529,1.04186,.999871,-.00450785,.00674583,1.05569,.999867,-.00486079,.00621041,1.06861,.999939,-.00322072,.00478301,1.08064,.999918,-.00318199,.00406395,1.09181,1.00003,-.00193348,.00280682,1.10207,.999928,-.00153729,.00198741,1.11152,.999933,-623666e-9,917714e-9,1.12009,1,-102387e-11,907581e-12,1.12813,.997866,-896716e-12,.0448334,199584e-10,.997987,-225945e-10,.0448389,502891e-9,.997987,-903781e-10,.0448388,.00201156,.997985,-203351e-9,.0448388,.00452602,.997986,-361514e-9,.0448388,.00804629,.997987,-56487e-8,.0448389,.0125724,.997988,-813423e-9,.0448389,.0181045,.997984,-.00110718,.0448387,.0246427,.997985,-.00144616,.0448388,.0321875,.997987,-.00183038,.044839,.0407392,.997983,-.00225987,.0448387,.0502986,.997991,-.00273467,.0448389,.0608667,.997984,-.00325481,.0448384,.0724444,.998002,-.00382043,.044839,.0850348,.997997,-.00443145,.0448396,.0986372,.998007,-.00508796,.0448397,.113255,.998008,-.00578985,.04484,.128891,.998003,-.00653683,.0448384,.145548,.997983,-.00732713,.0448358,.163221,.997985,-.00815454,.0448358,.181899,.998005,-.00898985,.0448286,.201533,.998026,-.00964404,.0447934,.221821,.998055,-.00922677,.044611,.241282,.99804,-.0117361,.0448245,.261791,.998048,-.0127628,.0448159,.285181,.998088,-.0138055,.0447996,.30954,.998058,-.0148206,.0447669,.334751,.998099,-.0156998,.044697,.36061,.998116,-.0161976,.0445122,.386603,.998195,-.015945,.0441711,.411844,.998168,-.0183947,.0444255,.43773,.998184,-.0197913,.0443809,.466009,.998251,-.0201426,.0440689,.494574,.998305,-.0198847,.0435632,.522405,.998273,-.0210577,.043414,.549967,.998254,-.0227901,.0433943,.578655,.998349,-.0223108,.0426529,.60758,.99843,-.0223088,.042,.635524,.998373,-.0241141,.0418987,.663621,.998425,-.0231446,.0408118,.691906,.998504,-.0233684,.0400565,.719339,.998443,-.0241652,.0394634,.74643,.99848,-.0228715,.0380002,.773086,.998569,-.023519,.0372322,.798988,.998619,-.0223108,.0356468,.824249,.998594,-.0223105,.034523,.848808,.998622,-.0213426,.0328887,.87227,.998669,-.0207912,.0314374,.895157,.998705,-.0198416,.0296925,.916769,.998786,-.0189168,.0279634,.937773,.998888,-.0178811,.0261597,.957431,.99906,-.0166845,.0242159,.976495,.999038,-.0155464,.0222638,.994169,.999237,-.0141349,.0201967,1.01112,.999378,-.0129324,.0181744,1.02692,.999433,-.0113192,.0159898,1.04174,.999439,-.0101244,.0140385,1.05559,.999614,-.00837456,.0117826,1.06852,.999722,-.00721769,.00983745,1.08069,.999817,-.00554067,.00769002,1.09176,.99983,-.00426961,.005782,1.10211,.999964,-.00273904,.00374503,1.11152,1.00001,-.00136739,.00187176,1.12031,.999946,393227e-10,-28919e-9,1.12804,.995847,-13435e-10,.0671785,19916e-9,.995464,-338387e-10,.0671527,501622e-9,.99547,-135355e-9,.0671531,.00200649,.995471,-30455e-8,.0671532,.00451461,.99547,-541423e-9,.0671531,.008026,.995471,-84598e-8,.0671531,.0125407,.99547,-.00121823,.0671531,.0180589,.99547,-.00165817,.0671531,.0245806,.995463,-.00216583,.0671526,.0321062,.995468,-.00274127,.0671527,.0406366,.995474,-.00338447,.0671534,.0501717,.995473,-.00409554,.0671533,.0607131,.995478,-.00487451,.0671531,.0722618,.995476,-.00572148,.0671532,.0848191,.995477,-.00663658,.0671539,.0983882,.995498,-.00761986,.0671541,.112972,.995509,-.00867094,.0671542,.128568,.995509,-.00978951,.0671531,.145183,.995503,-.0109725,.0671491,.162808,.995501,-.012211,.0671465,.181441,.99553,-.0134565,.0671371,.201015,.99555,-.014391,.0670831,.221206,.99558,-.014351,.0668883,.240813,.995577,-.0173997,.0671055,.261257,.995602,-.0191111,.0671178,.284467,.995623,-.0206705,.0670946,.308765,.995658,-.022184,.0670472,.333905,.995705,-.0234832,.0669417,.359677,.995719,-.0241933,.0666714,.385554,.995786,-.0243539,.066266,.410951,.995887,-.0271866,.0664367,.437163,.995944,-.0296012,.0664931,.464842,.996004,-.0301045,.0660105,.49332,.996128,-.0298311,.0652694,.521131,.996253,-.0316426,.0650739,.549167,.996244,-.0339043,.0649433,.57737,.996309,-.033329,.0638926,.606073,.996417,-.0338935,.0630849,.634527,.996372,-.0353104,.0625083,.66256,.996542,-.0348942,.0611986,.690516,.996568,-.0351614,.060069,.718317,.996711,-.0354317,.0588522,.74528,.996671,-.0349513,.0571902,.772061,.996865,-.0345622,.0555321,.798089,.996802,-.0342566,.0537816,.823178,.996992,-.0330862,.0516095,.847949,.996944,-.0324666,.0495537,.871431,.997146,-.0309544,.0470302,.894357,.997189,-.0299372,.0446043,.916142,.997471,-.0281389,.0418812,.937193,.997515,-.0268702,.0391823,.957,.997812,-.0247166,.0361338,.975936,.998027,-.0233525,.0333945,.99391,.998233,-.0209839,.0301917,1.01075,.998481,-.0194309,.027271,1.02669,.998859,-.0169728,.0240162,1.04173,.99894,-.0152322,.0210517,1.05551,.999132,-.0127497,.0178632,1.06856,.999369,-.0108282,.014787,1.08054,.999549,-.00845886,.0116185,1.09185,.999805,-.0063937,.00867209,1.10207,.99985,-.00414582,.00566823,1.1117,.999912,-.00207443,.00277562,1.12022,1.00001,870226e-10,-53766e-9,1.12832,.991943,-178672e-11,.0893382,198384e-10,.991952,-450183e-10,.089339,499849e-9,.991956,-180074e-9,.0893394,.0019994,.991955,-405167e-9,.0893393,.00449867,.991953,-720298e-9,.0893391,.00799764,.991955,-.00112548,.0893393,.0124964,.991957,-.0016207,.0893395,.0179951,.991958,-.00220601,.0893396,.0244939,.991947,-.00288137,.0893385,.0319929,.991962,-.00364693,.0893399,.0404933,.991965,-.00450264,.0893399,.049995,.99198,-.00544862,.0893411,.0604995,.99197,-.00648491,.0893397,.0720074,.991976,-.00761164,.089341,.0845207,.99198,-.00882891,.0893405,.0980413,.991982,-.0101367,.0893396,.112571,.992008,-.011535,.0893415,.128115,.992026,-.0130228,.0893414,.144672,.992064,-.0145966,.0893418,.162241,.992041,-.0162421,.0893359,.180801,.992086,-.0178888,.0893214,.200302,.992157,-.0190368,.0892401,.220332,.992181,-.0195584,.0890525,.240144,.992175,-.0227257,.0892153,.260728,.99221,-.0254195,.089304,.283473,.99222,-.0274883,.0892703,.307673,.992317,-.0294905,.0892027,.332729,.992374,-.0311861,.0890577,.358387,.992505,-.0320656,.0886994,.384102,.992568,-.0329715,.0883198,.409767,.992675,-.036006,.0883602,.436145,.992746,-.0392897,.0884591,.463217,.992873,-.0399337,.0878287,.491557,.992934,-.040231,.0870108,.519516,.993091,-.0422013,.0865857,.547741,.993259,-.0443503,.0861937,.575792,.993455,-.0446368,.0851187,.604233,.993497,-.0454299,.0840576,.632925,.993694,-.0463296,.0829671,.660985,.993718,-.0470619,.0817185,.688714,.993973,-.0468838,.0800294,.716743,.994207,-.046705,.0781286,.74377,.994168,-.0469698,.0763337,.77042,.9945,-.0456816,.0738184,.796659,.994356,-.0455518,.0715545,.821868,.994747,-.0439488,.0686085,.846572,.994937,-.0430056,.065869,.870435,.995142,-.0413414,.0626446,.893272,.995451,-.0396521,.05929,.915376,.995445,-.0378453,.0558503,.936196,.995967,-.0355219,.0520949,.956376,.996094,-.0335146,.048377,.975327,.996622,-.030682,.0442575,.993471,.996938,-.0285504,.0404693,1.01052,.997383,-.0253399,.0360903,1.02637,.997714,-.0231651,.0322176,1.04139,.998249,-.0198138,.0278433,1.05542,.998596,-.0174337,.0238759,1.06846,.998946,-.0141349,.0195944,1.08056,.99928,-.0115603,.0156279,1.09181,.999507,-.00839065,.0114607,1.10213,.999697,-.005666,.00763325,1.11169,.999869,-.00269902,.00364946,1.12042,1.00001,623836e-10,-319288e-10,1.12832,.987221,-222675e-11,.111332,197456e-10,.98739,-561116e-10,.111351,497563e-9,.987448,-224453e-9,.111357,.00199031,.987441,-505019e-9,.111357,.0044782,.987442,-897816e-9,.111357,.00796129,.987442,-.00140284,.111357,.0124396,.987444,-.00202012,.111357,.0179132,.987442,-.00274964,.111357,.0243824,.987446,-.00359147,.111357,.0318474,.987435,-.00454562,.111356,.0403086,.987461,-.00561225,.111358,.0497678,.987458,-.00679125,.111358,.0602239,.987443,-.0080828,.111356,.0716792,.987476,-.0094872,.111358,.0841364,.98749,-.0110044,.111361,.097597,.987508,-.0126344,.111362,.112062,.987494,-.0143767,.111357,.127533,.987526,-.0162307,.111359,.144015,.987558,-.0181912,.111361,.161502,.987602,-.0202393,.111355,.179979,.987692,-.022273,.111346,.199386,.987702,-.0235306,.111215,.219183,.987789,-.0247628,.111061,.239202,.987776,-.0280668,.111171,.259957,.987856,-.0316751,.111327,.282198,.987912,-.0342468,.111282,.306294,.988,-.0367205,.111198,.331219,.988055,-.0387766,.110994,.356708,.988241,-.0397722,.110547,.382234,.988399,-.0416076,.110198,.408227,.988539,-.0448192,.110137,.434662,.988661,-.0483793,.110143,.461442,.988967,-.0495895,.109453,.489318,.989073,-.0506797,.108628,.517516,.989274,-.0526953,.108003,.545844,.989528,-.054578,.107255,.573823,.989709,-.0561503,.106294,.601944,.989991,-.056866,.104896,.630855,.990392,-.0572914,.103336,.658925,.990374,-.0586224,.10189,.686661,.990747,-.0584764,.099783,.714548,.991041,-.0582662,.0974309,.74186,.991236,-.0584118,.0951678,.768422,.991585,-.0573055,.0921581,.794817,.991984,-.0564241,.0891167,.820336,.9921,-.0553608,.085805,.84493,.992749,-.0533816,.0820354,.868961,.99288,-.0518661,.0782181,.891931,.993511,-.0492492,.0738935,.914186,.993617,-.0471956,.0696402,.93532,.99411,-.044216,.0649659,.95543,.994595,-.0416654,.0603177,.974685,.994976,-.0384314,.0553493,.992807,.995579,-.0353491,.0503942,1.00996,.996069,-.0319787,.0452123,1.02606,.996718,-.028472,.0400112,1.04114,.997173,-.0250789,.0349456,1.05517,.997818,-.0213326,.029653,1.0683,.998318,-.0178509,.024549,1.0805,.998853,-.0141118,.0194197,1.09177,.999218,-.0105914,.0143869,1.1022,.999594,-.00693474,.00943517,1.11175,.99975,-.00340478,.00464051,1.12056,1.00001,109172e-9,-112821e-9,1.12853,.983383,-266524e-11,.133358,196534e-10,.981942,-671009e-10,.133162,494804e-9,.981946,-268405e-9,.133163,.00197923,.981944,-603912e-9,.133163,.00445326,.981941,-.00107362,.133162,.00791693,.981946,-.00167755,.133163,.0123703,.981944,-.00241569,.133162,.0178135,.981945,-.00328807,.133163,.0242466,.981945,-.00429472,.133162,.03167,.981955,-.00543573,.133164,.0400846,.981951,-.00671105,.133163,.0494901,.981968,-.00812092,.133165,.0598886,.981979,-.00966541,.133166,.0712811,.981996,-.0113446,.133168,.083669,.982014,-.0131585,.133169,.0970533,.982011,-.0151073,.133167,.111438,.982062,-.0171906,.133172,.126826,.9821,-.0194067,.133175,.143215,.982149,-.0217502,.133176,.160609,.982163,-.0241945,.133173,.178981,.982247,-.0265907,.133148,.198249,.982291,-.027916,.132974,.217795,.982396,-.0299663,.132868,.238042,.982456,-.0334544,.132934,.258901,.982499,-.0378636,.133137,.280639,.982617,-.0409274,.133085,.304604,.98274,-.0438523,.132985,.329376,.982944,-.0462288,.132728,.354697,.98308,-.0475995,.132228,.380102,.983391,-.0501901,.131924,.406256,.983514,-.0535899,.131737,.432735,.98373,-.0571858,.131567,.459359,.984056,-.0592353,.130932,.486637,.984234,-.0610488,.130092,.51509,.984748,-.0630758,.12923,.543461,.985073,-.0647398,.128174,.571376,.985195,-.0671941,.127133,.599414,.985734,-.0681345,.125576,.628134,.986241,-.0686089,.123639,.656399,.986356,-.0698511,.121834,.684258,.986894,-.0700931,.119454,.711818,.987382,-.0698321,.116718,.739511,.988109,-.0693975,.113699,.766267,.988363,-.0689584,.110454,.792456,.989112,-.0672353,.106602,.81813,.989241,-.0662034,.10267,.842889,.990333,-.0638938,.0981381,.867204,.990591,-.0618534,.0935388,.89038,.991106,-.0593117,.088553,.912576,.991919,-.0562676,.0832187,.934118,.992111,-.0534085,.0778302,.954254,.992997,-.0495459,.0720453,.973722,.993317,-.0463707,.0663458,.991949,.994133,-.0421245,.0601883,1.00936,.994705,-.0384977,.0542501,1.02559,.995495,-.0340956,.0479862,1.04083,.996206,-.030105,.041887,1.05497,.996971,-.0256095,.0355355,1.06824,.997796,-.0213932,.0293655,1.08056,.998272,-.0169612,.0232926,1.09182,.998857,-.0126756,.0172786,1.10219,.99939,-.00832486,.0113156,1.11192,.999752,-.00410826,.00557892,1.12075,1,150957e-9,-119101e-9,1.12885,.975169,-309397e-11,.154669,195073e-10,.975439,-779608e-10,.154712,491534e-9,.975464,-311847e-9,.154716,.00196617,.975464,-701656e-9,.154716,.00442387,.975462,-.0012474,.154715,.0078647,.975461,-.00194906,.154715,.0122886,.975464,-.00280667,.154715,.0176959,.975468,-.00382025,.154716,.0240867,.975471,-.00498985,.154716,.0314612,.975472,-.00631541,.154717,.0398199,.975486,-.00779719,.154718,.0491639,.975489,-.00943505,.154718,.0594932,.975509,-.0112295,.154721,.0708113,.97554,-.0131802,.154724,.0831176,.975557,-.0152876,.154726,.096415,.975585,-.0175512,.154728,.110705,.975605,-.0199713,.154729,.125992,.975645,-.0225447,.154729,.142272,.975711,-.0252649,.154735,.159549,.975788,-.0280986,.154736,.177805,.975872,-.0308232,.154704,.196911,.975968,-.0324841,.154525,.216324,.976063,-.0351281,.154432,.236628,.976157,-.0388618,.15446,.257539,.976204,-.0437704,.154665,.278975,.976358,-.047514,.154652,.302606,.976571,-.0508638,.154535,.327204,.976725,-.0534995,.154221,.352276,.977013,-.0555547,.153737,.377696,.977294,-.0586728,.153403,.403855,.977602,-.0622715,.15312,.430333,.977932,-.0658166,.152755,.456855,.978241,-.0689877,.152233,.483668,.978602,-.0712805,.15132,.512097,.979234,-.0732775,.150235,.540455,.97977,-.075163,.148978,.568486,.979995,-.0778026,.147755,.596524,.98078,-.0791854,.146019,.624825,.981628,-.0799666,.143906,.653403,.982067,-.0808532,.141561,.681445,.98271,-.0816024,.139025,.708918,.983734,-.0812511,.135764,.736594,.98431,-.0806201,.132152,.763576,.985071,-.0801605,.12846,.789797,.98618,-.0784208,.124084,.815804,.986886,-.0766643,.1193,.840869,.987485,-.0747744,.114236,.864952,.988431,-.0716701,.108654,.888431,.988886,-.0691609,.102994,.910963,.990024,-.0654048,.0967278,.932629,.990401,-.0619765,.090384,.95313,.991093,-.0579296,.0837885,.972587,.992018,-.0536576,.0770171,.991184,.992536,-.0493719,.0701486,1.00863,.993421,-.0444813,.062953,1.02494,.993928,-.040008,.0560455,1.04017,.994994,-.0347982,.04856,1.05463,.995866,-.0301017,.0416152,1.06807,.996916,-.0248225,.0342597,1.08039,.997766,-.0199229,.0271668,1.09177,.998479,-.0147422,.0201387,1.10235,.99921,-.00980173,.0131944,1.11206,.999652,-.0047426,.00640712,1.12104,.999998,891673e-10,-10379e-8,1.12906,.967868,-351885e-11,.175947,193569e-10,.968001,-886733e-10,.175972,487782e-9,.96801,-354697e-9,.175973,.00195115,.968012,-798063e-9,.175974,.00439006,.968011,-.00141879,.175973,.00780461,.968011,-.00221686,.175973,.0121948,.968016,-.00319231,.175974,.0175607,.968019,-.00434515,.175974,.0239027,.968018,-.00567538,.175974,.0312208,.968033,-.00718308,.175977,.0395158,.968049,-.00886836,.175979,.0487885,.968047,-.0107312,.175978,.0590394,.968072,-.0127719,.175981,.0702705,.968108,-.0149905,.175986,.0824836,.968112,-.0173866,.175985,.0956783,.968173,-.0199611,.175993,.109862,.96827,-.0227128,.176008,.125033,.968292,-.025639,.17601,.141193,.968339,-.0287299,.176007,.158336,.968389,-.0319399,.176001,.176441,.968501,-.034941,.175962,.195359,.968646,-.0370812,.175793,.214686,.968789,-.0402329,.175708,.234973,.96886,-.0442601,.1757,.255871,.969013,-.049398,.175876,.277238,.969242,-.0539932,.17594,.300326,.969419,-.0577299,.175781,.324702,.969763,-.0605643,.175432,.349527,.970093,-.0634488,.174992,.374976,.970361,-.0670589,.174611,.401097,.970825,-.0708246,.174226,.427496,.971214,-.0742871,.173684,.453858,.971622,-.0782608,.173186,.480637,.972175,-.0813151,.172288,.508655,.972944,-.0832678,.170979,.536973,.973595,-.0855964,.169573,.565138,.974345,-.0882163,.168152,.593222,.975233,-.0901671,.166314,.621201,.976239,-.0912111,.163931,.649919,.977289,-.0916959,.161106,.678011,.978076,-.0927061,.158272,.705717,.979533,-.0925562,.15475,.733228,.980335,-.0918159,.150638,.760454,.981808,-.0908508,.146201,.786918,.983061,-.0896172,.141386,.812953,.984148,-.0871588,.135837,.838281,.985047,-.0850624,.130135,.862594,.986219,-.0818541,.123882,.88633,.987043,-.0784523,.117126,.908952,.988107,-.0749601,.110341,.930744,.988955,-.0703548,.102885,.951728,.989426,-.0662798,.0954167,.971166,.990421,-.0610834,.0876331,.989984,.991032,-.0562936,.0797785,1.00765,.992041,-.0508154,.0718166,1.02434,.992794,-.0454045,.0637125,1.03976,.993691,-.0398194,.0555338,1.05418,.994778,-.0341482,.0473388,1.06772,.995915,-.028428,.0391016,1.08028,.997109,-.022642,.0309953,1.09185,.998095,-.0168738,.0230288,1.10247,.998985,-.0111274,.0150722,1.11229,.999581,-.00543881,.00740605,1.12131,1.00003,162239e-9,-105549e-9,1.12946,.959505,-393734e-11,.196876,191893e-10,.959599,-992157e-10,.196895,483544e-9,.959641,-396868e-9,.196903,.0019342,.959599,-892948e-9,.196895,.00435193,.959603,-.00158747,.196896,.0077368,.959604,-.00248042,.196896,.0120888,.959605,-.00357184,.196896,.0174082,.959605,-.00486169,.196896,.0236949,.959613,-.00635008,.196897,.0309497,.959619,-.00803696,.196898,.0391725,.959636,-.00992255,.196901,.0483649,.959634,-.0120067,.1969,.0585266,.959675,-.0142898,.196906,.0696609,.959712,-.0167717,.196911,.0817678,.959752,-.0194524,.196918,.0948494,.959807,-.0223321,.196925,.10891,.959828,-.0254091,.196924,.123947,.959906,-.0286815,.196934,.139968,.960005,-.0321371,.196944,.156968,.960071,-.0357114,.196936,.17491,.960237,-.0389064,.196882,.193597,.960367,-.041623,.196731,.21285,.960562,-.0452655,.196654,.233075,.960735,-.0496207,.196643,.253941,.960913,-.0549379,.196774,.275278,.961121,-.0603414,.196893,.297733,.96139,-.0644244,.196717,.321877,.961818,-.067556,.196314,.346476,.962175,-.0712709,.195917,.371907,.96255,-.0752848,.1955,.397916,.963164,-.0792073,.195026,.424229,.963782,-.0828225,.194424,.450637,.964306,-.0873119,.193831,.477288,.964923,-.0911051,.192973,.504716,.966048,-.093251,.19151,.533053,.967024,-.0958983,.190013,.561366,.968038,-.09835,.188253,.589464,.969152,-.100754,.186257,.617433,.970557,-.102239,.183775,.645801,.972104,-.102767,.180645,.674278,.973203,-.103492,.177242,.702004,.975123,-.103793,.17345,.729529,.97641,-.102839,.168886,.756712,.978313,-.101687,.163892,.783801,.980036,-.100314,.158439,.809671,.981339,-.097836,.152211,.835402,.982794,-.0950006,.145679,.860081,.984123,-.0920994,.138949,.883757,.984918,-.0878641,.131283,.90685,.985999,-.083939,.123464,.928786,.987151,-.0791234,.115324,.94983,.987827,-.0739332,.106854,.96962,.988806,-.0688088,.0982691,.98861,.989588,-.0628962,.0893456,1.00667,.990438,-.0573146,.0805392,1.02344,.991506,-.0509433,.0713725,1.03933,.992492,-.0448724,.0623732,1.05378,.993663,-.0383497,.0530838,1.06747,.994956,-.0319593,.0439512,1.08007,.99634,-.025401,.0347803,1.09182,.99761,-.0189687,.0257954,1.1025,.99863,-.0124441,.0169893,1.11247,.99947,-.00614003,.00829498,1.12151,1.00008,216624e-9,-146107e-9,1.12993,.950129,-434955e-11,.217413,190081e-10,.950264,-10957e-8,.217444,47884e-8,.9503,-438299e-9,.217451,.00191543,.950246,-986124e-9,.21744,.00430951,.950246,-.00175311,.21744,.00766137,.950245,-.00273923,.21744,.011971,.950253,-.00394453,.217441,.0172385,.950258,-.00536897,.217442,.0234641,.950267,-.00701262,.217444,.030648,.950277,-.00887551,.217446,.038791,.950284,-.0109576,.217446,.0478931,.950312,-.0132591,.217451,.0579568,.950334,-.01578,.217454,.0689821,.950378,-.0185204,.217462,.0809714,.950417,-.0214803,.217467,.0939265,.950488,-.0246594,.217479,.10785,.950534,-.0280565,.217483,.122743,.950633,-.0316685,.217498,.138611,.950698,-.0354787,.217499,.155442,.950844,-.0394003,.217507,.173208,.950999,-.0426812,.217419,.191605,.951221,-.0461302,.217317,.21084,.951412,-.0502131,.217238,.230945,.951623,-.0549183,.21722,.251745,.951867,-.0604493,.217306,.273001,.952069,-.0665189,.217466,.294874,.952459,-.0709179,.217266,.318732,.952996,-.0746112,.216891,.34318,.953425,-.0789252,.216503,.36849,.953885,-.0833293,.216042,.394373,.954617,-.087371,.215469,.420505,.955429,-.0914054,.214802,.446907,.956068,-.0961671,.214146,.473522,.957094,-.10048,.213286,.50052,.958372,-.103248,.211796,.528715,.959654,-.106033,.21016,.557065,.961305,-.108384,.208149,.585286,.962785,-.111122,.206024,.613334,.964848,-.112981,.203442,.641334,.966498,-.113717,.19996,.669955,.968678,-.114121,.196105,.698094,.970489,-.114524,.191906,.725643,.972903,-.113792,.186963,.752856,.974701,-.112406,.181343,.780013,.976718,-.110685,.175185,.806268,.978905,-.108468,.168535,.832073,.980267,-.105061,.161106,.857149,.981967,-.101675,.153387,.881145,.983063,-.0974492,.145199,.904255,.984432,-.0925815,.136527,.926686,.985734,-.0877983,.127584,.947901,.986228,-.081884,.118125,.968111,.98719,-.0761208,.108594,.98719,.988228,-.0698196,.0989996,1.00559,.989046,-.0632739,.0890074,1.02246,.990242,-.056522,.0790832,1.03841,.991252,-.0495272,.0689182,1.05347,.992542,-.0425373,.0588592,1.06724,.994096,-.0353198,.0486833,1.08009,.995593,-.028235,.0385977,1.09177,.99711,-.0209511,.0286457,1.10274,.998263,-.0139289,.0188497,1.11262,.999254,-.0067359,.009208,1.12191,.999967,141846e-9,-657764e-10,1.13024,.935608,-474692e-11,.236466,187817e-10,.93996,-11971e-8,.237568,473646e-9,.939959,-478845e-9,.237567,.0018946,.939954,-.0010774,.237566,.00426284,.939956,-.00191538,.237566,.00757842,.939954,-.00299277,.237566,.0118413,.93996,-.00430961,.237567,.0170518,.939969,-.00586589,.237569,.02321,.939982,-.00766166,.237572,.0303164,.939987,-.00969686,.237572,.0383711,.939997,-.0119715,.237574,.0473751,.940031,-.0144858,.237581,.0573298,.940073,-.0172399,.237589,.0682366,.94012,-.0202335,.237598,.080097,.940162,-.0234663,.237604,.0929116,.940237,-.0269387,.237615,.106686,.940328,-.0306489,.237632,.121421,.940419,-.0345917,.237645,.137115,.940522,-.0387481,.237654,.153766,.940702,-.0429906,.237661,.17133,.940871,-.0465089,.237561,.189502,.941103,-.050531,.23748,.208616,.941369,-.0550657,.237423,.228595,.941641,-.0601337,.237399,.249287,.941903,-.0658804,.237443,.270467,.942224,-.0722674,.237597,.292024,.942633,-.0771788,.237419,.315272,.943172,-.0815623,.237068,.339579,.943691,-.0863973,.236682,.364717,.944382,-.0911536,.236213,.390435,.945392,-.0952967,.235562,.416425,.946185,-.0998948,.234832,.442772,.947212,-.104796,.234114,.469347,.948778,-.10928,.233222,.496162,.950149,-.113081,.231845,.523978,.951989,-.115893,.230005,.552295,.953921,-.11846,.227862,.580569,.955624,-.12115,.225439,.608698,.958234,-.123373,.222635,.636696,.960593,-.124519,.219093,.665208,.963201,-.124736,.214749,.693557,.965642,-.125012,.210059,.721334,.968765,-.124661,.204935,.748613,.971753,-.122996,.198661,.776224,.973751,-.120998,.191823,.802461,.976709,-.118583,.184359,.828399,.977956,-.115102,.176437,.853693,.979672,-.111077,.167681,.877962,.981816,-.10688,.158872,.901564,.98238,-.101469,.149398,.924057,.983964,-.0960013,.139436,.945751,.984933,-.0899626,.12943,.966272,.985694,-.0832973,.11894,.985741,.986822,-.0767082,.108349,1.00407,.987725,-.0693614,.0976026,1.02154,.98877,-.06211,.086652,1.03757,.990129,-.0544143,.0756182,1.05296,.991337,-.046744,.0645753,1.06683,.992978,-.0387931,.0534683,1.0798,.994676,-.030973,.0424137,1.09181,.99645,-.0230311,.0314035,1.10286,.997967,-.0152065,.0206869,1.11291,.99922,-.00744837,.010155,1.12237,1.00002,240209e-9,-752767e-10,1.13089,.922948,-515351e-11,.255626,186069e-10,.928785,-129623e-9,.257244,468009e-9,.928761,-51849e-8,.257237,.00187202,.928751,-.0011666,.257235,.00421204,.928751,-.00207395,.257234,.0074881,.928754,-.00324055,.257235,.0117002,.92876,-.00466639,.257236,.0168486,.928763,-.00635149,.257237,.0229334,.928774,-.00829584,.257239,.029955,.928791,-.0104995,.257243,.0379139,.928804,-.0129623,.257245,.0468108,.928847,-.0156846,.257255,.0566473,.92889,-.0186661,.257263,.0674246,.928924,-.0219067,.257268,.0791433,.928989,-.0254066,.257282,.0918076,.92909,-.0291651,.257301,.105419,.92918,-.0331801,.257316,.119978,.92929,-.0374469,.257332,.135491,.929453,-.041939,.257357,.151948,.929586,-.0464612,.257347,.169275,.929858,-.0503426,.257269,.187257,.930125,-.0548409,.257199,.206204,.930403,-.0598063,.257149,.22601,.930726,-.0652437,.257122,.246561,.931098,-.0712376,.257153,.267618,.931396,-.0777506,.257237,.288993,.931947,-.0832374,.257124,.311527,.932579,-.0883955,.25683,.335697,.933194,-.0937037,.256444,.360634,.934013,-.0987292,.255939,.386126,.935307,-.103215,.255282,.412018,.936374,-.108234,.254538,.438292,.93776,-.113234,.253728,.464805,.939599,-.118013,.25275,.491464,.941036,-.122661,.251404,.518751,.94337,-.125477,.249435,.547133,.945318,-.128374,.247113,.575456,.947995,-.130996,.244441,.60372,.950818,-.133438,.241352,.63174,.954378,-.135004,.237849,.659971,.957151,-.135313,.233188,.688478,.960743,-.13521,.228001,.716767,.964352,-.135007,.222249,.744349,.967273,-.133523,.21542,.771786,.969767,-.131155,.208039,.798639,.973195,-.128492,.200076,.824774,.975557,-.125094,.191451,.850222,.977692,-.120578,.18184,.874761,.98026,-.115882,.172102,.898497,.981394,-.110372,.161859,.921636,.982386,-.10415,.15108,.943467,.983783,-.0978128,.140407,.964045,.98422,-.0906171,.129058,.98398,.985447,-.0832921,.117614,1.00276,.986682,-.0754412,.10585,1.02047,.987326,-.0673885,.0940943,1.03678,.988707,-.0592565,.0822093,1.05218,.990185,-.050717,.070192,1.06652,.991866,-.0423486,.0582081,1.07965,.993897,-.0336118,.0460985,1.09188,.995841,-.0252178,.0342737,1.10307,.997605,-.0164893,.0224829,1.11324,.999037,-.00817112,.0110647,1.12262,1.00003,291686e-9,-168673e-9,1.13139,.915304,-552675e-11,.275999,183285e-10,.91668,-139285e-9,.276414,461914e-9,.916664,-55713e-8,.276409,.00184763,.916653,-.00125354,.276406,.00415715,.916651,-.00222851,.276405,.00739053,.916655,-.00348205,.276406,.0115478,.916653,-.00501414,.276405,.0166291,.916667,-.00682478,.276409,.0226346,.91668,-.00891398,.276412,.0295648,.91669,-.0112817,.276413,.0374199,.916727,-.013928,.276422,.0462016,.916759,-.0168528,.276429,.0559101,.916793,-.0200558,.276436,.0665466,.916849,-.0235373,.276448,.0781139,.916964,-.0272973,.276474,.0906156,.917047,-.0313344,.276491,.104051,.917152,-.0356465,.276511,.118424,.917286,-.0402271,.276533,.133736,.917469,-.0450408,.276564,.149978,.917686,-.0497872,.276563,.167057,.917953,-.0540937,.276493,.184846,.918228,-.0590709,.276437,.203614,.918572,-.0644277,.276398,.223212,.918918,-.0702326,.276362,.243584,.919356,-.076484,.276383,.264465,.919842,-.0830808,.276434,.285701,.920451,-.0892972,.276407,.307559,.921113,-.095016,.276128,.331501,.921881,-.100771,.275754,.356207,.923027,-.106029,.275254,.381477,.924364,-.111029,.274595,.40722,.925818,-.116345,.273841,.433385,.92746,-.121424,.272913,.459848,.929167,-.12657,.271837,.486493,.931426,-.131581,.270575,.513432,.934001,-.135038,.268512,.541502,.936296,-.138039,.266135,.569658,.939985,-.140687,.263271,.598375,.943516,-.143247,.260058,.626563,.94782,-.145135,.256138,.654711,.951023,-.145733,.251154,.683285,.955338,-.145554,.245562,.711831,.959629,-.145008,.239265,.739573,.963123,-.144003,.232064,.767027,.966742,-.141289,.224036,.794359,.969991,-.138247,.215305,.820361,.973403,-.134786,.206051,.846548,.975317,-.129966,.195914,.871541,.977647,-.12471,.185184,.895313,.980137,-.119086,.174161,.918398,.981031,-.112297,.162792,.940679,.982037,-.105372,.150952,.961991,.983164,-.097821,.138921,.981913,.983757,-.0897245,.126611,1.00109,.985036,-.0815974,.114228,1.01902,.986289,-.0727725,.101389,1.03604,.987329,-.0639323,.0886476,1.05149,.989193,-.0548109,.0756837,1.06619,.990716,-.045687,.0627581,1.07948,.992769,-.0364315,.0498337,1.09172,.99524,-.0271761,.0370305,1.1033,.997154,-.0179609,.0243959,1.11353,.998845,-.00878063,.0119567,1.12319,1.00002,259038e-9,-108146e-9,1.13177,.903945,-591681e-11,.295126,181226e-10,.903668,-148672e-9,.295037,455367e-9,.903677,-594683e-9,.29504,.00182145,.903673,-.00133805,.295039,.00409831,.903666,-.00237872,.295036,.00728584,.903668,-.00371676,.295037,.0113842,.903679,-.00535212,.29504,.0163936,.903684,-.00728479,.295041,.0223141,.903698,-.00951473,.295044,.0291462,.903718,-.0120419,.295049,.0368904,.903754,-.0148664,.295058,.0455477,.903801,-.017988,.29507,.0551194,.903851,-.0214064,.295082,.0656058,.903921,-.0251219,.295097,.0770109,.904002,-.0291337,.295116,.0893354,.904111,-.033441,.29514,.102583,.904246,-.0380415,.295169,.116755,.904408,-.0429258,.295202,.131853,.904637,-.0480468,.295245,.147869,.904821,-.0529208,.295214,.164658,.905163,-.0577748,.295185,.182274,.905469,-.0631763,.295143,.200828,.905851,-.068917,.295112,.2202,.906322,-.0750861,.295104,.240372,.906761,-.0815855,.295086,.261082,.90735,-.0882138,.295095,.282123,.908087,-.095082,.295139,.303563,.908826,-.101488,.29492,.327028,.909832,-.107577,.294577,.351464,.911393,-.113033,.294115,.376497,.912804,-.118629,.293446,.402115,.914081,-.124232,.292581,.428111,.91637,-.129399,.29166,.454442,.91814,-.134892,.290422,.481024,.921179,-.140069,.289194,.507924,.924544,-.144431,.287421,.535557,.927995,-.147498,.284867,.563984,.931556,-.150197,.281722,.5923,.935777,-.152711,.278207,.620832,.940869,-.154836,.274148,.649069,.945994,-.155912,.269057,.677746,.949634,-.155641,.262799,.706293,.955032,-.154809,.256097,.734278,.95917,-.153678,.248618,.761751,.962931,-.151253,.239794,.789032,.966045,-.147625,.230281,.815422,.96971,-.143964,.220382,.841787,.972747,-.139464,.209846,.867446,.975545,-.133459,.198189,.892004,.978381,-.127424,.186362,.915458,.979935,-.120506,.173964,.937948,.980948,-.11282,.161429,.959732,.982234,-.104941,.148557,.980118,.982767,-.0962905,.135508,.999463,.983544,-.0873625,.122338,1.01756,.984965,-.0783447,.108669,1.03492,.986233,-.0684798,.0949911,1.05087,.987796,-.0590867,.0811386,1.0656,.989885,-.0489145,.0673099,1.0794,.991821,-.0391,.0535665,1.09174,.99448,-.029087,.0397529,1.10341,.996769,-.019114,.0261463,1.11383,.998641,-.00947007,.0128731,1.1237,.999978,446316e-9,-169093e-9,1.13253,.888362,-627064e-11,.312578,178215e-10,.889988,-157791e-9,.313148,448451e-9,.889825,-631076e-9,.313092,.00179356,.88984,-.00141994,.313097,.00403554,.889828,-.0025243,.313092,.00717429,.889831,-.00394421,.313093,.0112099,.889831,-.00567962,.313093,.0161425,.889844,-.00773051,.313096,.0219724,.889858,-.0100968,.3131,.0286999,.889882,-.0127786,.313106,.0363256,.889918,-.0157757,.313116,.0448509,.889967,-.0190878,.313129,.0542758,.89003,-.022715,.313145,.0646032,.890108,-.0266566,.313165,.0758339,.890218,-.0309131,.313193,.0879729,.890351,-.0354819,.313226,.101019,.89051,-.0403613,.313263,.114979,.890672,-.0455385,.313294,.129848,.890882,-.0509444,.313333,.145616,.891189,-.0559657,.313324,.162122,.891457,-.0613123,.313281,.179524,.891856,-.0671488,.313281,.197855,.892312,-.0732732,.313268,.216991,.892819,-.0797865,.313263,.236924,.893369,-.0865269,.313247,.257433,.894045,-.0931592,.313205,.278215,.894884,-.100532,.313276,.299467,.895832,-.107716,.313205,.322276,.897043,-.114099,.312873,.34642,.898515,-.119941,.312331,.371187,.900191,-.126044,.311731,.396656,.90188,-.131808,.310859,.422488,.904359,-.137289,.309857,.448744,.906923,-.142991,.308714,.475239,.910634,-.148253,.307465,.501983,.914502,-.153332,.305774,.529254,.919046,-.156646,.303156,.557709,.923194,-.159612,.299928,.586267,.928858,-.162027,.296245,.614925,.934464,-.164203,.291832,.643187,.939824,-.165602,.286565,.671601,.944582,-.165383,.280073,.700213,.949257,-.164439,.272891,.728432,.954389,-.162953,.264771,.756082,.958595,-.161007,.255927,.78369,.962138,-.157243,.245769,.810769,.966979,-.152872,.235127,.836999,.969566,-.148209,.22347,.862684,.972372,-.142211,.211147,.887847,.975916,-.135458,.198606,.911843,.978026,-.128398,.185498,.934795,.979686,-.120313,.17171,.956787,.980748,-.11166,.158159,.978046,.981622,-.103035,.144399,.997693,.982356,-.0930328,.13001,1.01642,.983308,-.0834627,.115778,1.03366,.985037,-.0732249,.101327,1.05014,.986493,-.0628145,.086554,1.06507,.988484,-.0526556,.0720413,1.07907,.991051,-.0415744,.0571151,1.09189,.993523,-.0314275,.0426643,1.10369,.99628,-.0203603,.0279325,1.11423,.998344,-.0102446,.0138182,1.12421,.999997,42612e-8,-193628e-9,1.1333,.871555,-660007e-11,.329176,174749e-10,.875255,-166579e-9,.330571,441051e-9,.875644,-666394e-9,.330718,.00176441,.875159,-.00149903,.330536,.00396899,.87516,-.00266493,.330536,.007056,.875158,-.00416393,.330535,.0110251,.87516,-.00599598,.330535,.0158764,.875163,-.00816108,.330536,.0216101,.875174,-.0106591,.330538,.0282266,.875199,-.0134899,.330545,.0357266,.875257,-.0166538,.330563,.0441117,.875304,-.0201501,.330575,.0533821,.875373,-.0239785,.330595,.0635395,.875464,-.0281389,.330619,.0745872,.875565,-.0326301,.330645,.0865255,.875691,-.0374516,.330676,.0993599,.875897,-.0425993,.330733,.113093,.876091,-.0480576,.330776,.127722,.876353,-.0537216,.330826,.143227,.876649,-.0589807,.330809,.159462,.877034,-.0647865,.330819,.176642,.877443,-.0709789,.330817,.194702,.877956,-.0774782,.330832,.213577,.878499,-.0843175,.330822,.233246,.879144,-.0912714,.330804,.253512,.879982,-.0980824,.330766,.274137,.88097,-.105823,.330864,.295209,.882051,-.113671,.330896,.317226,.883397,-.120303,.330545,.341068,.884987,-.12667,.330068,.365613,.886789,-.133118,.329418,.390807,.889311,-.139024,.328683,.416494,.891995,-.144971,.327729,.442618,.895106,-.150747,.326521,.469131,.899527,-.156283,.325229,.495921,.90504,-.161707,.32378,.523162,.909875,-.165661,.32122,.55092,.91561,-.168755,.317942,.579928,.921225,-.171193,.313983,.608539,.927308,-.17319,.309636,.636854,.933077,-.174819,.304262,.66523,.938766,-.175002,.297563,.693609,.943667,-.173946,.289613,.722157,.949033,-.172221,.281227,.750021,.953765,-.169869,.271545,.777466,.95804,-.166578,.261034,.804853,.962302,-.161761,.249434,.831569,.966544,-.156636,.237484,.857779,.969372,-.150784,.224395,.883051,.972486,-.143672,.210786,.907864,.975853,-.135772,.196556,.931223,.977975,-.127942,.182307,.954061,.979122,-.118347,.167607,.97531,.980719,-.109112,.152739,.995666,.981223,-.0991789,.137932,1.01475,.98216,-.0883553,.122692,1.03253,.983379,-.0780825,.107493,1.04917,.985434,-.0665646,.0917791,1.06464,.987332,-.0557714,.0764949,1.07896,.990004,-.0442805,.060721,1.09199,.992975,-.0331676,.0452284,1.10393,.995811,-.0219547,.0297934,1.11476,.9982,-.0107613,.0146415,1.12484,1.00002,248678e-9,-14555e-8,1.13413,.859519,-693595e-11,.347264,171673e-10,.859843,-17503e-8,.347394,433219e-9,.859656,-700076e-9,.347319,.00173277,.859671,-.00157517,.347325,.00389875,.859669,-.00280028,.347324,.00693112,.85967,-.0043754,.347324,.01083,.859665,-.00630049,.347321,.0155954,.859685,-.0085755,.347328,.0212278,.859694,-.0112003,.347329,.0277273,.859718,-.0141747,.347336,.0350946,.85976,-.0174988,.347348,.0433314,.85982,-.0211722,.347366,.0524384,.859892,-.0251941,.347387,.0624168,.860006,-.0295649,.347422,.0732708,.860122,-.0342825,.347453,.0849999,.860282,-.0393462,.347499,.0976102,.860482,-.0447513,.347554,.111104,.860719,-.0504775,.347614,.125479,.860998,-.0563577,.347666,.140703,.861322,-.0619473,.347662,.156681,.861724,-.0681277,.347684,.173597,.862198,-.0746567,.347709,.191371,.862733,-.0815234,.347727,.209976,.863371,-.0886643,.347744,.229351,.86414,-.0957908,.347734,.24934,.865138,-.102912,.34772,.269797,.866182,-.110924,.3478,.290654,.867436,-.119223,.347911,.312074,.869087,-.126197,.347649,.335438,.870859,-.133145,.347222,.359732,.872997,-.139869,.346645,.38467,.875939,-.146089,.345935,.41019,.879012,-.152334,.345012,.436218,.883353,-.15821,.343924,.462641,.888362,-.164097,.342636,.489449,.895026,-.169528,.341351,.516629,.900753,-.174408,.339115,.544109,.906814,-.17751,.335809,.572857,.912855,-.180101,.331597,.601554,.919438,-.182116,.32698,.630198,.925962,-.183494,.321449,.658404,.931734,-.184159,.314595,.686625,.93762,-.18304,.306462,.71531,.943858,-.181323,.297514,.744272,.948662,-.178683,.287447,.771462,.953299,-.175379,.276166,.798593,.957346,-.170395,.263758,.8256,.962565,-.165042,.251019,.852575,.966075,-.158655,.237011,.878316,.969048,-.151707,.222518,.90329,.972423,-.143271,.207848,.927745,.975833,-.134824,.192463,.950859,.977629,-.125444,.1768,.972947,.978995,-.114949,.161033,.993263,.980533,-.104936,.145523,1.01337,.980745,-.0935577,.129799,1.03128,.981814,-.0822956,.113486,1.04825,.983943,-.0710082,.0972925,1.06405,.986141,-.0587931,.0808138,1.0785,.988878,-.0472755,.0644915,1.09204,.992132,-.0349128,.0478128,1.10413,.9953,-.0232407,.031621,1.11527,.998117,-.0112713,.0154935,1.12551,1.00003,339743e-9,-195763e-9,1.13504,.845441,-729126e-11,.364305,169208e-10,.843588,-183164e-9,.363506,425067e-9,.843412,-73253e-8,.36343,.00169999,.843401,-.00164818,.363426,.00382495,.843399,-.00293008,.363425,.00679993,.843401,-.00457822,.363425,.010625,.843394,-.00659249,.363421,.0153002,.843398,-.00897282,.363421,.0208258,.843415,-.0117191,.363426,.0272024,.843438,-.0148312,.363432,.0344305,.843483,-.018309,.363447,.0425116,.84356,-.0221521,.363472,.0514471,.843646,-.0263597,.363499,.061238,.843743,-.0309315,.363527,.0718873,.84388,-.0358658,.363569,.0833969,.844079,-.0411624,.363631,.0957742,.844279,-.0468128,.363688,.109015,.844549,-.0527923,.363761,.123124,.844858,-.0588204,.363817,.138044,.84522,-.0647573,.36383,.153755,.845669,-.0713181,.363879,.170394,.846155,-.0781697,.363908,.187861,.846789,-.0853913,.363969,.206176,.847502,-.0928086,.363999,.225244,.8484,-.10005,.363997,.244926,.849461,-.107615,.364008,.265188,.850562,-.115814,.364055,.28587,.851962,-.124334,.364179,.306926,.854326,-.131995,.364233,.329605,.856295,-.139338,.363856,.35359,.858857,-.146346,.363347,.37831,.862428,-.152994,.362807,.403722,.866203,-.159463,.361963,.429537,.871629,-.165623,.36112,.456,.877365,-.171649,.359917,.482773,.883744,-.177151,.35848,.509705,.890693,-.182381,.356523,.537215,.897278,-.186076,.3533,.565493,.903958,-.188602,.349095,.594293,.910908,-.190755,.344215,.623165,.918117,-.192063,.338606,.651573,.924644,-.192758,.331544,.679869,.931054,-.192238,.323163,.708668,.937303,-.190035,.313529,.737201,.943387,-.187162,.303152,.764977,.948494,-.183876,.29146,.792683,.952546,-.178901,.277917,.819228,.958077,-.173173,.264753,.846559,.962462,-.16645,.25002,.872962,.966569,-.159452,.234873,.898729,.969108,-.15074,.218752,.923126,.973072,-.141523,.202673,.947278,.975452,-.132075,.186326,.969938,.977784,-.121257,.169396,.991325,.97899,-.110182,.153044,1.01123,.979777,-.0989634,.136485,1.0299,.980865,-.0865894,.119343,1.04727,.982432,-.0746115,.102452,1.06341,.984935,-.0621822,.0852423,1.07834,.987776,-.0495694,.0678546,1.092,.99103,-.0372386,.0506917,1.1043,.99474,-.0244353,.0333316,1.11576,.997768,-.0121448,.0164348,1.12617,1.00003,31774e-8,-169504e-9,1.13598,.825551,-756799e-11,.378425,165099e-10,.82664,-190922e-9,.378923,416504e-9,.826323,-763495e-9,.378779,.0016656,.826359,-.00171789,.378795,.00374768,.82636,-.00305402,.378795,.00666259,.826368,-.00477185,.378798,.0104104,.826364,-.00687131,.378795,.0149912,.826368,-.00935232,.378795,.0204054,.826376,-.0122146,.378797,.0266532,.826399,-.0154581,.378803,.0337355,.82646,-.0190825,.378824,.0416537,.826525,-.0230873,.378846,.0504091,.826614,-.0274719,.378876,.0600032,.82674,-.0322355,.378917,.0704393,.826888,-.0373766,.378964,.0817195,.827078,-.0428936,.379024,.0938492,.827318,-.0487778,.379099,.106828,.82764,-.0549935,.379199,.120659,.827926,-.0611058,.379227,.13526,.828325,-.0675054,.379275,.150713,.828801,-.0743455,.379332,.167034,.8294,-.0815523,.379415,.184209,.830094,-.0890779,.379495,.202203,.8309,-.096736,.379555,.220945,.831943,-.104135,.379577,.240306,.833037,-.112106,.379604,.260317,.834278,-.120554,.379668,.2808,.836192,-.129128,.3799,.301654,.838671,-.137541,.380109,.323502,.840939,-.14523,.379809,.347176,.844575,-.15248,.379593,.371706,.848379,-.159607,.37909,.39688,.853616,-.166267,.378617,.422702,.858921,-.172698,.377746,.448919,.865324,-.178823,.376749,.475661,.872207,-.184542,.375363,.502599,.880018,-.189836,.373657,.529914,.88694,-.194294,.370673,.557683,.894779,-.197022,.36662,.586848,.902242,-.199108,.36138,.615831,.909914,-.200398,.355434,.644478,.917088,-.20094,.348173,.672905,.923888,-.200671,.339482,.701327,.930495,-.198773,.32956,.730101,.937247,-.195394,.318363,.758383,.943108,-.191956,.306323,.786539,.948296,-.187227,.292576,.813637,.953472,-.181165,.278234,.840793,.958485,-.174119,.263054,.867712,.962714,-.166564,.246756,.893635,.966185,-.158181,.229945,.919028,.970146,-.148275,.212633,.943413,.973491,-.138157,.195229,.966627,.975741,-.127574,.178048,.988817,.977238,-.11554,.160312,1.00924,.978411,-.10364,.142857,1.02845,.979811,-.0913122,.125317,1.04648,.98116,-.0782558,.107627,1.06284,.983543,-.0655957,.0895862,1.07798,.986789,-.0520411,.0713756,1.092,.990292,-.0389727,.053228,1.10484,.994187,-.025808,.0351945,1.11642,.997499,-.0126071,.0173198,1.12703,.999999,275604e-9,-148602e-9,1.13674,.81075,-78735e-10,.394456,161829e-10,.808692,-198293e-9,.393453,407564e-9,.80846,-792877e-9,.39334,.00162965,.808595,-.00178416,.393407,.00366711,.808597,-.00317182,.393408,.00651934,.808598,-.00495589,.393408,.0101866,.808591,-.00713627,.393403,.0146689,.808592,-.00971285,.393402,.0199667,.80861,-.0126855,.393407,.0260803,.808633,-.0160538,.393413,.0330107,.80868,-.0198175,.393429,.0407589,.808748,-.0239758,.393453,.0493264,.808854,-.0285286,.39349,.0587161,.808992,-.0334748,.39354,.0689304,.809141,-.0388116,.393588,.0799707,.809352,-.0445375,.39366,.0918432,.809608,-.0506427,.393742,.104549,.809915,-.0570708,.393834,.118085,.810253,-.0633526,.393885,.132377,.810687,-.0700966,.393953,.147537,.811233,-.0772274,.394047,.163543,.811865,-.0847629,.394148,.180394,.812648,-.0925663,.394265,.198051,.813583,-.100416,.394363,.216443,.814683,-.108119,.394402,.235502,.815948,-.11644,.394489,.255242,.817278,-.125036,.394542,.275441,.819605,-.133655,.39486,.296094,.822256,-.142682,.395248,.317309,.825349,-.150756,.395241,.340516,.829605,-.158392,.395285,.364819,.83391,-.165801,.394922,.389736,.839808,-.172677,.394691,.415409,.845708,-.179448,.394006,.441546,.853025,-.185746,.393279,.46832,.859666,-.191684,.391655,.495302,.86789,-.197146,.390068,.52262,.875845,-.201904,.38727,.550336,.882634,-.205023,.382688,.578825,.891076,-.207098,.377543,.608103,.900589,-.208474,.371752,.63723,.90791,-.209068,.364016,.665769,.915971,-.208655,.355593,.694428,.923455,-.20729,.345439,.723224,.931514,-.203821,.334099,.751925,.937885,-.19986,.321069,.780249,.943136,-.194993,.306571,.8077,.948818,-.189132,.291556,.83497,.954433,-.181617,.275745,.86188,.959078,-.173595,.258695,.888562,.962705,-.164855,.240825,.914008,.966753,-.155129,.22268,.939145,.970704,-.144241,.204542,.963393,.973367,-.133188,.185927,.985983,.975984,-.121146,.167743,1.00704,.976994,-.108366,.149218,1.02715,.978485,-.0956746,.13131,1.0455,.980074,-.0820733,.112513,1.06221,.98225,-.0684061,.0938323,1.07782,.98553,-.0549503,.0749508,1.09199,.989529,-.0407857,.055848,1.10508,.993536,-.0271978,.0368581,1.11684,.997247,-.0132716,.0181845,1.12789,1,431817e-9,-198809e-9,1.13792,.785886,-812608e-11,.405036,157669e-10,.790388,-205278e-9,.407355,398297e-9,.790145,-820824e-9,.407231,.00159263,.790135,-.00184681,.407226,.00358336,.790119,-.00328316,.407218,.00637039,.790126,-.00512988,.40722,.0099539,.79013,-.00738684,.407221,.0143339,.790135,-.0100538,.407221,.0195107,.790134,-.0131306,.407217,.0254848,.79016,-.0166169,.407224,.0322572,.790197,-.020512,.407236,.0398284,.790273,-.0248157,.407263,.0482014,.790381,-.029527,.407304,.0573777,.790521,-.0346446,.407355,.0673602,.790704,-.0401665,.40742,.0781522,.790925,-.0460896,.407499,.0897582,.791195,-.0524017,.407589,.10218,.791522,-.0590121,.407691,.11541,.791878,-.0654876,.407748,.12939,.792361,-.0725207,.407849,.144237,.792942,-.0799844,.407963,.159924,.79362,-.0877896,.408087,.176425,.794529,-.0958451,.408259,.193733,.795521,-.103827,.408362,.211756,.796778,-.111937,.408482,.230524,.798027,-.120521,.408547,.249967,.799813,-.129242,.408721,.269926,.802387,-.138048,.409148,.290338,.805279,-.147301,.409641,.311193,.809251,-.155895,.410154,.333611,.813733,-.163942,.410297,.357615,.819081,-.171666,.410373,.382339,.825427,-.178905,.410348,.407828,.83172,-.185812,.409486,.434034,.83877,-.192318,.408776,.460493,.845817,-.198249,.407176,.487346,.854664,-.204034,.405719,.514832,.863495,-.208908,.403282,.542401,.871883,-.212765,.399293,.570683,.88065,-.214911,.393803,.599947,.89004,-.216214,.387536,.62932,.898476,-.216745,.379846,.658319,.906738,-.216387,.370625,.687138,.914844,-.215053,.360139,.71601,.923877,-.212007,.348849,.745124,.931925,-.207481,.335639,.773366,.938054,-.202418,.320798,.801636,.943895,-.196507,.304772,.829055,.949468,-.189009,.288033,.856097,.955152,-.180539,.270532,.88301,.959403,-.171437,.251639,.909296,.963309,-.161661,.232563,.934868,.967399,-.150425,.213231,.959662,.972009,-.138659,.194247,.98302,.97433,-.126595,.174718,1.00517,.975823,-.113205,.155518,1.02566,.976371,-.0996096,.136709,1.04418,.978705,-.0860754,.117571,1.06146,.981477,-.0714438,.0980046,1.07777,.984263,-.0572304,.0782181,1.09214,.988423,-.0428875,.0584052,1.10553,.993,-.0282442,.038522,1.11758,.99704,-.0140183,.0190148,1.12864,.999913,369494e-9,-145203e-9,1.13901,.777662,-84153e-10,.423844,154403e-10,.770458,-211714e-9,.419915,38845e-8,.770716,-846888e-9,.420055,.00155386,.770982,-.00190567,.420202,.00349653,.770981,-.00338782,.420201,.00621606,.77098,-.00529338,.4202,.00971274,.770983,-.00762223,.4202,.0139867,.770985,-.0103741,.420198,.0190381,.770996,-.0135489,.4202,.0248677,.771029,-.0171461,.420212,.0314764,.771052,-.0211647,.420215,.0388648,.771131,-.0256048,.420245,.047036,.771235,-.0304647,.420284,.0559911,.771383,-.0357436,.420341,.0657346,.771591,-.0414392,.420423,.0762694,.771819,-.0475462,.420506,.0875984,.772123,-.0540506,.420617,.099727,.772464,-.060797,.42072,.112637,.772855,-.0675393,.420799,.126313,.773317,-.0748323,.420893,.140824,.773981,-.0825681,.421058,.15617,.774746,-.0906307,.421226,.172322,.77566,-.0988982,.421397,.189253,.776837,-.106994,.421569,.206912,.778097,-.115528,.421704,.225359,.779588,-.124317,.421849,.24447,.781574,-.133139,.422097,.264156,.784451,-.142179,.422615,.284318,.787682,-.15165,.423269,.304902,.792433,-.160771,.424396,.3265,.797359,-.169166,.424772,.35014,.803986,-.177149,.425475,.374768,.809504,-.184745,.424996,.399928,.815885,-.19173,.424247,.425796,.823513,-.198525,.423515,.452287,.832549,-.204709,.422787,.479321,.841653,-.210447,.421187,.506718,.850401,-.215501,.418519,.53432,.859854,-.219752,.414715,.56242,.869364,-.222305,.409462,.591558,.878837,-.223744,.402926,.621074,.888636,-.224065,.395043,.650538,.898132,-.223742,.38564,.679538,.907181,-.222308,.375378,.708674,.915621,-.219837,.363212,.737714,.9239,-.215233,.349313,.767014,.931644,-.209592,.334162,.795133,.938887,-.203644,.317943,.823228,.945282,-.196349,.300581,.850822,.950758,-.18742,.282195,.877594,.956146,-.177879,.262481,.904564,.960355,-.167643,.242487,.930741,.965256,-.156671,.222668,.955868,.968029,-.144123,.201907,.979869,.97251,-.131305,.18202,1.00291,.974925,-.118335,.161909,1.02392,.975402,-.103714,.142129,1.0433,.976987,-.089415,.122447,1.06089,.979677,-.0748858,.102248,1.07713,.983184,-.0596086,.0814851,1.09218,.987466,-.0447671,.0609484,1.10585,.992348,-.0295217,.0401835,1.11829,.996674,-.0143917,.0198163,1.12966,1.00003,321364e-9,-149983e-9,1.1402,.757901,-869074e-11,.436176,151011e-10,.751195,-217848e-9,.432317,378533e-9,.751178,-871373e-9,.432307,.0015141,.751195,-.00196061,.432317,.0034068,.751198,-.00348552,.432318,.00605659,.751195,-.00544599,.432315,.00946353,.751207,-.00784203,.43232,.013628,.751213,-.0106732,.43232,.0185499,.751221,-.0139393,.432319,.0242302,.751244,-.0176398,.432325,.0306694,.7513,-.0217743,.432348,.0378698,.751358,-.0263412,.432367,.0458321,.751458,-.0313396,.432404,.0545587,.751608,-.0367682,.432464,.0640543,.7518,-.0426246,.43254,.0743222,.752065,-.0489031,.432645,.0853668,.752376,-.0555828,.432762,.0971911,.752715,-.0623861,.432859,.109768,.753137,-.069415,.432958,.123126,.753676,-.0770039,.433099,.137308,.754345,-.084971,.433272,.15229,.755235,-.0932681,.433504,.168075,.756186,-.10171,.433693,.184625,.757363,-.110019,.433857,.201897,.75884,-.11887,.434102,.220014,.760467,-.127881,.434306,.238778,.762969,-.136766,.434751,.258172,.765823,-.14612,.43529,.278062,.769676,-.15566,.436236,.298437,.774909,-.165177,.437754,.319532,.77994,-.17402,.438343,.342505,.785757,-.182201,.438609,.366693,.792487,-.190104,.438762,.391668,.80038,-.197438,.438795,.417494,.808494,-.204365,.438226,.443933,.817695,-.210714,.437283,.470929,.828111,-.216651,.436087,.498569,.837901,-.221804,.433717,.526165,.847813,-.226318,.430133,.554155,.858314,-.229297,.425213,.582822,.868891,-.230999,.418576,.612847,.878941,-.231155,.410405,.642445,.888809,-.230935,.400544,.672024,.898089,-.229343,.389613,.701366,.908081,-.226886,.377197,.730763,.916819,-.222676,.363397,.759642,.924968,-.216835,.347437,.788775,.932906,-.210245,.32995,.817135,.940025,-.202992,.312262,.844912,.946101,-.19436,.293313,.872164,.952835,-.184125,.273638,.899443,.957347,-.173657,.252385,.926389,.961434,-.162204,.231038,.951947,.965522,-.14979,.209834,.976751,.969412,-.136307,.188821,1.00022,.973902,-.122527,.168013,1.02229,.974045,-.108213,.147634,1.04199,.975775,-.0927397,.12705,1.06019,.978383,-.0778212,.106309,1.07711,.98211,-.0621216,.0849279,1.09245,.986517,-.0463847,.0633519,1.10651,.991696,-.0309353,.0419698,1.11903,.996349,-.0150914,.0206272,1.13073,1.00003,442449e-9,-231396e-9,1.14146,.727498,-885074e-11,.441528,145832e-10,.730897,-223525e-9,.443589,368298e-9,.730796,-893996e-9,.443528,.00147303,.730805,-.00201149,.443533,.00331433,.730814,-.00357596,.443538,.00589222,.730815,-.00558734,.443538,.00920678,.730822,-.00804544,.44354,.0132582,.730836,-.0109501,.443545,.0180468,.730848,-.0143008,.443546,.0235732,.730871,-.0180969,.443552,.0298382,.730915,-.022338,.443567,.0368438,.730982,-.0270225,.443591,.044591,.731076,-.0321491,.443627,.0530831,.731245,-.0377166,.443699,.0623243,.73144,-.0437216,.443777,.0723181,.7317,-.0501576,.443881,.0830691,.732034,-.0569942,.444014,.0945809,.732388,-.0638756,.444113,.106825,.732853,-.071203,.444247,.119859,.733473,-.0790076,.444442,.13369,.734195,-.0871937,.444645,.148304,.735069,-.095696,.444877,.163702,.736169,-.10426,.445133,.179861,.73747,-.112853,.44537,.196778,.738991,-.12199,.445651,.214496,.740865,-.131153,.445958,.232913,.743637,-.140245,.446548,.251977,.746797,-.149722,.447246,.271551,.751517,-.159341,.448656,.291774,.756156,-.169106,.449866,.312455,.761519,-.178436,.450919,.334552,.768295,-.186904,.451776,.358491,.776613,-.195117,.452832,.383446,.783966,-.202695,.45249,.408945,.793542,-.20985,.452587,.435364,.803192,-.216403,.451852,.462336,.813892,-.22251,.450708,.48987,.824968,-.227676,.4486,.517697,.835859,-.232443,.445156,.545975,.846825,-.235775,.440351,.574483,.858085,-.237897,.433641,.604246,.868825,-.238074,.425354,.634101,.879638,-.237661,.415383,.664201,.889966,-.236186,.404136,.693918,.899479,-.233599,.390917,.723481,.908769,-.229737,.376352,.75258,.917966,-.223836,.360372,.781764,.926304,-.217067,.342551,.811139,.934626,-.209309,.324238,.839585,.941841,-.20071,.304484,.867044,.94789,-.190602,.283607,.894579,.954196,-.179253,.262205,.921743,.958383,-.167646,.239847,.948026,.963119,-.155073,.218078,.973296,.966941,-.141426,.195899,.998135,.970836,-.126849,.174121,1.02021,.973301,-.112296,.153052,1.04085,.97448,-.0964965,.131733,1.05946,.977045,-.080489,.10997,1.07693,.980751,-.064844,.0881657,1.09254,.985475,-.0481938,.0657987,1.10697,.991089,-.0319185,.0435215,1.12004,.996122,-.0158088,.0214779,1.13173,1.00001,372455e-9,-200295e-9,1.14291,.708622,-907597e-11,.45304,141962e-10,.711162,-228911e-9,.454662,358052e-9,.709812,-914446e-9,.453797,.00143034,.709865,-.00205819,.453834,.00321935,.709864,-.00365894,.453833,.00572331,.709855,-.00571692,.453826,.00894278,.709862,-.00823201,.453828,.012878,.709875,-.011204,.453832,.0175295,.709896,-.0146323,.453839,.0228978,.709925,-.0185163,.453847,.0289839,.709974,-.0228551,.453866,.0357894,.710045,-.0276473,.453892,.0433161,.710133,-.032891,.453924,.0515665,.710292,-.0385851,.453992,.0605458,.710485,-.0447254,.45407,.0702574,.710769,-.0513051,.454192,.0807077,.711106,-.0582733,.454329,.091896,.711516,-.0652866,.45446,.103814,.712071,-.0728426,.454653,.116508,.712676,-.0808307,.45484,.129968,.713476,-.0892216,.455096,.144206,.714377,-.0979047,.455346,.159212,.715579,-.106531,.455647,.174973,.716977,-.115492,.455961,.191504,.71862,-.124821,.456315,.208835,.72084,-.134079,.4568,.226869,.723786,-.143427,.457521,.245582,.727464,-.153061,.458475,.264957,.732771,-.162768,.460239,.284948,.736515,-.172627,.460899,.30522,.743519,-.182487,.463225,.326717,.750041,-.191295,.464027,.350113,.758589,-.199746,.465227,.374782,.767703,-.207584,.465877,.400226,.777484,-.214973,.465996,.426442,.788792,-.221796,.466019,.453688,.800194,-.228038,.465083,.481246,.811234,-.233346,.462506,.509086,.822859,-.238073,.459257,.537338,.835082,-.241764,.454863,.566108,.846332,-.244241,.448163,.595126,.858355,-.244736,.439709,.625574,.87034,-.244278,.429837,.65617,.881027,-.24255,.418002,.686029,.891007,-.239912,.404325,.716039,.900874,-.236133,.389222,.745518,.911072,-.230672,.373269,.775026,.920359,-.22356,.355083,.804521,.928604,-.215591,.335533,.834045,.937175,-.206503,.315278,.861612,.942825,-.196684,.293653,.889131,.949805,-.185116,.271503,.916853,.955535,-.172703,.248821,.943541,.959843,-.159978,.225591,.970132,.964393,-.146375,.202719,.994709,.968008,-.131269,.179928,1.0186,.971013,-.11569,.158007,1.03928,.973334,-.1003,.13624,1.05887,.975775,-.0833352,.1138,1.07652,.979579,-.0668981,.0913141,1.09297,.984323,-.0500902,.0683051,1.10734,.990351,-.0332377,.0451771,1.12084,.995823,-.0161491,.0221705,1.13296,1.0001,234083e-9,-108712e-9,1.14441,.683895,-924677e-11,.46015,137429e-10,.68833,-233383e-9,.463134,346865e-9,.688368,-933547e-9,.463159,.00138748,.688367,-.00210049,.463159,.00312187,.688369,-.00373415,.463159,.00555004,.688377,-.00583449,.463163,.00867216,.688386,-.00840128,.463166,.0124884,.688398,-.0114343,.463169,.0169993,.688418,-.0149329,.463175,.0222054,.688453,-.0188964,.463188,.028108,.688515,-.0233239,.463214,.0347085,.68857,-.0282136,.463231,.0420091,.688679,-.033564,.463276,.0500132,.688854,-.0393733,.463356,.0587255,.689038,-.0456354,.46343,.0681476,.689321,-.0523433,.463553,.0782897,.689662,-.059412,.463693,.0891501,.690188,-.0665736,.4639,.100735,.690755,-.0743106,.464107,.113074,.691405,-.0824722,.464329,.126161,.692198,-.0910484,.464585,.140007,.693196,-.0998778,.464893,.154612,.69454,-.108651,.465285,.169984,.695921,-.117855,.465596,.186106,.697749,-.12734,.466056,.203034,.700375,-.136714,.466771,.220703,.703395,-.146386,.467579,.239062,.707904,-.156096,.469067,.258188,.711673,-.165904,.469851,.277759,.717489,-.175812,.471815,.297935,.724051,-.185931,.47389,.318916,.731965,-.195238,.47587,.341591,.741151,-.204021,.477523,.366062,.751416,-.212113,.478881,.391396,.761848,-.21979,.479226,.417599,.771886,-.2267,.478495,.444401,.783998,-.232991,.477622,.472084,.796523,-.238645,.475833,.500193,.808851,-.243396,.472568,.52865,.821191,-.247226,.467857,.557362,.834261,-.250102,.461871,.586768,.846762,-.251056,.453543,.617085,.859867,-.250604,.443494,.647659,.871948,-.248783,.431711,.678119,.882967,-.245855,.417911,.708399,.892826,-.242168,.401993,.738256,.90332,-.237062,.385371,.767999,.913633,-.22997,.366837,.798191,.922774,-.221687,.346372,.827756,.931371,-.212345,.325682,.856425,.938929,-.20206,.303665,.884299,.944821,-.190981,.280786,.912023,.951792,-.178065,.2573,.939669,.957712,-.164634,.233448,.96655,.961912,-.150863,.209504,.992366,.966382,-.13577,.18597,1.01633,.969588,-.119593,.162905,1.03843,.971777,-.103203,.14053,1.05841,.97433,-.0865888,.117909,1.07632,.978686,-.0690829,.0944101,1.09326,.983281,-.0516568,.0705671,1.10796,.989562,-.034558,.0468592,1.12182,.995465,-.0167808,.0229846,1.1342,.999991,373016e-9,-235606e-9,1.1459,.662251,-939016e-11,.468575,132714e-10,.666634,-237624e-9,.471675,335842e-9,.666411,-950385e-9,.471516,.00134321,.666399,-.00213833,.471509,.00302221,.666386,-.0038014,.471499,.00537283,.666405,-.00593958,.471511,.00839533,.666406,-.00855253,.471508,.0120898,.666428,-.0116401,.471519,.0164569,.666444,-.0152015,.471522,.0214971,.66649,-.0192362,.471543,.027212,.666537,-.0237428,.471558,.033603,.666617,-.0287198,.471591,.0406728,.666718,-.0341647,.471631,.0484238,.666889,-.0400759,.47171,.0568621,.667104,-.0464479,.471805,.0659915,.667374,-.0532677,.471923,.0758178,.667772,-.0603805,.472098,.0863425,.668371,-.0677392,.472363,.0975917,.668971,-.0756028,.472596,.109567,.669696,-.0839293,.472869,.122272,.670481,-.0926683,.473126,.135718,.6715,-.1016,.473442,.149914,.672911,-.110566,.47389,.164882,.674512,-.119984,.474354,.180602,.67651,-.129574,.474922,.19711,.679292,-.139106,.475764,.214371,.682798,-.148993,.476886,.232405,.686955,-.158737,.478179,.251153,.691406,-.168754,.479432,.270436,.697438,-.178703,.481481,.290374,.704761,-.188955,.484143,.311044,.713599,-.198814,.487007,.333003,.723194,-.207869,.488962,.357144,.732601,-.216189,.489815,.382169,.744193,-.22398,.490888,.408227,.754907,-.231156,.490355,.434928,.767403,-.23747,.489548,.462599,.78107,-.243503,.488274,.490908,.793893,-.248114,.484843,.519421,.807296,-.25222,.4803,.548561,.820529,-.255265,.474097,.577772,.833716,-.256741,.466041,.607782,.848403,-.25637,.456547,.638807,.860755,-.254804,.443946,.670058,.874012,-.251834,.430852,.700749,.885619,-.247867,.414903,.731446,.896069,-.242634,.397276,.761191,.906266,-.236093,.378535,.791053,.916759,-.227543,.358038,.821298,.92523,-.21783,.335705,.850747,.93436,-.207534,.313797,.879258,.941631,-.195983,.289671,.907734,.947564,-.183567,.265319,.935206,.953681,-.169345,.240815,.962739,.960008,-.154909,.216119,.989227,.964145,-.140161,.192096,1.01465,.968171,-.123411,.167855,1.03737,.969859,-.106525,.144817,1.05767,.972666,-.0891023,.12149,1.0761,.977055,-.0718094,.0975306,1.09336,.982527,-.0534213,.0730217,1.10878,.989001,-.0355579,.0483366,1.12285,.99512,-.0176383,.023938,1.13548,1.00007,368831e-9,-211581e-9,1.14744,.651047,-960845e-11,.484101,12922e-9,.644145,-241347e-9,.478968,324578e-9,.64396,-965142e-9,.478831,.00129798,.64396,-.00217154,.47883,.00292046,.643968,-.00386049,.478835,.00519202,.643974,-.00603186,.478838,.0081128,.643977,-.0086854,.478836,.011683,.643982,-.0118207,.478834,.0159031,.644024,-.0154374,.478856,.0207743,.644059,-.0195343,.478868,.0262975,.644122,-.0241103,.478896,.0324747,.644207,-.0291638,.478933,.039309,.64432,-.0346919,.478981,.0468029,.644481,-.0406919,.479053,.0549614,.644722,-.047159,.479169,.0637909,.645013,-.0540748,.479302,.0732974,.645503,-.0612001,.479541,.0834898,.646117,-.0687303,.479829,.0943873,.646707,-.0767846,.480061,.105991,.647431,-.0852465,.480343,.11831,.64831,-.0940719,.48066,.131348,.649486,-.103056,.481083,.14514,.650864,-.112261,.481528,.159676,.652604,-.121852,.482102,.174979,.654825,-.131505,.482813,.191079,.657876,-.141189,.483876,.207927,.661339,-.151239,.48499,.225586,.665463,-.161091,.486279,.243947,.670542,-.171235,.487968,.262957,.677361,-.181347,.49053,.282781,.685672,-.191679,.493862,.303311,.694551,-.201781,.49699,.324607,.703753,-.211164,.498884,.347916,.713703,-.219675,.500086,.372628,.725911,-.227836,.501554,.398694,.73862,-.23533,.502193,.425529,.752118,-.241786,.501811,.453209,.76579,-.247865,.500185,.481381,.779568,-.252696,.497159,.51011,.793991,-.256802,.492765,.539322,.808182,-.259942,.486827,.569078,.821698,-.261703,.478386,.598818,.836009,-.262006,.468772,.629762,.849824,-.260333,.456352,.661366,.863888,-.257398,.442533,.69295,.876585,-.253264,.426573,.723608,.888665,-.248026,.408964,.754378,.899537,-.241487,.389677,.784761,.9094,-.233463,.368516,.814688,.920166,-.223397,.346624,.845009,.928899,-.21255,.322717,.874431,.937156,-.200869,.298698,.902922,.943861,-.188387,.273491,.931356,.949557,-.174341,.247866,.958854,.955862,-.158994,.222496,.986098,.961721,-.143664,.197522,1.01229,.965976,-.127412,.17302,1.03571,.968652,-.109798,.148954,1.05699,.971084,-.0916787,.125044,1.07587,.975584,-.0739634,.100577,1.09372,.98122,-.055322,.0753666,1.10948,.988253,-.0366825,.0498899,1.12394,.99482,-.0180389,.024611,1.13694,1.00001,229839e-9,-188283e-9,1.14919,.613867,-964198e-11,.479449,123452e-10,.621485,-244534e-9,.485399,313091e-9,.621429,-978202e-9,.485353,.00125245,.62112,-.00220004,.485114,.00281687,.621119,-.0039111,.485112,.00500783,.621122,-.00611091,.485112,.00782498,.621133,-.00879922,.485117,.0112687,.621152,-.0119756,.485125,.0153394,.621183,-.0156396,.485139,.0200382,.621227,-.0197898,.485158,.0253663,.621298,-.0244253,.485192,.0313261,.621388,-.0295441,.485233,.0379204,.621507,-.0351432,.485286,.0451523,.621693,-.0412198,.485378,.0530277,.621933,-.0477673,.485495,.0615522,.622232,-.0547574,.485635,.0707316,.622809,-.0619417,.485943,.0805883,.623407,-.069625,.486232,.0911267,.62406,-.077796,.486516,.102354,.624835,-.0863731,.486838,.114279,.625758,-.095251,.487188,.126902,.627043,-.104299,.487695,.140285,.628438,-.113724,.488163,.154397,.630325,-.123417,.488858,.169267,.632801,-.133137,.489754,.184941,.635784,-.143052,.490815,.20136,.639406,-.153132,.492048,.218643,.643872,-.163143,.49363,.236615,.6499,-.17333,.496009,.255449,.657201,-.183622,.498994,.275006,.666221,-.194019,.502888,.295354,.674419,-.204192,.505459,.316244,.683729,-.21406,.507771,.33849,.695584,-.222854,.510245,.363166,.708583,-.231315,.512293,.389071,.721233,-.238911,.512747,.415737,.735134,-.245657,.512482,.443331,.750179,-.251879,.511526,.471891,.765073,-.256911,.508935,.500892,.779794,-.261144,.504341,.530294,.794801,-.264316,.498515,.560144,.810339,-.266276,.491015,.590213,.824818,-.266981,.481126,.620865,.839375,-.265778,.468685,.652687,.853043,-.262748,.453925,.684759,.867335,-.258474,.437912,.716209,.88037,-.253187,.419648,.747508,.891711,-.246476,.39982,.77797,.902896,-.238735,.37879,.808586,.913601,-.22885,.355891,.838843,.923019,-.217656,.331773,.869014,.933432,-.205539,.307356,.898512,.939691,-.192595,.281321,.9269,.946938,-.178945,.255441,.955297,.952372,-.163587,.229013,.983231,.95909,-.147214,.203179,1.00971,.963675,-.13064,.17792,1.03438,.968247,-.113121,.152898,1.05625,.97001,-.0945824,.128712,1.07598,.974458,-.0755648,.103349,1.094,.980168,-.0571998,.0776731,1.1104,.987295,-.0377994,.0514445,1.12491,.994432,-.0186417,.025429,1.13851,.999975,542714e-9,-282356e-9,1.15108,.592656,-980249e-11,.486018,119532e-10,.598467,-247275e-9,.490781,301531e-9,.597934,-988317e-9,.490343,.00120517,.597903,-.00222366,.490319,.0027116,.597913,-.00395315,.490327,.00482077,.597919,-.00617653,.490329,.00753264,.597936,-.00889375,.490339,.0108478,.597956,-.0121043,.490347,.0147668,.597992,-.0158073,.490365,.0192905,.598032,-.0200017,.490382,.0244204,.598109,-.0246865,.49042,.0301593,.598215,-.0298594,.490474,.03651,.59833,-.0355167,.490524,.0434757,.598525,-.0416559,.490624,.0510629,.598778,-.0482692,.490753,.0592781,.599135,-.0553114,.49094,.0681304,.599802,-.062542,.491328,.0776467,.600361,-.0703638,.491598,.0878184,.60101,-.0786256,.491882,.0986573,.601811,-.0872962,.492232,.11018,.602861,-.0962284,.492684,.1224,.604167,-.10538,.493213,.135354,.605693,-.114896,.493799,.149034,.607682,-.124654,.494576,.163469,.610672,-.13456,.4959,.178747,.613313,-.144581,.496713,.194723,.617603,-.154703,.498499,.211617,.622174,-.16489,.500188,.229183,.628855,-.175164,.503072,.247786,.636963,-.185565,.506798,.267116,.644866,-.195911,.509719,.28702,.653741,-.206104,.512776,.307763,.664942,-.216447,.516812,.329631,.67633,-.22552,.519181,.353515,.690012,-.234316,.521681,.379226,.704243,-.242032,.523129,.405901,.719396,-.249172,.523768,.433585,.734471,-.255543,.522541,.462085,.750539,-.260697,.520217,.491233,.766365,-.26501,.516293,.521094,.781677,-.268409,.509708,.551014,.797132,-.270399,.501944,.581463,.812655,-.271247,.492025,.612402,.828592,-.270708,.480424,.643798,.844044,-.268085,.465955,.67682,.857305,-.263459,.448425,.708496,.87114,-.258151,.430243,.74046,.884936,-.251171,.410578,.771583,.895772,-.243305,.38862,.802234,.906961,-.234037,.365214,.833179,.917775,-.222714,.34116,.86353,.927883,-.210175,.31572,.893557,.936617,-.196925,.289159,.922976,.943384,-.182788,.261996,.951606,.949713,-.167965,.235324,.979958,.955818,-.151109,.208408,1.00765,.961344,-.133834,.182591,1.03329,.965469,-.115987,.156958,1.0557,.968693,-.09746,.132239,1.07583,.973165,-.0778514,.106195,1.09451,.979387,-.0585067,.0797669,1.11137,.98671,-.0390409,.0530263,1.12643,.994093,-.019408,.0263163,1.14016,1.00002,540029e-9,-194487e-9,1.15299,.574483,-989066e-11,.494533,114896e-10,.574478,-249127e-9,.494528,289403e-9,.574607,-996811e-9,.494637,.00115797,.574396,-.00224241,.494458,.00260498,.574377,-.00398632,.49444,.00463102,.574386,-.00622836,.494445,.00723623,.574401,-.0089683,.494453,.010421,.574419,-.0122056,.49446,.0141859,.574459,-.0159396,.494481,.0185322,.574525,-.0201692,.49452,.0234617,.574587,-.0248924,.494547,.0289762,.574697,-.0301074,.494604,.0350797,.574853,-.0358114,.494688,.0417767,.575027,-.041999,.494772,.0490718,.575294,-.0486618,.494915,.0569728,.575733,-.0557148,.495173,.0654955,.576356,-.0630489,.495537,.0746612,.576944,-.0709285,.495836,.0844615,.57765,-.0792723,.496177,.0949142,.578491,-.0880167,.496563,.10603,.579639,-.0969462,.497096,.117841,.580989,-.10622,.497684,.130367,.582587,-.115861,.498337,.143609,.584951,-.125605,.499414,.157625,.587602,-.135608,.500518,.172413,.59076,-.145742,.501767,.187999,.594992,-.155934,.503542,.20445,.600656,-.166303,.506135,.221764,.607816,-.176681,.509542,.24002,.61522,-.187071,.51263,.258992,.623702,-.197465,.516021,.278773,.634192,-.207816,.520422,.299377,.644936,-.218183,.524073,.320802,.657888,-.2278,.528049,.34384,.670666,-.236747,.52986,.36916,.685626,-.24484,.531892,.395867,.701304,-.252071,.532727,.423488,.717727,-.258714,.532146,.452201,.733914,-.264211,.529883,.481579,.750529,-.26859,.5259,.511558,.76747,-.272046,.51999,.542042,.785189,-.274225,.513083,.572799,.800954,-.275189,.502936,.603816,.816962,-.274946,.490921,.635461,.83336,-.272695,.47684,.6676,.848143,-.268223,.459405,.70051,.861818,-.262768,.440319,.732902,.876828,-.255872,.420123,.765084,.889312,-.247703,.398379,.796391,.900412,-.238381,.374496,.827333,.912251,-.227783,.349874,.858385,.921792,-.214832,.323181,.888652,.931273,-.200949,.296624,.917763,.940295,-.186537,.269211,.947878,.946812,-.171538,.241447,.977016,.953588,-.155254,.213829,1.00501,.958841,-.137156,.186807,1.03179,.963746,-.118699,.160706,1.05502,.966468,-.0998358,.135504,1.07568,.971178,-.0805186,.109131,1.09479,.97831,-.0599348,.0818293,1.1123,.985886,-.0399661,.0545872,1.12771,.994021,-.0198682,.0269405,1.14186,1.00009,271022e-9,-12989e-8,1.15514,.538716,-990918e-11,.486732,109675e-10,.550656,-250642e-9,.497518,277412e-9,.55057,-.00100265,.497441,.00110974,.550903,-.00225672,.497733,.00249779,.550568,-.00401046,.497438,.00443906,.550574,-.00626613,.49744,.00693637,.550591,-.0090226,.497449,.00998921,.550623,-.0122795,.497469,.0135984,.550667,-.0160361,.497495,.0177654,.550724,-.0202908,.497526,.0224915,.550792,-.0250421,.497557,.0277795,.550918,-.0302878,.49763,.0336334,.551058,-.0360241,.497701,.0400573,.551276,-.0422473,.497824,.0470585,.551551,-.0489441,.497977,.0546433,.552074,-.0559596,.498312,.0628367,.552681,-.0633978,.498679,.071646,.553324,-.0713176,.499031,.0810746,.554011,-.0797268,.499365,.091129,.55488,-.0885238,.499779,.101837,.556171,-.0974417,.500444,.113239,.557498,-.106841,.501025,.125316,.559299,-.116533,.501864,.138128,.561647,-.126298,.502967,.151695,.564347,-.136388,.504129,.16604,.567863,-.146576,.505713,.181207,.572569,-.156832,.507953,.197259,.578919,-.167323,.511186,.214258,.585387,-.177712,.514042,.232038,.593134,-.188184,.517484,.250733,.603295,-.198717,.522345,.270454,.613854,-.209177,.526751,.290807,.626092,-.219644,.531595,.312202,.637868,-.229494,.534721,.334435,.652458,-.238718,.538304,.359184,.666985,-.247061,.539875,.385637,.683301,-.254652,.541042,.41328,.69998,-.261376,.540735,.441903,.717824,-.267085,.539139,.471609,.734617,-.271465,.534958,.501446,.753663,-.27528,.53032,.532571,.770512,-.277617,.522134,.563641,.787356,-.278525,.51206,.595067,.806252,-.278512,.50119,.627226,.822061,-.277023,.486791,.659402,.838959,-.273175,.470467,.692874,.85379,-.267238,.450688,.725702,.868268,-.260327,.429741,.75832,.881994,-.251946,.407223,.790189,.893885,-.242432,.383214,.821625,.905118,-.231904,.357297,.853011,.916045,-.219545,.330733,.883773,.927614,-.205378,.303916,.914435,.936005,-.190388,.275941,.944502,.944533,-.1749,.247493,.974439,.950758,-.158588,.218996,1.00286,.957078,-.141027,.191559,1.0304,.962448,-.121507,.164457,1.05466,.964993,-.102068,.138636,1.0761,.970017,-.0822598,.111861,1.09541,.97661,-.062033,.0843438,1.11317,.985073,-.0409832,.0558496,1.12911,.993515,-.020146,.0275331,1.1438,1.00006,27329e-8,-107883e-9,1.15736,.525324,-999341e-11,.498153,105385e-10,.526513,-251605e-9,.499277,265329e-9,.526517,-.00100641,.499282,.0010613,.526588,-.00226466,.499337,.00238823,.526539,-.0040255,.499302,.00424535,.526547,-.00628954,.499306,.00663364,.526561,-.00905628,.499313,.00955337,.526593,-.0123253,.499334,.0130054,.526642,-.0160957,.499365,.0169911,.5267,-.0203661,.499396,.0215122,.526792,-.0251347,.499451,.0265718,.526904,-.0303985,.499511,.0321732,.527079,-.0361554,.499617,.0383231,.527285,-.0423982,.499731,.045026,.527602,-.0491121,.499924,.0522936,.528166,-.0561127,.500306,.0601528,.52879,-.0635988,.5007,.0686059,.529421,-.071581,.501048,.0776518,.530144,-.0799854,.501421,.0873148,.531062,-.0888032,.501884,.0976084,.532374,-.0977643,.50259,.108588,.533828,-.107197,.50329,.120234,.53581,-.116887,.504312,.132602,.538063,-.126755,.505365,.145721,.5409,-.136819,.506668,.159617,.544882,-.147117,.508731,.174369,.550238,-.157446,.511601,.190028,.556038,-.167988,.514431,.206587,.563031,-.178364,.517808,.224046,.571543,-.189007,.521937,.242503,.582255,-.199546,.527415,.261977,.59272,-.210084,.531682,.282162,.605648,-.220448,.537123,.303426,.61785,-.230593,.540664,.325323,.632223,-.240238,.544467,.348993,.648819,-.24887,.547594,.375462,.665825,-.256657,.54912,.403024,.683389,-.263711,.549294,.431773,.701495,-.269666,.547649,.461494,.719197,-.274169,.543786,.491623,.737906,-.278124,.538644,.522994,.756652,-.280632,.531057,.554775,.775279,-.281741,.521972,.586441,.792688,-.281652,.509613,.618596,.811894,-.280345,.496497,.651462,.827938,-.277128,.47968,.684023,.844837,-.271646,.460688,.718024,.859239,-.264397,.438872,.751207,.874088,-.256144,.41577,.784232,.887693,-.246311,.391369,.816191,.899402,-.235497,.365872,.847828,.910973,-.223631,.338618,.87934,.92204,-.209874,.310803,.910325,.930987,-.194265,.281802,.940695,.94,-.178125,.252836,.970958,.948018,-.161479,.224239,1.00078,.955141,-.144038,.195857,1.0288,.960513,-.124915,.168487,1.05371,.963964,-.104284,.141495,1.07596,.968713,-.0838732,.114437,1.09628,.975524,-.0635579,.0863105,1.11448,.98431,-.042291,.0574774,1.13069,.992916,-.0209131,.0284343,1.14568,.999926,743097e-9,-379265e-9,1.15955,.501042,-998428e-11,.498726,100306e-10,.502992,-252112e-9,.500665,253283e-9,.502417,-.00100791,.500092,.00101259,.502965,-.00226919,.500621,.00227978,.502318,-.00403109,.499994,.00405011,.502333,-.00629832,.500005,.00632868,.502362,-.00906907,.500027,.00911446,.502369,-.0123423,.500023,.0124078,.50243,-.0161178,.500066,.016211,.502493,-.0203937,.500103,.0205256,.502592,-.0251684,.500166,.0253548,.502707,-.0304389,.50023,.0307029,.502881,-.0362015,.500335,.0365753,.503124,-.0424507,.500488,.0429798,.503443,-.0491582,.500686,.0499268,.504083,-.0561476,.501155,.0574541,.504668,-.0636846,.501524,.0655408,.505319,-.0716834,.501904,.0742072,.50609,-.0800925,.502321,.0834699,.507122,-.0888425,.502896,.0933603,.508414,-.097855,.503603,.10391,.509955,-.107304,.504416,.115113,.512061,-.116921,.505565,.127054,.514419,-.12689,.506732,.139709,.517529,-.136934,.508338,.153173,.522085,-.147327,.510987,.167528,.526986,-.157612,.513527,.182708,.533122,-.168213,.516717,.198881,.540807,-.178688,.520832,.215986,.550687,-.189511,.52632,.234335,.560567,-.199998,.531009,.253375,.571698,-.210652,.535839,.273499,.584364,-.220917,.541091,.294355,.599066,-.23137,.546875,.316525,.614148,-.241206,.551306,.339671,.631157,-.250379,.555187,.36531,.647919,-.258397,.556595,.392767,.666112,-.265528,.556949,.421397,.686158,-.271827,.556617,.451433,.704838,-.27674,.552975,.482131,.723957,-.280733,.547814,.513458,.74262,-.283359,.53997,.545446,.762009,-.284541,.530422,.57775,.781314,-.284507,.518546,.610434,.799116,-.283309,.504178,.643178,.817604,-.280378,.48843,.676248,.83459,-.275619,.469457,.709698,.850974,-.26856,.447698,.744245,.866747,-.260094,.424791,.777695,.881412,-.249929,.399913,.810392,.8936,-.239137,.37308,.842872,.905943,-.226818,.345705,.874677,.916408,-.213699,.31706,.906257,.927215,-.198428,.288444,.936881,.935625,-.181643,.258329,.96795,.944076,-.164386,.228488,.998216,.951229,-.146339,.199763,1.02689,.958793,-.127709,.172153,1.0535,.963219,-.107244,.144989,1.07646,.967562,-.0857764,.11685,1.09675,.974866,-.0645377,.0880571,1.11576,.983353,-.0431732,.0587352,1.13227,.992503,-.0218356,.0294181,1.1478,1.00003,605203e-9,-231013e-9,1.16207,.482935,-101177e-10,.504695,968142e-11,.477554,-251521e-9,.499071,240676e-9,.477904,-.00100683,.499436,96342e-8,.478368,-.00226636,.499899,.0021687,.477977,-.00402719,.499513,.00385384,.477993,-.00629226,.499525,.0060221,.478011,-.00906011,.499536,.00867289,.478051,-.0123305,.499566,.0118074,.478089,-.016102,.499587,.0154269,.478171,-.0203736,.499645,.0195341,.478254,-.025143,.499692,.0241318,.47839,-.0304071,.499779,.0292247,.478588,-.0361631,.499911,.0348196,.478812,-.0424023,.500046,.0409231,.479208,-.0490724,.500326,.047552,.479841,-.0560722,.500805,.0547377,.480392,-.0636125,.501152,.0624607,.481068,-.0716134,.501561,.0707473,.481898,-.0800062,.502054,.0796118,.483022,-.0886568,.502728,.0890974,.484332,-.0977553,.503479,.0992099,.486126,-.107173,.504546,.10999,.488066,-.11677,.50557,.121476,.490521,-.126725,.506849,.133672,.494232,-.136793,.50911,.146731,.498302,-.147116,.511345,.160577,.503565,-.157446,.514344,.175335,.510902,-.168121,.518824,.191207,.519263,-.178799,.523666,.208058,.528204,-.189407,.528296,.225875,.538854,-.200145,.533724,.244782,.551278,-.210701,.539833,.264753,.565222,-.221303,.546131,.285745,.579403,-.231688,.551496,.307592,.595469,-.241718,.556809,.330582,.610929,-.250992,.559641,.354995,.629433,-.259602,.562379,.382471,.648504,-.267038,.563676,.411126,.66756,-.273388,.562092,.440924,.689143,-.278788,.560807,.472118,.709056,-.282783,.555701,.503774,.729855,-.285836,.548698,.536364,.748954,-.287078,.538544,.56895,.768373,-.287133,.526711,.601991,.78827,-.285839,.512511,.635403,.807465,-.283238,.496323,.668797,.825194,-.27906,.477638,.702584,.842203,-.272286,.456253,.736393,.857749,-.263854,.432412,.77096,.874799,-.253943,.407806,.80489,.887497,-.24237,.38033,.83771,.89966,-.230278,.352446,.870376,.911753,-.21646,.323268,.902256,.923011,-.202071,.294314,.933306,.932375,-.185519,.264104,.965177,.940537,-.167604,.234035,.996303,.948904,-.149068,.20412,1.0261,.955263,-.129539,.175431,1.05304,.960303,-.109932,.148116,1.07617,.965512,-.0880572,.119693,1.09742,.973466,-.0660548,.0901619,1.11721,.98284,-.0439228,.0599875,1.13436,.992216,-.0219588,.0298975,1.15006,.999946,119402e-9,-208547e-10,1.16471,.447827,-100414e-10,.491543,914833e-11,.454778,-251257e-9,.499172,22891e-8,.453519,-.00100342,.497787,914184e-9,.45357,-.00225776,.497847,.00205701,.453578,-.00401371,.497855,.00365705,.45357,-.00627107,.497841,.00571453,.453598,-.00902968,.497864,.00823019,.453627,-.0122888,.497882,.0112049,.453684,-.0160475,.497923,.0146405,.453764,-.0203044,.49798,.0185394,.453866,-.0250576,.498049,.0229054,.453996,-.0303028,.49813,.0277424,.454196,-.0360379,.498267,.0330587,.454457,-.0422521,.498445,.0388613,.454926,-.0488393,.498812,.0451767,.455525,-.0558653,.499272,.0520153,.456074,-.0633772,.499625,.0593754,.456752,-.0713606,.500049,.0672751,.457648,-.07971,.500615,.0757447,.458849,-.0883032,.501399,.0848231,.46029,-.0974095,.502293,.0945135,.462,-.106729,.503301,.104848,.464121,-.116354,.504533,.115884,.466889,-.126214,.506172,.127652,.470744,-.136324,.508667,.14024,.47488,-.146595,.510995,.153673,.480845,-.157027,.514832,.168053,.488262,-.167658,.519506,.183508,.496547,-.178343,.524347,.199948,.506254,-.188916,.52983,.217503,.517961,-.199975,.536357,.236272,.531484,-.210624,.543641,.256096,.545496,-.221227,.550048,.277085,.559497,-.231568,.555076,.298615,.575752,-.241698,.560541,.321547,.591999,-.251172,.564156,.345602,.610654,-.260178,.567607,.371851,.630484,-.268094,.56923,.40076,.651807,-.274661,.569779,.430801,.67239,-.280331,.566791,.461939,.693024,-.284501,.562007,.493854,.715473,-.287852,.555791,.526992,.736323,-.28929,.546345,.560102,.755771,-.289405,.534,.593543,.775424,-.2881,.519114,.627256,.795447,-.285562,.502543,.661464,.815319,-.281416,.484773,.695206,.831769,-.275523,.463445,.729044,.849464,-.267516,.440269,.764069,.866775,-.257584,.415049,.799089,.881252,-.245817,.388049,.831948,.894209,-.233127,.35889,.865526,.906922,-.219579,.329915,.89818,.919686,-.204491,.300441,.930013,.929044,-.188962,.269445,.962061,.938393,-.171079,.238402,.994214,.94661,-.15199,.208204,1.02533,.953095,-.131953,.178653,1.0529,.958644,-.111233,.150684,1.0771,.963925,-.0903098,.122359,1.09855,.971995,-.0680505,.0923342,1.11874,.981658,-.0448512,.0614195,1.13635,.991649,-.0221931,.0303582,1.15238,.999985,393403e-9,-111086e-9,1.16772,.396806,-971563e-11,.457671,842355e-11,.429186,-249421e-9,.495017,21625e-8,.429324,-998052e-9,.495173,865322e-9,.429175,-.00224487,.494999,.00194637,.429129,-.00399041,.494952,.00346004,.429153,-.00623476,.494974,.00540684,.429168,-.0089773,.494983,.00778714,.429207,-.0122175,.495012,.0106022,.429257,-.0159542,.495047,.0138535,.429338,-.0201864,.495106,.0175443,.429431,-.0249104,.495165,.0216774,.429587,-.0301252,.495279,.0262594,.429796,-.0358249,.495432,.0312968,.430065,-.0419972,.495621,.0367985,.430588,-.0485144,.496061,.042798,.43113,-.0555028,.496472,.0492914,.431743,-.0629852,.496904,.0562907,.432448,-.0709256,.497369,.0638056,.433414,-.0791942,.498032,.071885,.434638,-.0877346,.498854,.0805517,.43611,-.0968056,.499812,.0898047,.437859,-.106002,.500891,.0997142,.440017,-.115648,.502198,.110289,.443236,-.125427,.504389,.121644,.44697,-.135492,.506809,.133769,.451689,-.145746,.509858,.146787,.45811,-.156219,.514247,.160793,.465305,-.166834,.518816,.175791,.474085,-.177546,.524331,.191906,.484808,-.188262,.53104,.209199,.49732,-.199346,.538511,.227825,.509693,-.209951,.544554,.247269,.524367,-.220533,.551616,.267978,.539228,-.231082,.557368,.289672,.55644,-.241342,.563782,.31268,.574204,-.250964,.568851,.33651,.593388,-.260306,.57312,.362219,.613358,-.268667,.574916,.390322,.634512,-.275591,.575053,.420478,.65563,-.281328,.572404,.451614,.678265,-.285948,.568893,.484112,.70011,-.289408,.561878,.517348,.723005,-.291328,.55359,.551355,.743744,-.291418,.541099,.585109,.763949,-.290252,.526489,.619487,.784186,-.287648,.509496,.65404,.804304,-.283782,.491484,.688649,.823629,-.278067,.470517,.723133,.84094,-.270588,.44705,.757163,.857852,-.261188,.421252,.792816,.874934,-.249313,.394191,.827248,.888709,-.236492,.365359,.861074,.902589,-.222185,.336016,.894417,.914201,-.207314,.30527,.926825,.925978,-.191146,.274532,.9595,.93512,-.174135,.243393,.991583,.943656,-.155231,.212414,1.02356,.951719,-.134403,.182005,1.05239,.957164,-.113023,.153043,1.07754,.962656,-.0914493,.124186,1.09984,.970695,-.0694179,.0941654,1.12,.980749,-.0466199,.0629671,1.13849,.991205,-.0227032,.0311146,1.15494,.999884,632388e-9,-254483e-9,1.1706,.379821,-957289e-11,.460637,789337e-11,.405188,-247483e-9,.491396,204064e-9,.404796,-989434e-9,.490914,815853e-9,.40483,-.00222607,.490949,.00183559,.40473,-.00395723,.49084,.00326332,.404731,-.00618287,.490836,.00509945,.404768,-.00890258,.490871,.00734463,.404791,-.0121156,.490883,.00999992,.404857,-.0158214,.490938,.0130676,.404943,-.0200178,.491004,.0165503,.405059,-.0247027,.491093,.0204521,.405213,-.0298729,.491205,.0247788,.405399,-.0355226,.491333,.0295373,.405731,-.0416352,.491604,.034741,.406303,-.0480807,.492116,.0404255,.406814,-.0550458,.492506,.0465732,.407404,-.0624652,.492926,.0532058,.408149,-.0702958,.493442,.0603442,.409128,-.0784623,.494136,.0680297,.410408,-.087007,.495054,.0762786,.411813,-.0959639,.495962,.0851046,.413735,-.105075,.497257,.0945878,.416137,-.114646,.498882,.104725,.41934,-.124394,.501132,.11563,.423326,-.134328,.503883,.127325,.428419,-.14458,.50747,.139911,.43484,-.154979,.511964,.153481,.442641,-.165628,.517328,.168114,.452511,-.176365,.524258,.183995,.463473,-.187298,.531248,.200953,.475564,-.198244,.538367,.219176,.488664,-.208938,.545175,.238514,.504073,-.219599,.553227,.259129,.520832,-.230378,.560653,.280997,.538455,-.240703,.567523,.303821,.55709,-.250548,.573287,.327948,.576646,-.259964,.577795,.353362,.596705,-.268721,.580077,.380336,.618053,-.276054,.58018,.4101,.640303,-.282176,.578747,.44161,.662365,-.286931,.574294,.474106,.684542,-.290521,.567035,.507549,.707984,-.292672,.558687,.541853,.730913,-.293189,.547606,.576581,.752948,-.292199,.533471,.61172,.773452,-.289508,.516395,.646339,.794715,-.285716,.497873,.682131,.814251,-.280051,.476845,.716396,.833057,-.272873,.453449,.751503,.84959,-.263982,.427857,.786085,.867022,-.252745,.400335,.821355,.882277,-.239655,.371304,.85646,.895375,-.225386,.340397,.890828,.909347,-.209587,.310005,.923532,.921885,-.193433,.2796,.956419,.932127,-.176135,.247276,.989445,.941869,-.157872,.216186,1.02221,.949735,-.137577,.185602,1.05195,.956617,-.115285,.155767,1.07822,.961974,-.0928418,.126103,1.10149,.96972,-.0700592,.0956758,1.12207,.98012,-.0474671,.0643269,1.1408,.990825,-.0238113,.0320863,1.1577,.999876,381574e-9,-812203e-10,1.17403,.367636,-961342e-11,.469176,753287e-11,.380377,-244772e-9,.485434,191797e-9,.380416,-978857e-9,.485475,767015e-9,.380376,-.00220165,.485435,.00172522,.380419,-.00391408,.485487,.00306734,.380438,-.00611549,.485505,.00479332,.380462,-.00880558,.485525,.00690391,.380496,-.0119837,.485551,.00940039,.38056,-.0156487,.485605,.0122848,.38064,-.0197988,.485666,.0155601,.380767,-.0244324,.48577,.0192313,.380909,-.0295444,.485871,.0233032,.381142,-.0351321,.48606,.0277861,.381472,-.0411535,.486336,.0326939,.382015,-.0475408,.486833,.0380565,.382523,-.0544395,.487231,.0438615,.383129,-.061784,.487683,.0501332,.383952,-.0695085,.488313,.0568996,.38498,-.0775819,.489077,.0641952,.386331,-.0860443,.490113,.0720324,.387788,-.0948406,.491099,.0804379,.389808,-.103899,.492566,.0894899,.39252,-.113313,.494601,.0992098,.395493,-.123007,.496619,.109641,.399826,-.132859,.499912,.120919,.405341,-.143077,.504061,.133107,.411932,-.153465,.508905,.146263,.420591,-.164108,.515482,.160544,.43101,-.174893,.523191,.176123,.441881,-.185839,.53026,.192757,.453919,-.196633,.537295,.210535,.468715,-.207611,.546156,.229886,.485182,-.218517,.555173,.250543,.501926,-.229249,.562728,.27221,.51785,-.239481,.567494,.294892,.536947,-.249395,.573889,.318987,.557115,-.259,.578831,.344348,.577966,-.268075,.582055,.371223,.599489,-.276115,.583307,.399834,.62479,-.282523,.583902,.431415,.647504,-.287663,.57953,.464301,.670601,-.291538,.573103,.498123,.693539,-.293842,.563731,.532662,.717385,-.294681,.553169,.567925,.741533,-.293717,.539908,.603502,.762142,-.291156,.521902,.639074,.783014,-.28719,.502815,.674439,.805158,-.281773,.482598,.710497,.823646,-.274682,.458949,.7456,.841879,-.266184,.433129,.781085,.859515,-.255682,.406064,.816,.875335,-.242849,.376509,.851074,.890147,-.228329,.345502,.886473,.903144,-.212491,.31428,.920751,.916618,-.195695,.282994,.954606,.927953,-.178267,.251091,.988402,.937414,-.159549,.219107,1.02141,.946823,-.140022,.18896,1.05167,.954651,-.118154,.158667,1.07819,.959955,-.0946636,.128808,1.1025,.96858,-.0711792,.0973787,1.12391,.97938,-.0475046,.0650965,1.14322,.990498,-.024059,.0326267,1.16077,.999844,-512408e-10,112444e-9,1.17727,.316912,-934977e-11,.425996,695559e-11,.356423,-241372e-9,.479108,179562e-9,.356272,-965292e-9,.478897,71811e-8,.356262,-.00217182,.478894,.00161574,.356265,-.00386092,.478895,.00287261,.356278,-.0060324,.478905,.00448907,.356293,-.00868565,.478914,.00646572,.356346,-.0118207,.478965,.00880438,.356395,-.0154355,.479001,.0115066,.356484,-.019529,.479075,.0145762,.356609,-.0240991,.47918,.018018,.356766,-.0291413,.479305,.0218379,.357009,-.0346498,.479512,.0260454,.357424,-.0405462,.479909,.0306657,.357899,-.0468825,.480337,.0357054,.358424,-.0536887,.480771,.0411728,.359041,-.0609416,.481242,.0470841,.359903,-.0685239,.481943,.0534831,.360932,-.0764883,.482741,.0603795,.362196,-.0848364,.483688,.0678028,.363847,-.0935002,.484947,.0758086,.365972,-.102471,.486588,.0844173,.368741,-.111751,.488787,.0937199,.372146,-.121334,.491405,.103732,.377114,-.131147,.495604,.114608,.38226,-.141213,.499436,.126345,.389609,-.151632,.505334,.139116,.397925,-.162073,.51168,.152995,.407824,-.172819,.518876,.168071,.420014,-.183929,.527639,.184495,.434266,-.195032,.537588,.20232,.447352,-.205792,.544379,.221189,.463726,-.216704,.553422,.241616,.481406,-.227531,.562074,.263298,.498707,-.238017,.568227,.286116,.518039,-.247936,.574473,.3101,.538277,-.257437,.579191,.335401,.561166,-.266829,.584807,.362246,.583189,-.275329,.586476,.390609,.606024,-.28234,.585578,.420998,.632419,-.287924,.584496,.454357,.656128,-.291972,.577766,.488233,.679953,-.29456,.56875,.523248,.704654,-.295816,.558388,.559168,.729016,-.295157,.544826,.595326,.752062,-.292779,.528273,.631864,.773138,-.288681,.508482,.667793,.794869,-.283358,.487341,.704035,.815101,-.27608,.46354,.739925,.834212,-.26767,.438672,.775539,.852368,-.257397,.411239,.810895,.870207,-.245689,.3829,.846472,.884063,-.231452,.351496,.881788,.898284,-.215561,.31895,.917438,.912964,-.198208,.287367,.952422,.924666,-.180426,.254487,.987551,.934429,-.161525,.222226,1.02142,.943485,-.141197,.191143,1.05218,.9521,-.120085,.161112,1.07937,.957876,-.0975881,.130982,1.10403,.966943,-.0726842,.0990553,1.12616,.978313,-.0483705,.0662818,1.14619,.990048,-.0239072,.0329243,1.16413,.999984,461885e-9,-772859e-10,1.18099,.321287,-935049e-11,.455413,659662e-11,.332595,-237513e-9,.471437,167562e-9,.332729,-949964e-9,.471618,670192e-9,.332305,-.00213618,.471028,.00150712,.332326,-.00379765,.471055,.00267959,.332344,-.00593353,.471072,.00418751,.332356,-.00854349,.471077,.00603172,.332403,-.0116268,.471121,.00821362,.332461,-.0151824,.47117,.0107357,.332552,-.0192088,.471251,.0136014,.332657,-.0237024,.47133,.0168152,.332835,-.0286615,.471487,.0203853,.333083,-.0340765,.471708,.0243212,.333547,-.0398563,.47219,.0286518,.333989,-.0460916,.472587,.0333763,.334532,-.0527897,.473054,.0385084,.335167,-.0599284,.473568,.0440638,.33608,-.0673514,.474362,.0500962,.337146,-.0752237,.475231,.0566022,.338462,-.083418,.476282,.0636272,.34014,-.0919382,.477615,.0712153,.342341,-.100741,.479404,.079417,.345088,-.109905,.481618,.0882631,.349049,-.119369,.485081,.0978851,.353939,-.129033,.489317,.108336,.359893,-.139038,.494309,.119698,.366945,-.149411,.499983,.132024,.375814,-.159843,.507185,.145558,.387112,-.170664,.516392,.160433,.40023,-.181897,.526519,.176648,.412555,-.192785,.53423,.193922,.427023,-.203663,.542741,.212662,.443685,-.214695,.552066,.232944,.461499,-.225561,.560762,.254495,.480975,-.236257,.569421,.277531,.501,-.24639,.576101,.301724,.521691,-.256101,.581493,.327112,.543478,-.265289,.585221,.353917,.566094,-.273938,.587614,.381941,.589578,-.281679,.587991,.41172,.614583,-.287655,.585928,.444148,.641813,-.292228,.582092,.478617,.666189,-.295172,.57398,.51397,.690475,-.29648,.561676,.550118,.715543,-.296203,.548758,.586933,.740405,-.293999,.532792,.62384,.762183,-.28998,.512735,.660723,.786069,-.28478,.492402,.69807,.806812,-.277568,.469058,.734422,.826987,-.268951,.443017,.770946,.844588,-.259049,.415501,.80699,.863725,-.2471,.387328,.842107,.879137,-.234157,.356108,.878078,.894634,-.218719,.324315,.914058,.909162,-.201293,.291813,.949922,.92072,-.18267,.258474,.985337,.93158,-.163212,.225593,1.0205,.941238,-.142771,.193986,1.05273,.949293,-.120956,.163392,1.08075,.956226,-.0985743,.132934,1.10559,.96546,-.075118,.101255,1.12823,.977403,-.0497921,.0675441,1.149,.989648,-.0241574,.0334681,1.16765,1.00001,5762e-7,-184807e-9,1.18519,.303474,-916603e-11,.4542,61243e-10,.308894,-232869e-9,.462306,155592e-9,.309426,-931661e-9,.463093,622499e-9,.308643,-.0020949,.461933,.00139979,.308651,-.0037242,.461941,.00248874,.308662,-.00581873,.46195,.00388933,.308687,-.00837818,.461974,.00560247,.308728,-.0114016,.462011,.00762948,.308789,-.0148884,.462067,.00997326,.308882,-.0188369,.462151,.0126375,.309007,-.0232436,.462263,.0156271,.30918,-.0281054,.462417,.0189498,.309442,-.0334065,.462667,.0226167,.309901,-.0390589,.463162,.0266614,.310331,-.0452042,.463555,.0310715,.310858,-.0517735,.464019,.0358698,.311576,-.0587359,.464669,.0410848,.312436,-.0660383,.465406,.0467453,.313526,-.0737266,.466339,.0528718,.314903,-.0817574,.467504,.0595039,.316814,-.090167,.469226,.0666888,.318965,-.0987555,.470981,.0744658,.322077,-.107792,.473814,.082912,.325947,-.117098,.477241,.0920846,.331008,-.126602,.48184,.102137,.337893,-.136619,.488334,.113135,.345106,-.146838,.494415,.12511,.355111,-.157357,.503275,.138356,.365095,-.167955,.510966,.152686,.378344,-.179157,.521508,.16856,.391599,-.190143,.530455,.18561,.407786,-.20123,.541275,.204308,.425294,-.212456,.551784,.224623,.444021,-.223568,.561493,.246172,.463418,-.234154,.569886,.268979,.484077,-.244546,.577116,.293411,.505513,-.254301,.582914,.318936,.527672,-.263564,.587208,.345856,.550565,-.272332,.589277,.374054,.573656,-.280011,.588426,.403276,.59827,-.286924,.587504,.43474,.624731,-.291994,.583401,.468767,.652396,-.295159,.576997,.504411,.67732,-.296954,.565863,.54114,.703147,-.296877,.552316,.57816,.728715,-.295147,.536773,.616124,.752448,-.291275,.51771,.653885,.775169,-.285905,.496087,.691537,.799307,-.279064,.474232,.729251,.819482,-.270294,.447676,.766267,.837659,-.260032,.419656,.802616,.856903,-.248497,.391328,.838583,.873325,-.235252,.360285,.874711,.889788,-.221126,.329215,.91077,.904486,-.204304,.296392,.94653,.917711,-.185562,.262159,.983828,.928969,-.165635,.229142,1.01955,.939707,-.14442,.19673,1.05317,.948167,-.122147,.165095,1.0823,.955222,-.099098,.13451,1.10791,.964401,-.0755332,.102476,1.1312,.976605,-.0513817,.0689667,1.15218,.989085,-.0258499,.034506,1.17129,.999908,617773e-9,-271268e-9,1.18961,.285803,-905752e-11,.452348,572272e-11,.284689,-22732e-8,.450581,143626e-9,.285263,-910214e-9,.451482,575099e-9,.285302,-.00204784,.451553,.00129395,.285318,-.00364057,.451574,.0023006,.28533,-.00568813,.451585,.00359547,.285361,-.00819001,.451618,.00517934,.285397,-.0111458,.45165,.007054,.285447,-.0145536,.451688,.00922167,.285527,-.0184127,.451758,.0116869,.285688,-.0227207,.451929,.0144555,.28584,-.0274712,.452055,.0175341,.286136,-.0326278,.452369,.0209406,.286574,-.0381792,.452853,.0246965,.287012,-.0441879,.453272,.0287996,.287542,-.0506096,.453752,.033268,.288299,-.0573634,.454488,.0381504,.289186,-.0645458,.455294,.0434447,.290302,-.0720405,.456301,.0491973,.291776,-.0799046,.457648,.0554453,.29372,-.088117,.459483,.0622311,.296052,-.0965328,.461571,.0695992,.299563,-.105409,.465085,.077658,.30335,-.114553,.468506,.0864176,.309167,-.123917,.474423,.0961078,.31529,-.13381,.47995,.106643,.324163,-.144021,.488592,.118322,.333272,-.154382,.496461,.131133,.344224,-.165015,.50562,.145208,.357733,-.176168,.516719,.16073,.373046,-.187468,.528513,.177807,.38788,-.198488,.537713,.196072,.405133,-.209545,.547999,.21605,.423845,-.220724,.55759,.237484,.443777,-.231518,.566246,.26039,.464824,-.242035,.574326,.284835,.486635,-.251898,.58037,.310518,.51012,-.261304,.58568,.337678,.535301,-.270384,.590197,.366242,.559193,-.27841,.590569,.395873,.583544,-.285325,.588161,.426857,.608834,-.291113,.584249,.459477,.635753,-.294882,.57763,.494734,.664367,-.297088,.569479,.532023,.689688,-.297364,.555064,.569629,.715732,-.295949,.539522,.608124,.741307,-.292259,.521613,.646231,.764949,-.287063,.49969,.684938,.788599,-.28012,.476747,.723548,.81048,-.27153,.45116,.761135,.831372,-.261289,.424101,.798916,.850092,-.249559,.39443,.835952,.867777,-.236348,.363849,.871606,.884632,-.221569,.332477,.907843,.90047,-.20618,.300667,.944187,.914524,-.188771,.266552,.981371,.926892,-.168362,.232349,1.01841,.937951,-.146761,.199359,1.05308,.947236,-.123813,.1675,1.0839,.954367,-.099984,.136166,1.11047,.963907,-.0759278,.103808,1.13414,.976218,-.0511367,.0697061,1.15575,.988772,-.0267415,.0352529,1.17531,.999888,-520778e-9,289926e-9,1.19389,.263546,-883274e-11,.441896,526783e-11,.262352,-221849e-9,.439889,132311e-9,.262325,-886683e-9,.439848,528824e-9,.26228,-.00199476,.439765,.00118975,.262372,-.00354671,.439922,.00211568,.26239,-.00554141,.439941,.00330652,.262412,-.00797888,.439961,.00476346,.262453,-.0108584,.440002,.00648818,.262528,-.0141788,.440085,.0084835,.262615,-.017938,.440166,.0107533,.262744,-.0221346,.440291,.0133044,.262939,-.026762,.440493,.0161445,.263277,-.0317573,.440889,.0192974,.26368,-.0371832,.441338,.0227699,.264106,-.0430371,.441753,.0265698,.264624,-.0493035,.442227,.0307178,.265378,-.0558669,.442985,.0352616,.266253,-.0628718,.443795,.0401968,.267478,-.0701569,.445008,.04559,.269062,-.077845,.446599,.0514539,.270926,-.0857941,.448349,.0578382,.273693,-.0940773,.451221,.0648363,.276746,-.102704,.454097,.0724389,.281693,-.111735,.459517,.0808744,.287335,-.121004,.46531,.0901551,.29448,-.130734,.472605,.100371,.30257,-.140777,.480251,.111644,.312465,-.15111,.489444,.124111,.324856,-.16189,.500919,.137979,.33774,-.172946,.511317,.153163,.35255,-.184152,.522684,.169817,.367786,-.19522,.53248,.187886,.385474,-.20632,.543326,.207634,.404976,-.217744,.554109,.229165,.425203,-.228691,.563395,.252068,.446704,-.239299,.571565,.276471,.468951,-.249348,.577935,.302323,.493487,-.258933,.584309,.329882,.517861,-.268009,.58773,.358525,.543309,-.276238,.589612,.388585,.569704,-.28356,.589294,.419787,.594871,-.289497,.585137,.452114,.622555,-.294452,.580356,.486466,.651167,-.296918,.57185,.523079,.677332,-.297647,.558428,.5611,.703718,-.296321,.542232,.599592,.730262,-.293339,.524541,.639138,.754304,-.288036,.502691,.677978,.778051,-.281018,.479212,.716537,.801557,-.272414,.454071,.75586,.822559,-.262419,.425952,.794477,.843051,-.250702,.397313,.832664,.86232,-.237264,.366534,.869876,.879044,-.222716,.334816,.906973,.896362,-.206827,.303143,.943558,.910342,-.189659,.269699,.979759,.924119,-.171108,.236411,1.01718,.935374,-.149579,.202224,1.05289,.944295,-.126295,.16989,1.08496,.952227,-.101511,.138089,1.11256,.962041,-.0766392,.105053,1.1375,.97528,-.0511967,.070329,1.15983,.988476,-.025463,.0351268,1.17987,.999962,286808e-10,145564e-10,1.19901,.227089,-841413e-11,.404216,472707e-11,.239725,-215083e-9,.426708,120833e-9,.239904,-860718e-9,.427028,483555e-9,.239911,-.00193661,.427039,.00108806,.239914,-.00344276,.42704,.00193457,.239933,-.00537907,.427064,.00302363,.239944,-.00774482,.427065,.00435604,.239993,-.01054,.427122,.00593398,.240052,-.0137626,.427179,.00775987,.240148,-.0174115,.427279,.00983854,.240278,-.021484,.42741,.0121763,.240472,-.0259729,.427618,.0147827,.240839,-.0308131,.428086,.0176837,.241201,-.0360893,.428482,.0208775,.241626,-.0417723,.428907,.0243821,.242207,-.0478337,.42952,.0282228,.24298,-.0542199,.430332,.0324333,.243881,-.0610015,.431222,.0370252,.245123,-.0680874,.432512,.0420535,.24667,-.0755482,.434088,.0475414,.248779,-.0832873,.436323,.0535542,.251665,-.0913546,.439509,.0601716,.255305,-.0998489,.443478,.0674282,.260049,-.108576,.448713,.0754673,.266192,-.117754,.455524,.084339,.273158,-.127294,.4627,.0941683,.282131,-.137311,.472068,.10515,.293332,-.147736,.483565,.117402,.304667,-.158357,.493702,.130824,.317785,-.169274,.504708,.145724,.333245,-.180595,.517107,.16215,.349843,-.191892,.528849,.180149,.367944,-.203168,.540301,.199746,.387579,-.214443,.551514,.221047,.408247,-.225624,.560906,.243981,.43014,-.236422,.56959,.268513,.452669,-.24654,.576098,.294409,.476196,-.256157,.580925,.322002,.501157,-.265289,.584839,.351052,.527632,-.273671,.587614,.3812,.555754,-.281254,.589119,.412994,.581682,-.287448,.585204,.445498,.608196,-.292614,.579006,.479505,.635661,-.296068,.571297,.514643,.664999,-.297395,.560855,.552213,.691039,-.296645,.544525,.591365,.7179,-.293785,.526535,.630883,.744059,-.289089,.50545,.670932,.76863,-.282239,.482514,.710904,.793273,-.273688,.457246,.750259,.814731,-.26328,.428872,.78948,.835603,-.251526,.399384,.828597,.85489,-.238339,.368811,.866892,.872828,-.223607,.336617,.90563,.889462,-.207538,.303997,.943538,.904929,-.190297,.270812,.980591,.919101,-.172034,.237453,1.01935,.930536,-.152058,.204431,1.05498,.941223,-.129515,.172495,1.08717,.94982,-.104263,.140175,1.11551,.960592,-.0781944,.106465,1.14098,.974629,-.051688,.0711592,1.16418,.98811,-.0253929,.0354432,1.18465,1.00004,804378e-9,-330876e-9,1.20462,.214668,-821282e-11,.406619,433582e-11,.218053,-208144e-9,.413025,109887e-9,.217987,-832212e-9,.412901,439362e-9,.217971,-.00187246,.412876,988623e-9,.217968,-.00332855,.41286,.00175772,.217985,-.00520055,.412882,.00274729,.218014,-.00748814,.412916,.00395842,.218054,-.0101901,.412957,.00539274,.218106,-.0133057,.413005,.00705348,.218217,-.0168342,.413139,.00894581,.218338,-.0207707,.413258,.0110754,.21855,-.0251001,.413509,.0134551,.218913,-.0297861,.413992,.0161081,.219265,-.0348956,.414383,.0190307,.219696,-.0403909,.414839,.0222458,.220329,-.0462003,.415567,.025792,.220989,-.0524208,.41621,.0296637,.222027,-.058948,.417385,.0339323,.223301,-.0658208,.418779,.0386055,.224988,-.0730347,.420665,.0437355,.227211,-.0805274,.423198,.0493844,.230131,-.088395,.426566,.0556135,.233908,-.0966208,.43091,.0624829,.239092,-.105223,.437148,.0701636,.245315,-.11424,.444302,.0786949,.253166,-.12368,.453262,.0882382,.262374,-.133569,.463211,.0988682,.273145,-.143836,.474271,.110727,.285512,-.154577,.4863,.123945,.299512,-.165501,.498817,.138581,.314287,-.176698,.510341,.154676,.331083,-.188066,.522583,.172459,.349615,-.199597,.534879,.191979,.369318,-.210843,.546083,.21309,.390377,-.222068,.5562,.235998,.412411,-.233059,.564704,.260518,.435715,-.24357,.572314,.286795,.461196,-.253356,.579395,.314559,.485587,-.262362,.581985,.343581,.511908,-.270895,.584347,.374367,.539798,-.278452,.58505,.406015,.567974,-.284877,.583344,.439168,.594303,-.290124,.577348,.473005,.622951,-.294183,.570751,.508534,.652404,-.296389,.561541,.544764,.679291,-.296605,.546426,.582927,.706437,-.294095,.528599,.622681,.734485,-.28978,.508676,.663567,.758841,-.283363,.484768,.704092,.78537,-.275015,.460434,.745101,.807315,-.264689,.432166,.784712,.8271,-.252597,.401807,.824241,.849191,-.239154,.371458,.863803,.867046,-.224451,.338873,.903063,.8852,-.208342,.306175,.942763,.901771,-.190684,.272759,.981559,.915958,-.172105,.239306,1.02048,.928046,-.152214,.206071,1.05765,.939961,-.130247,.17367,1.08999,.948711,-.10672,.142201,1.11829,.959305,-.0808688,.108454,1.14467,.973009,-.0539145,.0728109,1.16839,.987631,-.0262947,.0360625,1.19004,.999978,.00132758,-559424e-9,1.21058,.193925,-793421e-11,.391974,392537e-11,.196746,-200315e-9,.397675,991033e-10,.19667,-801099e-9,.397521,396342e-9,.196633,-.00180246,.397445,891829e-9,.196654,-.00320443,.397482,.00158582,.196659,-.00500647,.39748,.00247867,.196683,-.0072086,.397506,.00357167,.196728,-.00981001,.397562,.00486675,.196792,-.0128096,.397633,.00636707,.19689,-.0162055,.397746,.00807752,.197017,-.0199943,.397884,.0100052,.19729,-.024139,.39827,.0121691,.197583,-.0286671,.398639,.0145755,.197927,-.0335858,.399034,.0172355,.198383,-.0388806,.399554,.0201718,.199002,-.0444736,.400289,.0234194,.199739,-.0504583,.401111,.026984,.200784,-.056729,.402349,.0309217,.202075,-.0633643,.403841,.0352496,.203898,-.0703247,.406076,.0400313,.206199,-.0775565,.408841,.0453282,.209252,-.085184,.41259,.0511794,.213638,-.0931994,.418288,.0577459,.21881,-.101617,.424681,.0650508,.225642,-.11052,.433429,.0732759,.233717,-.119772,.442897,.0824683,.242823,-.129505,.452888,.0927484,.254772,-.139906,.466407,.104417,.266603,-.150402,.477413,.117211,.28073,-.161395,.490519,.131598,.295399,-.172465,.50201,.147407,.312705,-.183982,.515311,.165031,.331335,-.195532,.52786,.184336,.351037,-.206971,.5392,.205361,.372175,-.218117,.54941,.228043,.394548,-.229327,.558642,.25267,.419598,-.240052,.567861,.279071,.443922,-.249937,.573332,.306882,.471495,-.259407,.58013,.33661,.496769,-.267749,.580564,.367328,.524951,-.275524,.581696,.399753,.55318,-.282148,.579885,.433134,.581577,-.287533,.575471,.467534,.609231,-.291612,.567445,.502943,.637478,-.293911,.557657,.53871,.667795,-.295096,.546535,.576568,.694272,-.294073,.529561,.614929,.722937,-.290386,.510561,.655909,.749682,-.284481,.487846,.697663,.774754,-.276188,.462487,.738515,.799301,-.266215,.43481,.779802,.820762,-.254116,.404879,.820045,.843231,-.240393,.374559,.860294,.861857,-.225503,.341582,.900965,.880815,-.209382,.308778,.941727,.89766,-.19155,.275232,.980916,.912926,-.172346,.240938,1.02162,.926391,-.151799,.207223,1.0597,.938429,-.129968,.17484,1.09291,.947834,-.10651,.142984,1.12248,.958432,-.0824098,.109902,1.149,.972402,-.0565242,.0744454,1.1733,.987191,-.028427,.0373794,1.19538,.999975,385685e-10,-4203e-8,1.21676,.178114,-766075e-11,.385418,354027e-11,.176074,-191966e-9,.381002,887135e-10,.17601,-767549e-9,.380861,354715e-9,.17598,-.00172696,.380798,798168e-9,.175994,-.00307012,.380824,.00141928,.176017,-.00479684,.380858,.00221859,.176019,-.00690648,.380839,.00319714,.176072,-.00939888,.380913,.0043572,.176131,-.0122726,.380979,.005702,.176239,-.0155264,.38112,.00723689,.176371,-.0191551,.381272,.00896907,.176638,-.023117,.381669,.0109194,.176912,-.0274633,.382015,.0130903,.177279,-.032173,.382476,.0154949,.17774,-.0372219,.383041,.0181669,.178344,-.0426132,.38378,.0211209,.179153,-.0483309,.384773,.0243899,.180197,-.0543447,.386076,.0280062,.181581,-.0607122,.387809,.032004,.18344,-.0673855,.390205,.036453,.186139,-.0743989,.393944,.0414162,.189432,-.0817731,.39832,.0469394,.193795,-.0895464,.404188,.0531442,.199641,-.0978264,.4121,.0601374,.206679,-.106499,.421425,.0680078,.214865,-.115654,.431504,.076919,.224406,-.125268,.442526,.0868835,.235876,-.135475,.455465,.0981875,.248335,-.146023,.4681,.110759,.262868,-.157016,.482069,.124885,.278962,-.168245,.496182,.140645,.295082,-.17958,.507401,.157838,.313738,-.191227,.520252,.17695,.333573,-.202718,.531708,.197817,.356433,-.214424,.544509,.220785,.378853,-.225492,.55373,.245306,.402717,-.236236,.561348,.271593,.428375,-.246568,.568538,.299776,.454724,-.255941,.573462,.329433,.482291,-.264511,.576356,.360598,.509706,-.272129,.576446,.393204,.538805,-.278979,.575298,.427227,.568919,-.284528,.572154,.462157,.596804,-.288801,.564691,.497997,.625987,-.291334,.555134,.534467,.656414,-.292722,.545051,.571736,.683916,-.292185,.528813,.610158,.711809,-.290043,.51106,.649061,.739547,-.285246,.490103,.690081,.766914,-.277647,.465523,.732554,.791375,-.267603,.437718,.773982,.814772,-.256109,.40882,.81609,.836691,-.242281,.377823,.856849,.856984,-.227155,.34496,.898363,.876332,-.210395,.311335,.939471,.894988,-.192612,.277703,.980799,.911113,-.173236,.243019,1.02215,.924092,-.152258,.209037,1.06139,.936828,-.129575,.175909,1.09635,.946869,-.10594,.143852,1.12707,.958284,-.081318,.110289,1.15419,.972325,-.0556133,.0747232,1.17909,.986878,-.0297899,.0383149,1.20163,.999936,-.00197169,912402e-9,1.22338,.151174,-720365e-11,.351531,309789e-11,.155594,-18279e-8,.361806,78608e-9,.156099,-731569e-9,.362982,314615e-9,.156053,-.00164578,.362869,707845e-9,.156093,-.0029261,.362961,.00125884,.156099,-.00457155,.362959,.00196783,.15612,-.00658224,.362982,.00283622,.156168,-.00895774,.363048,.00386625,.156221,-.0116962,.363101,.00506109,.156324,-.0147973,.363241,.00642675,.156476,-.0182503,.363448,.00797175,.156731,-.0220266,.36384,.00971484,.156994,-.026176,.364179,.0116575,.157341,-.0306701,.36462,.0138207,.157867,-.0354591,.365364,.0162356,.15846,-.0406141,.366111,.0189092,.159308,-.0460519,.367248,.021885,.160426,-.0518096,.368767,.0252004,.161877,-.0578906,.370745,.0288825,.163995,-.0642812,.373831,.0330139,.16655,-.0710067,.377366,.0376283,.170237,-.0781522,.382799,.0428493,.175096,-.0857172,.389915,.0487324,.181069,-.0938025,.398487,.0554214,.188487,-.102363,.408799,.0630189,.197029,-.111343,.419991,.071634,.206684,-.120812,.431455,.0812797,.218698,-.131033,.445746,.0923651,.230726,-.141373,.457471,.104545,.245516,-.152387,.472388,.118449,.261551,-.163628,.486671,.133923,.277437,-.174814,.49762,.150849,.296662,-.186713,.51162,.169924,.31795,-.198513,.525435,.190848,.339422,-.210119,.536267,.213504,.362143,-.221354,.545982,.237947,.387198,-.23224,.555364,.264427,.412349,-.24257,.561489,.292519,.439274,-.252284,.566903,.322561,.466779,-.261023,.569614,.353952,.496011,-.26899,.571589,.387278,.524964,-.275498,.570325,.421356,.556518,-.281449,.568792,.457314,.584363,-.285526,.560268,.493199,.614214,-.28844,.55205,.530276,.645684,-.289777,.541906,.56855,.673446,-.289722,.526464,.606927,.701924,-.287792,.509872,.645945,.73037,-.284315,.490649,.685564,.757405,-.278804,.467964,.726511,.784025,-.269543,.441468,.768601,.808255,-.258117,.41216,.811321,.830739,-.244728,.380606,.853496,.851914,-.229428,.348111,.895374,.872586,-.212508,.314732,.937674,.891581,-.194025,.280338,.979869,.907641,-.174711,.245203,1.02253,.922233,-.153509,.21077,1.06371,.935878,-.130418,.177399,1.09972,.946338,-.105558,.144507,1.13124,.957265,-.080059,.110508,1.15973,.971668,-.0539766,.0742311,1.18515,.9866,-.0277101,.0375224,1.20858,1.00021,-515531e-9,135226e-9,1.23135,.137468,-686011e-11,.345041,273315e-11,.13703,-173378e-9,.343936,690761e-10,.136986,-693048e-9,.34383,276126e-9,.136964,-.00155931,.343761,621337e-9,.137003,-.00277211,.343863,.00110494,.137012,-.00433103,.343868,.00172744,.137043,-.00623606,.343916,.00249022,.13709,-.0084868,.343986,.00339559,.137145,-.0110814,.344045,.00444687,.137242,-.0140187,.344177,.00565007,.137431,-.0172713,.344491,.00701868,.137644,-.0208605,.344805,.00856042,.13791,-.024792,.345172,.0102863,.138295,-.0290461,.345734,.0122185,.138764,-.0335957,.346371,.0143771,.139415,-.038467,.347298,.0167894,.140272,-.0436176,.348527,.0194895,.141457,-.0491016,.350276,.0225043,.14303,-.0548764,.352646,.0258962,.145289,-.0610096,.356206,.0297168,.148502,-.0674777,.361488,.0340562,.152188,-.074345,.367103,.0389534,.157359,-.0817442,.375247,.0445541,.16379,-.0896334,.385064,.0509535,.171376,-.098005,.396082,.0582611,.179901,-.106817,.407418,.06654,.189892,-.116239,.420031,.075994,.201838,-.12627,.434321,.0867239,.214311,-.136701,.447631,.0987517,.228902,-.147616,.462046,.112353,.245107,-.158871,.476942,.127605,.262292,-.170261,.490285,.144469,.281215,-.182017,.503783,.163282,.301058,-.193729,.515505,.183873,.322752,-.205512,.52682,.206466,.347547,-.217214,.539473,.231194,.370969,-.227966,.546625,.257288,.397533,-.238555,.55472,.285789,.42398,-.248278,.559468,.315746,.452928,-.257422,.564095,.347724,.482121,-.265306,.565426,.380922,.510438,-.272043,.563205,.415639,.541188,-.277614,.561087,.451702,.571667,-.281927,.554922,.48845,.602432,-.285015,.546838,.526442,.634126,-.286512,.537415,.564896,.662816,-.286388,.522906,.604037,.692411,-.284734,.507003,.643795,.720946,-.281297,.488398,.68298,.748293,-.276262,.466353,.723466,.776931,-.269978,.443573,.764565,.801065,-.260305,.415279,.805838,.825843,-.247426,.384773,.849985,.84807,-.232437,.352555,.893174,.869122,-.215806,.318642,.936564,.888963,-.197307,.28381,.980253,.905547,-.177203,.247888,1.02463,.918554,-.155542,.212904,1.06714,.931395,-.131948,.1787,1.10451,.941749,-.106723,.145902,1.13694,.954551,-.0804939,.111193,1.1666,.970279,-.0534239,.0744697,1.19249,.986117,-.0257452,.0368788,1.21665,.999938,.00190634,-.0010291,1.23981,.118493,-647439e-11,.32272,23772e-10,.118765,-163023e-9,.323456,598573e-10,.118772,-65212e-8,.323477,239447e-9,.118843,-.00146741,.323657,538881e-9,.118804,-.00260846,.323553,95826e-8,.118826,-.00407576,.323595,.00149845,.118846,-.00586826,.323617,.00216047,.118886,-.00798578,.32367,.00294679,.118947,-.0104273,.323753,.00386124,.119055,-.0131909,.323922,.00490999,.119241,-.0162444,.324251,.00610804,.11944,-.0196339,.324544,.00745805,.119739,-.0233378,.325026,.00897805,.12011,-.0273179,.325586,.0106895,.120571,-.0316143,.326231,.0126073,.12124,-.0361939,.327264,.0147654,.122162,-.0410511,.328733,.0172001,.123378,-.0462233,.330659,.0199375,.125183,-.0517109,.333754,.0230498,.127832,-.0575652,.338507,.026597,.130909,-.0637441,.343666,.0306345,.135221,-.0704302,.351063,.035273,.14082,-.0776364,.360604,.0406137,.146781,-.0852293,.369638,.0466788,.155121,-.0935351,.3827,.0537628,.16398,-.102234,.39522,.0617985,.173926,-.111465,.40793,.07097,.185137,-.121296,.42105,.0813426,.19826,-.13169,.435735,.0931596,.212938,-.142614,.450932,.106547,.229046,-.153884,.465726,.121575,.246246,-.165382,.479461,.138286,.264637,-.176806,.492106,.15666,.284959,-.188793,.504774,.17728,.308157,-.200763,.518805,.19988,.330951,-.21239,.528231,.224293,.3549,-.223521,.536376,.250541,.381502,-.234169,.544846,.278902,.409529,-.244077,.551717,.309227,.437523,-.253363,.55517,.341426,.467624,-.261659,.557772,.37518,.497268,-.268498,.556442,.41007,.528294,-.274018,.553915,.446445,.559053,-.278169,.549153,.483779,.589329,-.281229,.539878,.522249,.622503,-.282902,.53162,.561754,.652382,-.282815,.518119,.601544,.681847,-.281247,.502187,.641574,.712285,-.277986,.484824,.682633,.740094,-.273017,.463483,.723426,.768478,-.266692,.441299,.763747,.794556,-.258358,.415238,.805565,.819408,-.248807,.386912,.847254,.843411,-.236214,.356165,.891091,.862397,-.219794,.320562,.936174,.883113,-.201768,.285322,.982562,.90023,-.181672,.249713,1.02862,.915192,-.159279,.214546,1.07163,.928458,-.134725,.180285,1.10995,.94069,-.10913,.147119,1.14354,.953409,-.0821315,.112492,1.17372,.969537,-.0542677,.0752014,1.20043,.985612,-.0259096,.0370361,1.22528,.999835,.00298198,-.00151801,1.24959,.10097,-602574e-11,.300277,202619e-11,.101577,-152164e-9,.302077,511662e-10,.101572,-608889e-9,.302066,204751e-9,.101566,-.00136997,.302047,460753e-9,.101592,-.00243557,.302114,819497e-9,.101608,-.0038053,.30214,.00128154,.101627,-.00547906,.30216,.0018483,.101669,-.00745647,.302224,.00252223,.101732,-.00973615,.302318,.00330716,.101844,-.0123097,.302513,.00421061,.102025,-.0151681,.30285,.00524481,.102224,-.0183334,.303166,.0064154,.102515,-.0217819,.303654,.00774063,.102886,-.0255067,.304243,.0092398,.103395,-.029514,.305089,.0109339,.104109,-.0337912,.306301,.0128561,.105074,-.0383565,.30798,.0150338,.10654,-.0432132,.310726,.0175228,.108478,-.0484244,.314351,.0203648,.111015,-.0539339,.319032,.0236325,.114682,-.0598885,.32605,.0274188,.11911,-.0663375,.334109,.0317905,.124736,-.0733011,.344013,.0368502,.131479,-.0807744,.355358,.0427104,.139283,-.0888204,.367614,.0494788,.148054,-.0973394,.380072,.0572367,.159037,-.10665,.395678,.0662704,.169794,-.116221,.40795,.0763192,.18314,-.126632,.423546,.087956,.197515,-.137383,.438213,.101042,.213514,-.148641,.453248,.115827,.23065,-.160117,.46688,.132283,.249148,-.171807,.479962,.150644,.270219,-.183695,.494618,.171073,.292338,-.195574,.506937,.193378,.314999,-.207205,.516463,.217585,.340991,-.218955,.528123,.24428,.367982,-.229917,.537025,.272784,.39432,-.239737,.541627,.302742,.423364,-.249048,.546466,.335112,.453751,-.257329,.549466,.369032,.48416,-.264623,.549503,.404577,.515262,-.270411,.547008,.441337,.547036,-.274581,.542249,.479162,.576614,-.277266,.533015,.517904,.611143,-.279144,.525512,.558508,.640989,-.279001,.51154,.598995,.671182,-.277324,.495641,.639935,.700848,-.273908,.477526,.681017,.729862,-.269063,.457955,.722764,.758273,-.262282,.434846,.764349,.784121,-.254281,.409203,.806206,.809798,-.24505,.382694,.848617,.834953,-.233861,.354034,.892445,.856817,-.221308,.321764,.936263,.877609,-.205996,.288118,.982401,.897489,-.186702,.253277,1.02975,.913792,-.164618,.217963,1.07488,.92785,-.140023,.183221,1.11487,.940378,-.11328,.149385,1.14947,.95273,-.0853958,.114152,1.1807,.969059,-.0568698,.0769845,1.20912,.985574,-.0276502,.0381186,1.23498,.999943,.00239052,-.00126861,1.25987,.0852715,-560067e-11,.279021,171162e-11,.0854143,-140871e-9,.279483,430516e-10,.0854191,-563385e-9,.2795,172184e-9,.0854188,-.00126753,.279493,387464e-9,.0854229,-.00225337,.279501,68918e-8,.0854443,-.00352086,.279549,.00107803,.0854697,-.00506962,.279591,.00155536,.0855093,-.00689873,.279652,.00212354,.0855724,-.00900821,.279752,.00278703,.0856991,-.0113799,.280011,.0035551,.085855,-.0140314,.280297,.00443449,.0860682,-.016963,.280682,.00543636,.086344,-.0201438,.281159,.0065788,.0867426,-.0235999,.281886,.00787977,.087239,-.0273069,.282745,.0093606,.0879815,-.031269,.284139,.011056,.0891258,-.035531,.28647,.0130065,.0906909,-.0400947,.289708,.0152495,.0927624,-.0449638,.293904,.0178454,.0958376,-.0502427,.300471,.0208915,.0995827,-.0559514,.30806,.0244247,.104526,-.0622152,.317874,.0285721,.110532,-.0690046,.329332,.0334227,.117385,-.0763068,.341217,.0390466,.12522,-.084184,.353968,.0455786,.134037,-.0925248,.366797,.0530773,.144014,-.101487,.380209,.0617424,.156013,-.111273,.395956,.071777,.168872,-.121431,.41053,.0830905,.183089,-.132105,.425073,.0959341,.198763,-.143286,.439833,.110448,.216159,-.154841,.454507,.126769,.234859,-.166588,.468368,.14495,.255879,-.178626,.482846,.165233,.27677,-.190218,.493489,.187217,.301184,-.202227,.506549,.211659,.325852,-.213764,.5158,.237922,.352824,-.22487,.525442,.26632,.380882,-.235246,.532487,.296691,.410137,-.244847,.537703,.329179,.439787,-.253122,.540361,.363135,.472291,-.260517,.542734,.399222,.501856,-.266519,.538826,.436352,.534816,-.270905,.535152,.474505,.565069,-.273826,.525979,.513988,.597154,-.275333,.516394,.554852,.630473,-.275314,.506206,.596592,.660574,-.273323,.489769,.638117,.692015,-.270008,.472578,.680457,.720647,-.265001,.452134,.723008,.750528,-.258311,.430344,.765954,.777568,-.250046,.405624,.809012,.80387,-.240114,.378339,.852425,.828439,-.228737,.349877,.895346,.851472,-.216632,.318968,.940695,.873906,-.202782,.287489,.987235,.89467,-.187059,.254394,1.03348,.912281,-.168818,.221294,1.07812,.927358,-.146494,.18675,1.11928,.940385,-.120009,.152322,1.15609,.952672,-.0917183,.117514,1.18875,.968496,-.0620321,.0797405,1.21821,.985236,-.0314945,.0402383,1.24523,.99998,-575153e-9,110644e-9,1.27133,.0702429,-512222e-11,.255273,140947e-11,.0702981,-128826e-9,.255469,354488e-10,.0703691,-515562e-9,.255727,141874e-9,.0703805,-.00116,.255754,31929e-8,.0703961,-.00206224,.255813,567999e-9,.0704102,-.00322223,.255839,88871e-8,.0704298,-.00463928,.255863,.00128272,.0704759,-.00631375,.255953,.00175283,.0705434,-.00824317,.256079,.00230342,.0706693,-.010412,.25636,.0029443,.0708189,-.0128439,.256647,.00368031,.0710364,-.0155177,.257084,.00452614,.0713223,-.0184374,.257637,.00549706,.0717182,-.0216002,.258416,.00661246,.072321,-.0249966,.259699,.00790147,.0731446,-.0286566,.261475,.0093884,.0743352,-.0325888,.264132,.0111186,.0760676,-.036843,.26815,.013145,.078454,-.0414292,.273636,.0155251,.0818618,-.0464634,.281653,.0183525,.0857382,-.0519478,.289992,.0216642,.0908131,-.0579836,.30066,.0255956,.0967512,-.0645124,.312204,.0301954,.103717,-.0716505,.325001,.0356017,.111596,-.0793232,.338129,.041896,.120933,-.087645,.352853,.0492447,.130787,-.096492,.366192,.0576749,.142311,-.105973,.380864,.0673969,.155344,-.116182,.396575,.0785899,.169535,-.126815,.411443,.0912377,.185173,-.138015,.426256,.105607,.201755,-.149325,.439607,.121551,.221334,-.161207,.455467,.139608,.241461,-.173162,.469096,.159591,.26294,-.18504,.481014,.18156,.286776,-.196881,.493291,.205781,.311596,-.208311,.503556,.231819,.338667,-.219671,.513268,.260274,.366021,-.230451,.519414,.290862,.395875,-.240131,.526766,.323196,.425564,-.248566,.52905,.357071,.457094,-.256195,.530796,.393262,.488286,-.262331,.528703,.430797,.522291,-.267141,.52727,.470231,.554172,-.270411,.519848,.510477,.586427,-.271986,.510307,.551594,.619638,-.27192,.499158,.593849,.650656,-.269817,.483852,.636314,.68284,-.266267,.467515,.679679,.714356,-.26113,.44931,.723884,.742717,-.254067,.425789,.767245,.770894,-.245652,.401144,.811819,.797358,-.235554,.374224,.856315,.823377,-.223896,.346167,.901077,.847456,-.210865,.316056,.946502,.870697,-.196574,.284503,.993711,.891068,-.180814,.251628,1.04134,.909267,-.163314,.219065,1.08609,.925653,-.143304,.186446,1.12702,.940017,-.121322,.153416,1.16371,.952398,-.0973872,.120334,1.19712,.967568,-.0698785,.08352,1.22791,.984772,-.0390031,.0439209,1.25672,1.00026,-.0070087,.00315668,1.28428,.0556653,-459654e-11,.227325,112556e-11,.0565238,-116382e-9,.230826,284985e-10,.0565717,-465666e-9,.231026,114036e-9,.0565859,-.00104773,.231079,256656e-9,.0565761,-.00186255,.231025,45663e-8,.0565913,-.00291002,.231058,714664e-9,.0566108,-.00418998,.231085,.00103224,.0566532,-.00570206,.231169,.00141202,.0567473,-.00743666,.231417,.00186018,.0568567,-.00940298,.231661,.00238264,.0569859,-.0115991,.231895,.00298699,.0572221,-.0140096,.232456,.00368957,.057519,-.0166508,.233096,.00450303,.0579534,-.01951,.234094,.00544945,.0585922,-.0225991,.235629,.00655564,.0595647,-.0259416,.238106,.00785724,.0609109,-.0295661,.241557,.00939127,.0628751,-.0335126,.246652,.0112198,.0656908,-.0378604,.254091,.0134168,.0691347,-.0426543,.262666,.0160374,.0732165,-.0478967,.272029,.0191514,.0782863,-.0536716,.283007,.0228597,.0843973,-.0600683,.295732,.0272829,.0913598,-.0670095,.308779,.032484,.0994407,-.0745516,.322886,.0385886,.108189,-.082712,.336408,.0457133,.118574,-.0914927,.351692,.0539832,.129989,-.100854,.366502,.0635162,.142722,-.110837,.381675,.0744386,.156654,-.121353,.3963,.0868483,.172151,-.132414,.411477,.100963,.188712,-.143809,.42508,.116795,.208093,-.155765,.441328,.134715,.227936,-.167608,.454328,.154396,.249495,-.179579,.467235,.176179,.27362,-.191488,.480248,.200193,.296371,-.202618,.487886,.225775,.324234,-.214133,.499632,.25441,.353049,-.225212,.509532,.285077,.381785,-.234875,.514265,.317047,.414038,-.244205,.521282,.351874,.445251,-.252145,.522931,.388279,.476819,-.258433,.520947,.425825,.509209,-.263411,.517669,.465104,.542759,-.266732,.512841,.505741,.574822,-.268263,.503317,.547611,.609324,-.268489,.493035,.590953,.641772,-.266941,.478816,.63488,.674049,-.263297,.462863,.679072,.705071,-.257618,.442931,.723487,.734709,-.250625,.421299,.768708,.763704,-.24179,.397085,.814375,.791818,-.231115,.370577,.859907,.817439,-.21922,.34232,.906715,.843202,-.205658,.312627,.953943,.866639,-.190563,.280933,1.00185,.888129,-.173978,.248393,1.05105,.907239,-.155485,.216007,1.09704,.923893,-.134782,.183233,1.13857,.938882,-.11249,.150376,1.17539,.952464,-.0890706,.117177,1.20924,.968529,-.0646523,.0813095,1.24055,.984763,-.038606,.0439378,1.27018,1.00053,-.01238,.00598668,1.29873,.0437928,-409594e-11,.204012,879224e-12,.0440166,-103395e-9,.205049,221946e-10,.0440529,-413633e-9,.205225,887981e-10,.0440493,-930594e-9,.2052,199858e-9,.0439884,-.00165352,.204901,355495e-9,.0440716,-.0025849,.205255,556983e-9,.0440968,-.00372222,.205311,805326e-9,.0441359,-.00506478,.205391,.00110333,.0442231,-.00660384,.205638,.00145768,.0443254,-.00835246,.205877,.00187275,.0444832,-.0102992,.20627,.00235938,.0447001,-.0124449,.206796,.0029299,.0450168,-.0147935,.207593,.0036005,.0454816,-.017336,.208819,.00439246,.0462446,-.0201156,.211036,.00533864,.0473694,-.0231568,.214388,.00646984,.0490191,-.0264941,.219357,.00783856,.0512776,-.030184,.226061,.00950182,.0541279,-.0342661,.234094,.0115156,.0578989,-.0388539,.244297,.0139687,.0620835,-.0438735,.254457,.0169015,.0673497,-.04951,.266706,.0204554,.0731759,-.0556263,.278753,.0246606,.0803937,-.0624585,.29309,.0297126,.0879287,-.0697556,.305856,.0355868,.0970669,-.0778795,.321059,.0425768,.106508,-.0863541,.333873,.05056,.11776,-.0955935,.349008,.0598972,.130081,-.105438,.363776,.0706314,.144454,-.115899,.380112,.0828822,.1596,-.126827,.394843,.0967611,.176097,-.138161,.409033,.112381,.194726,-.149904,.424257,.129952,.213944,-.161675,.436945,.149333,.235516,-.173659,.450176,.170892,.260564,-.185963,.466305,.194984,.285183,-.197582,.477328,.220805,.311095,-.208697,.486566,.248694,.338924,-.219519,.494811,.279015,.369757,-.229766,.504065,.311725,.3996,-.238879,.507909,.345844,.430484,-.246802,.509805,.381749,.46413,-.253924,.511436,.420251,.497077,-.259319,.508787,.459957,.530434,-.263297,.50394,.501356,.565725,-.265619,.49804,.544252,.599254,-.265842,.487346,.587856,.631251,-.263978,.472975,.631969,.663972,-.26043,.457135,.677471,.697724,-.255358,.439844,.723744,.727725,-.248308,.417872,.770653,.756417,-.239181,.39273,.817357,.785419,-.22814,.367839,.864221,.81266,-.215681,.339449,.912701,.839391,-.201623,.309279,.962419,.86366,-.185624,.278029,1.0122,.885028,-.16797,.245294,1.06186,.904639,-.148336,.212689,1.10934,.922048,-.12637,.179616,1.15063,.936952,-.102928,.146749,1.18885,.951895,-.0785268,.112733,1.22352,.967198,-.0530153,.0760056,1.25681,.984405,-.02649,.0383183,1.28762,1.00021,70019e-8,-20039e-8,1.31656,.0325964,-355447e-11,.176706,655682e-12,.0329333,-899174e-10,.178527,165869e-10,.0329181,-359637e-9,.178453,663498e-10,.0329085,-808991e-9,.178383,149332e-9,.0329181,-.00143826,.178394,265873e-9,.0329425,-.00224678,.178517,416597e-9,.0329511,-.00323575,.17849,603299e-9,.033011,-.00439875,.178695,829422e-9,.0330733,-.00574059,.178843,.00109908,.0331857,-.00725896,.179176,.00141933,.0333445,-.00895289,.179618,.0017999,.0335674,-.0108219,.180238,.00225316,.033939,-.0128687,.181417,.00279765,.0345239,-.015114,.183395,.0034564,.0354458,-.017596,.186616,.00425864,.0368313,-.0203524,.191547,.00524936,.0386115,-.0234105,.197508,.00647033,.0410303,-.0268509,.205395,.00798121,.0442245,-.0307481,.215365,.0098557,.0478659,-.0350863,.225595,.0121417,.0522416,-.0399506,.236946,.0149385,.0574513,-.045357,.249442,.0183189,.0631208,-.0512863,.261222,.0223644,.0701124,-.0579273,.275418,.0272418,.0777331,-.0650652,.288989,.0329458,.0862709,-.0728813,.302546,.0396819,.096103,-.081363,.317164,.04757,.106976,-.0904463,.331733,.0567012,.119175,-.100105,.34661,.067202,.132919,-.110375,.362249,.0792588,.147727,-.121115,.376978,.0928672,.163618,-.132299,.390681,.108228,.182234,-.143887,.406571,.125502,.201809,-.155827,.42042,.144836,.225041,-.168357,.438411,.166706,.247621,-.18004,.450368,.189909,.27097,-.191536,.460083,.215251,.296658,-.203024,.469765,.243164,.325892,-.214056,.481837,.273388,.35406,-.224104,.487474,.305344,.384372,-.233489,.492773,.339741,.41749,-.241874,.498451,.376287,.45013,-.248834,.499632,.414195,.481285,-.254658,.495233,.454077,.519183,-.259367,.496401,.496352,.551544,-.261818,.487686,.538798,.587349,-.262964,.479453,.583626,.621679,-.262128,.467709,.629451,.654991,-.258998,.452123,.67566,.686873,-.254119,.433495,.723248,.719801,-.246946,.413657,.771156,.750355,-.237709,.390366,.81989,.780033,-.226549,.364947,.868601,.809254,-.214186,.337256,.920034,.836576,-.199639,.307395,.971706,.861774,-.183169,.275431,1.02479,.885707,-.165111,.243431,1.07837,.904742,-.144363,.210921,1.12783,.915604,-.121305,.17647,1.17254,.930959,-.0962119,.143106,1.21012,.948404,-.069969,.108112,1.24474,.967012,-.0427586,.0708478,1.27718,.984183,-.0147043,.032335,1.3083,.999577,.0142165,-.00726867,1.3382,.0229227,-299799e-11,.148623,462391e-12,.0232194,-758796e-10,.15054,117033e-10,.0232315,-303636e-9,.15063,468397e-10,.0232354,-683189e-9,.150624,105472e-9,.0232092,-.0012136,.150445,187744e-9,.0232523,-.00189765,.150679,294847e-9,.0232828,-.00273247,.150789,428013e-9,.0233371,-.00371287,.150995,591134e-9,.0234015,-.00484794,.15118,787642e-9,.023514,-.00612877,.151562,.00102547,.023679,-.00756125,.152116,.00131351,.0239559,-.00914651,.153162,.00166594,.0244334,-.010904,.155133,.00210182,.025139,-.0128615,.158035,.00264406,.0262598,-.0150628,.162751,.00332923,.0277875,-.0175532,.168944,.00419773,.0298472,-.0203981,.176835,.00530034,.0325444,-.023655,.186686,.00669777,.0355581,-.0272982,.196248,.00842661,.0392841,-.0314457,.207352,.0105854,.0436815,-.0361157,.219279,.0132458,.0485272,-.0412932,.230728,.0164736,.0541574,-.0470337,.242994,.0203715,.0609479,-.0535002,.257042,.0250953,.0685228,-.0605409,.27102,.0306856,.0768042,-.0680553,.28406,.037193,.0864844,-.0765011,.299186,.0449795,.0969415,-.0852674,.3132,.0538316,.108478,-.0947333,.327138,.0641149,.121705,-.10481,.342345,.0759185,.136743,-.115474,.358472,.0894116,.152986,-.126536,.374067,.104562,.170397,-.138061,.388267,.121632,.191392,-.150203,.406467,.140996,.211566,-.161751,.418641,.161696,.233567,-.173407,.430418,.184557,.257769,-.185397,.44277,.210092,.28531,-.197048,.457191,.237827,.311726,-.20784,.464712,.267253,.340537,-.218345,.472539,.299332,.372921,-.228306,.482331,.333988,.402924,-.236665,.484378,.369722,.434475,-.244097,.484717,.407836,.469736,-.250547,.487093,.448465,.505045,-.25511,.485575,.490263,.540262,-.258444,.481225,.534495,.576347,-.259903,.473481,.579451,.608656,-.259572,.4603,.625604,.646679,-.257908,.450341,.674511,.679902,-.253663,.431561,.723269,.714159,-.247419,.412684,.773263,.745345,-.239122,.389388,.824182,.778248,-.228837,.365361,.876634,.807208,-.216197,.337667,.92945,.835019,-.201772,.307197,.985261,.860261,-.185291,.274205,1.04299,.877601,-.165809,.240178,1.09816,.898211,-.143897,.207571,1.14694,.915789,-.119513,.174904,1.19008,.931831,-.0932919,.141423,1.2297,.949244,-.0656528,.105603,1.26553,.967527,-.0370262,.0679551,1.29986,.984139,-.00730117,.0283133,1.33252,.999713,.0234648,-.0121785,1.36397,.0152135,-245447e-11,.122795,304092e-12,.0151652,-615778e-10,.122399,76292e-10,.0151181,-245948e-9,.122023,304802e-10,.0151203,-553394e-9,.12203,686634e-10,.015125,-983841e-9,.122037,122463e-9,.0151427,-.00153774,.12214,192706e-9,.0151708,-.0022103,.122237,281219e-9,.0152115,-.00300741,.12238,390804e-9,.0152877,-.00392494,.1227,526317e-9,.015412,-.00496597,.123244,69443e-8,.0156201,-.00613314,.124228,90547e-8,.0159658,-.00744113,.125945,.0011732,.0165674,-.00892546,.129098,.00151888,.017487,-.010627,.133865,.00197007,.018839,-.0126043,.140682,.0025637,.020554,-.0148814,.148534,.00333637,.0226727,-.0175123,.157381,.00433738,.0251879,-.0205266,.166685,.00561664,.0283635,-.0240319,.177796,.00725563,.0318694,-.0279432,.188251,.00928811,.0361044,-.0324313,.200038,.011835,.0406656,-.0373527,.210685,.0149146,.0463846,-.0430132,.224182,.0187254,.0525696,-.0491013,.23634,.0232283,.0598083,-.0559175,.250013,.0286521,.0679437,-.0633657,.263981,.0350634,.0771181,-.0714602,.278072,.0425882,.0881273,-.0803502,.29511,.0514487,.0996628,-.0896903,.309976,.0615766,.112702,-.099644,.325611,.0732139,.126488,-.109829,.339321,.0862324,.142625,-.120859,.35574,.101275,.15953,-.131956,.369845,.117892,.176991,-.143145,.38146,.136205,.199715,-.155292,.40052,.157252,.220787,-.167066,.412055,.179966,.243697,-.178396,.423133,.204418,.272106,-.190433,.439524,.232141,.297637,-.201265,.447041,.261109,.325273,-.211834,.454488,.292627,.357219,-.221889,.465004,.326669,.387362,-.230729,.468527,.362426,.423131,-.23924,.475836,.401533,.45543,-.246067,.475017,.441902,.493393,-.251557,.478017,.484239,.526253,-.255571,.4709,.528586,.560554,-.257752,.463167,.574346,.599306,-.258076,.456452,.621655,.634541,-.256471,.443725,.670492,.668907,-.253283,.428719,.721943,.705619,-.247562,.411348,.772477,.739034,-.240626,.388939,.8264,.771408,-.231493,.36425,.881702,.803312,-.220125,.337321,.9385,.828457,-.206645,.305364,.997437,.854819,-.190664,.273715,1.05693,.878666,-.171429,.242218,1.11251,.898404,-.149235,.209556,1.16398,.917416,-.12435,.176863,1.21014,.933133,-.0972703,.142775,1.25178,.95066,-.0683607,.106735,1.29028,.968589,-.0378724,.0681609,1.32703,.984776,-.00605712,.0273966,1.36158,.99994,.0263276,-.0138124,1.3943,.00867437,-186005e-11,.0928979,173682e-12,.00864003,-466389e-10,.0925237,435505e-11,.00864593,-186594e-9,.0925806,174322e-10,.00864095,-419639e-9,.0924903,392862e-10,.00863851,-746272e-9,.0924589,702598e-10,.00868531,-.00116456,.0929,111188e-9,.00869667,-.00167711,.0928529,163867e-9,.00874332,-.00228051,.0930914,23104e-8,.00882709,-.00297864,.0935679,31741e-8,.00898874,-.00377557,.0946165,430186e-9,.00929346,-.00469247,.0967406,580383e-9,.00978271,-.00575491,.100084,783529e-9,.0105746,-.00701514,.105447,.00106304,.0116949,-.00851797,.112494,.00144685,.0130419,-.0102757,.119876,.00196439,.0148375,-.012381,.129034,.00266433,.0168725,-.01482,.137812,.00358364,.0193689,-.0176563,.147696,.00478132,.0222691,-.0209211,.157795,.00631721,.0256891,-.0246655,.168431,.00826346,.0294686,-.0288597,.178587,.0106714,.0340412,-.0336441,.190251,.0136629,.0393918,-.039033,.202999,.0173272,.0453947,-.0450087,.215655,.0217448,.0521936,-.0515461,.228686,.0269941,.0600279,-.058817,.242838,.033272,.0692398,-.0667228,.258145,.0406457,.0793832,-.0752401,.273565,.0492239,.0902297,-.0841851,.287735,.0590105,.102014,-.0936479,.301161,.0702021,.116054,-.103967,.317438,.0832001,.13191,-.114622,.334166,.0977951,.148239,-.125452,.348192,.113985,.165809,-.136453,.361094,.131928,.184616,-.147648,.373534,.151811,.207491,-.159607,.39101,.174476,.230106,-.171119,.402504,.198798,.257036,-.182906,.418032,.225796,.281172,-.193605,.425468,.254027,.312034,-.204771,.440379,.285713,.340402,-.214988,.445406,.319196,.370231,-.224711,.44968,.35537,.407105,-.233516,.460747,.393838,.439037,-.240801,.460624,.433747,.47781,-.24762,.465957,.477234,.510655,-.251823,.460054,.52044,.550584,-.255552,.459172,.567853,.585872,-.257036,.450311,.615943,.620466,-.257535,.437763,.667693,.660496,-.255248,.426639,.718988,.695578,-.251141,.409185,.772503,.732176,-.244718,.39015,.827023,.760782,-.236782,.362594,.885651,.79422,-.225923,.33711,.943756,.824521,-.213855,.308272,1.00874,.854964,-.197723,.278529,1.06764,.878065,-.179209,.246208,1.12836,.899834,-.157569,.21329,1.18318,.918815,-.133206,.181038,1.23161,.934934,-.106545,.146993,1.27644,.952115,-.0780574,.111175,1.31842,.96906,-.0478279,.0728553,1.35839,.985178,-.0160014,.032579,1.39697,1.00039,.0173126,-.0095256,1.43312,.00384146,-124311e-11,.0613583,778271e-13,.00390023,-314043e-10,.0622919,196626e-11,.00389971,-125622e-9,.0622632,787379e-11,.00389491,-282352e-9,.0620659,1778e-8,.00391618,-502512e-9,.0624687,320918e-10,.00392662,-784458e-9,.0625113,515573e-10,.00396053,-.00112907,.0628175,778668e-10,.00401911,-.00153821,.0633286,113811e-9,.00414994,-.0020208,.0646443,16445e-8,.00441223,-.00260007,.0673886,237734e-9,.00484427,-.0033097,.0716528,345929e-9,.00549109,-.00418966,.0774998,505987e-9,.00636293,-.00527331,.0844758,739208e-9,.00746566,-.00660428,.0921325,.00107347,.00876625,-.00818826,.0997067,.00153691,.0103125,-.0100811,.107433,.00217153,.0123309,-.0123643,.117088,.00303427,.0146274,-.0150007,.126438,.00416018,.0172295,-.0180531,.135672,.00561513,.0204248,-.0215962,.146244,.007478,.0241597,-.0256234,.157481,.00981046,.0284693,-.0302209,.169125,.0127148,.033445,-.0353333,.181659,.0162453,.0391251,-.0410845,.1944,.0205417,.0454721,-.0473451,.207082,.0256333,.0530983,-.0542858,.221656,.0317036,.0615356,-.0618384,.236036,.0388319,.0703363,-.0697631,.248398,.046974,.0810391,-.0784757,.263611,.0565246,.0920144,-.0873488,.275857,.0671724,.105584,-.0973652,.292555,.0798105,.119506,-.107271,.306333,.0935945,.134434,-.117608,.318888,.109106,.153399,-.128938,.337552,.127074,.171258,-.139944,.349955,.14643,.191059,-.151288,.361545,.168,.215069,-.163018,.378421,.192082,.237838,-.174226,.38879,.217838,.266965,-.186063,.405857,.246931,.292827,-.196909,.414146,.277505,.324352,-.207473,.426955,.310711,.354427,-.217713,.433429,.346794,.389854,-.227183,.443966,.385237,.420749,-.235131,.44471,.424955,.459597,-.242786,.451729,.468446,.495316,-.248767,.45072,.513422,.534903,-.253351,.450924,.560618,.572369,-.256277,.445266,.609677,.612383,-.2576,.438798,.660995,.644037,-.256931,.421693,.713807,.686749,-.254036,.4109,.767616,.719814,-.249785,.390151,.82533,.754719,-.244283,.367847,.888311,.792022,-.235076,.345013,.948177,.822404,-.225061,.316193,1.01661,.853084,-.211113,.287013,1.08075,.879871,-.19449,.255424,1.14501,.901655,-.174023,.222879,1.20203,.919957,-.1509,.18989,1.25698,.938412,-.124923,.15606,1.30588,.953471,-.0968139,.120512,1.3529,.970451,-.066734,.0828515,1.3986,.985522,-.034734,.0424458,1.44148,1.00099,-.00102222,678929e-9,1.48398,965494e-9,-627338e-12,.0306409,197672e-13,99168e-8,-158573e-10,.0314638,499803e-12,991068e-9,-634012e-10,.031363,200682e-11,974567e-9,-14144e-8,.03036,457312e-11,998079e-9,-252812e-9,.031496,860131e-11,.00102243,-396506e-9,.0319955,148288e-10,.00107877,-577593e-9,.0331376,249141e-10,.00121622,-816816e-9,.0359396,423011e-10,.0014455,-.00113761,.0399652,724613e-10,.00178791,-.00156959,.0450556,123929e-9,.00225668,-.00214064,.0508025,208531e-9,.00285627,-.00287655,.0568443,341969e-9,.0035991,-.00380271,.0630892,544158e-9,.00455524,-.00496264,.0702204,842423e-9,.00569143,-.0063793,.0773426,.00126704,.00716928,-.00813531,.0860839,.00186642,.00885307,-.0101946,.0944079,.00267014,.0109316,-.0126386,.103951,.00374033,.0133704,-.0154876,.113786,.0051304,.0161525,-.0187317,.123477,.00688858,.0194267,-.0224652,.133986,.00910557,.0230967,-.0265976,.143979,.0118074,.0273627,-.0312848,.154645,.0151266,.0323898,-.0365949,.166765,.0191791,.0379225,-.0422914,.177932,.0239236,.0447501,-.0487469,.19167,.0296568,.0519391,-.0556398,.203224,.0362924,.0599464,-.0631646,.215652,.0440585,.0702427,-.0714308,.232089,.0531619,.0806902,-.0800605,.245258,.0634564,.0923194,-.0892815,.258609,.0752481,.106938,-.09931,.276654,.0888914,.121238,-.109575,.289847,.104055,.138817,-.120461,.307566,.121266,.15595,-.131209,.320117,.139944,.178418,-.143049,.339677,.161591,.197875,-.154074,.349886,.184303,.224368,-.166307,.369352,.210669,.252213,-.178051,.386242,.238895,.277321,-.189335,.395294,.269182,.310332,-.200683,.412148,.302508,.338809,-.210856,.418266,.337264,.372678,-.220655,.428723,.374881,.405632,-.230053,.433887,.415656,.442293,-.237993,.439911,.457982,.477256,-.244897,.440175,.502831,.515592,-.250657,.441079,.550277,.550969,-.255459,.435219,.601102,.592883,-.257696,.432882,.651785,.629092,-.259894,.421054,.708961,.672033,-.258592,.41177,.763806,.709147,-.256525,.395267,.824249,.745367,-.254677,.375013,.8951,.784715,-.247892,.353906,.959317,.818107,-.240162,.327801,1.03153,.847895,-.229741,.298821,1.10601,.879603,-.213084,.269115,1.164,.902605,-.195242,.236606,1.22854,.922788,-.174505,.203442,1.29017,.944831,-.150169,.169594,1.34157,.959656,-.124099,.135909,1.3956,.972399,-.0960626,.0990563,1.45128,.986549,-.0657097,.0602348,1.50312,1.00013,-.0333558,.0186694,1.55364,619747e-11,-1e-7,.00778326,796756e-16,237499e-13,-999999e-13,282592e-10,114596e-15,100292e-11,-166369e-11,250354e-9,677492e-14,350752e-11,-637769e-11,357289e-9,631655e-13,826445e-11,-174689e-10,516179e-9,31851e-11,242481e-10,-450868e-10,.0010223,130577e-11,455631e-10,-89044e-9,.00144302,374587e-11,971222e-10,-178311e-9,.00241912,102584e-10,171403e-9,-313976e-9,.00354938,236481e-10,292747e-9,-520026e-9,.00513765,496014e-10,789827e-9,-.00118187,.0238621,139056e-9,.00114093,-.00171827,.0286691,244093e-9,.00176119,-.00249667,.0368565,420623e-9,.0022233,-.00333742,.0400469,65673e-8,.00343382,-.00481976,.0535751,.00109323,.00427602,-.00600755,.057099,.00155268,.00461435,-.00737637,.0551084,.00215031,.00695698,-.00971401,.0715767,.00316529,.00867619,-.0120943,.0793314,.00436995,.0106694,-.0148202,.0869391,.0058959,.0140351,-.0183501,.101572,.00798757,.0168939,-.022006,.11018,.0104233,.020197,-.0261568,.119041,.0134167,.0254702,-.0312778,.135404,.0173009,.0298384,-.0362469,.1437,.0215428,.035159,-.042237,.15512,.0268882,.0427685,-.0488711,.17128,.033235,.0494848,-.0557997,.181813,.0404443,.0592394,-.0635578,.198745,.0490043,.0681463,-.071838,.210497,.0588239,.0804753,-.0809297,.228864,.0702835,.0942205,-.0906488,.247008,.0834012,.106777,-.100216,.258812,.0975952,.124471,-.110827,.278617,.114162,.138389,-.121193,.287049,.131983,.159543,-.13253,.307151,.152541,.176432,-.143611,.31564,.174673,.201723,-.15548,.33538,.199842,.229721,-.167166,.355256,.227097,.250206,-.178238,.360047,.256014,.282118,-.189905,.378761,.28855,.312821,-.201033,.39181,.323348,.341482,-.211584,.397716,.360564,.377368,-.221314,.410141,.400004,.418229,-.230474,.423485,.442371,.444881,-.239443,.418874,.488796,.488899,-.245987,.427545,.535012,.520317,-.253948,.422147,.589678,.568566,-.256616,.42719,.637683,.599607,-.26376,.415114,.703363,.64222,-.268687,.408715,.771363,.685698,-.2694,.399722,.83574,.732327,-.266642,.388651,.897764,.769873,-.267712,.369198,.983312,.806733,-.263479,.346802,1.06222,.843466,-.254575,.321368,1.13477,.873008,-.242749,.29211,1.20712,.908438,-.22725,.262143,1.27465,.936321,-.207621,.228876,1.33203,.950353,-.187932,.19484,1.40439,.96442,-.165154,.163178,1.4732,.979856,-.139302,.127531,1.53574,.982561,-.11134,.0903457,1.59982,.996389,-.0808124,.0489007,1.6577],ba=[1,0,0,0,1,791421e-36,0,0,1,104392e-29,0,0,1,349405e-26,0,0,1,109923e-23,0,0,1,947414e-22,0,0,1,359627e-20,0,0,1,772053e-19,0,0,1,108799e-17,0,0,1,110655e-16,0,0,1,865818e-16,0,0,.999998,545037e-15,0,0,.999994,285095e-14,0,0,.999989,126931e-13,0,0,.999973,489938e-13,0,0,.999947,166347e-12,0,0,.999894,502694e-12,0,0,.999798,136532e-11,0,0,.999617,335898e-11,0,0,.999234,752126e-11,0,0,.998258,152586e-10,0,0,.99504,266207e-10,0,0,.980816,236802e-10,0,0,.967553,207684e-11,0,0,.966877,403733e-11,0,0,.965752,741174e-11,0,0,.96382,127746e-10,0,0,.960306,202792e-10,0,0,.953619,280232e-10,0,0,.941103,278816e-10,0,0,.926619,160221e-10,0,0,.920983,235164e-10,0,0,.912293,311924e-10,0,.0158731,.899277,348118e-10,0,.0476191,.880884,26041e-9,0,.0793651,.870399,338726e-10,0,.111111,.856138,392906e-10,0,.142857,.837436,372874e-10,0,.174603,.820973,392558e-10,0,.206349,.803583,434658e-10,0,.238095,.782168,40256e-9,0,.269841,.764107,448159e-10,0,.301587,.743092,457627e-10,0,.333333,.721626,455314e-10,0,.365079,.700375,477335e-10,0,.396825,.677334,461072e-10,0,.428571,.655702,484393e-10,0,.460317,.632059,464583e-10,0,.492064,.610125,483923e-10,0,.52381,.58653,464342e-10,0,.555556,.564508,477033e-10,0,.587302,.541405,459263e-10,0,.619048,.519556,46412e-9,0,.650794,.497292,448913e-10,0,.68254,.475898,445789e-10,0,.714286,.454722,433496e-10,0,.746032,.434042,423054e-10,0,.777778,.414126,413737e-10,0,.809524,.394387,397265e-10,0,.84127,.375841,390709e-10,0,.873016,.357219,369938e-10,0,.904762,.340084,365618e-10,0,.936508,.322714,342533e-10,0,.968254,.306974,339596e-10,0,1,1,101524e-23,0,0,1,10292e-22,0,0,1,130908e-23,0,0,1,473331e-23,0,0,1,625319e-22,0,0,1,107932e-20,0,0,1,163779e-19,0,0,1,203198e-18,0,0,1,204717e-17,0,0,.999999,168995e-16,0,0,.999998,115855e-15,0,0,.999996,66947e-14,0,0,.999991,330863e-14,0,0,.999983,141737e-13,0,0,.999968,532626e-13,0,0,.99994,177431e-12,0,0,.999891,528835e-12,0,0,.999797,142169e-11,0,0,.999617,347057e-11,0,0,.999227,77231e-10,0,0,.998239,155753e-10,0,0,.994937,268495e-10,0,0,.980225,213742e-10,0,0,.967549,21631e-10,0,0,.966865,417989e-11,0,0,.965739,763341e-11,0,0,.963794,130892e-10,0,0,.960244,206456e-10,0,0,.953495,282016e-10,0,148105e-9,.940876,271581e-10,0,.002454,.926569,164159e-10,0,.00867491,.920905,239521e-10,0,.01956,.912169,315127e-10,0,.035433,.899095,346626e-10,0,.056294,.882209,290223e-10,0,.0818191,.870272,342992e-10,0,.111259,.855977,394164e-10,0,.142857,.837431,372343e-10,0,.174603,.820826,396691e-10,0,.206349,.803408,435395e-10,0,.238095,.782838,419579e-10,0,.269841,.763941,450953e-10,0,.301587,.742904,455847e-10,0,.333333,.721463,458833e-10,0,.365079,.700197,477159e-10,0,.396825,.677501,470641e-10,0,.428571,.655527,484732e-10,0,.460317,.6324,476834e-10,0,.492064,.609964,484213e-10,0,.52381,.586839,475541e-10,0,.555556,.564353,476951e-10,0,.587302,.541589,467611e-10,0,.619048,.519413,463493e-10,0,.650794,.497337,453994e-10,0,.68254,.475797,445308e-10,0,.714286,.454659,435787e-10,0,.746032,.434065,424839e-10,0,.777778,.414018,41436e-9,0,.809524,.39455,401902e-10,0,.84127,.375742,390813e-10,0,.873016,.357501,377116e-10,0,.904762,.339996,36535e-9,0,.936508,.323069,351265e-10,0,.968254,.306897,339112e-10,0,1,1,10396e-19,0,0,1,104326e-20,0,0,1,110153e-20,0,0,1,144668e-20,0,0,1,34528e-19,0,0,1,175958e-19,0,0,1,12627e-17,0,0,1,936074e-18,0,0,1,645742e-17,0,0,.999998,401228e-16,0,0,.999997,222338e-15,0,0,.999995,10967e-13,0,0,.999991,482132e-14,0,0,.999981,189434e-13,0,0,.999967,667716e-13,0,0,.999938,212066e-12,0,0,.999886,60977e-11,0,0,.999792,159504e-11,0,0,.999608,381191e-11,0,0,.999209,833727e-11,0,0,.998179,165288e-10,0,0,.994605,274387e-10,0,0,.979468,167316e-10,0,0,.967529,242877e-11,0,0,.966836,461696e-11,0,0,.96569,830977e-11,0,0,.963706,140427e-10,0,244659e-11,.960063,217353e-10,0,760774e-9,.953113,286606e-10,0,.00367261,.940192,247691e-10,0,.00940263,.927731,195814e-10,0,.018333,.920669,252531e-10,0,.0306825,.911799,324277e-10,0,.0465556,.89857,340982e-10,0,.0659521,.883283,319622e-10,0,.0887677,.86989,35548e-9,0,.114784,.855483,397143e-10,0,.143618,.837987,391665e-10,0,.174606,.820546,411306e-10,0,.206349,.802878,436753e-10,0,.238095,.783402,444e-7,0,.269841,.763439,458726e-10,0,.301587,.742925,467097e-10,0,.333333,.721633,478887e-10,0,.365079,.69985,481251e-10,0,.396825,.67783,491811e-10,0,.428571,.655126,488199e-10,0,.460318,.632697,496025e-10,0,.492064,.609613,48829e-9,0,.52381,.587098,492754e-10,0,.555556,.564119,482625e-10,0,.587302,.541813,482807e-10,0,.619048,.519342,471552e-10,0,.650794,.497514,466765e-10,0,.68254,.475879,455582e-10,0,.714286,.454789,446007e-10,0,.746032,.434217,435382e-10,0,.777778,.414086,421753e-10,0,.809524,.394744,412093e-10,0,.84127,.375782,396634e-10,0,.873016,.357707,386419e-10,0,.904762,.340038,370345e-10,0,.936508,.323284,359725e-10,0,.968254,.306954,3436e-8,0,1,1,599567e-19,0,0,1,600497e-19,0,0,1,614839e-19,0,0,1,686641e-19,0,0,1,972658e-19,0,0,1,221271e-18,0,0,1,833195e-18,0,0,1,403601e-17,0,0,.999999,206001e-16,0,0,.999998,101739e-15,0,0,.999997,470132e-15,0,0,.999993,200436e-14,0,0,.999988,783682e-14,0,0,.999979,280338e-13,0,0,.999962,917033e-13,0,0,.999933,274514e-12,0,0,.999881,753201e-12,0,0,.999783,189826e-11,0,0,.999594,440279e-11,0,0,.999178,93898e-10,0,0,.998073,181265e-10,0,0,.993993,280487e-10,0,0,.979982,149422e-10,0,0,.968145,378481e-11,0,0,.966786,53771e-10,0,0,.965611,947508e-11,0,388934e-10,.963557,156616e-10,0,9693e-7,.959752,235144e-10,0,.00370329,.952461,291568e-10,0,.00868428,.940193,240102e-10,0,.0161889,.929042,231235e-10,0,.0263948,.920266,273968e-10,0,.0394088,.911178,337915e-10,0,.0552818,.897873,333629e-10,0,.0740138,.884053,351405e-10,0,.0955539,.869455,378034e-10,0,.119795,.854655,399378e-10,0,.14656,.838347,419108e-10,0,.175573,.820693,440831e-10,0,.206388,.802277,445599e-10,0,.238095,.783634,472691e-10,0,.269841,.763159,476984e-10,0,.301587,.742914,491487e-10,0,.333333,.721662,502312e-10,0,.365079,.699668,502817e-10,0,.396825,.677839,51406e-9,0,.428571,.655091,511095e-10,0,.460317,.632665,516067e-10,0,.492064,.609734,512255e-10,0,.52381,.587043,510263e-10,0,.555556,.564298,50565e-9,0,.587302,.541769,497951e-10,0,.619048,.519529,492698e-10,0,.650794,.497574,482066e-10,0,.68254,.476028,473689e-10,0,.714286,.454961,461941e-10,0,.746032,.434341,450618e-10,0,.777778,.414364,438355e-10,0,.809524,.394832,424196e-10,0,.84127,.376109,412563e-10,0,.873016,.35779,396226e-10,0,.904762,.340379,384886e-10,0,.936508,.323385,368214e-10,0,.968254,.307295,356636e-10,0,1,1,106465e-17,0,0,1,106555e-17,0,0,1,107966e-17,0,0,1,114601e-17,0,0,1,137123e-17,0,0,1,21243e-16,0,0,.999999,489653e-17,0,0,.999999,160283e-16,0,0,.999998,62269e-15,0,0,.999997,251859e-15,0,0,.999996,996192e-15,0,0,.999992,374531e-14,0,0,.999986,132022e-13,0,0,.999975,433315e-13,0,0,.999959,131956e-12,0,0,.999927,372249e-12,0,0,.999871,972461e-12,0,0,.999771,235343e-11,0,0,.999572,52768e-10,0,0,.999133,109237e-10,0,0,.997912,203675e-10,0,0,.993008,279396e-10,0,0,.980645,139604e-10,0,0,.970057,646596e-11,0,0,.966717,65089e-10,0,474145e-10,.965497,111863e-10,0,89544e-8,.96334,179857e-10,0,.0032647,.959294,259045e-10,0,.0075144,.951519,292327e-10,0,.0138734,.940517,249769e-10,0,.0224952,.93014,26803e-9,0,.0334828,.91972,303656e-10,0,.0468973,.910294,353323e-10,0,.0627703,.897701,351002e-10,0,.0811019,.884522,388104e-10,0,.10186,.869489,412932e-10,0,.124985,.853983,415781e-10,0,.150372,.838425,454066e-10,0,.177868,.820656,471624e-10,0,.207245,.801875,475243e-10,0,.238143,.783521,505621e-10,0,.269841,.763131,50721e-9,0,.301587,.74261,523293e-10,0,.333333,.72148,528699e-10,0,.365079,.699696,538677e-10,0,.396825,.677592,539255e-10,0,.428571,.65525,546367e-10,0,.460317,.632452,541348e-10,0,.492064,.609903,544976e-10,0,.52381,.586928,536201e-10,0,.555556,.564464,535185e-10,0,.587302,.541801,524949e-10,0,.619048,.519681,51812e-9,0,.650794,.497685,507687e-10,0,.68254,.47622,496243e-10,0,.714286,.455135,485714e-10,0,.746032,.4346,471847e-10,0,.777778,.414564,459294e-10,0,.809524,.395165,444705e-10,0,.84127,.376333,430772e-10,0,.873016,.358197,416229e-10,0,.904762,.34064,401019e-10,0,.936508,.323816,386623e-10,0,.968254,.307581,370933e-10,0,1,1,991541e-17,0,0,1,992077e-17,0,0,1,100041e-16,0,0,1,10385e-15,0,0,1,115777e-16,0,0,1,150215e-16,0,0,.999999,254738e-16,0,0,.999999,598822e-16,0,0,.999998,179597e-15,0,0,.999997,602367e-15,0,0,.999994,206835e-14,0,0,.99999,694952e-14,0,0,.999984,223363e-13,0,0,.999972,678578e-13,0,0,.999952,193571e-12,0,0,.999919,516594e-12,0,0,.99986,128739e-11,0,0,.999753,299298e-11,0,0,.999546,648258e-11,0,0,.999074,129985e-10,0,0,.997671,232176e-10,0,0,.991504,256701e-10,0,0,.981148,131141e-10,0,0,.971965,869048e-11,0,280182e-10,.966624,808301e-11,0,695475e-9,.965344,135235e-10,0,.00265522,.963048,210592e-10,0,.00622975,.958673,287473e-10,0,.0116234,.950262,281379e-10,0,.018976,.940836,271089e-10,0,.0283844,.930996,30926e-9,0,.0399151,.919848,348359e-10,0,.0536063,.909136,366092e-10,0,.0694793,.897554,384162e-10,0,.0875342,.884691,430971e-10,0,.107749,.869414,447803e-10,0,.130087,.853462,452858e-10,0,.154481,.838187,495769e-10,0,.180833,.820381,502709e-10,0,.209005,.801844,522713e-10,0,.238791,.783061,541505e-10,0,.269869,.763205,553712e-10,0,.301587,.742362,564909e-10,0,.333333,.721393,572646e-10,0,.365079,.699676,581012e-10,0,.396825,.677395,58096e-9,0,.428571,.655208,585766e-10,0,.460317,.632451,583602e-10,0,.492064,.609839,580234e-10,0,.52381,.587093,577161e-10,0,.555556,.564467,568447e-10,0,.587302,.542043,563166e-10,0,.619048,.519826,55156e-9,0,.650794,.497952,541682e-10,0,.68254,.476477,528971e-10,0,.714286,.455412,514952e-10,0,.746032,.434926,502222e-10,0,.777778,.4149,485779e-10,0,.809524,.395552,472242e-10,0,.84127,.376712,454891e-10,0,.873016,.358622,440924e-10,0,.904762,.341048,422984e-10,0,.936508,.324262,408582e-10,0,.968254,.308013,390839e-10,0,1,1,613913e-16,0,0,1,614145e-16,0,0,1,617708e-16,0,0,1,633717e-16,0,0,1,681648e-16,0,0,1,808291e-16,0,0,1,114608e-15,0,0,.999998,210507e-15,0,0,.999997,499595e-15,0,0,.999995,139897e-14,0,0,.999994,419818e-14,0,0,.999988,127042e-13,0,0,.999979,375153e-13,0,0,.999965,106206e-12,0,0,.999945,285381e-12,0,0,.999908,723611e-12,0,0,.999846,17255e-10,0,0,.999733,386104e-11,0,0,.999511,808493e-11,0,0,.998993,156884e-10,0,0,.997326,265538e-10,0,0,.989706,206466e-10,0,0,.981713,130756e-10,0,70005e-10,.973636,106473e-10,0,464797e-9,.966509,10194e-9,0,.00201743,.965149,165881e-10,0,.00497549,.962669,249147e-10,0,.00953262,.95786,317449e-10,0,.0158211,.949334,281045e-10,0,.0239343,.941041,303263e-10,0,.0339372,.931575,356754e-10,0,.0458738,.920102,397075e-10,0,.059772,.908002,384886e-10,0,.075645,.897269,43027e-9,0,.0934929,.884559,479925e-10,0,.113302,.869161,48246e-9,0,.135045,.853342,509505e-10,0,.158678,.837633,542846e-10,0,.184136,.820252,554139e-10,0,.211325,.801872,581412e-10,0,.240113,.782418,585535e-10,0,.270306,.7631,610923e-10,0,.301594,.742183,613678e-10,0,.333333,.721098,627275e-10,0,.365079,.699512,629413e-10,0,.396825,.677372,636351e-10,0,.428571,.655059,633555e-10,0,.460317,.632567,636513e-10,0,.492064,.609784,628965e-10,0,.52381,.587237,625546e-10,0,.555556,.564525,615825e-10,0,.587302,.542181,605048e-10,0,.619048,.520017,596329e-10,0,.650794,.498204,581516e-10,0,.68254,.476742,569186e-10,0,.714286,.455803,553833e-10,0,.746032,.435251,537807e-10,0,.777778,.415374,522025e-10,0,.809524,.395921,503421e-10,0,.84127,.377253,488211e-10,0,.873016,.359021,468234e-10,0,.904762,.341637,453269e-10,0,.936508,.3247,433014e-10,0,.968254,.308625,418007e-10,0,1,1,286798e-15,0,0,1,286877e-15,0,0,1,288094e-15,0,0,1,293506e-15,0,0,1,309262e-15,0,0,.999999,348593e-15,0,0,.999999,444582e-15,0,0,.999998,688591e-15,0,0,.999996,134391e-14,0,0,.999993,317438e-14,0,0,.999989,835609e-14,0,0,.999983,228677e-13,0,0,.999974,623361e-13,0,0,.999959,165225e-12,0,0,.999936,419983e-12,0,0,.999896,101546e-11,0,0,.99983,232376e-11,0,0,.999709,50156e-10,0,0,.999469,10167e-9,0,0,.998886,190775e-10,0,0,.996819,300511e-10,0,0,.988837,185092e-10,0,168222e-12,.982178,134622e-10,0,259622e-9,.975017,125961e-10,0,.00142595,.967101,13507e-9,0,.00382273,.964905,205003e-10,0,.00764164,.96218,29546e-9,0,.0130121,.956821,343738e-10,0,.0200253,.948829,305063e-10,0,.0287452,.941092,346487e-10,0,.039218,.931883,412061e-10,0,.0514748,.920211,444651e-10,0,.0655351,.907307,431252e-10,0,.0814082,.89684,490382e-10,0,.0990939,.884119,53334e-9,0,.118583,.869148,54114e-9,0,.139856,.853377,578536e-10,0,.162882,.836753,592285e-10,0,.187615,.820063,622787e-10,0,.213991,.801694,645492e-10,0,.241918,.782116,65353e-9,0,.271267,.762673,674344e-10,0,.301847,.742133,682788e-10,0,.333333,.720779,691959e-10,0,.365079,.699386,696817e-10,0,.396826,.67732,699583e-10,0,.428572,.654888,698447e-10,0,.460318,.632499,694063e-10,0,.492064,.609825,691612e-10,0,.52381,.587287,681576e-10,0,.555556,.564743,674138e-10,0,.587302,.542409,661617e-10,0,.619048,.520282,647785e-10,0,.650794,.498506,633836e-10,0,.68254,.477102,615905e-10,0,.714286,.456167,601013e-10,0,.746032,.435728,581457e-10,0,.777778,.415809,564215e-10,0,.809524,.396517,544997e-10,0,.84127,.377737,525061e-10,0,.873016,.359698,506831e-10,0,.904762,.342164,48568e-9,0,.936508,.325417,467826e-10,0,.968254,.309186,446736e-10,0,1,1,109018e-14,0,0,1,10904e-13,0,0,1,109393e-14,0,0,1,11095e-13,0,0,1,1154e-12,0,0,1,126089e-14,0,0,.999999,15059e-13,0,0,.999997,207899e-14,0,0,.999994,348164e-14,0,0,.999993,705728e-14,0,0,.999987,163692e-13,0,0,.999981,406033e-13,0,0,.999969,10245e-11,0,0,.999953,255023e-12,0,0,.999925,61511e-11,0,0,.999881,142218e-11,0,0,.99981,313086e-11,0,0,.99968,653119e-11,0,0,.999418,12832e-9,0,0,.998748,232497e-10,0,0,.996066,329522e-10,0,0,.988379,179613e-10,0,108799e-9,.982567,143715e-10,0,921302e-9,.976097,148096e-10,0,.00280738,.968475,178905e-10,0,.00596622,.964606,253921e-10,0,.0105284,.961564,348623e-10,0,.0165848,.955517,357612e-10,0,.0242,.948381,343493e-10,0,.03342,.941095,405849e-10,0,.0442777,.931923,475394e-10,0,.0567958,.91996,484328e-10,0,.0709879,.907419,502146e-10,0,.086861,.89618,561654e-10,0,.104415,.88337,587612e-10,0,.123643,.869046,618057e-10,0,.144531,.853278,657392e-10,0,.167057,.836091,66303e-9,0,.191188,.819644,704445e-10,0,.216878,.801246,714071e-10,0,.244062,.782031,740093e-10,0,.272649,.762066,74685e-9,0,.302509,.741964,766647e-10,0,.333442,.720554,766328e-10,0,.365079,.699098,777857e-10,0,.396826,.677189,774633e-10,0,.428572,.65484,776235e-10,0,.460318,.632496,770316e-10,0,.492064,.609908,762669e-10,0,.52381,.587312,753972e-10,0,.555556,.564938,739994e-10,0,.587302,.542577,728382e-10,0,.619048,.52062,71112e-9,0,.650794,.498819,694004e-10,0,.68254,.477555,675575e-10,0,.714286,.456568,653449e-10,0,.746032,.436278,636068e-10,0,.777778,.41637,613466e-10,0,.809524,.397144,594177e-10,0,.84127,.378412,570987e-10,0,.873016,.360376,550419e-10,0,.904762,.342906,527422e-10,0,.936508,.326136,506544e-10,0,.968254,.30997,484307e-10,0,1,1,354014e-14,0,0,1,354073e-14,0,0,1,354972e-14,0,0,1,358929e-14,0,0,1,370093e-14,0,0,.999999,396194e-14,0,0,.999998,453352e-14,0,0,.999997,578828e-14,0,0,.999994,863812e-14,0,0,.999991,153622e-13,0,0,.999985,316356e-13,0,0,.999977,712781e-13,0,0,.999964,166725e-12,0,0,.999945,390501e-12,0,0,.999912,895622e-12,0,0,.999866,198428e-11,0,0,.999786,421038e-11,0,0,.999647,850239e-11,0,0,.999356,162059e-10,0,0,.998563,282652e-10,0,0,.994928,336309e-10,0,244244e-10,.987999,178458e-10,0,523891e-9,.982893,159162e-10,0,.00194729,.977044,178056e-10,0,.00451099,.969972,230624e-10,0,.00835132,.964237,313922e-10,0,.013561,.960791,406145e-10,0,.0202056,.954292,372796e-10,0,.0283321,.948052,403199e-10,0,.0379739,.940938,479537e-10,0,.0491551,.931689,545292e-10,0,.0618918,.91987,54038e-9,0,.0761941,.907665,589909e-10,0,.0920672,.895281,642651e-10,0,.109511,.882621,659707e-10,0,.12852,.86873,709973e-10,0,.149085,.853008,742221e-10,0,.171189,.835944,761754e-10,0,.194809,.818949,797052e-10,0,.21991,.800951,812434e-10,0,.246447,.781847,838075e-10,0,.274352,.761649,84501e-9,0,.303535,.74152,860258e-10,0,.333857,.720495,866233e-10,0,.365104,.698742,868326e-10,0,.396826,.677096,87133e-9,0,.428572,.654782,863497e-10,0,.460318,.632335,860206e-10,0,.492064,.610031,849337e-10,0,.52381,.587457,838279e-10,0,.555556,.56513,82309e-9,0,.587302,.542877,803542e-10,0,.619048,.5209,786928e-10,0,.650794,.499291,765171e-10,0,.68254,.477971,744753e-10,0,.714286,.457221,72209e-9,0,.746032,.436803,697448e-10,0,.777778,.417083,675333e-10,0,.809524,.397749,648058e-10,0,.84127,.379177,625759e-10,0,.873016,.361061,598584e-10,0,.904762,.343713,575797e-10,0,.936508,.326894,549999e-10,0,.968254,.310816,527482e-10,0,1,1,10153e-12,0,0,1,101544e-13,0,0,1,101751e-13,0,0,1,102662e-13,0,0,1,10521e-12,0,0,.999999,111049e-13,0,0,.999999,123408e-13,0,0,.999996,14924e-12,0,0,.999992,204471e-13,0,0,.999989,326539e-13,0,0,.99998,603559e-13,0,0,.999971,123936e-12,0,0,.999955,269058e-12,0,0,.999933,593604e-12,0,0,.999901,129633e-11,0,0,.999847,275621e-11,0,0,.999761,564494e-11,0,0,.999607,110485e-10,0,0,.999282,204388e-10,0,0,.99831,341084e-10,0,22038e-11,.993288,294949e-10,0,242388e-9,.987855,192736e-10,0,.0012503,.983167,182383e-10,0,.0032745,.977908,218633e-10,0,.00646321,.971194,290662e-10,0,.0109133,.963867,386401e-10,0,.0166927,.95982,462827e-10,0,.0238494,.953497,420705e-10,0,.0324178,.947621,477743e-10,0,.0424225,.940611,568258e-10,0,.0538808,.931174,618061e-10,0,.0668047,.919919,627098e-10,0,.0812014,.907856,694714e-10,0,.0970745,.894509,735008e-10,0,.114424,.881954,763369e-10,0,.133246,.868309,821896e-10,0,.153534,.852511,83769e-9,0,.175275,.835821,881615e-10,0,.198453,.817981,896368e-10,0,.223042,.800504,930906e-10,0,.249009,.78141,945056e-10,0,.276304,.761427,963605e-10,0,.304862,.74094,968088e-10,0,.334584,.720233,981481e-10,0,.365322,.698592,979122e-10,0,.396826,.676763,981057e-10,0,.428571,.654808,973956e-10,0,.460318,.632326,962619e-10,0,.492064,.610049,952996e-10,0,.52381,.58763,933334e-10,0,.555556,.565261,917573e-10,0,.587302,.543244,896636e-10,0,.619048,.521273,873304e-10,0,.650794,.499818,852648e-10,0,.68254,.478536,823961e-10,0,.714286,.457826,79939e-9,0,.746032,.437549,77126e-9,0,.777778,.41776,743043e-10,0,.809524,.39863,716426e-10,0,.84127,.379954,686456e-10,0,.873016,.362025,660514e-10,0,.904762,.344581,630755e-10,0,.936508,.327909,605439e-10,0,.968254,.311736,576345e-10,0,1,1,263344e-13,0,0,1,263373e-13,0,0,1,263815e-13,0,0,1,265753e-13,0,0,1,271132e-13,0,0,.999999,283279e-13,0,0,.999997,30833e-12,0,0,.999995,358711e-13,0,0,.999992,461266e-13,0,0,.999985,67574e-12,0,0,.999977,11358e-11,0,0,.999966,213657e-12,0,0,.999948,431151e-12,0,0,.999923,896656e-12,0,0,.999884,186603e-11,0,0,.999826,381115e-11,0,0,.999732,754184e-11,0,0,.999561,143192e-10,0,0,.999191,257061e-10,0,0,.997955,405724e-10,0,744132e-10,.992228,276537e-10,0,716477e-9,.987638,208885e-10,0,.0022524,.983395,215226e-10,0,.00484816,.978614,270795e-10,0,.00860962,.972389,365282e-10,0,.0136083,.964392,474747e-10,0,.0198941,.95861,509141e-10,0,.0275023,.952806,48963e-9,0,.0364584,.94712,571119e-10,0,.04678,.940104,671704e-10,0,.0584799,.930398,687586e-10,0,.0715665,.919866,738161e-10,0,.086045,.907853,813235e-10,0,.101918,.894078,834582e-10,0,.119186,.881177,892093e-10,0,.137845,.867575,944548e-10,0,.157891,.852107,969607e-10,0,.179316,.835502,101456e-9,0,.202106,.81756,103256e-9,0,.226243,.79984,106954e-9,0,.251704,.780998,108066e-9,0,.278451,.761132,110111e-9,0,.306436,.740429,110459e-9,0,.335586,.719836,111219e-9,0,.365796,.698467,11145e-8,0,.3969,.676446,110393e-9,0,.428571,.654635,110035e-9,0,.460318,.632411,108548e-9,0,.492064,.609986,106963e-9,0,.52381,.587872,105238e-9,0,.555556,.565528,102665e-9,0,.587302,.543563,100543e-9,0,.619048,.52176,976182e-10,0,.650794,.500188,947099e-10,0,.68254,.479204,919929e-10,0,.714286,.458413,886139e-10,0,.746032,.438314,857839e-10,0,.777778,.418573,82411e-9,0,.809524,.39947,792211e-10,0,.84127,.380892,759546e-10,0,.873016,.362953,727571e-10,0,.904762,.345601,695738e-10,0,.936508,.328895,664907e-10,0,.968254,.312808,634277e-10,0,1,1,628647e-13,0,0,1,628705e-13,0,0,1,629587e-13,0,0,1,633441e-13,0,0,.999999,644087e-13,0,0,.999998,667856e-13,0,0,.999997,715889e-13,0,0,.999995,809577e-13,0,0,.999989,992764e-13,0,0,.999983,135834e-12,0,0,.999974,210482e-12,0,0,.999959,365215e-12,0,0,.999939,686693e-12,0,0,.999911,13472e-10,0,0,.999868,26731e-10,0,0,.999804,524756e-11,0,0,.9997,100403e-10,0,0,.99951,185019e-10,0,0,.999078,322036e-10,0,620676e-11,.997428,470002e-10,0,341552e-9,.99162,287123e-10,0,.00143727,.987479,234706e-10,0,.00349201,.983582,260083e-10,0,.0066242,.979186,337927e-10,0,.0109113,.97325,454689e-10,0,.0164064,.965221,573759e-10,0,.0231463,.957262,544114e-10,0,.0311571,.952211,587006e-10,0,.0404572,.946631,692256e-10,0,.0510592,.939391,787819e-10,0,.0629723,.929795,792368e-10,0,.0762025,.91965,875075e-10,0,.090753,.907737,950903e-10,0,.106626,.893899,972963e-10,0,.123822,.880239,10459e-8,0,.142337,.866562,107689e-9,0,.16217,.85164,113081e-9,0,.183314,.835021,116636e-9,0,.20576,.817311,120074e-9,0,.229496,.798845,121921e-9,0,.254502,.780479,12475e-8,0,.280753,.760694,125255e-9,0,.308212,.740142,126719e-9,0,.336825,.719248,12636e-8,0,.366517,.698209,126712e-9,0,.397167,.676398,125769e-9,0,.428578,.654378,124432e-9,0,.460318,.632484,123272e-9,0,.492064,.610113,12085e-8,0,.52381,.587931,118411e-9,0,.555556,.565872,11569e-8,0,.587302,.543814,112521e-9,0,.619048,.522265,109737e-9,0,.650794,.500835,106228e-9,0,.68254,.479818,102591e-9,0,.714286,.459258,991288e-10,0,.746032,.439061,952325e-10,0,.777778,.419552,91895e-9,0,.809524,.400399,879051e-10,0,.84127,.381976,844775e-10,0,.873016,.364009,806316e-10,0,.904762,.346761,771848e-10,0,.936508,.330049,735429e-10,0,.968254,.314018,702103e-10,0,1,1,139968e-12,0,0,1,139979e-12,0,0,1,140145e-12,0,0,1,14087e-11,0,0,.999999,142865e-12,0,0,.999998,147279e-12,0,0,.999997,156057e-12,0,0,.999992,17276e-11,0,0,.999989,204352e-12,0,0,.99998,26494e-11,0,0,.999969,383435e-12,0,0,.999953,618641e-12,0,0,.999929,108755e-11,0,0,.999898,201497e-11,0,0,.999849,381346e-11,0,0,.999778,719815e-11,0,0,.999661,133215e-10,0,0,.999451,238313e-10,0,0,.998936,401343e-10,0,113724e-9,.99662,517346e-10,0,820171e-9,.991094,304323e-10,0,.00238143,.987487,281757e-10,0,.00493527,.983731,320048e-10,0,.00856859,.979647,423905e-10,0,.0133393,.973837,562935e-10,0,.0192863,.96584,677442e-10,0,.0264369,.956309,623073e-10,0,.03481,.951523,704131e-10,0,.0444184,.946003,836594e-10,0,.0552713,.938454,911736e-10,0,.0673749,.929279,938264e-10,0,.0807329,.919239,103754e-9,0,.0953479,.907293,109928e-9,0,.111221,.893936,115257e-9,0,.128352,.879674,122265e-9,0,.14674,.865668,125733e-9,0,.166382,.850998,132305e-9,0,.187276,.834498,134844e-9,0,.209413,.816903,139276e-9,0,.232786,.798235,140984e-9,0,.257382,.779724,14378e-8,0,.283181,.760251,144623e-9,0,.310156,.739808,145228e-9,0,.338269,.718762,14539e-8,0,.367461,.697815,144432e-9,0,.397646,.67631,143893e-9,0,.428685,.654278,141846e-9,0,.460318,.632347,13935e-8,0,.492064,.610296,137138e-9,0,.52381,.588039,133806e-9,0,.555556,.566218,130755e-9,0,.587302,.544346,127128e-9,0,.619048,.522701,123002e-9,0,.650794,.501542,119443e-9,0,.68254,.480508,115055e-9,0,.714286,.460092,111032e-9,0,.746032,.440021,106635e-9,0,.777778,.420446,102162e-9,0,.809524,.401512,98184e-9,0,.84127,.38299,936497e-10,0,.873016,.365232,89813e-9,0,.904762,.347865,853073e-10,0,.936508,.331342,817068e-10,0,.968254,.315202,773818e-10,0,1,1,29368e-11,0,0,1,2937e-10,0,0,1,293998e-12,0,0,1,295298e-12,0,0,.999999,298865e-12,0,0,.999998,3067e-10,0,0,.999995,322082e-12,0,0,.999992,350767e-12,0,0,.999986,403538e-12,0,0,.999976,501372e-12,0,0,.999964,68562e-11,0,0,.999945,10374e-10,0,0,.999919,171269e-11,0,0,.999882,300175e-11,0,0,.999829,542144e-11,0,0,.999749,984182e-11,0,0,.99962,176213e-10,0,0,.999382,305995e-10,0,138418e-10,.998751,496686e-10,0,389844e-9,.995344,510733e-10,0,.00150343,.990768,345829e-10,0,.00352451,.987464,342841e-10,0,.00655379,.983846,399072e-10,0,.0106554,.980007,533219e-10,0,.0158723,.974494,696992e-10,0,.0222333,.96622,776754e-10,0,.029758,.956273,747718e-10,0,.0384596,.950952,864611e-10,0,.0483473,.945215,100464e-9,0,.0594266,.937287,103729e-9,0,.0717019,.928649,111665e-9,0,.0851752,.918791,12353e-8,0,.0998479,.906685,127115e-9,0,.115721,.893706,13628e-8,0,.132794,.879248,142427e-9,0,.151067,.864685,148091e-9,0,.170538,.850032,153517e-9,0,.191204,.833853,157322e-9,0,.213063,.816353,161086e-9,0,.236107,.797834,164111e-9,0,.260329,.778831,165446e-9,0,.285714,.759756,167492e-9,0,.312243,.739419,166928e-9,0,.339887,.718491,167e-6,0,.368604,.697392,165674e-9,0,.398329,.676102,163815e-9,0,.428961,.654243,162003e-9,0,.460331,.632176,158831e-9,0,.492064,.610407,155463e-9,0,.52381,.588394,152062e-9,0,.555556,.56645,147665e-9,0,.587302,.5449,14375e-8,0,.619048,.523276,138905e-9,0,.650794,.502179,134189e-9,0,.68254,.481359,129392e-9,0,.714286,.46092,124556e-9,0,.746032,.441084,11957e-8,0,.777778,.421517,114652e-9,0,.809524,.402721,109688e-9,0,.84127,.384222,104667e-9,0,.873016,.366534,999633e-10,0,.904762,.349205,950177e-10,0,.936508,.332702,907301e-10,0,.968254,.316599,859769e-10,0,1,1,585473e-12,0,0,1,585507e-12,0,0,1,58602e-11,0,0,.999999,588259e-12,0,0,.999999,594381e-12,0,0,.999998,607754e-12,0,0,.999995,633729e-12,0,0,.99999,68137e-11,0,0,.999984,767003e-12,0,0,.999973,921212e-12,0,0,.999959,120218e-11,0,0,.999936,172024e-11,0,0,.999907,268088e-11,0,0,.999866,445512e-11,0,0,.999806,768481e-11,0,0,.999716,1342e-8,0,0,.999576,232473e-10,0,0,.9993,391694e-10,0,129917e-9,.998498,608429e-10,0,845035e-9,.994132,489743e-10,0,.00237616,.99031,384644e-10,0,.00484456,.987409,421768e-10,0,.00832472,.983981,504854e-10,0,.0128643,.980268,671028e-10,0,.0184947,.974875,852749e-10,0,.025237,.966063,85531e-9,0,.0331046,.956779,900588e-10,0,.0421067,.950259,10577e-8,0,.0522487,.944239,119458e-9,0,.0635343,.936341,122164e-9,0,.0759654,.928047,134929e-9,0,.0895434,.918065,145544e-9,0,.104269,.906267,150531e-9,0,.120142,.893419,161652e-9,0,.137163,.878758,16593e-8,0,.15533,.863699,174014e-9,0,.174645,.848876,177877e-9,0,.195106,.833032,184049e-9,0,.21671,.815557,186088e-9,0,.239454,.797323,19054e-8,0,.263332,.778124,191765e-9,0,.288336,.758929,192535e-9,0,.314451,.738979,192688e-9,0,.341658,.718213,191522e-9,0,.369924,.696947,190491e-9,0,.399202,.675807,187913e-9,0,.429416,.654147,184451e-9,0,.460447,.63229,181442e-9,0,.492064,.610499,177139e-9,0,.523809,.588747,172596e-9,0,.555555,.566783,167457e-9,0,.587301,.545359,162518e-9,0,.619048,.523984,156818e-9,0,.650794,.502917,151884e-9,0,.68254,.482294,145514e-9,0,.714286,.461945,140199e-9,0,.746032,.442133,134101e-9,0,.777778,.422705,128374e-9,0,.809524,.403916,122996e-9,0,.84127,.38554,116808e-9,0,.873016,.367909,111973e-9,0,.904762,.350651,105938e-9,0,.936508,.334208,101355e-9,0,.968254,.318123,957629e-10,0,1,1,111633e-11,0,0,1,111639e-11,0,0,1,111725e-11,0,0,1,112096e-11,0,0,.999999,11311e-10,0,0,.999997,115315e-11,0,0,.999995,11956e-10,0,0,.999989,127239e-11,0,0,.999981,140772e-11,0,0,.999969,164541e-11,0,0,.999952,206607e-11,0,0,.999928,281783e-11,0,0,.999895,416835e-11,0,0,.999848,658728e-11,0,0,.999781,108648e-10,0,0,.999682,182579e-10,0,0,.999523,306003e-10,0,159122e-10,.999205,499862e-10,0,391184e-9,.998131,73306e-9,0,.00147534,.993334,513229e-10,0,.0034227,.99016,467783e-10,0,.00632232,.987321,523413e-10,0,.0102295,.984099,64267e-9,0,.0151794,.980432,843042e-10,0,.0211947,.974976,102819e-9,0,.0282899,.966429,996234e-10,0,.0364739,.957633,111074e-9,0,.0457522,.949422,128644e-9,0,.0561278,.943045,140076e-9,0,.0676023,.935448,146349e-9,0,.0801762,.927225,161854e-9,0,.0938499,.917033,169135e-9,0,.108623,.905762,179987e-9,0,.124496,.892879,189832e-9,0,.141469,.878435,195881e-9,0,.159541,.863114,20466e-8,0,.178713,.84776,209473e-9,0,.198985,.832084,214861e-9,0,.220355,.814915,217695e-9,0,.242823,.796711,220313e-9,0,.266385,.777603,22313e-8,0,.291036,.757991,222471e-9,0,.316767,.738371,222869e-9,0,.343563,.717872,221243e-9,0,.371402,.696619,218089e-9,0,.400248,.675379,21562e-8,0,.430047,.65411,21169e-8,0,.460709,.63241,206947e-9,0,.492079,.61046,201709e-9,0,.52381,.58903,196753e-9,0,.555556,.567267,189637e-9,0,.587302,.545886,184735e-9,0,.619048,.524714,177257e-9,0,.650794,.503789,171424e-9,0,.68254,.483204,164688e-9,0,.714286,.462976,157172e-9,0,.746032,.443294,151341e-9,0,.777778,.423988,143737e-9,0,.809524,.405325,138098e-9,0,.84127,.386981,130698e-9,0,.873016,.369436,125276e-9,0,.904762,.35219,118349e-9,0,.936508,.335804,11312e-8,0,.968254,.319749,106687e-9,0,1,1,204685e-11,0,0,1,204694e-11,0,0,1,204831e-11,0,0,.999999,205428e-11,0,0,.999999,207056e-11,0,0,.999997,210581e-11,0,0,.999993,21732e-10,0,0,.999987,229365e-11,0,0,.999979,250243e-11,0,0,.999965,286127e-11,0,0,.999947,348028e-11,0,0,.999918,455588e-11,0,0,.999881,643303e-11,0,0,.999828,970064e-11,0,0,.999753,153233e-10,0,0,.999642,24793e-9,0,0,.999464,402032e-10,0,122947e-9,.999089,635852e-10,0,807414e-9,.997567,857026e-10,0,.00227206,.992903,594912e-10,0,.00462812,.990011,578515e-10,0,.00794162,.987192,65399e-9,0,.0122534,.98418,819675e-10,0,.0175888,.980491,105514e-9,0,.0239635,.974779,121532e-9,0,.031387,.96675,119144e-9,0,.0398644,.958248,136125e-9,0,.0493982,.948884,155408e-9,0,.0599896,.941673,162281e-9,0,.0716382,.934521,176754e-9,0,.0843437,.926205,192873e-9,0,.0981056,.916089,200038e-9,0,.112923,.904963,213624e-9,0,.128796,.892089,221834e-9,0,.145725,.878028,232619e-9,0,.163709,.86249,238632e-9,0,.182749,.846587,247002e-9,0,.202847,.830988,250702e-9,0,.224001,.814165,255562e-9,0,.246214,.796135,257505e-9,0,.269482,.777052,258625e-9,0,.293805,.757201,258398e-9,0,.319176,.737655,256714e-9,0,.345587,.717477,255187e-9,0,.373021,.696433,251792e-9,0,.401454,.675084,247223e-9,0,.430844,.653907,242213e-9,0,.461125,.632561,237397e-9,0,.492187,.610658,229313e-9,0,.52381,.589322,224402e-9,0,.555556,.567857,216116e-9,0,.587302,.54652,209124e-9,0,.619048,.525433,201601e-9,0,.650794,.504679,192957e-9,0,.68254,.484203,186052e-9,0,.714286,.464203,177672e-9,0,.746032,.444549,170005e-9,0,.777778,.425346,162401e-9,0,.809524,.406706,1544e-7,0,.84127,.388576,147437e-9,0,.873016,.37094,139493e-9,0,.904762,.353996,133219e-9,0,.936508,.337391,125573e-9,0,.968254,.321648,119867e-9,0,1,1,362511e-11,0,0,1,362525e-11,0,0,1,362739e-11,0,0,.999999,363673e-11,0,0,.999998,366214e-11,0,0,.999996,371698e-11,0,0,.999992,382116e-11,0,0,.999986,400554e-11,0,0,.999976,432058e-11,0,0,.999961,485194e-11,0,0,.999938,574808e-11,0,0,.999908,726643e-11,0,0,.999865,984707e-11,0,0,.999807,142217e-10,0,0,.999723,215581e-10,0,0,.999602,336114e-10,0,119113e-10,.999398,527353e-10,0,355813e-9,.998946,805809e-10,0,.00137768,.996647,942908e-10,0,.00322469,.992298,668733e-10,0,.00597897,.989802,716564e-10,0,.00968903,.987019,821355e-10,0,.0143845,.984219,104555e-9,0,.0200831,.980425,131245e-9,0,.0267948,.974241,139613e-9,0,.034525,.967006,145931e-9,0,.0432757,.95893,167153e-9,0,.0530471,.949157,188146e-9,0,.0638386,.94062,194625e-9,0,.0756487,.933509,213721e-9,0,.0884762,.925088,229616e-9,0,.10232,.915178,239638e-9,0,.117178,.904093,254814e-9,0,.133051,.891337,263685e-9,0,.149939,.877326,274789e-9,0,.167841,.861794,280534e-9,0,.18676,.845758,289534e-9,0,.206696,.829792,294446e-9,0,.22765,.813037,296877e-9,0,.249625,.795285,300217e-9,0,.27262,.776323,299826e-9,0,.296636,.756673,299787e-9,0,.321671,.736856,297867e-9,0,.347718,.716883,294052e-9,0,.374768,.696089,289462e-9,0,.402804,.67505,285212e-9,0,.431796,.653509,27653e-8,0,.461695,.63258,271759e-9,0,.49242,.61104,262811e-9,0,.523822,.589567,255151e-9,0,.555556,.568322,246434e-9,0,.587302,.547235,237061e-9,0,.619048,.52616,228343e-9,0,.650794,.505716,219236e-9,0,.68254,.485274,209595e-9,0,.714286,.465411,201011e-9,0,.746032,.445854,19109e-8,0,.777778,.426911,182897e-9,0,.809524,.408222,173569e-9,0,.84127,.390307,165496e-9,0,.873016,.372624,156799e-9,0,.904762,.355804,14917e-8,0,.936508,.33924,140907e-9,0,.968254,.323534,134062e-9,0,1,1,622487e-11,0,0,1,62251e-10,0,0,1,622837e-11,0,0,.999999,624259e-11,0,0,.999998,628127e-11,0,0,.999996,636451e-11,0,0,.999991,65218e-10,0,0,.999984,679782e-11,0,0,.999973,726361e-11,0,0,.999955,803644e-11,0,0,.999931,931397e-11,0,0,.999896,114299e-10,0,0,.999847,149402e-10,0,0,.999784,207461e-10,0,0,.999692,302493e-10,0,0,.999554,454957e-10,0,997275e-10,.999326,690762e-10,0,724813e-9,.998757,101605e-9,0,.0020972,.995367,958745e-10,0,.00432324,.99209,832808e-10,0,.00746347,.989517,887601e-10,0,.0115534,.987008,10564e-8,0,.0166134,.98421,133179e-9,0,.0226552,.98021,161746e-9,0,.0296838,.973676,161821e-9,0,.0377016,.967052,178635e-9,0,.0467079,.959385,206765e-9,0,.0567013,.949461,22476e-8,0,.0676796,.939578,23574e-8,0,.0796403,.932416,25893e-8,0,.0925812,.923759,271228e-9,0,.106501,.914223,289165e-9,0,.121397,.902942,301156e-9,0,.13727,.890419,313852e-9,0,.15412,.876639,324408e-9,0,.171946,.861316,33249e-8,0,.190751,.84496,338497e-9,0,.210537,.828427,345861e-9,0,.231305,.811871,347863e-9,0,.253057,.794397,350225e-9,0,.275797,.775726,349915e-9,0,.299525,.75617,347297e-9,0,.324242,.736091,344232e-9,0,.349947,.716213,340835e-9,0,.376633,.695736,332369e-9,0,.404289,.674961,327943e-9,0,.432895,.653518,318533e-9,0,.462415,.632574,310391e-9,0,.492788,.61134,300755e-9,0,.523909,.590017,290506e-9,0,.555556,.568752,280446e-9,0,.587302,.548061,269902e-9,0,.619048,.52711,258815e-9,0,.650794,.506682,248481e-9,0,.68254,.486524,237141e-9,0,.714286,.466812,226872e-9,0,.746032,.44732,216037e-9,0,.777778,.428473,205629e-9,0,.809524,.409921,195691e-9,0,.84127,.392028,185457e-9,0,.873016,.374606,176436e-9,0,.904762,.357601,166508e-9,0,.936508,.341348,158385e-9,0,.968254,.32542,149203e-9,0,1,1,103967e-10,0,0,1,10397e-9,0,0,1,104019e-10,0,0,.999999,104231e-10,0,0,.999998,104806e-10,0,0,.999995,106042e-10,0,0,.999991,108366e-10,0,0,.999982,112415e-10,0,0,.999968,119174e-10,0,0,.99995,130227e-10,0,0,.999922,148176e-10,0,0,.999884,177303e-10,0,0,.99983,224564e-10,0,0,.999758,300966e-10,0,0,.999654,423193e-10,0,549083e-11,.999503,614848e-10,0,296087e-9,.999237,903576e-10,0,.00123144,.998491,1271e-7,0,.00295954,.994594,107754e-9,0,.00555829,.99178,103025e-9,0,.00907209,.989265,11154e-8,0,.0135257,.986998,136296e-9,0,.0189327,.984137,169154e-9,0,.0252993,.979798,196671e-9,0,.0326272,.97337,196678e-9,0,.0409157,.967239,223121e-9,0,.0501623,.959543,253809e-9,0,.0603638,.949466,265972e-9,0,.0715171,.939074,288372e-9,0,.0836187,.931118,310983e-9,0,.0966657,.922525,325561e-9,0,.110656,.912983,345725e-9,0,.125588,.901617,3556e-7,0,.141461,.889487,374012e-9,0,.158275,.875787,383445e-9,0,.176031,.860654,393972e-9,0,.19473,.844417,400311e-9,0,.214374,.82741,405004e-9,0,.234967,.810545,407378e-9,0,.256512,.793312,407351e-9,0,.279011,.774847,406563e-9,0,.302468,.755621,404903e-9,0,.326887,.735511,397486e-9,0,.352266,.715435,39357e-8,0,.378605,.695403,384739e-9,0,.405897,.674681,376108e-9,0,.43413,.65359,365997e-9,0,.463277,.632471,354957e-9,0,.493295,.61151,343593e-9,0,.524106,.59064,331841e-9,0,.555561,.569386,318891e-9,0,.587302,.548785,3072e-7,0,.619048,.528146,29361e-8,0,.650794,.507872,281709e-9,0,.68254,.487805,268627e-9,0,.714286,.468196,255887e-9,0,.746032,.448922,243997e-9,0,.777778,.430093,231662e-9,0,.809524,.411845,220339e-9,0,.84127,.393808,208694e-9,0,.873016,.376615,198045e-9,0,.904762,.359655,187375e-9,0,.936508,.343452,177371e-9,0,.968254,.32765,167525e-9,0,1,1,169351e-10,0,0,1,169356e-10,0,0,1,169427e-10,0,0,.999999,169736e-10,0,0,.999998,170575e-10,0,0,.999995,172372e-10,0,0,.99999,175739e-10,0,0,.999979,181568e-10,0,0,.999966,191206e-10,0,0,.999944,20677e-9,0,0,.999912,231644e-10,0,0,.999869,271268e-10,0,0,.999811,334272e-10,0,0,.99973,433979e-10,0,0,.999617,590083e-10,0,680315e-10,.999445,829497e-10,0,612796e-9,.999138,118019e-9,0,.00187408,.998095,156712e-9,0,.00395791,.993919,125054e-9,0,.00692144,.991333,126091e-9,0,.0107962,.989226,144912e-9,0,.0155986,.986954,175737e-9,0,.0213364,.983982,213883e-9,0,.0280114,.979128,234526e-9,0,.0356226,.973327,243725e-9,0,.0441668,.967416,2773e-7,0,.0536399,.959729,308799e-9,0,.0640376,.949758,322447e-9,0,.0753554,.939173,350021e-9,0,.0875893,.9296,370089e-9,0,.100736,.921181,391365e-9,0,.114793,.91164,413636e-9,0,.129759,.900435,427068e-9,0,.145632,.888183,441046e-9,0,.162412,.874772,454968e-9,0,.180101,.859566,461882e-9,0,.1987,.843579,471556e-9,0,.218213,.826453,474335e-9,0,.238641,.809164,477078e-9,0,.259989,.792179,47755e-8,0,.282262,.773866,472573e-9,0,.305464,.754944,469765e-9,0,.329599,.735133,462371e-9,0,.35467,.714858,453674e-9,0,.380678,.694829,443888e-9,0,.407622,.674453,432052e-9,0,.435493,.653685,420315e-9,0,.464275,.632666,406829e-9,0,.493938,.611676,392234e-9,0,.524422,.591193,379208e-9,0,.555624,.570145,36319e-8,0,.587302,.549566,349111e-9,0,.619048,.529278,334166e-9,0,.650794,.509026,318456e-9,0,.68254,.489186,30449e-8,0,.714286,.469662,289051e-9,0,.746032,.450691,275494e-9,0,.777778,.431841,261437e-9,0,.809524,.413752,247846e-9,0,.84127,.395951,235085e-9,0,.873016,.378633,222245e-9,0,.904762,.36194,210533e-9,0,.936508,.345599,198494e-9,0,.968254,.329999,188133e-9,0,1,1,269663e-10,0,0,1,26967e-9,0,0,1,269772e-10,0,0,.999999,270214e-10,0,0,.999998,271415e-10,0,0,.999994,27398e-9,0,0,.999988,278771e-10,0,0,.999977,287019e-10,0,0,.999961,300544e-10,0,0,.999937,322138e-10,0,0,.999904,356163e-10,0,0,.999854,409465e-10,0,0,.99979,492651e-10,0,0,.999699,621722e-10,0,88288e-11,.999572,819715e-10,0,223369e-9,.999381,111689e-9,0,.00105414,.999016,153862e-9,0,.0026493,.997437,187667e-9,0,.00508608,.993545,155672e-9,0,.00840554,.991135,161455e-9,0,.012629,.989157,188241e-9,0,.0177661,.986874,226229e-9,0,.0238198,.983714,268668e-9,0,.0307887,.978301,277109e-9,0,.0386688,.973227,303446e-9,0,.0474554,.967317,341851e-9,0,.0571428,.959477,370885e-9,0,.0677256,.950012,392753e-9,0,.0791988,.939484,42781e-8,0,.0915576,.928135,443866e-9,0,.104798,.919819,472959e-9,0,.118918,.910049,491551e-9,0,.133915,.899181,512616e-9,0,.149788,.886881,523563e-9,0,.166537,.87359,540183e-9,0,.184164,.858613,547386e-9,0,.202669,.842809,554809e-9,0,.222056,.825727,558316e-9,0,.242329,.808086,557824e-9,0,.263492,.790728,556346e-9,0,.285551,.772987,552672e-9,0,.30851,.7541,543738e-9,0,.332376,.734669,536107e-9,0,.357153,.714411,523342e-9,0,.382845,.694196,512238e-9,0,.409454,.674252,497465e-9,0,.436977,.65357,481096e-9,0,.465404,.632999,467054e-9,0,.494713,.611994,448771e-9,0,.524864,.591604,431889e-9,0,.555779,.571134,415238e-9,0,.587302,.550528,396369e-9,0,.619048,.530292,379477e-9,0,.650794,.510364,361488e-9,0,.68254,.490749,343787e-9,0,.714286,.471266,327822e-9,0,.746032,.452462,310626e-9,0,.777778,.433907,295352e-9,0,.809524,.415659,279179e-9,0,.84127,.398138,264685e-9,0,.873016,.380833,249905e-9,0,.904762,.364247,236282e-9,0,.936508,.348041,222905e-9,0,.968254,.332389,210522e-9,0,1,1,420604e-10,0,0,1,420614e-10,0,0,1,420757e-10,0,0,.999999,42138e-9,0,0,.999997,423067e-10,0,0,.999993,426668e-10,0,0,.999986,433372e-10,0,0,.999974,444857e-10,0,0,.999956,463554e-10,0,0,.99993,493105e-10,0,0,.999892,539077e-10,0,0,.999838,610005e-10,0,0,.999767,718822e-10,0,0,.999666,884581e-10,0,365471e-10,.999525,113398e-9,0,485623e-9,.999311,150043e-9,0,.00162096,.998865,200063e-9,0,.00355319,.996278,211014e-9,0,.00633818,.992956,189672e-9,0,.0100043,.991017,210262e-9,0,.0145648,.989055,244292e-9,0,.0200237,.986741,290481e-9,0,.0263798,.983288,334303e-9,0,.033629,.977784,340307e-9,0,.0417652,.973037,377864e-9,0,.0507821,.967181,4239e-7,0,.060673,.958971,443854e-9,0,.0714314,.950093,483039e-9,0,.0830518,.939552,517934e-9,0,.0955288,.927678,539449e-9,0,.108859,.918278,568604e-9,0,.123038,.908449,588505e-9,0,.138065,.897713,612473e-9,0,.153938,.885533,625575e-9,0,.170657,.872131,63854e-8,0,.188224,.857517,647034e-9,0,.20664,.841796,65209e-8,0,.225909,.824726,6544e-7,0,.246035,.807297,655744e-9,0,.267022,.789058,646716e-9,0,.288878,.77189,643898e-9,0,.311607,.753082,629973e-9,0,.335216,.7341,621564e-9,0,.359713,.714094,605171e-9,0,.385103,.693839,588752e-9,0,.41139,.673891,573294e-9,0,.438576,.653565,552682e-9,0,.466656,.633326,533446e-9,0,.495617,.612582,514635e-9,0,.525431,.59205,49303e-8,0,.556041,.571918,471842e-9,0,.587338,.551572,451713e-9,0,.619048,.531553,430049e-9,0,.650794,.51175,410445e-9,0,.68254,.49238,390098e-9,0,.714286,.473143,370033e-9,0,.746032,.45423,351205e-9,0,.777778,.435963,332049e-9,0,.809524,.41787,315021e-9,0,.84127,.400387,297315e-9,0,.873016,.383332,281385e-9,0,.904762,.366665,265397e-9,0,.936508,.350633,250601e-9,0,.968254,.334964,23589e-8,0,1,1,643736e-10,0,0,1,64375e-9,0,0,1,643947e-10,0,0,.999999,64481e-9,0,0,.999997,647143e-10,0,0,.999994,652119e-10,0,0,.999985,661359e-10,0,0,.999972,677116e-10,0,0,.999952,702599e-10,0,0,.999922,742517e-10,0,0,.99988,803906e-10,0,0,.99982,897315e-10,0,0,.999741,103838e-9,0,0,.999629,12496e-8,0,149024e-9,.999474,156161e-9,0,861027e-9,.999229,201034e-9,0,.00231198,.998662,259069e-9,0,.00458147,.995299,245439e-9,0,.00770895,.992732,24498e-8,0,.0117126,.990847,273211e-9,0,.0165989,.988911,316492e-9,0,.0223674,.98654,37161e-8,0,.0290135,.982636,410352e-9,0,.0365309,.977346,421756e-9,0,.0449117,.972909,475578e-9,0,.0541481,.966821,522482e-9,0,.0642326,.958686,545008e-9,0,.075158,.949754,589286e-9,0,.0869181,.939184,619995e-9,0,.0995074,.927505,654266e-9,0,.112922,.916606,682362e-9,0,.127157,.906707,704286e-9,0,.142212,.895937,725909e-9,0,.158085,.883913,743939e-9,0,.174776,.870642,755157e-9,0,.192287,.856241,764387e-9,0,.210619,.84069,771032e-9,0,.229775,.823728,765906e-9,0,.249761,.806481,767604e-9,0,.270582,.787924,754385e-9,0,.292243,.770588,749668e-9,0,.314753,.751991,731613e-9,0,.338118,.733407,717655e-9,0,.362347,.713688,700604e-9,0,.387447,.693595,678765e-9,0,.413424,.673426,657042e-9,0,.440284,.65359,635892e-9,0,.468027,.633576,611569e-9,0,.496645,.613144,586011e-9,0,.526122,.592711,563111e-9,0,.556417,.572722,537699e-9,0,.587451,.552762,512556e-9,0,.619048,.532985,489757e-9,0,.650794,.513219,464139e-9,0,.68254,.493992,442193e-9,0,.714286,.47509,418629e-9,0,.746032,.456287,397045e-9,0,.777778,.438152,375504e-9,0,.809524,.420294,35492e-8,0,.84127,.402749,335327e-9,0,.873016,.385879,316422e-9,0,.904762,.369352,298333e-9,0,.936508,.353301,281417e-9,0,.968254,.337781,265203e-9,0,1,1,968267e-10,0,0,1,968284e-10,0,0,1,968556e-10,0,0,.999999,969733e-10,0,0,.999997,972913e-10,0,0,.999993,979688e-10,0,0,.999984,992239e-10,0,0,.999969,101356e-9,0,0,.999946,104784e-9,0,0,.999913,110111e-9,0,0,.999868,118217e-9,0,0,.999801,130396e-9,0,0,.999712,148523e-9,0,124907e-10,.999589,175233e-9,0,355405e-9,.999416,213999e-9,0,.0013528,.999136,268529e-9,0,.00312557,.998367,333088e-9,0,.00573045,.994701,304757e-9,0,.00919397,.992497,318031e-9,0,.0135261,.990608,353863e-9,0,.0187278,.988715,409044e-9,0,.0247947,.986241,472967e-9,0,.0317196,.981696,495104e-9,0,.039494,.977097,532873e-9,0,.0481087,.972583,594447e-9,0,.0575549,.966142,636867e-9,0,.0678242,.95823,669899e-9,0,.0789089,.949677,719499e-9,0,.0908023,.939226,750584e-9,0,.103499,.927501,793183e-9,0,.116993,.915199,81995e-8,0,.131282,.90498,847654e-9,0,.146364,.894243,868929e-9,0,.162237,.882154,884278e-9,0,.178902,.869161,898108e-9,0,.196358,.854751,901254e-9,0,.21461,.839368,90679e-8,0,.23366,.822874,901541e-9,0,.253512,.805514,897297e-9,0,.274174,.78716,881856e-9,0,.29565,.769061,870032e-9,0,.31795,.751,851719e-9,0,.341081,.732614,830671e-9,0,.365053,.713171,806569e-9,0,.389874,.693472,78338e-8,0,.415553,.673528,756404e-9,0,.442098,.653397,726872e-9,0,.469512,.633781,700494e-9,0,.497794,.613877,67105e-8,0,.526935,.593506,640361e-9,0,.556908,.573667,613502e-9,0,.587657,.553932,583177e-9,0,.61906,.534345,554375e-9,0,.650794,.515042,527811e-9,0,.68254,.495674,499367e-9,0,.714286,.477132,47429e-8,0,.746032,.458609,447726e-9,0,.777778,.440354,424205e-9,0,.809524,.422765,399549e-9,0,.84127,.405472,378315e-9,0,.873016,.388482,355327e-9,0,.904762,.372191,336122e-9,0,.936508,.356099,315247e-9,0,.968254,.340737,29794e-8,0,1,1,143327e-9,0,0,1,14333e-8,0,0,1,143366e-9,0,0,.999999,143524e-9,0,0,.999996,143952e-9,0,0,.999991,144862e-9,0,0,.999981,146544e-9,0,0,.999966,149391e-9,0,0,.999941,153946e-9,0,0,.999905,160971e-9,0,0,.999852,171562e-9,0,0,.99978,18729e-8,0,0,.999681,210386e-9,0,826239e-10,.999546,243906e-9,0,664807e-9,.999352,291739e-9,0,.00196192,.999027,357419e-9,0,.00405941,.997886,422349e-9,0,.00699664,.99419,385008e-9,0,.0107896,.99214,409775e-9,0,.0154415,.990274,456418e-9,0,.0209488,.988455,527008e-9,0,.0273037,.985804,597685e-9,0,.0344969,.98103,613124e-9,0,.0425183,.976674,668321e-9,0,.0513575,.972021,736985e-9,0,.0610046,.965274,773789e-9,0,.0714508,.958046,830852e-9,0,.0826877,.949333,875766e-9,0,.0947085,.939135,917088e-9,0,.107507,.927119,952244e-9,0,.121078,.91469,990626e-9,0,.135419,.903006,.00101304,0,.150526,.892368,.00103834,0,.166399,.880231,.00105002,0,.183038,.867432,.00106331,0,.200443,.853208,.00106783,0,.218618,.837956,.00106458,0,.237566,.821772,.00105945,0,.257291,.804328,.00104685,0,.2778,.786465,.00103178,0,.2991,.768004,.00101077,0,.321199,.74972,985504e-9,0,.344106,.731682,962893e-9,0,.36783,.712813,932146e-9,0,.392383,.693139,89871e-8,0,.417774,.673566,869678e-9,0,.444013,.653483,835525e-9,0,.471107,.633891,799853e-9,0,.49906,.614433,766838e-9,0,.527869,.594586,732227e-9,0,.557517,.574769,696442e-9,0,.587966,.555149,663935e-9,0,.61913,.535898,629826e-9,0,.650794,.516753,596486e-9,0,.68254,.497816,567078e-9,0,.714286,.479034,534399e-9,0,.746032,.460975,507013e-9,0,.777778,.442935,477421e-9,0,.809524,.425263,451101e-9,0,.84127,.408248,424964e-9,0,.873016,.391339,39993e-8,0,.904762,.37513,377619e-9,0,.936508,.359172,354418e-9,0,.968254,.343876,334823e-9,0,1,1,209042e-9,0,0,1,209045e-9,0,0,1,209093e-9,0,0,.999999,209304e-9,0,0,.999996,209871e-9,0,0,.999991,211078e-9,0,0,.999979,213304e-9,0,0,.999963,217061e-9,0,0,.999933,223042e-9,0,0,.999894,232206e-9,0,0,.999837,245901e-9,0,0,.999756,266023e-9,0,102927e-11,.999648,295204e-9,0,233468e-9,.999499,336958e-9,0,.00108237,.999283,395563e-9,0,.00268832,.998896,473785e-9,0,.00511138,.997006,520008e-9,0,.00837705,.993819,497261e-9,0,.0124928,.991632,523722e-9,0,.0174561,.989875,587258e-9,0,.0232596,.988109,676329e-9,0,.0298932,.985155,747701e-9,0,.0373453,.980479,768803e-9,0,.0456045,.976271,841054e-9,0,.0546593,.971347,911469e-9,0,.0644994,.964528,953057e-9,0,.0751152,.957632,.00102221,0,.0864981,.948681,.00106122,0,.0986407,.938716,.00111857,0,.111537,.926629,.00114762,0,.125182,.914025,.00118995,0,.139571,.901026,.00121228,0,.154703,.890358,.00123946,0,.170576,.878283,.0012527,0,.18719,.865459,.00125536,0,.204547,.851407,.00126134,0,.222648,.836276,.00124759,0,.241498,.820436,.00124443,0,.261101,.803253,.00122071,0,.281465,.785562,.00120107,0,.302595,.76718,.00117762,0,.324501,.748551,.00114289,0,.347192,.730564,.00110872,0,.370679,.712253,.00107636,0,.394973,.692867,.00103646,0,.420085,.673695,996793e-9,0,.446027,.653912,95675e-8,0,.47281,.634129,916739e-9,0,.500441,.615004,874401e-9,0,.528921,.595587,833411e-9,0,.558244,.575965,794556e-9,0,.588384,.5566,75196e-8,0,.619281,.537428,716381e-9,0,.650795,.518623,676558e-9,0,.68254,.499964,64074e-8,0,.714286,.481356,605984e-9,0,.746032,.463279,570256e-9,0,.777778,.445673,540138e-9,0,.809524,.428032,507299e-9,0,.84127,.411112,479553e-9,0,.873016,.394444,450737e-9,0,.904762,.378247,424269e-9,0,.936508,.362415,399111e-9,0,.968254,.347103,375274e-9,0,1,1,300729e-9,0,0,1,300733e-9,0,0,1,300797e-9,0,0,.999998,301072e-9,0,0,.999996,301817e-9,0,0,.999989,303398e-9,0,0,.999977,306309e-9,0,0,.999958,311209e-9,0,0,.999927,318975e-9,0,0,.999884,330804e-9,0,0,.99982,34834e-8,0,0,.999733,373854e-9,0,326995e-10,.999613,410424e-9,0,477174e-9,.999447,462047e-9,0,.00161099,.999204,533322e-9,0,.00353153,.998725,624964e-9,0,.00627965,.995871,631786e-9,0,.0098693,.993194,632017e-9,0,.0143011,.991541,68923e-8,0,.019568,.989773,766892e-9,0,.0256593,.987647,863668e-9,0,.0325625,.984193,922089e-9,0,.0402647,.980016,970749e-9,0,.0487532,.975859,.00106027,0,.058016,.970514,.00112239,0,.0680419,.963625,.00117212,0,.0788208,.956959,.00125211,0,.0903439,.947956,.00129411,0,.102604,.93809,.00135879,0,.115594,.92659,.00139309,0,.129309,.913829,.00143253,0,.143745,.90005,.00145809,0,.158901,.888129,.0014748,0,.174774,.87607,.00148756,0,.191365,.863461,.00148714,0,.208674,.849594,.00148892,0,.226705,.834531,.00146496,0,.245461,.81903,.0014579,0,.264947,.802122,.00143039,0,.28517,.78445,.00139717,0,.306137,.766434,.00136312,0,.327857,.747816,.00132597,0,.350341,.729519,.00128323,0,.373598,.711454,.00123803,0,.397642,.692699,.00119097,0,.422485,.673723,.00114565,0,.448139,.654386,.00109552,0,.474619,.634673,.00104553,0,.501933,.615554,99985e-8,0,.530089,.596462,948207e-9,0,.559087,.577385,902299e-9,0,.588913,.558257,856448e-9,0,.619525,.5392,810395e-9,0,.650826,.520543,768558e-9,0,.68254,.502206,7239e-7,0,.714286,.48402,685794e-9,0,.746032,.465779,64471e-8,0,.777778,.448455,609583e-9,0,.809524,.431091,57227e-8,0,.84127,.414147,54042e-8,0,.873016,.39765,506545e-9,0,.904762,.381576,477635e-9,0,.936508,.365881,448446e-9,0,.968254,.350582,421424e-9,0,1,1,427144e-9,0,0,1,427151e-9,0,0,1,427232e-9,0,0,.999998,42759e-8,0,0,.999995,428555e-9,0,0,.999988,430603e-9,0,0,.999976,434368e-9,0,0,.999952,440688e-9,0,0,.999919,450667e-9,0,0,.999871,46578e-8,0,0,.999801,488024e-9,0,0,.999704,520092e-9,0,129791e-9,.999572,565553e-9,0,821056e-9,.999389,628906e-9,0,.00225241,.999114,714911e-9,0,.00449109,.998488,819218e-9,0,.00756249,.995234,80415e-8,0,.0114716,.993021,830181e-9,0,.0162131,.991407,902645e-9,0,.021776,.989625,996934e-9,0,.0281471,.987064,.00109707,0,.0353118,.983265,.00114353,0,.0432562,.979535,.0012272,0,.0519665,.975224,.00132642,0,.0614298,.969574,.00138092,0,.0716348,.963021,.00145896,0,.0825709,.956046,.00152834,0,.094229,.947136,.00158217,0,.106602,.937313,.0016347,0,.119682,.926073,.00168383,0,.133465,.913121,.00171627,0,.147947,.899165,.00174229,0,.163125,.885891,.00176137,0,.178998,.873783,.00176406,0,.195566,.861331,.00176156,0,.21283,.847569,.00175346,0,.230793,.832785,.00172753,0,.249459,.817442,.00170204,0,.268832,.800613,.00166576,0,.28892,.783597,.00162909,0,.30973,.76571,.0015826,0,.331271,.747021,.00153106,0,.353554,.728593,.00148036,0,.37659,.710661,.00142808,0,.400391,.692426,.00136906,0,.424973,.673623,.00131066,0,.450347,.65494,.00125569,0,.476531,.635448,.00119517,0,.503535,.616221,.00113828,0,.531372,.597531,.0010816,0,.560047,.578795,.00102673,0,.589554,.559892,970985e-9,0,.619869,.541307,919773e-9,0,.650923,.522608,868479e-9,0,.68254,.504484,82137e-8,0,.714286,.486603,772916e-9,0,.746032,.468802,730353e-9,0,.777778,.451172,684955e-9,0,.809524,.434348,647565e-9,0,.84127,.417445,605863e-9,0,.873016,.401077,571885e-9,0,.904762,.385039,536034e-9,0,.936508,.369483,504227e-9,0,.968254,.354272,473165e-9,0,1,1,599525e-9,0,0,1,599533e-9,0,0,1,599639e-9,0,0,.999998,600097e-9,0,0,.999994,601336e-9,0,0,.999987,603958e-9,0,0,.999972,608775e-9,0,0,.999949,616842e-9,0,0,.999912,629534e-9,0,0,.999857,648658e-9,0,0,.999781,676615e-9,0,538873e-11,.999674,716574e-9,0,308602e-9,.999528,772641e-9,0,.00127003,.999326,849806e-9,0,.00300783,.999009,952682e-9,0,.00556637,.998112,.00106394,0,.00895889,.994496,.00102228,0,.0131827,.992806,.00108586,0,.0182277,.991211,.0011759,0,.0240795,.989415,.00128955,0,.030723,.986499,.00139038,0,.0381418,.982679,.00144539,0,.046321,.978839,.00153954,0,.0552459,.974295,.00164417,0,.0649034,.968784,.00171517,0,.0752814,.962324,.00180282,0,.0863693,.954956,.00186387,0,.0981578,.94624,.00193817,0,.110639,.936517,.00198156,0,.123806,.925186,.00203042,0,.137655,.91252,.0020664,0,.15218,.898441,.00207822,0,.16738,.884394,.0020992,0,.183253,.871273,.00208748,0,.199799,.859057,.00208686,0,.21702,.845243,.00205519,0,.234918,.830723,.00202868,0,.253496,.815801,.00199501,0,.272761,.79914,.00194193,0,.292719,.782372,.00188824,0,.313377,.76482,.00183695,0,.334745,.746586,.00177418,0,.356833,.7281,.00170628,0,.379654,.709842,.00164063,0,.403221,.692019,.00157355,0,.427548,.67364,.00150262,0,.452651,.655277,.00143473,0,.478545,.636438,.00136371,0,.505246,.617364,.00129911,0,.532768,.598603,.00123014,0,.561122,.580195,.00116587,0,.590309,.561786,.00110398,0,.620318,.543377,.00104148,0,.651102,.525093,983984e-9,0,.682545,.506791,92667e-8,0,.714286,.489291,874326e-9,0,.746032,.471811,821734e-9,0,.777778,.454435,774698e-9,0,.809524,.437493,727302e-9,0,.84127,.420977,684039e-9,0,.873016,.404729,64373e-8,0,.904762,.388756,60285e-8,0,.936508,.373344,56765e-8,0,.968254,.358191,531929e-9,0,1,1,832169e-9,0,0,1,832178e-9,0,0,1,83231e-8,0,0,.999998,832893e-9,0,0,.999995,834465e-9,0,0,.999985,837791e-9,0,0,.999969,843893e-9,0,0,.999944,854086e-9,0,0,.999903,870071e-9,0,0,.999843,894042e-9,0,0,.999759,928865e-9,0,531805e-10,.999643,978242e-9,0,579365e-9,.99948,.00104684,0,.00182774,.999255,.00114012,0,.00387804,.998885,.00126188,0,.00675709,.997405,.00135888,0,.010468,.99424,.00133626,0,.0150018,.992458,.00140905,0,.0203443,.990929,.00152305,0,.0264786,.989116,.00165882,0,.0333875,.985624,.00174128,0,.0410536,.982003,.00182108,0,.0494609,.978336,.00194498,0,.0585941,.973184,.00202708,0,.0684396,.9678,.00212166,0,.0789851,.961348,.00221366,0,.0902199,.953841,.00228219,0,.102134,.94534,.00235662,0,.114721,.935552,.00240572,0,.127972,.924064,.00244405,0,.141884,.911827,.00247557,0,.156451,.897731,.00248374,0,.171672,.883409,.00249863,0,.187545,.868625,.00246688,0,.20407,.856529,.00246523,0,.221249,.842999,.00242368,0,.239083,.828505,.00237354,0,.257578,.813825,.00232588,0,.276738,.797813,.00226731,0,.296569,.781097,.00219704,0,.31708,.764038,.00212394,0,.338281,.746067,.00204786,0,.360181,.727687,.00196728,0,.382794,.709571,.00188779,0,.406133,.691503,.00180532,0,.430213,.673673,.00171849,0,.45505,.655732,.00164147,0,.480662,.637399,.00155858,0,.507065,.618616,.00147641,0,.534278,.60005,.00140125,0,.562313,.581713,.00132441,0,.59118,.563546,.00125014,0,.620875,.545605,.00118249,0,.651373,.527559,.0011116,0,.682593,.509764,.00104979,0,.714286,.49193,985977e-9,0,.746032,.475011,928592e-9,0,.777778,.457878,873466e-9,0,.809524,.440979,819585e-9,0,.84127,.424613,772365e-9,0,.873016,.408549,722195e-9,0,.904762,.392771,680014e-9,0,.936508,.377317,636797e-9,0,.968254,.362352,598318e-9,0,1,1,.00114313,0,0,1,.00114314,0,0,.999999,.00114331,0,0,.999998,.00114404,0,0,.999994,.00114601,0,0,.999984,.00115019,0,0,.999967,.00115784,0,0,.999937,.0011706,0,0,.999894,.00119054,0,0,.999828,.00122031,0,0,.999735,.00126331,0,169263e-9,.999606,.00132382,0,949167e-9,.999426,.0014071,0,.00249668,.999173,.00151895,0,.00486392,.99873,.00166102,0,.00806323,.996243,.0017023,0,.0120895,.993779,.00172782,0,.0169288,.9919,.0018108,0,.0225633,.990524,.00196028,0,.028974,.98868,.00212014,0,.036142,.984663,.00217598,0,.044049,.981457,.00230563,0,.0526781,.977608,.00243966,0,.0620137,.972215,.00251336,0,.0720418,.966798,.0026285,0,.0827499,.960241,.00271409,0,.0941271,.952489,.00278381,0,.106164,.944127,.00285399,0,.118852,.934282,.00290994,0,.132185,.923271,.00294558,0,.146157,.910803,.00296269,0,.160766,.896705,.00296803,0,.176007,.88238,.00296637,0,.19188,.867116,.00293163,0,.208385,.853636,.00289418,0,.225523,.840469,.00284663,0,.243296,.82639,.00278594,0,.261709,.811759,.00271618,0,.280767,.796113,.00263187,0,.300476,.779518,.00254589,0,.320845,.763142,.00246003,0,.341883,.745464,.00236529,0,.363601,.727491,.00226536,0,.386011,.709414,.00216375,0,.409128,.691396,.00207127,0,.432967,.67368,.00197106,0,.457545,.656049,.00187022,0,.482881,.638188,.00177605,0,.508992,.620177,.00168482,0,.535899,.601506,.00158909,0,.563619,.58362,.00150583,0,.592165,.565496,.00141791,0,.621544,.54789,.00133693,0,.651743,.530323,.00126038,0,.682709,.512795,.00118556,0,.714286,.495199,.00111527,0,.746032,.478101,.0010489,0,.777778,.461511,984264e-9,0,.809524,.444879,92591e-8,0,.84127,.428424,866582e-9,0,.873016,.412495,814463e-9,0,.904762,.396975,764498e-9,0,.936508,.381614,715967e-9,0,.968254,.366732,672483e-9,0,1,1,.00155501,0,0,1,.00155503,0,0,1,.00155524,0,0,.999998,.00155615,0,0,.999994,.0015586,0,0,.999983,.00156379,0,0,.999963,.0015733,0,0,.999932,.00158911,0,0,.999882,.00161376,0,0,.99981,.00165041,0,100875e-10,.999708,.00170304,0,367658e-9,.999565,.00177658,0,.0014234,.999368,.00187688,0,.00327939,.999081,.00200989,0,.00596629,.99852,.00217177,0,.0094852,.99549,.0021745,0,.013824,.993252,.00222357,0,.0189642,.991727,.00235022,0,.0248856,.989951,.00250561,0,.0315669,.988029,.00268829,0,.0389882,.984029,.0027496,0,.0471302,.980683,.00289793,0,.0559754,.976554,.00303315,0,.0655081,.97139,.00313257,0,.0757138,.965544,.00323656,0,.08658,.95912,.00333432,0,.0980954,.951183,.0034039,0,.110251,.942974,.00347515,0,.123038,.932642,.00350381,0,.13645,.922158,.00354519,0,.150482,.909404,.00353851,0,.165129,.896071,.0035435,0,.18039,.881206,.00349936,0,.196263,.866077,.00347256,0,.212748,.85093,.003415,0,.229847,.837703,.00333367,0,.247561,.823878,.003249,0,.265895,.809449,.00316347,0,.284854,.794379,.00306351,0,.304445,.778138,.0029499,0,.324675,.761997,.00284099,0,.345555,.744938,.00272104,0,.367095,.727212,.00260715,0,.389309,.709549,.00248855,0,.41221,.691704,.00236783,0,.435814,.673689,.00225178,0,.460138,.656453,.00213765,0,.485203,.639128,.00202178,0,.511028,.621512,.00191443,0,.537634,.603598,.00180977,0,.565041,.58559,.00170456,0,.593268,.567852,.00160927,0,.622327,.5503,.00151395,0,.652217,.533033,.00142499,0,.682907,.515942,.00133955,0,.714296,.498814,.0012602,0,.746032,.481595,.00118188,0,.777778,.465117,.00111171,0,.809524,.448865,.00104091,0,.84127,.432711,976618e-9,0,.873016,.416822,91859e-8,0,.904762,.401272,857704e-9,0,.936508,.386226,807172e-9,0,.968254,.371321,75464e-8,0,1,1,.00209596,0,0,1,.00209598,0,0,1,.00209624,0,0,.999997,.00209736,0,0,.999991,.00210039,0,0,.999979,.00210678,0,0,.999959,.00211847,0,0,.999925,.0021379,0,0,.99987,.00216809,0,0,.999791,.00221281,0,681487e-10,.999677,.00227669,0,658161e-9,.999521,.00236533,0,.00200635,.999301,.00248514,0,.0041779,.998977,.00264185,0,.00718648,.998191,.00281695,0,.0110239,.994801,.00278518,0,.015672,.993091,.00288774,0,.0211091,.991571,.00303931,0,.0273123,.9897,.00321643,0,.034259,.987023,.00337332,0,.0419282,.983289,.00346146,0,.0502998,.979892,.00363704,0,.0593562,.975111,.00373601,0,.069081,.970351,.0038842,0,.0794598,.964131,.00397053,0,.0904798,.957747,.00408078,0,.10213,.949536,.00413533,0,.1144,.941372,.00420305,0,.127284,.931049,.00422815,0,.140772,.920647,.00425048,0,.154862,.908033,.0042281,0,.169548,.895028,.00422026,0,.184828,.879968,.00415042,0,.200701,.864875,.00408821,0,.217167,.84918,.00400909,0,.234227,.834934,.00391178,0,.251884,.821397,.00380066,0,.270141,.807135,.00367974,0,.289004,.792363,.00355172,0,.308479,.776661,.003411,0,.328575,.760705,.00328123,0,.349301,.744408,.00314003,0,.370668,.726994,.0029906,0,.392689,.709598,.00285034,0,.415379,.692112,.00271179,0,.438754,.674435,.00257185,0,.46283,.65676,.00243425,0,.48763,.639982,.00230351,0,.513173,.622983,.0021777,0,.539482,.605471,.00204991,0,.566579,.58796,.00193759,0,.594488,.570463,.00181976,0,.623226,.553058,.00171497,0,.6528,.535894,.00161109,0,.683198,.519089,.00151394,0,.714354,.502454,.00142122,0,.746032,.485681,.00133488,0,.777778,.468935,.00124975,0,.809524,.452951,.00117309,0,.84127,.437139,.00110155,0,.873016,.421446,.00103124,0,.904762,.405951,966387e-9,0,.936508,.391003,908119e-9,0,.968254,.376198,848057e-9,0,1,1,.00280076,0,0,1,.00280078,0,0,.999999,.00280109,0,0,.999997,.00280246,0,0,.999992,.00280616,0,0,.999979,.00281396,0,0,.999956,.00282822,0,0,.999916,.00285186,0,0,.999857,.0028885,0,0,.999768,.00294259,0,196026e-9,.999645,.00301946,0,.00104842,.99947,.00312541,0,.00270199,.999229,.00326733,0,.00519449,.998852,.00344992,0,.00852602,.997558,.00361052,0,.0126804,.994417,.0035898,0,.017635,.992824,.00372393,0,.023365,.991344,.00390695,0,.0298456,.989337,.00410392,0,.0370529,.985811,.00420987,0,.0449651,.982772,.00437488,0,.0535615,.979001,.00455069,0,.0628243,.974102,.00464462,0,.0727368,.969197,.00480577,0,.0832844,.962759,.00487818,0,.0944545,.956207,.00498176,0,.106236,.947909,.00503392,0,.118619,.939596,.00507474,0,.131595,.929642,.00509798,0,.145159,.918807,.00508476,0,.159305,.906921,.00505634,0,.174028,.893312,.00498845,0,.189327,.878933,.0049133,0,.2052,.863986,.0048259,0,.221647,.847936,.00470848,0,.23867,.832253,.00456889,0,.25627,.818619,.00442726,0,.274453,.804788,.00427677,0,.293222,.790241,.00411906,0,.312585,.775162,.00394833,0,.33255,.759463,.00377366,0,.353126,.743598,.00361026,0,.374324,.72697,.00343627,0,.396158,.709646,.00326422,0,.418641,.69277,.00309717,0,.44179,.675371,.0029356,0,.465624,.657863,.00277712,0,.490163,.640772,.00261738,0,.515429,.624441,.0024737,0,.541445,.607497,.00233125,0,.568236,.590438,.00218994,0,.595828,.573224,.0020664,0,.624242,.556168,.00193526,0,.653496,.539232,.00182463,0,.683588,.522352,.00170735,0,.714482,.506172,.00160555,0,.746032,.489842,.00150451,0,.777778,.473463,.00140938,0,.809524,.457266,.00132568,0,.84127,.441609,.0012376,0,.873016,.426348,.00116265,0,.904762,.411002,.00108935,0,.936508,.396045,.00101946,0,.968254,.381448,955665e-9,0,1,1,.0037121,0,0,1,.00371213,0,0,1,.00371251,0,0,.999997,.00371417,0,0,.99999,.00371863,0,0,.999977,.00372807,0,0,.99995,.00374529,0,0,.999908,.0037738,0,0,.999843,.00381789,0,123596e-10,.999745,.00388273,0,407442e-9,.999608,.00397443,0,.0015447,.999415,.00409998,0,.00351385,.999143,.00426662,0,.0063316,.9987,.00447625,0,.00998679,.996363,.00455323,0,.0144569,.994021,.00461052,0,.0197151,.992372,.00476359,0,.0257344,.991007,.00499101,0,.0324882,.988767,.0051972,0,.0399517,.984872,.00528407,0,.0481022,.982004,.00548926,0,.0569191,.977714,.00564385,0,.0663839,.973076,.0057693,0,.0764801,.967565,.0058924,0,.0871928,.961384,.00599629,0,.0985095,.954435,.00605998,0,.110419,.946303,.0061133,0,.122912,.937662,.00612028,0,.13598,.927867,.00612209,0,.149617,.916475,.00604813,0,.163817,.90541,.00603088,0,.178577,.891591,.00592218,0,.193894,.877573,.00578854,0,.209767,.862511,.00566648,0,.226196,.846861,.00551481,0,.243182,.83068,.00533754,0,.260728,.815725,.00515487,0,.278837,.802321,.0049655,0,.297515,.787826,.00475421,0,.316768,.773454,.00456002,0,.336605,.758224,.00434727,0,.357034,.74265,.00414444,0,.378067,.726729,.00393738,0,.399717,.710155,.00373575,0,.421998,.693312,.00353736,0,.444928,.67653,.00334368,0,.468523,.659444,.00315981,0,.492806,.642051,.00297809,0,.517798,.625758,.00280592,0,.543525,.609615,.00264254,0,.570012,.592919,.00248459,0,.597288,.576298,.00233327,0,.625379,.559489,.00219519,0,.654307,.542891,.00205441,0,.684084,.526255,.00193385,0,.714693,.509853,.00180745,0,.746044,.494131,.00169817,0,.777778,.478114,.0015913,0,.809524,.462274,.00148981,0,.84127,.446412,.00139537,0,.873016,.431274,.00130984,0,.904762,.41635,.00122403,0,.936508,.401476,.00114809,0,.968254,.386993,.00107563,0,1,1,.00488216,0,0,1,.0048822,0,0,1,.00488265,0,0,.999997,.00488463,0,0,.999988,.00488999,0,0,.999974,.00490129,0,0,.999946,.00492191,0,0,.999897,.00495598,0,0,.999825,.00500855,0,744791e-10,.999718,.00508559,0,712744e-9,.999565,.005194,0,.00215249,.999352,.00534147,0,.00444576,.999046,.00553523,0,.00759218,.998492,.00577016,0,.0115714,.995564,.00578487,0,.0163557,.993339,.00586414,0,.021915,.991834,.00606002,0,.0282201,.990496,.00633312,0,.0352433,.987826,.00651941,0,.042959,.98383,.00660842,0,.0513439,.98109,.00685523,0,.0603772,.976131,.00695778,0,.0700402,.971922,.00714236,0,.0803163,.965901,.00721437,0,.0911908,.959606,.00732017,0,.102651,.952504,.00735788,0,.114686,.944365,.00738493,0,.127286,.935652,.00737969,0,.140443,.925813,.00733612,0,.154151,.914397,.00723094,0,.168405,.903257,.00714002,0,.183201,.890015,.00700149,0,.198536,.876014,.00682813,0,.214409,.861436,.00665567,0,.23082,.845752,.00644526,0,.24777,.829169,.00621635,0,.265263,.813435,.00597789,0,.283301,.799701,.00575694,0,.301889,.785726,.00549866,0,.321035,.77152,.0052503,0,.340746,.75683,.00499619,0,.361032,.741951,.0047543,0,.381904,.726367,.0045084,0,.403374,.710537,.00426784,0,.425457,.693965,.00403487,0,.448169,.677724,.0038075,0,.47153,.66117,.00359431,0,.495561,.644274,.00338354,0,.520284,.627449,.00318163,0,.545725,.611645,.00299672,0,.571911,.595614,.00281016,0,.598873,.579426,.00264252,0,.62664,.563016,.00247509,0,.655239,.546728,.00232647,0,.684692,.530539,.00217803,0,.714999,.514164,.00204216,0,.746106,.498344,.00191403,0,.777778,.482957,.00179203,0,.809524,.467336,.00167695,0,.84127,.451994,.00157567,0,.873016,.436514,.00147113,0,.904762,.42178,.00138034,0,.936508,.407271,.00129219,0,.968254,.392822,.0012098,0,1,1,.00637427,0,0,1,.00637431,0,0,.999999,.00637485,0,0,.999996,.00637721,0,0,.999987,.00638357,0,0,.999971,.006397,0,0,.999939,.00642142,0,0,.999888,.00646177,0,0,.999807,.00652387,0,207916e-9,.999689,.00661454,0,.00112051,.99952,.00674155,0,.00287719,.999283,.00691313,0,.00550145,.998936,.00713598,0,.00897928,.998165,.00738501,0,.0132829,.994847,.00734388,0,.01838,.993182,.00749991,0,.0242381,.991665,.0077246,0,.030826,.989708,.00797579,0,.0381152,.986663,.00813011,0,.0460794,.983288,.00830365,0,.0546951,.980104,.00853496,0,.0639411,.974855,.00861045,0,.0737988,.97045,.00879133,0,.0842516,.964509,.00886377,0,.0952848,.957594,.00890346,0,.106886,.950546,.00893289,0,.119044,.942225,.00890074,0,.131749,.933365,.00886826,0,.144994,.923202,.0087316,0,.158772,.912605,.00863082,0,.173078,.901099,.00847403,0,.187908,.888177,.00825838,0,.203261,.873955,.00801834,0,.219134,.860091,.00779026,0,.235527,.84434,.00752478,0,.252443,.828517,.00724074,0,.269883,.81239,.00693769,0,.287851,.79721,.00664817,0,.306352,.783489,.00634763,0,.325393,.769514,.00604221,0,.344981,.755419,.00573568,0,.365126,.741083,.00544359,0,.385839,.726059,.00515515,0,.407132,.710809,.00487139,0,.42902,.695052,.00459846,0,.45152,.678886,.00433412,0,.474651,.663042,.00407981,0,.498433,.646634,.00384264,0,.52289,.630117,.00360897,0,.548048,.613804,.00338863,0,.573936,.598338,.00318486,0,.600584,.582687,.00298377,0,.628027,.566809,.00280082,0,.656295,.550817,.00262255,0,.685417,.534937,.00245835,0,.715406,.519151,.00230574,0,.74624,.503118,.0021549,0,.777778,.487723,.00202008,0,.809524,.472725,.00189355,0,.84127,.457599,.00177108,0,.873016,.442558,.00165843,0,.904762,.427624,.00155494,0,.936508,.413171,.00145273,0,.968254,.399122,.00136454,0,1,1,.00826496,0,0,1,.00826499,0,0,1,.00826564,0,0,.999996,.00826842,0,0,.999987,.00827589,0,0,.999967,.00829167,0,0,.999933,.00832037,0,0,.999876,.00836768,0,109338e-10,.999786,.00844031,0,427145e-9,.999655,.00854603,0,.0016384,.999468,.00869337,0,.00372392,.999203,.008891,0,.00668513,.998803,.00914387,0,.0104968,.99748,.00935838,0,.015125,.994446,.00933309,0,.0205338,.99292,.00953084,0,.0266884,.991414,.0097893,0,.0335565,.989049,.0100228,0,.0411086,.98582,.0101664,0,.0493181,.982441,.0103582,0,.0581613,.978595,.0105292,0,.0676169,.973495,.0106274,0,.0776661,.968405,.0107261,0,.0882926,.962717,.0108234,0,.0994817,.955478,.0108102,0,.111221,.948275,.0107914,0,.123499,.940006,.0107161,0,.136308,.930831,.0106309,0,.149639,.920648,.0104083,0,.163485,.910205,.0102312,0,.177843,.898445,.0100051,0,.192707,.885986,.00971928,0,.208077,.872204,.00940747,0,.22395,.858436,.0091085,0,.240326,.843454,.00876595,0,.257208,.827437,.00839794,0,.274596,.811488,.00803692,0,.292496,.796039,.00767352,0,.310911,.781083,.0073097,0,.329849,.767642,.00694032,0,.349316,.753901,.00657476,0,.369323,.740131,.00622699,0,.38988,.725845,.0058838,0,.410999,.710991,.00555586,0,.432696,.696002,.00523089,0,.454987,.680461,.00492494,0,.47789,.664875,.00463464,0,.501426,.649273,.00435422,0,.52562,.63302,.0040875,0,.550498,.61705,.00384075,0,.576089,.601154,.00359557,0,.602427,.586008,.00337636,0,.629544,.570699,.00316019,0,.657479,.555166,.00296033,0,.686264,.539645,.00277552,0,.715924,.524159,.00259499,0,.746459,.508682,.00243257,0,.777789,.493163,.00227851,0,.809524,.478004,.00213083,0,.84127,.46347,.00199502,0,.873016,.448778,.00186967,0,.904762,.434105,.00174732,0,.936508,.419576,.00163861,0,.968254,.405541,.00153341,0,1,1,.0106462,0,0,1,.0106462,0,0,.999999,.010647,0,0,.999995,.0106502,0,0,.999985,.0106589,0,0,.999964,.0106773,0,0,.999925,.0107106,0,0,.999861,.0107655,0,712986e-10,.999763,.0108497,0,743959e-9,.999616,.0109716,0,.00227361,.999408,.0111408,0,.0046983,.999112,.0113659,0,.00800158,.998637,.0116475,0,.0121493,.996223,.0117231,0,.0171023,.994006,.0118064,0,.0228218,.992444,.0120254,0,.0292711,.991028,.0123314,0,.036417,.98803,.0124954,0,.0442295,.984816,.0126538,0,.0526815,.981399,.0128537,0,.0617492,.977085,.0129694,0,.0714114,.972154,.013091,0,.0816495,.966617,.0131166,0,.0924472,.960628,.0131583,0,.10379,.953295,.0131094,0,.115665,.94575,.0129966,0,.128062,.937654,.0128796,0,.140972,.927716,.0126477,0,.154387,.917932,.0123889,0,.168301,.907719,.012131,0,.182709,.89584,.0118013,0,.197608,.883526,.0114145,0,.212994,.870301,.0110075,0,.228867,.856272,.0106019,0,.245227,.842251,.0101938,0,.262074,.826466,.00973254,0,.279412,.810859,.0092846,0,.297244,.795051,.00883304,0,.315575,.780053,.00840272,0,.334412,.76575,.00796438,0,.35376,.752298,.00752526,0,.373631,.739153,.00711486,0,.394034,.725514,.00670361,0,.414983,.711473,.00632656,0,.436491,.696936,.00595206,0,.458575,.682126,.00559191,0,.481253,.667027,.00525362,0,.504547,.651875,.00493805,0,.528481,.636463,.00462848,0,.553081,.620641,.00433936,0,.578377,.604931,.00407,0,.604404,.589549,.00380864,0,.631197,.574712,.00357049,0,.658795,.559775,.00334466,0,.687238,.544514,.00312505,0,.716559,.529555,.00293199,0,.746776,.514402,.00274204,0,.777849,.499302,.00256647,0,.809524,.484114,.00239901,0,.84127,.469308,.00225148,0,.873016,.455133,.00210178,0,.904762,.440939,.0019727,0,.936508,.426627,.00184382,0,.968254,.412509,.00172548,0,1,1,.013628,0,0,1,.0136281,0,0,.999999,.0136289,0,0,.999995,.0136327,0,0,.999983,.0136427,0,0,.99996,.0136638,0,0,.999917,.0137022,0,0,.999846,.0137652,0,204597e-9,.999736,.0138615,0,.00116837,.999573,.0140007,0,.00303325,.99934,.0141927,0,.00580613,.999004,.0144457,0,.00945626,.998407,.0147489,0,.0139421,.995464,.014731,0,.0192202,.993328,.0148283,0,.0252495,.991799,.0150797,0,.0319921,.990397,.0154316,0,.0394138,.986835,.0155005,0,.0474843,.983938,.0157308,0,.0561763,.980154,.0158753,0,.0654661,.975659,.0159581,0,.0753326,.970171,.0159832,0,.0857571,.964803,.0160084,0,.0967236,.958366,.0159484,0,.108218,.950613,.0158001,0,.120227,.942874,.0155845,0,.132741,.935005,.0154292,0,.145751,.924991,.0150742,0,.159249,.914814,.0146757,0,.17323,.904743,.0143097,0,.187687,.893216,.0138695,0,.202619,.880769,.0133706,0,.218021,.868136,.0128606,0,.233894,.85469,.0123403,0,.250238,.840593,.0118091,0,.267052,.825808,.011253,0,.284341,.81009,.0107099,0,.302106,.79504,.0101636,0,.320354,.779757,.00964041,0,.33909,.764697,.00911896,0,.358322,.750913,.00859533,0,.378059,.738175,.00811592,0,.398311,.725242,.00764504,0,.41909,.711864,.00718885,0,.440412,.698009,.00675843,0,.462292,.683841,.00634984,0,.484748,.669391,.00595502,0,.507802,.654731,.00558671,0,.531477,.639805,.00523578,0,.555802,.624789,.00490834,0,.580805,.609325,.00459448,0,.606522,.593975,.00430342,0,.63299,.578983,.00403019,0,.66025,.564442,.0037707,0,.688346,.549835,.0035316,0,.717319,.535039,.00330255,0,.7472,.520403,.00308932,0,.777982,.505687,.00289335,0,.809524,.490939,.00270818,0,.84127,.476233,.0025343,0,.873016,.461624,.00237097,0,.904762,.447833,.00222065,0,.936508,.433992,.00207561,0,.968254,.420147,.00194955,0,1,1,.0173415,0,0,1,.0173416,0,0,.999999,.0173426,0,0,.999995,.0173468,0,0,.999983,.0173582,0,0,.999954,.0173822,0,0,.999908,.0174258,0,669501e-11,.999828,.0174973,0,427399e-9,.999705,.0176063,0,.00171019,.999524,.0177631,0,.0039248,.999263,.0179781,0,.00705382,.998878,.018258,0,.0110552,.998012,.0185551,0,.0158812,.994614,.0184264,0,.0214852,.993132,.0186385,0,.0278239,.991563,.0189067,0,.0348585,.989298,.0191577,0,.0425544,.986036,.0192522,0,.050881,.982558,.0194063,0,.059811,.978531,.019486,0,.0693209,.974198,.0195847,0,.0793895,.968148,.0194749,0,.0899984,.962565,.0194277,0,.101132,.956041,.0192991,0,.112775,.947749,.0189893,0,.124917,.94018,.018704,0,.137547,.93165,.0183458,0,.150655,.921798,.0178775,0,.164236,.911573,.0173618,0,.178281,.901569,.0168482,0,.192788,.890341,.016265,0,.207752,.877835,.0156199,0,.223171,.865472,.0149516,0,.239044,.852905,.0143274,0,.255371,.838906,.0136643,0,.272153,.824888,.0129903,0,.289393,.809977,.0123218,0,.307093,.794697,.0116572,0,.325259,.780028,.0110307,0,.343896,.765124,.0104236,0,.363012,.750411,.0098219,0,.382617,.737264,.00924397,0,.402719,.724799,.00868719,0,.423332,.712253,.00816476,0,.444469,.699267,.00767262,0,.466146,.685618,.00719746,0,.488383,.671736,.00673916,0,.511199,.657777,.00631937,0,.534618,.643497,.00592411,0,.558668,.62889,.00553928,0,.58338,.614299,.0051934,0,.608787,.599197,.00485985,0,.634929,.584175,.00454357,0,.661849,.569541,.00425787,0,.689594,.555193,.00397905,0,.718211,.540947,.00372364,0,.747742,.526593,.00348599,0,.778205,.512335,.00326103,0,.80953,.498017,.00305137,0,.84127,.483609,.00285485,0,.873016,.469368,.00267472,0,.904762,.455037,.00249945,0,.936508,.441493,.00234792,0,.968254,.428147,.00219936,0,1,1,.0219422,0,0,1,.0219423,0,0,.999998,.0219434,0,0,.999993,.0219481,0,0,.999981,.021961,0,0,.999949,.0219879,0,0,.999896,.0220367,0,593194e-10,.999808,.0221167,0,75364e-8,.99967,.0222383,0,.00237884,.999466,.0224125,0,.00495612,.999174,.0226495,0,.00844887,.998725,.0229525,0,.0128058,.996979,.0231123,0,.0179742,.994317,.0230742,0,.0239047,.992781,.0232895,0,.0305526,.991191,.0235734,0,.0378786,.987787,.0236152,0,.0458475,.985092,.0237994,0,.0544287,.981121,.0238553,0,.0635952,.976924,.0238706,0,.0733233,.97218,.0238704,0,.0835922,.965956,.0236598,0,.0943839,.959998,.0234735,0,.105682,.953245,.0232277,0,.117474,.944445,.0226973,0,.129747,.937087,.0223527,0,.142491,.928341,.0218144,0,.155697,.9184,.0211516,0,.169358,.907959,.0204553,0,.183469,.89808,.0197673,0,.198024,.887047,.0189915,0,.21302,.875221,.0182082,0,.228455,.86269,.0173584,0,.244329,.850735,.0165718,0,.260639,.837545,.0157524,0,.277389,.823639,.0149482,0,.29458,.809699,.0141431,0,.312216,.794797,.0133527,0,.3303,.780578,.0126193,0,.34884,.766019,.0118914,0,.367842,.751447,.0111839,0,.387315,.737275,.010514,0,.40727,.724545,.00987277,0,.427717,.712644,.00926569,0,.448671,.700432,.00869029,0,.470149,.687664,.00814691,0,.492167,.674288,.00763012,0,.514746,.660966,.00714437,0,.537911,.647264,.00668457,0,.561688,.633431,.00626581,0,.586108,.619133,.00585593,0,.611206,.604935,.00548188,0,.637022,.590236,.00513288,0,.663599,.575473,.0047906,0,.690989,.561228,.00448895,0,.719242,.547054,.00420233,0,.748411,.533175,.00392869,0,.778531,.519163,.00367445,0,.809583,.505328,.00344097,0,.84127,.491446,.00322003,0,.873016,.477356,.00301283,0,.904762,.46356,.00282592,0,.936508,.449623,.00264956,0,.968254,.436068,.00246956,0,1,1,.0276135,0,0,1,.0276136,0,0,.999998,.0276148,0,0,.999993,.0276201,0,0,.999976,.0276342,0,0,.999945,.027664,0,0,.999884,.0277179,0,18679e-8,.999784,.027806,0,.00119607,.99963,.0279394,0,.00318407,.999401,.0281295,0,.00613601,.999066,.0283858,0,.00999963,.998524,.0287027,0,.0147164,.995702,.0286256,0,.0202295,.993593,.0286733,0,.0264876,.992067,.0288989,0,.0334452,.990548,.0292135,0,.0410621,.986775,.0291296,0,.0493032,.984054,.0293099,0,.0581381,.979481,.0291881,0,.0675397,.975297,.0291598,0,.0774848,.96981,.028954,0,.0879528,.963524,.028628,0,.0989258,.957398,.0283135,0,.110388,.950088,.0278469,0,.122327,.941538,.0271798,0,.134729,.933332,.0265388,0,.147587,.924392,.0257776,0,.160889,.914581,.024916,0,.174631,.904347,.0240242,0,.188806,.894324,.0231229,0,.203409,.883724,.022153,0,.218437,.872207,.0211355,0,.233888,.859927,.0201048,0,.249761,.848373,.0191263,0,.266056,.836023,.0181306,0,.282774,.82289,.0171718,0,.299917,.809324,.0162196,0,.317488,.795361,.0152622,0,.335493,.781253,.01439,0,.353936,.767338,.013533,0,.372825,.753156,.0127244,0,.392168,.739122,.0119454,0,.411976,.725358,.0112054,0,.432259,.712949,.010487,0,.453032,.701621,.00984032,0,.47431,.689703,.00921495,0,.496111,.677216,.00862492,0,.518456,.664217,.00806882,0,.541367,.65137,.00755922,0,.564872,.638,.00705705,0,.589001,.62453,.00661266,0,.613789,.610601,.00618432,0,.639277,.59676,.00578033,0,.66551,.582433,.00540927,0,.692539,.568026,.00506104,0,.720422,.55414,.0047353,0,.749216,.540178,.00442889,0,.778974,.526513,.00414363,0,.809711,.512954,.00388237,0,.84127,.499403,.00362875,0,.873016,.486026,.00340827,0,.904762,.472345,.00318598,0,.936508,.458828,.00297635,0,.968254,.445379,.00279447,0,1,1,.0345716,0,0,1,.0345717,0,0,.999999,.034573,0,0,.999991,.0345787,0,0,.999974,.0345941,0,0,.999937,.0346263,0,188589e-11,.999869,.0346847,0,409238e-9,.999757,.0347798,0,.0017674,.999582,.0349233,0,.00413658,.999322,.0351265,0,.00747408,.998939,.0353967,0,.0117157,.998219,.0357018,0,.0167966,.994974,.0354726,0,.0226572,.993201,.0355621,0,.0292445,.991573,.0357641,0,.0365123,.989301,.0359252,0,.0444203,.985712,.0358017,0,.0529334,.982411,.0358353,0,.0620214,.977827,.035617,0,.0716574,.973278,.0354398,0,.0818186,.967397,.0350483,0,.0924846,.960696,.0344795,0,.103638,.954349,.0339861,0,.115263,.946066,.0331323,0,.127348,.938012,.032359,0,.13988,.929413,.0314413,0,.152849,.920355,.0304103,0,.166248,.910586,.0292785,0,.18007,.900609,.0281391,0,.194308,.890093,.0269103,0,.208958,.880013,.0257269,0,.224018,.869001,.0244671,0,.239485,.85751,.0232252,0,.255359,.84582,.0220117,0,.271638,.834383,.0208274,0,.288324,.822158,.0196628,0,.305419,.809056,.0185306,0,.322927,.795832,.0174174,0,.340851,.782547,.0163758,0,.359199,.7689,.015391,0,.377975,.755526,.0144488,0,.397189,.741681,.0135372,0,.416851,.728178,.0126957,0,.436971,.714642,.0118812,0,.457564,.702756,.0111165,0,.478644,.69175,.0104145,0,.500229,.680159,.00974439,0,.522339,.668073,.00911926,0,.544997,.655405,.00851393,0,.56823,.642921,.00797637,0,.592068,.629993,.00745119,0,.616546,.616828,.00696972,0,.641705,.603305,.00652425,0,.66759,.589833,.00610188,0,.694255,.575945,.00570834,0,.72176,.561745,.00533384,0,.750168,.548277,.00500001,0,.779545,.534467,.00467582,0,.809933,.521032,.00438092,0,.841272,.507877,.00410348,0,.873016,.494654,.00383618,0,.904762,.481592,.00358699,0,.936508,.468509,.00337281,0,.968254,.455293,.00316196,0,1,1,.0430698,0,0,1,.0430699,0,0,.999998,.0430713,0,0,.999991,.0430773,0,0,.99997,.0430936,0,0,.999928,.0431277,0,406396e-10,.999852,.0431893,0,744376e-9,.999724,.0432895,0,.0024806,.999527,.0434397,0,.00524779,.99923,.0436507,0,.00898164,.998783,.0439255,0,.0136083,.997507,.0441104,0,.0190582,.994418,.0438225,0,.0252694,.992864,.0439396,0,.0321879,.991127,.0440962,0,.039767,.987331,.0438408,0,.0479667,.984819,.0438991,0,.056752,.980384,.0435906,0,.0660929,.975846,.0432543,0,.075963,.970748,.0428293,0,.0863398,.964303,.042153,0,.0972035,.95772,.0414111,0,.108537,.950747,.0405893,0,.120325,.942533,.0394887,0,.132554,.934045,.0383544,0,.145215,.924942,.037057,0,.158296,.915811,.0356993,0,.17179,.90612,.0342401,0,.185691,.896434,.0328078,0,.199993,.886021,.031288,0,.214691,.876081,.0297776,0,.229782,.865608,.0282334,0,.245265,.854924,.026749,0,.261138,.843607,.02526,0,.277401,.832456,.0238214,0,.294056,.821342,.0224682,0,.311104,.809303,.0211297,0,.328548,.796468,.0198387,0,.346394,.784046,.0186227,0,.364645,.771262,.0174561,0,.38331,.758118,.0163806,0,.402396,.745075,.0153287,0,.421912,.731926,.0143647,0,.44187,.71863,.0134363,0,.462283,.705414,.0125603,0,.483165,.693792,.0117508,0,.504535,.683108,.0110016,0,.52641,.67183,.0102757,0,.548816,.66015,.00962044,0,.571776,.647907,.00898031,0,.595323,.635734,.00840811,0,.619489,.623208,.00786211,0,.644317,.610438,.00734953,0,.669852,.597345,.00687688,0,.696148,.584138,.00643469,0,.723267,.5707,.00602236,0,.75128,.556966,.0056324,0,.780258,.543607,.00528277,0,.810268,.530213,.00493999,0,.841311,.516912,.00462265,0,.873016,.503916,.0043307,0,.904762,.491146,.00406858,0,.936508,.478439,.00381436,0,.968254,.465834,.00358003,0,1,1,.0534039,0,0,1,.053404,0,0,.999998,.0534055,0,0,.999989,.0534116,0,0,.999968,.0534283,0,0,.999918,.0534633,0,155895e-9,.99983,.0535262,0,.00120914,.999685,.0536281,0,.00334944,.999461,.0537799,0,.00653077,.999119,.0539902,0,.0106718,.998582,.0542524,0,.0156907,.995919,.0540318,0,.0215147,.993735,.0538914,0,.0280801,.992126,.0539557,0,.0353323,.990266,.0540401,0,.0432247,.986317,.0536064,0,.0517172,.983213,.0534425,0,.0607754,.978303,.0528622,0,.0703698,.973665,.0523363,0,.0804742,.968091,.0516165,0,.0910667,.961026,.0505434,0,.102128,.954333,.049523,0,.113641,.946372,.0481698,0,.125591,.938254,.0467674,0,.137965,.929516,.0452341,0,.150754,.920106,.0435083,0,.163947,.910899,.0417399,0,.177537,.901532,.0399389,0,.191516,.891919,.0380901,0,.205881,.882006,.0362341,0,.220626,.871965,.0343444,0,.235749,.862145,.0324832,0,.251248,.852058,.0306681,0,.267121,.84161,.0289097,0,.283368,.830806,.0272079,0,.299992,.820476,.0256089,0,.316992,.809514,.0240394,0,.334374,.797865,.0225379,0,.35214,.785621,.0211235,0,.370296,.773765,.0197908,0,.388849,.761629,.0185235,0,.407807,.748891,.0173358,0,.427178,.736437,.0162305,0,.446974,.723707,.0151778,0,.467207,.710606,.0141791,0,.487892,.698019,.0132592,0,.509046,.686203,.0123887,0,.530687,.675692,.0115976,0,.552839,.664826,.0108325,0,.575527,.65349,.0101348,0,.59878,.641774,.00947756,0,.622634,.629794,.00886058,0,.647128,.617647,.00828526,0,.672308,.60534,.00775312,0,.698231,.592718,.00726033,0,.724958,.579746,.00679731,0,.752563,.566763,.00636111,0,.781127,.553515,.00595228,0,.810733,.540118,.00556876,0,.841426,.527325,.00523051,0,.873016,.514265,.00490712,0,.904762,.501406,.00460297,0,.936508,.488922,.00431247,0,.968254,.476541,.0040472,0,1,1,.0659184,0,0,1,.0659185,0,0,.999998,.06592,0,0,.999988,.0659259,0,0,.999963,.0659423,0,0,.999907,.0659764,0,374198e-9,.999806,.0660376,0,.00182071,.999639,.0661361,0,.0043894,.999378,.0662814,0,.00800055,.998985,.0664779,0,.0125594,.998285,.0666914,0,.0179786,.995071,.0661989,0,.0241822,.993172,.0660454,0,.031106,.991438,.0660105,0,.0386952,.988428,.0656875,0,.0469032,.985218,.0652913,0,.0556905,.981128,.0647107,0,.065023,.976015,.0638491,0,.0748717,.97097,.062993,0,.0852112,.964582,.0617927,0,.0960199,.957383,.0603626,0,.107279,.949969,.0588128,0,.118971,.941843,.0570274,0,.131084,.933624,.0551885,0,.143604,.924543,.053122,0,.156521,.914919,.0508897,0,.169825,.905773,.0486418,0,.18351,.896434,.0463364,0,.197569,.887195,.0440623,0,.211997,.877706,.0417799,0,.226789,.867719,.03945,0,.241944,.858587,.037243,0,.257458,.849317,.0350956,0,.273331,.839585,.0329852,0,.289563,.829856,.0310028,0,.306154,.819589,.0290953,0,.323108,.809714,.0272738,0,.340426,.79934,.0255631,0,.358113,.788224,.0239175,0,.376175,.776619,.0223831,0,.394616,.76521,.0209298,0,.413445,.753716,.0195786,0,.432671,.741564,.0183001,0,.452305,.729413,.0171259,0,.472358,.717146,.0159933,0,.492845,.70436,.0149495,0,.513783,.69219,.0139681,0,.535189,.680289,.0130577,0,.557087,.669611,.0122198,0,.5795,.659113,.0114174,0,.602459,.648148,.0106729,0,.625997,.636905,.00998997,0,.650154,.625154,.00934313,0,.674976,.613481,.00874839,0,.700518,.60154,.00818265,0,.726845,.58943,.00766889,0,.754032,.576828,.00717153,0,.782167,.564194,.00672696,0,.811344,.551501,.00630863,0,.841644,.538635,.00592177,0,.873016,.525724,.00554888,0,.904762,.513209,.00520225,0,.936508,.500457,.00488231,0,.968254,.48799,.00457153,0,1,1,.0810131,0,0,1,.0810133,0,0,.999997,.0810145,0,0,.999985,.08102,0,0,.999956,.0810347,0,195026e-10,.999893,.0810656,0,719316e-9,.999777,.0811205,0,.00259774,.999583,.081208,0,.00561807,.999281,.0813343,0,.00967472,.998813,.0814969,0,.0146627,.997597,.0815217,0,.0204902,.994379,.0808502,0,.0270802,.992744,.0806792,0,.0343674,.990745,.0804589,0,.0422974,.986646,.0796107,0,.0508242,.983611,.0790913,0,.0599087,.978869,.0780746,0,.0695175,.973475,.0768218,0,.0796223,.967845,.0754926,0,.0901983,.960778,.0737063,0,.101224,.953333,.0718052,0,.112682,.945274,.0695946,0,.124555,.936955,.0672492,0,.136831,.928319,.0647732,0,.149496,.919075,.0620947,0,.162542,.909114,.0591816,0,.175958,.900137,.0563917,0,.189739,.891069,.0535392,0,.203877,.882262,.0507642,0,.218368,.873232,.0479793,0,.233208,.864042,.045226,0,.248393,.855002,.0425413,0,.263923,.846569,.0400126,0,.279796,.837714,.0375269,0,.296012,.828918,.0352027,0,.312573,.819783,.0330011,0,.329479,.810129,.0308908,0,.346734,.800866,.0289112,0,.364342,.79093,.0270255,0,.382307,.780593,.0252758,0,.400637,.769511,.0236178,0,.419337,.758558,.0220652,0,.438418,.747632,.0206289,0,.457889,.736146,.0192873,0,.477761,.724093,.0180333,0,.49805,.71234,.0168264,0,.51877,.700201,.015746,0,.53994,.687949,.0147027,0,.561581,.676163,.0137512,0,.583718,.665001,.0128655,0,.60638,.65472,.0120366,0,.629599,.644213,.0112604,0,.653415,.633382,.0105413,0,.677874,.62212,.00986498,0,.70303,.610631,.00923308,0,.728948,.599078,.00864206,0,.755706,.587519,.00811784,0,.783396,.575505,.00761237,0,.812121,.563148,.00713949,0,.841989,.550828,.00668379,0,.873035,.538458,.00627715,0,.904762,.525905,.00588336,0,.936508,.513517,.00552687,0,.968254,.501395,.00519681,0,1,1,.0991506,0,0,1,.0991504,0,0,.999996,.0991515,0,0,.999984,.0991558,0,0,.999947,.0991672,0,114389e-9,.999874,.0991912,0,.00121503,.999739,.0992331,0,.00356108,.999514,.0992983,0,.00705578,.999159,.0993877,0,.011574,.998586,.0994837,0,.017003,.995731,.0988425,0,.0232484,.993384,.098276,0,.0302318,.991615,.0979269,0,.0378884,.989029,.0973432,0,.0461641,.985373,.0963539,0,.0550136,.981278,.0952306,0,.0643988,.975777,.0936233,0,.0742868,.970526,.0920219,0,.0846501,.963755,.0898912,0,.0954644,.956676,.0876064,0,.106709,.948099,.0847751,0,.118367,.939718,.0818638,0,.130423,.931305,.078857,0,.142862,.922342,.0756127,0,.155674,.912842,.0721473,0,.168849,.903304,.0686195,0,.182378,.89411,.0650589,0,.196255,.885512,.0616022,0,.210473,.877193,.0582434,0,.225027,.86877,.0548979,0,.239915,.860267,.0516095,0,.255132,.851915,.048468,0,.270678,.843912,.0454447,0,.286551,.83604,.0425612,0,.302751,.828245,.0398752,0,.31928,.820159,.0373198,0,.336138,.81167,.034916,0,.35333,.802659,.0326402,0,.370858,.793921,.0304901,0,.388728,.784713,.0284857,0,.406944,.774946,.0266186,0,.425515,.76448,.0248593,0,.444449,.753793,.0232114,0,.463756,.743506,.0217039,0,.483447,.732555,.0202841,0,.503535,.720965,.0189648,0,.524036,.709422,.0177189,0,.544968,.697756,.0165626,0,.56635,.685565,.015483,0,.588208,.673987,.0144892,0,.610569,.66244,.0135607,0,.633466,.651675,.0126956,0,.656936,.641598,.0118788,0,.681025,.63121,.0111261,0,.705788,.620514,.010437,0,.731289,.609366,.00978747,0,.757606,.598137,.00917257,0,.784834,.586966,.00859778,0,.813085,.575549,.00806803,0,.842485,.563797,.00757294,0,.87313,.551758,.00710592,0,.904762,.539894,.0066841,0,.936508,.527901,.00627901,0,.968254,.515819,.00590506,0,1,1,.120864,0,0,1,.120864,0,0,.999996,.120864,0,0,.99998,.120867,0,0,.99994,.120872,0,323781e-9,.999852,.120884,0,.00188693,.999693,.120903,0,.00473489,.999426,.120929,0,.00872704,.999002,.120955,0,.0137237,.998235,.120918,0,.0196068,.994608,.119764,0,.0262803,.992997,.119265,0,.0336657,.990968,.11863,0,.0416987,.987002,.117261,0,.0503261,.983524,.116009,0,.0595035,.97875,.114252,0,.0691935,.972652,.11193,0,.0793645,.966613,.109555,0,.0899894,.959275,.106612,0,.101045,.951272,.103375,0,.112512,.942323,.0996594,0,.124372,.933679,.0958841,0,.136611,.924822,.0919265,0,.149216,.915742,.0878061,0,.162176,.906348,.0834894,0,.175482,.896883,.079085,0,.189125,.88774,.0746745,0,.203098,.87986,.0705773,0,.217396,.871998,.0665005,0,.232015,.864325,.0625413,0,.24695,.856685,.0586781,0,.2622,.84925,.0550063,0,.277761,.841719,.0514727,0,.293634,.834755,.0481398,0,.309819,.827853,.0450172,0,.326315,.820888,.0420969,0,.343126,.813616,.0393702,0,.360254,.805767,.0367771,0,.377701,.797338,.0343274,0,.395474,.789122,.0320529,0,.413577,.780601,.0299485,0,.432018,.771424,.0279812,0,.450804,.761502,.0261054,0,.469944,.751166,.0243942,0,.489451,.741276,.0228087,0,.509337,.730898,.0213265,0,.529617,.719878,.0199307,0,.550307,.708379,.0186574,0,.571428,.697165,.0174446,0,.593003,.685554,.0163144,0,.615059,.673631,.015276,0,.637628,.662385,.0143003,0,.660746,.651059,.0134112,0,.68446,.640451,.0125794,0,.70882,.630536,.011793,0,.733893,.620316,.0110547,0,.759756,.609722,.0103668,0,.786505,.598804,.00973009,0,.814259,.587871,.00912812,0,.843157,.577121,.00858916,0,.87334,.566019,.00807333,0,.904762,.554664,.00759687,0,.936508,.543101,.00714759,0,.968254,.531558,.00673418,0,1,1,.146767,0,0,1,.146767,0,0,.999997,.146767,0,0,.999977,.146765,0,320658e-11,.999929,.146762,0,682576e-9,.999823,.146753,0,.00276402,.999633,.146735,0,.00614771,.999314,.146699,0,.0106613,.998796,.14662,0,.0161546,.997124,.146107,0,.0225063,.994062,.144857,0,.0296198,.992154,.144011,0,.037417,.989186,.142712,0,.0458348,.985279,.140926,0,.0548211,.980826,.13885,0,.0643326,.975056,.136168,0,.074333,.969005,.133217,0,.0847917,.961554,.12959,0,.0956828,.954206,.125886,0,.106984,.945046,.121335,0,.118675,.935678,.116492,0,.130741,.926748,.111635,0,.143166,.917764,.106625,0,.155939,.908358,.101325,0,.169049,.899219,.0960249,0,.182487,.890089,.0906527,0,.196245,.881488,.0853905,0,.210317,.874031,.0804177,0,.224697,.866932,.0756005,0,.23938,.859976,.0709019,0,.254364,.853375,.0664391,0,.269646,.846971,.0622012,0,.285223,.840483,.058129,0,.301096,.833969,.0542762,0,.317265,.82806,.0507042,0,.333729,.822128,.047368,0,.350491,.815989,.044272,0,.367554,.809336,.0413444,0,.38492,.802177,.038601,0,.402594,.79441,.0360227,0,.420582,.786573,.0336383,0,.438891,.778619,.0314321,0,.457527,.77,.029362,0,.476499,.760698,.0274102,0,.49582,.750932,.0256146,0,.5155,.740993,.023974,0,.535555,.731159,.0224182,0,.556,.720836,.0209889,0,.576855,.709913,.0196411,0,.598143,.698415,.0183824,0,.619888,.68745,.0172222,0,.642123,.676154,.0161509,0,.664883,.664383,.0151397,0,.688211,.6533,.0141873,0,.71216,.642072,.0133105,0,.736792,.631412,.0124932,0,.762186,.621622,.0117408,0,.788439,.611681,.0110358,0,.815672,.60142,.0103775,0,.844034,.59083,.00975623,0,.873699,.580254,.00918084,0,.904765,.569841,.00864721,0,.936508,.559224,.00815731,0,.968254,.548315,.00767924,0,1,1,.177563,0,0,1,.177563,0,0,.999994,.177562,0,0,.999972,.177555,0,664171e-10,.999914,.177536,0,.0012276,.999787,.177496,0,.00388025,.999556,.17742,0,.00783463,.999165,.177285,0,.0128953,.9985,.177037,0,.0189053,.995388,.175634,0,.025742,.993102,.174375,0,.033309,.990992,.173121,0,.0415298,.986932,.170896,0,.0503425,.982786,.16847,0,.0596964,.977592,.165455,0,.0695498,.971075,.161676,0,.0798676,.963967,.157458,0,.0906201,.956397,.152836,0,.101783,.947489,.147467,0,.113333,.937564,.14145,0,.125254,.928182,.135383,0,.137529,.919027,.129212,0,.150144,.909618,.12276,0,.163088,.900492,.116273,0,.176351,.891671,.1098,0,.189924,.883146,.103362,0,.203799,.875151,.0970799,0,.21797,.868338,.0911732,0,.232433,.862033,.0854966,0,.247182,.856107,.0800691,0,.262216,.850644,.0749618,0,.27753,.845261,.070079,0,.293124,.839885,.0654321,0,.308997,.834609,.0610975,0,.325149,.829083,.0569741,0,.341581,.82404,.0531736,0,.358294,.818968,.049665,0,.37529,.813496,.0463856,0,.392573,.807533,.0433217,0,.410148,.80099,.0404402,0,.428019,.793891,.0377578,0,.446192,.786281,.0352616,0,.464676,.778773,.0329577,0,.483478,.770737,.030808,0,.502608,.762094,.0287964,0,.522079,.752898,.0269254,0,.541905,.743306,.0251926,0,.5621,.733416,.023595,0,.582684,.723742,.0221155,0,.603677,.713542,.0207435,0,.625106,.702755,.019434,0,.646998,.691484,.0182046,0,.66939,.680531,.0170771,0,.692324,.66953,.0160339,0,.715849,.658126,.0150677,0,.740028,.646933,.0141551,0,.764937,.636107,.0133179,0,.790673,.625271,.0125284,0,.817358,.615225,.0117937,0,.84515,.605678,.0111181,0,.874244,.59583,.0104759,0,.904828,.585704,.00986672,0,.936508,.575413,.00929712,0,.968254,.565373,.00876713,0,1,1,.214058,0,0,.999999,.214058,0,0,.999994,.214055,0,0,.999966,.214039,0,259642e-9,.999893,.213998,0,.00200075,.999737,.21391,0,.00527775,.999449,.213745,0,.00983959,.99896,.213458,0,.0154755,.9979,.212855,0,.0220249,.994278,.210779,0,.0293654,.992254,.20926,0,.0374021,.98881,.206908,0,.0460604,.984715,.204009,0,.0552802,.979738,.200471,0,.0650127,.972884,.195813,0,.0752175,.965996,.190856,0,.0858612,.957974,.185077,0,.0969155,.949155,.17868,0,.108356,.939288,.171513,0,.120163,.928996,.163838,0,.132319,.919563,.156246,0,.144808,.910004,.148359,0,.157618,.900791,.140417,0,.170737,.892135,.132569,0,.184155,.883803,.124741,0,.197866,.876034,.117091,0,.211861,.869219,.109835,0,.226134,.863062,.102859,0,.240682,.857795,.0962928,0,.255499,.853009,.0900725,0,.270583,.848603,.0842101,0,.285931,.844335,.0786527,0,.301542,.840208,.0734397,0,.317415,.836035,.0685334,0,.33355,.83172,.0639275,0,.349948,.827135,.0595909,0,.36661,.822797,.0556204,0,.383539,.818387,.0519394,0,.400738,.813565,.0485317,0,.41821,.808142,.0453138,0,.435961,.802212,.0423354,0,.453997,.79573,.0395553,0,.472324,.788741,.036988,0,.490951,.781093,.0345688,0,.509887,.773597,.0323297,0,.529144,.765622,.0302719,0,.548735,.757083,.0283477,0,.568674,.747992,.0265562,0,.588979,.738591,.0248844,0,.609671,.728719,.0233342,0,.630773,.719146,.0219081,0,.652314,.709165,.0205711,0,.674328,.69875,.0193248,0,.696854,.687884,.0181582,0,.719942,.676818,.0170746,0,.743651,.666247,.0160718,0,.768057,.655284,.0151262,0,.793253,.64401,.0142561,0,.819363,.633353,.0134327,0,.846547,.622674,.012653,0,.875017,.612265,.0119354,0,.905021,.602455,.0112533,0,.936508,.593147,.0106234,0,.968254,.583592,.0100213,0,1,1,.25717,0,0,1,.25717,0,0,.999992,.257164,0,0,.999958,.257135,0,641715e-9,.999864,.25706,0,.00305314,.999666,.256897,0,.00700975,.999302,.256596,0,.0122194,.998663,.25607,0,.0184622,.995607,.254123,0,.0255773,.993094,.252081,0,.0334439,.9907,.249867,0,.0419696,.98594,.246118,0,.0510823,.981214,.242049,0,.0607242,.974966,.236869,0,.0708486,.967589,.230724,0,.081417,.95915,.223635,0,.0923974,.950257,.21596,0,.103763,.940165,.207296,0,.115491,.929396,.197901,0,.127562,.919288,.188437,0,.13996,.909428,.178762,0,.15267,.900105,.169072,0,.165679,.891418,.159478,0,.178979,.883347,.15002,0,.192558,.875992,.140813,0,.20641,.869466,.13196,0,.220529,.863699,.123501,0,.234907,.858553,.115436,0,.249542,.854379,.107901,0,.264428,.850894,.10088,0,.279564,.847632,.0942296,0,.294947,.844571,.0879861,0,.310575,.84163,.0821534,0,.326448,.838542,.0766409,0,.342566,.835412,.0715322,0,.358929,.831899,.0666883,0,.37554,.828177,.0622175,0,.392399,.82416,.0580452,0,.409511,.820393,.054267,0,.426878,.816068,.0507172,0,.444506,.811201,.0474041,0,.4624,.805785,.0443174,0,.480566,.799878,.0414562,0,.499013,.793469,.0388147,0,.517749,.786473,.0363453,0,.536785,.778874,.0340225,0,.556134,.771277,.0318599,0,.575809,.763426,.0298859,0,.595827,.755044,.0280357,0,.616207,.746161,.0262979,0,.636973,.737124,.0247295,0,.65815,.72761,.0232514,0,.679772,.717822,.0218755,0,.701876,.708279,.0205942,0,.724509,.698333,.0193947,0,.74773,.68802,.0182717,0,.771609,.677321,.0172044,0,.79624,.666504,.0162122,0,.821743,.656184,.0152924,0,.84828,.64556,.0144326,0,.876069,.634636,.0136157,0,.905404,.624124,.0128612,0,.936508,.613914,.0121435,0,.968254,.603589,.0114887,0,1,1,.307946,0,0,.999999,.307945,0,0,.999988,.307934,0,204479e-10,.999944,.307886,0,.00127833,.999824,.307756,0,.00445047,.999565,.30748,0,.00914673,.999085,.306966,0,.0150498,.998103,.306004,0,.0219367,.994249,.303028,0,.0296485,.991807,.300435,0,.038068,.987773,.296554,0,.0471062,.982673,.2916,0,.0566942,.976623,.285641,0,.0667768,.968757,.27815,0,.0773099,.959849,.269529,0,.088257,.950663,.260248,0,.0995879,.940129,.249704,0,.111277,.92895,.238291,0,.123304,.917996,.226501,0,.13565,.907813,.214669,0,.148299,.898305,.202835,0,.161237,.889626,.191158,0,.174455,.88175,.179695,0,.187941,.874715,.168548,0,.201687,.868746,.15792,0,.215687,.863703,.147807,0,.229933,.859315,.138149,0,.24442,.855538,.128993,0,.259145,.852428,.120414,0,.274103,.850168,.112498,0,.289293,.848132,.105054,0,.304711,.846291,.0981087,0,.320357,.844431,.0915942,0,.33623,.842493,.0855056,0,.35233,.840368,.0798204,0,.368658,.83798,.0745097,0,.385214,.83523,.0695424,0,.402002,.832091,.0649092,0,.419023,.828667,.0606291,0,.436282,.824805,.0566523,0,.453782,.820988,.0530229,0,.471529,.816635,.0496364,0,.489528,.811725,.0464658,0,.507788,.806316,.0435082,0,.526317,.800469,.0407873,0,.545124,.794107,.038255,0,.564221,.787218,.0358825,0,.583621,.779872,.0336785,0,.603341,.772097,.0316379,0,.623397,.764484,.0297379,0,.643812,.756428,.0279581,0,.664611,.748022,.0263153,0,.685824,.739268,.0247799,0,.707488,.73024,.0233385,0,.729646,.720893,.0220035,0,.752354,.71119,.0207555,0,.77568,.701791,.0195843,0,.799715,.692184,.0184891,0,.824574,.682258,.0174541,0,.850417,.67206,.0164873,0,.877466,.661717,.0155959,0,.90604,.651462,.0147519,0,.936528,.641467,.0139727,0,.968254,.631229,.0132363,0,1,1,.367573,0,0,.999999,.367571,0,0,.999984,.367553,0,183382e-9,.999925,.367473,0,.00225254,.999759,.367259,0,.00628165,.99941,.366801,0,.0117858,.998739,.365946,0,.0184359,.995529,.363191,0,.0260114,.992875,.360171,0,.0343581,.989135,.355981,0,.0433637,.984166,.350401,0,.0529438,.977871,.343348,0,.0630334,.96951,.334341,0,.0735805,.959964,.323862,0,.0845437,.950162,.312521,0,.095889,.938882,.299577,0,.107588,.926992,.285573,0,.119617,.915589,.271212,0,.131957,.904791,.256611,0,.144591,.895177,.242224,0,.157503,.886403,.227952,0,.170682,.878957,.214192,0,.184117,.872418,.200795,0,.197799,.867029,.188015,0,.21172,.862835,.175975,0,.225873,.859411,.164526,0,.240253,.856655,.153693,0,.254854,.854519,.14352,0,.269673,.852828,.13397,0,.284707,.851412,.124984,0,.299953,.850609,.116748,0,.315408,.849855,.10905,0,.331073,.849017,.101839,0,.346946,.848079,.0951359,0,.363028,.846911,.0888774,0,.379318,.845445,.0830375,0,.395818,.84362,.0775844,0,.41253,.841411,.0725054,0,.429457,.838768,.0677691,0,.446602,.835801,.0634016,0,.463968,.832341,.0593095,0,.481561,.828424,.0555121,0,.499386,.824312,.052024,0,.51745,.819918,.0487865,0,.535761,.815072,.0457801,0,.554328,.809863,.0430184,0,.573162,.804164,.0404245,0,.592275,.798034,.0380146,0,.611681,.791436,.0357436,0,.631398,.784498,.0336475,0,.651445,.777125,.0316666,0,.671845,.769365,.0298122,0,.692628,.761579,.0281001,0,.713827,.753746,.0265049,0,.735484,.745573,.0250067,0,.75765,.737083,.0236026,0,.78039,.728545,.0223302,0,.803789,.719691,.0211243,0,.82796,.710569,.0199983,0,.853056,.701216,.0189569,0,.879298,.692094,.0179702,0,.907014,.682909,.0170418,0,.936691,.673509,.0161732,0,.968254,.663863,.0153406,0,1,1,.437395,0,0,.999998,.437394,0,0,.99998,.437363,0,616704e-9,.999891,.437232,0,.00367925,.999656,.436877,0,.00867446,.999148,.436121,0,.0150679,.997959,.434564,0,.022531,.993464,.430134,0,.0308507,.990606,.426077,0,.0398805,.985027,.419397,0,.0495148,.978491,.41118,0,.0596749,.969643,.40048,0,.0703001,.959189,.38769,0,.0813427,.948223,.373575,0,.0927641,.935955,.357622,0,.104533,.923237,.34043,0,.116624,.911074,.322735,0,.129015,.899724,.30479,0,.141687,.890189,.287392,0,.154626,.881796,.270248,0,.167818,.874781,.253659,0,.181252,.869166,.237786,0,.194918,.864725,.222618,0,.208807,.861565,.208356,0,.222913,.859284,.194867,0,.237229,.857677,.18212,0,.25175,.856714,.17018,0,.266473,.856155,.158969,0,.281392,.8558,.148413,0,.296505,.855672,.138578,0,.311811,.855538,.129345,0,.327306,.855689,.120861,0,.342991,.855767,.112969,0,.358864,.855618,.105593,0,.374925,.85525,.0987451,0,.391176,.854583,.0923727,0,.407616,.853534,.0864143,0,.424249,.852061,.0808338,0,.441076,.850253,.0756771,0,.4581,.848004,.0708612,0,.475324,.845333,.0663784,0,.492754,.842376,.0622631,0,.510394,.838956,.0584112,0,.528251,.835121,.0548328,0,.546331,.830842,.0514838,0,.564644,.826212,.048355,0,.583198,.821522,.0454714,0,.602005,.816551,.0428263,0,.621078,.811211,.0403612,0,.640434,.805479,.038039,0,.660089,.799409,.0358739,0,.680066,.79306,.0338727,0,.70039,.786395,.0319985,0,.721094,.779416,.030241,0,.742215,.77214,.0285951,0,.7638,.764636,.0270747,0,.785912,.756836,.0256354,0,.808628,.749315,.0243027,0,.832055,.741561,.0230497,0,.856338,.733589,.0218801,0,.88169,.725479,.020784,0,.908441,.717255,.0197702,0,.937125,.708829,.0188168,0,.968254,.700191,.0179113,0,1,1,.518937,0,0,.999998,.518933,0,0,.999967,.518883,0,.00147741,.999832,.51866,0,.00573221,.999466,.518057,0,.011826,.998644,.516752,0,.0192116,.994458,.512347,0,.027573,.991223,.507675,0,.0367099,.985515,.500188,0,.046487,.978308,.490408,0,.0568071,.968359,.477357,0,.0675984,.95682,.461752,0,.0788059,.943929,.443796,0,.090386,.930224,.423893,0,.102304,.916514,.402682,0,.114532,.903653,.380914,0,.127047,.892315,.359212,0,.139828,.882942,.338102,0,.152861,.875438,.31773,0,.16613,.869642,.298186,0,.179624,.865304,.279491,0,.193332,.862382,.261804,0,.207247,.860666,.245146,0,.22136,.859788,.229406,0,.235666,.859608,.214605,0,.250158,.859912,.200691,0,.264832,.86053,.187623,0,.279684,.861368,.17539,0,.294711,.862237,.163901,0,.309911,.863127,.153175,0,.32528,.863923,.143147,0,.340819,.864567,.133781,0,.356524,.865013,.125042,0,.372397,.86539,.116952,0,.388438,.865591,.109476,0,.404645,.865517,.102542,0,.421022,.865084,.0960688,0,.437569,.864309,.0900499,0,.454287,.863151,.0844328,0,.471181,.861649,.0792218,0,.488253,.859742,.0743482,0,.505507,.857446,.0697963,0,.522947,.854757,.0655364,0,.54058,.851783,.061608,0,.558412,.848516,.0579701,0,.576449,.844897,.0545742,0,.594701,.840956,.0514167,0,.613178,.836676,.0484598,0,.631892,.832075,.0456934,0,.650856,.827191,.0431178,0,.670088,.822295,.0407718,0,.689606,.817294,.0386032,0,.709434,.812013,.0365675,0,.7296,.806465,.0346547,0,.750138,.800691,.0328717,0,.771093,.794709,.031211,0,.792519,.788493,.0296504,0,.814488,.782049,.0281782,0,.837097,.775403,.0267965,0,.860481,.76857,.0255002,0,.884842,.761536,.0242759,0,.910494,.754303,.0231142,0,.937985,.74692,.0220305,0,.968254,.739745,.0210192,0,1,1,.613914,0,0,.999996,.613907,0,963597e-10,.999942,.613814,0,.00301247,.999704,.613407,0,.00870385,.999046,.612302,0,.0160714,.995516,.608266,0,.0245899,.991726,.602863,0,.0339681,.985157,.593956,0,.0440254,.97642,.581748,0,.0546409,.964404,.565183,0,.0657284,.950601,.545273,0,.0772246,.935158,.522129,0,.0890812,.919364,.496782,0,.10126,.904754,.470571,0,.113731,.89176,.444037,0,.126469,.881492,.418322,0,.139454,.873656,.393522,0,.15267,.868053,.369795,0,.166101,.864336,.347171,0,.179736,.862259,.325737,0,.193565,.861556,.305532,0,.207578,.861776,.286416,0,.221769,.862661,.268355,0,.23613,.864015,.251334,0,.250656,.865711,.235352,0,.265343,.867519,.220302,0,.280187,.869351,.206161,0,.295183,.871144,.192908,0,.31033,.872839,.180505,0,.325624,.874307,.168848,0,.341065,.875667,.158021,0,.35665,.876758,.147877,0,.37238,.87764,.138441,0,.388253,.878237,.129627,0,.404269,.878563,.121415,0,.42043,.878572,.113741,0,.436735,.87842,.106652,0,.453187,.878057,.100097,0,.469786,.877413,.0940128,0,.486536,.87646,.0883462,0,.503439,.875233,.0830924,0,.520498,.8737,.0781975,0,.537717,.871873,.07364,0,.555102,.86978,.0694103,0,.572657,.867405,.0654696,0,.59039,.864751,.0617914,0,.608307,.861818,.0583491,0,.626419,.858645,.0551443,0,.644733,.855307,.0521894,0,.663264,.851736,.0494334,0,.682025,.847927,.0468504,0,.701032,.843888,.0444261,0,.720308,.839629,.0421497,0,.739875,.835158,.0400082,0,.759764,.830509,.0380076,0,.780014,.825714,.0361488,0,.800673,.820729,.0343956,0,.821803,.815751,.0327781,0,.843492,.810752,.031275,0,.86586,.805587,.0298542,0,.889087,.800317,.0285397,0,.913466,.79489,.0272948,0,.93952,.789314,.0261139,0,.96835,.783593,.0249938,0,1,1,.724258,0,0,.999992,.724243,0,726889e-9,.99987,.724044,0,.00569574,.999336,.72317,0,.0131702,.996271,.719432,0,.0220738,.991159,.712576,0,.0319405,.982465,.700927,0,.0425202,.97049,.684297,0,.0536599,.953973,.661244,0,.065258,.935546,.633804,0,.0772427,.916596,.603071,0,.0895616,.899353,.57105,0,.102175,.885216,.539206,0,.11505,.875076,.508714,0,.128164,.868334,.479571,0,.141495,.864414,.451796,0,.155026,.862678,.425328,0,.168745,.862835,.400352,0,.182639,.864067,.376532,0,.196699,.866086,.35391,0,.210915,.868557,.332424,0,.225282,.871271,.312053,0,.239792,.874058,.292764,0,.25444,.8768,.27453,0,.269223,.87939,.257297,0,.284135,.8819,.24114,0,.299174,.884187,.225934,0,.314337,.886262,.211669,0,.329622,.888119,.198311,0,.345026,.889709,.185783,0,.360549,.891054,.174063,0,.376189,.892196,.163143,0,.391946,.893101,.152952,0,.407819,.893803,.143475,0,.423808,.894277,.134647,0,.439914,.894532,.126434,0,.456137,.894576,.1188,0,.472479,.894393,.111694,0,.48894,.893976,.105069,0,.505523,.893346,.0989077,0,.52223,.892502,.0931724,0,.539064,.891441,.0878276,0,.556028,.890276,.082903,0,.573125,.888972,.0783505,0,.590361,.887469,.0741083,0,.607741,.885785,.0701633,0,.62527,.883914,.0664835,0,.642957,.881872,.0630567,0,.660809,.879651,.0598527,0,.678836,.877267,.0568615,0,.69705,.874717,.05406,0,.715465,.872012,.0514378,0,.734098,.869157,.0489805,0,.752968,.866155,.0466727,0,.772101,.863014,.0445056,0,.791529,.859748,.0424733,0,.81129,.856416,.0405957,0,.831438,.852958,.0388273,0,.852044,.849382,.0371619,0,.87321,.845694,.0355959,0,.89509,.841893,.0341155,0,.917932,.837981,.0327141,0,.942204,.833963,.0313856,0,.968981,.829847,.0301275,0,1,1,.85214,0,0,.999969,.852095,0,.00279627,.999483,.851408,0,.0107635,.994545,.84579,0,.0206454,.986188,.835231,0,.0315756,.969847,.814687,0,.0432021,.945951,.783735,0,.0553396,.91917,.746074,0,.0678766,.895488,.706938,0,.0807395,.878232,.669534,0,.0938767,.868252,.635168,0,.10725,.863873,.603069,0,.120832,.863369,.572514,0,.134598,.86545,.543169,0,.148533,.868803,.514578,0,.16262,.872794,.486762,0,.176849,.87702,.459811,0,.19121,.881054,.433654,0,.205694,.884974,.408574,0,.220294,.888587,.384525,0,.235005,.891877,.36156,0,.24982,.894793,.339661,0,.264737,.89743,.318913,0,.279751,.899796,.299302,0,.294859,.901943,.280843,0,.310058,.903858,.263481,0,.325346,.905574,.247197,0,.340721,.907069,.231915,0,.356181,.908379,.217614,0,.371725,.90952,.20425,0,.387353,.910483,.191758,0,.403063,.91128,.180092,0,.418854,.911936,.169222,0,.434727,.912454,.159098,0,.450682,.912835,.149668,0,.466718,.913078,.140884,0,.482837,.913192,.132709,0,.499038,.913175,.125095,0,.515324,.91304,.118012,0,.531695,.912781,.111417,0,.548153,.91241,.105281,0,.5647,.911924,.0995691,0,.581338,.911331,.0942531,0,.59807,.910637,.0893076,0,.6149,.90984,.0846998,0,.63183,.908941,.0804044,0,.648865,.907944,.0763984,0,.666011,.906857,.0726638,0,.683273,.90568,.0691783,0,.700659,.904416,.0659222,0,.718176,.903067,.0628782,0,.735834,.901637,.0600307,0,.753646,.900128,.0573647,0,.771625,.898544,.0548668,0,.78979,.89689,.052527,0,.808162,.895165,.0503306,0,.826771,.893371,.0482668,0,.845654,.891572,.0463605,0,.864863,.889763,.0445998,0,.884472,.887894,.0429451,0,.904592,.885967,.0413884,0,.925407,.883984,.0399225,0,.947271,.881945,.0385405,0,.97105,.879854,.0372362,0,1,.999804,.995833,0,0,.938155,.933611,0,.0158731,.864755,.854311,0,.0317461,.888594,.865264,0,.0476191,.905575,.863922,0,.0634921,.915125,.850558,0,.0793651,.920665,.829254,0,.0952381,.924073,.802578,0,.111111,.926304,.772211,0,.126984,.927829,.739366,0,.142857,.928924,.705033,0,.15873,.92973,.670019,0,.174603,.930339,.634993,0,.190476,.930811,.600485,0,.206349,.931191,.566897,0,.222222,.93149,.534485,0,.238095,.931737,.503429,0,.253968,.931939,.473811,0,.269841,.932108,.445668,0,.285714,.93225,.418993,0,.301587,.932371,.393762,0,.31746,.932474,.369939,0,.333333,.932562,.347479,0,.349206,.932638,.326336,0,.365079,.932703,.306462,0,.380952,.93276,.287805,0,.396825,.932809,.270313,0,.412698,.932851,.253933,0,.428571,.932887,.23861,0,.444444,.932917,.224289,0,.460317,.932943,.210917,0,.47619,.932965,.19844,0,.492063,.932982,.186807,0,.507937,.932995,.175966,0,.52381,.933005,.165869,0,.539683,.933011,.156468,0,.555556,.933013,.147719,0,.571429,.933013,.139579,0,.587302,.93301,.132007,0,.603175,.933004,.124965,0,.619048,.932994,.118416,0,.634921,.932982,.112326,0,.650794,.932968,.106663,0,.666667,.93295,.101397,0,.68254,.932931,.0964993,0,.698413,.932908,.0919438,0,.714286,.932883,.0877057,0,.730159,.932856,.0837623,0,.746032,.932827,.0800921,0,.761905,.932796,.0766754,0,.777778,.932762,.0734936,0,.793651,.932727,.0705296,0,.809524,.932689,.0677676,0,.825397,.93265,.0651929,0,.84127,.932609,.0627917,0,.857143,.932565,.0605515,0,.873016,.932521,.0584606,0,.888889,.932474,.0565082,0,.904762,.932427,.0546841,0,.920635,.932377,.0529793,0,.936508,.932326,.0513851,0,.952381,.932274,.0498936,0,.968254,.93222,.0484975,0,.984127,.932164,.0471899,0,1],Sa=new Float32Array(Aa),Ma=new Float32Array(ba);J.UniformsLib.LTC_FLOAT_1=new J.DataTexture(Sa,64,64,J.RGBAFormat,J.FloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_FLOAT_2=new J.DataTexture(Ma,64,64,J.RGBAFormat,J.FloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_FLOAT_1.needsUpdate=!0,J.UniformsLib.LTC_FLOAT_2.needsUpdate=!0;const Ra=new Uint16Array(Aa.length);Aa.forEach(function(La,Fa){Ra[Fa]=J.DataUtils.toHalfFloat(La)});const Ia=new Uint16Array(ba.length);ba.forEach(function(La,Fa){Ia[Fa]=J.DataUtils.toHalfFloat(La)}),J.UniformsLib.LTC_HALF_1=new J.DataTexture(Ra,64,64,J.RGBAFormat,J.HalfFloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_HALF_2=new J.DataTexture(Ia,64,64,J.RGBAFormat,J.HalfFloatType,J.UVMapping,J.ClampToEdgeWrapping,J.ClampToEdgeWrapping,J.LinearFilter,J.NearestFilter,1),J.UniformsLib.LTC_HALF_1.needsUpdate=!0,J.UniformsLib.LTC_HALF_2.needsUpdate=!0}}ua.RectAreaLightUniformsLib=la}(RectAreaLightUniformsLib)),RectAreaLightUniformsLib}var LightProbeGenerator={},hasRequiredLightProbeGenerator;function requireLightProbeGenerator(){return hasRequiredLightProbeGenerator||(hasRequiredLightProbeGenerator=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la{static fromCubeTexture(Aa){let ba=0;const Sa=new J.Vector3,Ma=new J.Vector3,Ra=new J.Color,Ia=[0,0,0,0,0,0,0,0,0],La=new J.SphericalHarmonics3,Fa=La.coefficients;for(let el=0;el<6;el++){const tl=Aa.image[el],rl=tl.width,il=tl.height,nl=document.createElement("canvas");nl.width=rl,nl.height=il;const sl=nl.getContext("2d");sl.drawImage(tl,0,0,rl,il);const ll=sl.getImageData(0,0,rl,il),dl=ll.data,gl=ll.width,_l=2/gl;for(let vl=0,Tl=dl.length;vl<Tl;vl+=4){Ra.setRGB(dl[vl]/255,dl[vl+1]/255,dl[vl+2]/255),"colorSpace"in Aa?Aa.colorSpace==="srgb"&&Ra.convertSRGBToLinear():Aa.encoding===3001&&Ra.convertSRGBToLinear();const Ll=vl/4,Il=-1+(Ll%gl+.5)*_l,Fl=1-(Math.floor(Ll/gl)+.5)*_l;switch(el){case 0:Sa.set(-1,Fl,-Il);break;case 1:Sa.set(1,Fl,Il);break;case 2:Sa.set(-Il,1,-Fl);break;case 3:Sa.set(-Il,-1,Fl);break;case 4:Sa.set(-Il,Fl,1);break;case 5:Sa.set(Il,Fl,-1);break}const Ol=Sa.lengthSq(),ql=4/(Math.sqrt(Ol)*Ol);ba+=ql,Ma.copy(Sa).normalize(),J.SphericalHarmonics3.getBasisAt(Ma,Ia);for(let rc=0;rc<9;rc++)Fa[rc].x+=Ia[rc]*Ra.r*ql,Fa[rc].y+=Ia[rc]*Ra.g*ql,Fa[rc].z+=Ia[rc]*Ra.b*ql}}const ka=4*Math.PI/ba;for(let el=0;el<9;el++)Fa[el].x*=ka,Fa[el].y*=ka,Fa[el].z*=ka;return new J.LightProbe(La)}static fromCubeRenderTarget(Aa,ba){let Sa=0;const Ma=new J.Vector3,Ra=new J.Vector3,Ia=new J.Color,La=[0,0,0,0,0,0,0,0,0],Fa=new J.SphericalHarmonics3,ka=Fa.coefficients;for(let tl=0;tl<6;tl++){const rl=ba.width,il=new Uint8Array(rl*rl*4);Aa.readRenderTargetPixels(ba,0,0,rl,rl,il,tl);const nl=2/rl;for(let sl=0,ll=il.length;sl<ll;sl+=4){Ia.setRGB(il[sl]/255,il[sl+1]/255,il[sl+2]/255),"colorSpace"in ba.texture?ba.texture.colorSpace==="srgb"&&Ia.convertSRGBToLinear():ba.texture.encoding===3001&&Ia.convertSRGBToLinear();const dl=sl/4,gl=-1+(dl%rl+.5)*nl,_l=1-(Math.floor(dl/rl)+.5)*nl;switch(tl){case 0:Ma.set(1,_l,-gl);break;case 1:Ma.set(-1,_l,gl);break;case 2:Ma.set(gl,1,-_l);break;case 3:Ma.set(gl,-1,_l);break;case 4:Ma.set(gl,_l,1);break;case 5:Ma.set(-gl,_l,-1);break}const vl=Ma.lengthSq(),Tl=4/(Math.sqrt(vl)*vl);Sa+=Tl,Ra.copy(Ma).normalize(),J.SphericalHarmonics3.getBasisAt(Ra,La);for(let Ll=0;Ll<9;Ll++)ka[Ll].x+=La[Ll]*Ia.r*Tl,ka[Ll].y+=La[Ll]*Ia.g*Tl,ka[Ll].z+=La[Ll]*Ia.b*Tl}}const el=4*Math.PI/Sa;for(let tl=0;tl<9;tl++)ka[tl].x*=el,ka[tl].y*=el,ka[tl].z*=el;return new J.LightProbe(Fa)}}ua.LightProbeGenerator=la}(LightProbeGenerator)),LightProbeGenerator}var NURBSSurface={},hasRequiredNURBSSurface;function requireNURBSSurface(){return hasRequiredNURBSSurface||(hasRequiredNURBSSurface=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=requireNURBSUtils();class xa{constructor(ba,Sa,Ma,Ra,Ia){this.degree1=ba,this.degree2=Sa,this.knots1=Ma,this.knots2=Ra,this.controlPoints=[];const La=Ma.length-ba-1,Fa=Ra.length-Sa-1;for(let ka=0;ka<La;++ka){this.controlPoints[ka]=[];for(let el=0;el<Fa;++el){const tl=Ia[ka][el];this.controlPoints[ka][el]=new J.Vector4(tl.x,tl.y,tl.z,tl.w)}}}getPoint(ba,Sa,Ma){const Ra=this.knots1[0]+ba*(this.knots1[this.knots1.length-1]-this.knots1[0]),Ia=this.knots2[0]+Sa*(this.knots2[this.knots2.length-1]-this.knots2[0]);la.calcSurfacePoint(this.degree1,this.degree2,this.knots1,this.knots2,this.controlPoints,Ra,Ia,Ma)}}ua.NURBSSurface=xa}(NURBSSurface)),NURBSSurface}var CurveExtras={},hasRequiredCurveExtras;function requireCurveExtras(){return hasRequiredCurveExtras||(hasRequiredCurveExtras=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree();class la extends J.Curve{getPoint(sl,ll=new J.Vector3){const dl=ll;sl=2*Math.PI*sl;const gl=-.22*Math.cos(sl)-1.28*Math.sin(sl)-.44*Math.cos(3*sl)-.78*Math.sin(3*sl),_l=-.1*Math.cos(2*sl)-.27*Math.sin(2*sl)+.38*Math.cos(4*sl)+.46*Math.sin(4*sl),vl=.7*Math.cos(3*sl)-.4*Math.sin(3*sl);return dl.set(gl,_l,vl).multiplyScalar(20)}}class xa extends J.Curve{constructor(sl=5){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=2*Math.PI;const gl=16*Math.pow(Math.sin(sl),3),_l=13*Math.cos(sl)-5*Math.cos(2*sl)-2*Math.cos(3*sl)-Math.cos(4*sl);return dl.set(gl,_l,0).multiplyScalar(this.scale)}}class Aa extends J.Curve{constructor(sl=70){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl=sl*4*Math.PI;const gl=this.scale/2,_l=gl*(1+Math.cos(sl)),vl=gl*Math.sin(sl),Tl=2*gl*Math.sin(sl/2);return dl.set(_l,vl,Tl)}}class ba extends J.Curve{getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=2*Math.PI;const gl=10,_l=50,vl=_l*Math.sin(sl),Tl=Math.cos(sl)*(gl+_l*Math.cos(sl)),Ll=Math.sin(sl)*(gl+_l*Math.cos(sl));return dl.set(vl,Tl,Ll)}}class Sa extends J.Curve{getPoint(sl,ll=new J.Vector3){const dl=ll,gl=30,_l=150,vl=2*Math.PI*sl*_l/30,Tl=Math.cos(vl)*gl,Ll=Math.sin(vl)*gl,Il=_l*sl;return dl.set(Tl,Ll,Il)}}class Ma extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=Math.PI*2;const gl=(2+Math.cos(3*sl))*Math.cos(2*sl),_l=(2+Math.cos(3*sl))*Math.sin(2*sl),vl=Math.sin(3*sl);return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}class Ra extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=3,_l=4;sl*=Math.PI*2;const vl=(2+Math.cos(_l*sl))*Math.cos(gl*sl),Tl=(2+Math.cos(_l*sl))*Math.sin(gl*sl),Ll=Math.sin(_l*sl);return dl.set(vl,Tl,Ll).multiplyScalar(this.scale)}}class Ia extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=2,_l=5;sl*=Math.PI*2;const vl=(2+Math.cos(_l*sl))*Math.cos(gl*sl),Tl=(2+Math.cos(_l*sl))*Math.sin(gl*sl),Ll=Math.sin(_l*sl);return dl.set(vl,Tl,Ll).multiplyScalar(this.scale)}}class La extends J.Curve{constructor(sl=10){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl=sl*4-2;const gl=Math.pow(sl,3)-3*sl,_l=Math.pow(sl,4)-4*sl*sl,vl=1/5*Math.pow(sl,5)-2*sl;return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}function Fa(nl,sl,ll){const dl=sl-nl;return ll*dl+nl}class ka extends J.Curve{constructor(sl=1){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl=Fa(-4,4,sl);const gl=2/5*sl*(sl*sl-7)*(sl*sl-10),_l=Math.pow(sl,4)-13*sl*sl,vl=1/10*sl*(sl*sl-4)*(sl*sl-9)*(sl*sl-12);return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}class el extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll;sl*=Math.PI*2;const gl=Math.cos(2*sl)*(1+.6*(Math.cos(5*sl)+.75*Math.cos(10*sl))),_l=Math.sin(2*sl)*(1+.6*(Math.cos(5*sl)+.75*Math.cos(10*sl))),vl=.35*Math.sin(5*sl);return dl.set(gl,_l,vl).multiplyScalar(this.scale)}}class tl extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=sl*Math.PI*2,_l=Math.cos(2*gl)*(1+.45*Math.cos(3*gl)+.4*Math.cos(9*gl)),vl=Math.sin(2*gl)*(1+.45*Math.cos(3*gl)+.4*Math.cos(9*gl)),Tl=.2*Math.sin(9*gl);return dl.set(_l,vl,Tl).multiplyScalar(this.scale)}}class rl extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=sl*Math.PI*2,_l=Math.cos(3*gl)*(1+.3*Math.cos(5*gl)+.5*Math.cos(10*gl)),vl=Math.sin(3*gl)*(1+.3*Math.cos(5*gl)+.5*Math.cos(10*gl)),Tl=.2*Math.sin(20*gl);return dl.set(_l,vl,Tl).multiplyScalar(this.scale)}}class il extends J.Curve{constructor(sl=40){super(),this.scale=sl}getPoint(sl,ll=new J.Vector3){const dl=ll,gl=sl*Math.PI*2,_l=Math.cos(4*gl)*(1+.5*(Math.cos(5*gl)+.4*Math.cos(20*gl))),vl=Math.sin(4*gl)*(1+.5*(Math.cos(5*gl)+.4*Math.cos(20*gl))),Tl=.35*Math.sin(15*gl);return dl.set(_l,vl,Tl).multiplyScalar(this.scale)}}ua.CinquefoilKnot=Ia,ua.DecoratedTorusKnot4a=el,ua.DecoratedTorusKnot4b=tl,ua.DecoratedTorusKnot5a=rl,ua.DecoratedTorusKnot5c=il,ua.FigureEightPolynomialKnot=ka,ua.GrannyKnot=la,ua.HeartCurve=xa,ua.HelixCurve=Sa,ua.KnotCurve=ba,ua.TorusKnot=Ra,ua.TrefoilKnot=Ma,ua.TrefoilPolynomialKnot=La,ua.VivianiCurve=Aa}(CurveExtras)),CurveExtras}var Geometry={},hasRequiredGeometry;function requireGeometry(){return hasRequiredGeometry||(hasRequiredGeometry=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireThree(),la=new J.Matrix4,xa=new J.Object3D,Aa=new J.Vector3;class ba extends J.EventDispatcher{static createBufferGeometryFromObject(Ia){let La=new J.BufferGeometry;const Fa=Ia.geometry;if(Ia.isPoints||Ia.isLine){const ka=new J.Float32BufferAttribute(Fa.vertices.length*3,3),el=new J.Float32BufferAttribute(Fa.colors.length*3,3);if(La.setAttribute("position",ka.copyVector3sArray(Fa.vertices)),La.setAttribute("color",el.copyColorsArray(Fa.colors)),Fa.lineDistances&&Fa.lineDistances.length===Fa.vertices.length){const tl=new J.Float32BufferAttribute(Fa.lineDistances.length,1);La.setAttribute("lineDistance",tl.copyArray(Fa.lineDistances))}Fa.boundingSphere!==null&&(La.boundingSphere=Fa.boundingSphere.clone()),Fa.boundingBox!==null&&(La.boundingBox=Fa.boundingBox.clone())}else Ia.isMesh&&(La=Fa.toBufferGeometry());return La}constructor(){super(),this.isGeometry=!0,this.uuid=J.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(Ia){const La=new J.Matrix3().getNormalMatrix(Ia);for(let Fa=0,ka=this.vertices.length;Fa<ka;Fa++)this.vertices[Fa].applyMatrix4(Ia);for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa];el.normal.applyMatrix3(La).normalize();for(let tl=0,rl=el.vertexNormals.length;tl<rl;tl++)el.vertexNormals[tl].applyMatrix3(La).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(Ia){return la.makeRotationX(Ia),this.applyMatrix4(la),this}rotateY(Ia){return la.makeRotationY(Ia),this.applyMatrix4(la),this}rotateZ(Ia){return la.makeRotationZ(Ia),this.applyMatrix4(la),this}translate(Ia,La,Fa){return la.makeTranslation(Ia,La,Fa),this.applyMatrix4(la),this}scale(Ia,La,Fa){return la.makeScale(Ia,La,Fa),this.applyMatrix4(la),this}lookAt(Ia){return xa.lookAt(Ia),xa.updateMatrix(),this.applyMatrix4(xa.matrix),this}fromBufferGeometry(Ia){const La=this,Fa=Ia.index!==null?Ia.index:void 0,ka=Ia.attributes;if(ka.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;const el=ka.position,tl=ka.normal,rl=ka.color,il=ka.uv,nl=ka.uv2;nl!==void 0&&(this.faceVertexUvs[1]=[]);for(let dl=0;dl<el.count;dl++)La.vertices.push(new J.Vector3().fromBufferAttribute(el,dl)),rl!==void 0&&La.colors.push(new J.Color().fromBufferAttribute(rl,dl));function sl(dl,gl,_l,vl){const Tl=rl===void 0?[]:[La.colors[dl].clone(),La.colors[gl].clone(),La.colors[_l].clone()],Ll=tl===void 0?[]:[new J.Vector3().fromBufferAttribute(tl,dl),new J.Vector3().fromBufferAttribute(tl,gl),new J.Vector3().fromBufferAttribute(tl,_l)],Il=new Ma(dl,gl,_l,Ll,Tl,vl);La.faces.push(Il),il!==void 0&&La.faceVertexUvs[0].push([new J.Vector2().fromBufferAttribute(il,dl),new J.Vector2().fromBufferAttribute(il,gl),new J.Vector2().fromBufferAttribute(il,_l)]),nl!==void 0&&La.faceVertexUvs[1].push([new J.Vector2().fromBufferAttribute(nl,dl),new J.Vector2().fromBufferAttribute(nl,gl),new J.Vector2().fromBufferAttribute(nl,_l)])}const ll=Ia.groups;if(ll.length>0)for(let dl=0;dl<ll.length;dl++){const gl=ll[dl],_l=gl.start,vl=gl.count;for(let Tl=_l,Ll=_l+vl;Tl<Ll;Tl+=3)Fa!==void 0?sl(Fa.getX(Tl),Fa.getX(Tl+1),Fa.getX(Tl+2),gl.materialIndex):sl(Tl,Tl+1,Tl+2,gl.materialIndex)}else if(Fa!==void 0)for(let dl=0;dl<Fa.count;dl+=3)sl(Fa.getX(dl),Fa.getX(dl+1),Fa.getX(dl+2));else for(let dl=0;dl<el.count;dl+=3)sl(dl,dl+1,dl+2);return this.computeFaceNormals(),Ia.boundingBox!==null&&(this.boundingBox=Ia.boundingBox.clone()),Ia.boundingSphere!==null&&(this.boundingSphere=Ia.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Aa).negate(),this.translate(Aa.x,Aa.y,Aa.z),this}normalize(){this.computeBoundingSphere();const Ia=this.boundingSphere.center,La=this.boundingSphere.radius,Fa=La===0?1:1/La,ka=new J.Matrix4;return ka.set(Fa,0,0,-Fa*Ia.x,0,Fa,0,-Fa*Ia.y,0,0,Fa,-Fa*Ia.z,0,0,0,1),this.applyMatrix4(ka),this}computeFaceNormals(){const Ia=new J.Vector3,La=new J.Vector3;for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa],tl=this.vertices[el.a],rl=this.vertices[el.b],il=this.vertices[el.c];Ia.subVectors(il,rl),La.subVectors(tl,rl),Ia.cross(La),Ia.normalize(),el.normal.copy(Ia)}}computeVertexNormals(Ia=!0){const La=new Array(this.vertices.length);for(let Fa=0,ka=this.vertices.length;Fa<ka;Fa++)La[Fa]=new J.Vector3;if(Ia){const Fa=new J.Vector3,ka=new J.Vector3;for(let el=0,tl=this.faces.length;el<tl;el++){const rl=this.faces[el],il=this.vertices[rl.a],nl=this.vertices[rl.b],sl=this.vertices[rl.c];Fa.subVectors(sl,nl),ka.subVectors(il,nl),Fa.cross(ka),La[rl.a].add(Fa),La[rl.b].add(Fa),La[rl.c].add(Fa)}}else{this.computeFaceNormals();for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa];La[el.a].add(el.normal),La[el.b].add(el.normal),La[el.c].add(el.normal)}}for(let Fa=0,ka=this.vertices.length;Fa<ka;Fa++)La[Fa].normalize();for(let Fa=0,ka=this.faces.length;Fa<ka;Fa++){const el=this.faces[Fa],tl=el.vertexNormals;tl.length===3?(tl[0].copy(La[el.a]),tl[1].copy(La[el.b]),tl[2].copy(La[el.c])):(tl[0]=La[el.a].clone(),tl[1]=La[el.b].clone(),tl[2]=La[el.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let Ia=0,La=this.faces.length;Ia<La;Ia++){const Fa=this.faces[Ia],ka=Fa.vertexNormals;ka.length===3?(ka[0].copy(Fa.normal),ka[1].copy(Fa.normal),ka[2].copy(Fa.normal)):(ka[0]=Fa.normal.clone(),ka[1]=Fa.normal.clone(),ka[2]=Fa.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let La=0,Fa=this.faces.length;La<Fa;La++){const ka=this.faces[La];ka.__originalFaceNormal?ka.__originalFaceNormal.copy(ka.normal):ka.__originalFaceNormal=ka.normal.clone(),ka.__originalVertexNormals||(ka.__originalVertexNormals=[]);for(let el=0,tl=ka.vertexNormals.length;el<tl;el++)ka.__originalVertexNormals[el]?ka.__originalVertexNormals[el].copy(ka.vertexNormals[el]):ka.__originalVertexNormals[el]=ka.vertexNormals[el].clone()}const Ia=new ba;Ia.faces=this.faces;for(let La=0,Fa=this.morphTargets.length;La<Fa;La++){if(!this.morphNormals[La]){this.morphNormals[La]={},this.morphNormals[La].faceNormals=[],this.morphNormals[La].vertexNormals=[];const el=this.morphNormals[La].faceNormals,tl=this.morphNormals[La].vertexNormals;for(let rl=0,il=this.faces.length;rl<il;rl++){const nl=new J.Vector3,sl={a:new J.Vector3,b:new J.Vector3,c:new J.Vector3};el.push(nl),tl.push(sl)}}const ka=this.morphNormals[La];Ia.vertices=this.morphTargets[La].vertices,Ia.computeFaceNormals(),Ia.computeVertexNormals();for(let el=0,tl=this.faces.length;el<tl;el++){const rl=this.faces[el],il=ka.faceNormals[el],nl=ka.vertexNormals[el];il.copy(rl.normal),nl.a.copy(rl.vertexNormals[0]),nl.b.copy(rl.vertexNormals[1]),nl.c.copy(rl.vertexNormals[2])}}for(let La=0,Fa=this.faces.length;La<Fa;La++){const ka=this.faces[La];ka.normal=ka.__originalFaceNormal,ka.vertexNormals=ka.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new J.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new J.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(Ia,La,Fa=0){if(!(Ia&&Ia.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",Ia);return}let ka;const el=this.vertices.length,tl=this.vertices,rl=Ia.vertices,il=this.faces,nl=Ia.faces,sl=this.colors,ll=Ia.colors;La!==void 0&&(ka=new J.Matrix3().getNormalMatrix(La));for(let dl=0,gl=rl.length;dl<gl;dl++){const vl=rl[dl].clone();La!==void 0&&vl.applyMatrix4(La),tl.push(vl)}for(let dl=0,gl=ll.length;dl<gl;dl++)sl.push(ll[dl].clone());for(let dl=0,gl=nl.length;dl<gl;dl++){const _l=nl[dl];let vl,Tl;const Ll=_l.vertexNormals,Il=_l.vertexColors,Fl=new Ma(_l.a+el,_l.b+el,_l.c+el);Fl.normal.copy(_l.normal),ka!==void 0&&Fl.normal.applyMatrix3(ka).normalize();for(let Ol=0,ql=Ll.length;Ol<ql;Ol++)vl=Ll[Ol].clone(),ka!==void 0&&vl.applyMatrix3(ka).normalize(),Fl.vertexNormals.push(vl);Fl.color.copy(_l.color);for(let Ol=0,ql=Il.length;Ol<ql;Ol++)Tl=Il[Ol],Fl.vertexColors.push(Tl.clone());Fl.materialIndex=_l.materialIndex+Fa,il.push(Fl)}for(let dl=0,gl=Ia.faceVertexUvs.length;dl<gl;dl++){const _l=Ia.faceVertexUvs[dl];this.faceVertexUvs[dl]===void 0&&(this.faceVertexUvs[dl]=[]);for(let vl=0,Tl=_l.length;vl<Tl;vl++){const Ll=_l[vl],Il=[];for(let Fl=0,Ol=Ll.length;Fl<Ol;Fl++)Il.push(Ll[Fl].clone());this.faceVertexUvs[dl].push(Il)}}}mergeMesh(Ia){if(!(Ia&&Ia.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",Ia);return}Ia.matrixAutoUpdate&&Ia.updateMatrix(),this.merge(Ia.geometry,Ia.matrix)}mergeVertices(Ia=4){const La={},Fa=[],ka=[],el=Math.pow(10,Ia);for(let il=0,nl=this.vertices.length;il<nl;il++){const sl=this.vertices[il],ll=`${Math.round(sl.x*el)}_${Math.round(sl.y*el)}_${Math.round(sl.z*el)}`;La[ll]===void 0?(La[ll]=il,Fa.push(this.vertices[il]),ka[il]=Fa.length-1):ka[il]=ka[La[ll]]}const tl=[];for(let il=0,nl=this.faces.length;il<nl;il++){const sl=this.faces[il];sl.a=ka[sl.a],sl.b=ka[sl.b],sl.c=ka[sl.c];const ll=[sl.a,sl.b,sl.c];for(let dl=0;dl<3;dl++)if(ll[dl]===ll[(dl+1)%3]){tl.push(il);break}}for(let il=tl.length-1;il>=0;il--){const nl=tl[il];this.faces.splice(nl,1);for(let sl=0,ll=this.faceVertexUvs.length;sl<ll;sl++)this.faceVertexUvs[sl].splice(nl,1)}const rl=this.vertices.length-Fa.length;return this.vertices=Fa,rl}setFromPoints(Ia){this.vertices=[];for(let La=0,Fa=Ia.length;La<Fa;La++){const ka=Ia[La];this.vertices.push(new J.Vector3(ka.x,ka.y,ka.z||0))}return this}sortFacesByMaterialIndex(){const Ia=this.faces,La=Ia.length;for(let il=0;il<La;il++)Ia[il]._id=il;function Fa(il,nl){return il.materialIndex-nl.materialIndex}Ia.sort(Fa);const ka=this.faceVertexUvs[0],el=this.faceVertexUvs[1];let tl,rl;ka&&ka.length===La&&(tl=[]),el&&el.length===La&&(rl=[]);for(let il=0;il<La;il++){const nl=Ia[il]._id;tl&&tl.push(ka[nl]),rl&&rl.push(el[nl])}tl&&(this.faceVertexUvs[0]=tl),rl&&(this.faceVertexUvs[1]=rl)}toJSON(){const Ia={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(Ia.uuid=this.uuid,Ia.type=this.type,this.name!==""&&(Ia.name=this.name),this.parameters!==void 0){const _l=this.parameters;for(let vl in _l)_l[vl]!==void 0&&(Ia[vl]=_l[vl]);return Ia}const La=[];for(let _l=0;_l<this.vertices.length;_l++){const vl=this.vertices[_l];La.push(vl.x,vl.y,vl.z)}const Fa=[],ka=[],el={},tl=[],rl={},il=[],nl={};for(let _l=0;_l<this.faces.length;_l++){const vl=this.faces[_l],Tl=!0,Ll=!1,Il=this.faceVertexUvs[0][_l]!==void 0,Fl=vl.normal.length()>0,Ol=vl.vertexNormals.length>0,ql=vl.color.r!==1||vl.color.g!==1||vl.color.b!==1,rc=vl.vertexColors.length>0;let sc=0;if(sc=sl(sc,0,0),sc=sl(sc,1,Tl),sc=sl(sc,2,Ll),sc=sl(sc,3,Il),sc=sl(sc,4,Fl),sc=sl(sc,5,Ol),sc=sl(sc,6,ql),sc=sl(sc,7,rc),Fa.push(sc),Fa.push(vl.a,vl.b,vl.c),Fa.push(vl.materialIndex),Il){const Kl=this.faceVertexUvs[0][_l];Fa.push(gl(Kl[0]),gl(Kl[1]),gl(Kl[2]))}if(Fl&&Fa.push(ll(vl.normal)),Ol){const Kl=vl.vertexNormals;Fa.push(ll(Kl[0]),ll(Kl[1]),ll(Kl[2]))}if(ql&&Fa.push(dl(vl.color)),rc){const Kl=vl.vertexColors;Fa.push(dl(Kl[0]),dl(Kl[1]),dl(Kl[2]))}}function sl(_l,vl,Tl){return Tl?_l|1<<vl:_l&~(1<<vl)}function ll(_l){const vl=_l.x.toString()+_l.y.toString()+_l.z.toString();return el[vl]!==void 0||(el[vl]=ka.length/3,ka.push(_l.x,_l.y,_l.z)),el[vl]}function dl(_l){const vl=_l.r.toString()+_l.g.toString()+_l.b.toString();return rl[vl]!==void 0||(rl[vl]=tl.length,tl.push(_l.getHex())),rl[vl]}function gl(_l){const vl=_l.x.toString()+_l.y.toString();return nl[vl]!==void 0||(nl[vl]=il.length/2,il.push(_l.x,_l.y)),nl[vl]}return Ia.data={},Ia.data.vertices=La,Ia.data.normals=ka,tl.length>0&&(Ia.data.colors=tl),il.length>0&&(Ia.data.uvs=[il]),Ia.data.faces=Fa,Ia}clone(){return new ba().copy(this)}copy(Ia){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=Ia.name;const La=Ia.vertices;for(let dl=0,gl=La.length;dl<gl;dl++)this.vertices.push(La[dl].clone());const Fa=Ia.colors;for(let dl=0,gl=Fa.length;dl<gl;dl++)this.colors.push(Fa[dl].clone());const ka=Ia.faces;for(let dl=0,gl=ka.length;dl<gl;dl++)this.faces.push(ka[dl].clone());for(let dl=0,gl=Ia.faceVertexUvs.length;dl<gl;dl++){const _l=Ia.faceVertexUvs[dl];this.faceVertexUvs[dl]===void 0&&(this.faceVertexUvs[dl]=[]);for(let vl=0,Tl=_l.length;vl<Tl;vl++){const Ll=_l[vl],Il=[];for(let Fl=0,Ol=Ll.length;Fl<Ol;Fl++){const ql=Ll[Fl];Il.push(ql.clone())}this.faceVertexUvs[dl].push(Il)}}const el=Ia.morphTargets;for(let dl=0,gl=el.length;dl<gl;dl++){const _l={};if(_l.name=el[dl].name,el[dl].vertices!==void 0){_l.vertices=[];for(let vl=0,Tl=el[dl].vertices.length;vl<Tl;vl++)_l.vertices.push(el[dl].vertices[vl].clone())}if(el[dl].normals!==void 0){_l.normals=[];for(let vl=0,Tl=el[dl].normals.length;vl<Tl;vl++)_l.normals.push(el[dl].normals[vl].clone())}this.morphTargets.push(_l)}const tl=Ia.morphNormals;for(let dl=0,gl=tl.length;dl<gl;dl++){const _l={};if(tl[dl].vertexNormals!==void 0){_l.vertexNormals=[];for(let vl=0,Tl=tl[dl].vertexNormals.length;vl<Tl;vl++){const Ll=tl[dl].vertexNormals[vl],Il={};Il.a=Ll.a.clone(),Il.b=Ll.b.clone(),Il.c=Ll.c.clone(),_l.vertexNormals.push(Il)}}if(tl[dl].faceNormals!==void 0){_l.faceNormals=[];for(let vl=0,Tl=tl[dl].faceNormals.length;vl<Tl;vl++)_l.faceNormals.push(tl[dl].faceNormals[vl].clone())}this.morphNormals.push(_l)}const rl=Ia.skinWeights;for(let dl=0,gl=rl.length;dl<gl;dl++)this.skinWeights.push(rl[dl].clone());const il=Ia.skinIndices;for(let dl=0,gl=il.length;dl<gl;dl++)this.skinIndices.push(il[dl].clone());const nl=Ia.lineDistances;for(let dl=0,gl=nl.length;dl<gl;dl++)this.lineDistances.push(nl[dl]);const sl=Ia.boundingBox;sl!==null&&(this.boundingBox=sl.clone());const ll=Ia.boundingSphere;return ll!==null&&(this.boundingSphere=ll.clone()),this.elementsNeedUpdate=Ia.elementsNeedUpdate,this.verticesNeedUpdate=Ia.verticesNeedUpdate,this.uvsNeedUpdate=Ia.uvsNeedUpdate,this.normalsNeedUpdate=Ia.normalsNeedUpdate,this.colorsNeedUpdate=Ia.colorsNeedUpdate,this.lineDistancesNeedUpdate=Ia.lineDistancesNeedUpdate,this.groupsNeedUpdate=Ia.groupsNeedUpdate,this}toBufferGeometry(){const Ia=new Sa().fromGeometry(this),La=new J.BufferGeometry,Fa=new Float32Array(Ia.vertices.length*3);if(La.setAttribute("position",new J.BufferAttribute(Fa,3).copyVector3sArray(Ia.vertices)),Ia.normals.length>0){const ka=new Float32Array(Ia.normals.length*3);La.setAttribute("normal",new J.BufferAttribute(ka,3).copyVector3sArray(Ia.normals))}if(Ia.colors.length>0){const ka=new Float32Array(Ia.colors.length*3);La.setAttribute("color",new J.BufferAttribute(ka,3).copyColorsArray(Ia.colors))}if(Ia.uvs.length>0){const ka=new Float32Array(Ia.uvs.length*2);La.setAttribute("uv",new J.BufferAttribute(ka,2).copyVector2sArray(Ia.uvs))}if(Ia.uvs2.length>0){const ka=new Float32Array(Ia.uvs2.length*2);La.setAttribute("uv2",new J.BufferAttribute(ka,2).copyVector2sArray(Ia.uvs2))}La.groups=Ia.groups;for(let ka in Ia.morphTargets){const el=[],tl=Ia.morphTargets[ka];for(let rl=0,il=tl.length;rl<il;rl++){const nl=tl[rl],sl=new J.Float32BufferAttribute(nl.data.length*3,3);sl.name=nl.name,el.push(sl.copyVector3sArray(nl.data))}La.morphAttributes[ka]=el}if(Ia.skinIndices.length>0){const ka=new J.Float32BufferAttribute(Ia.skinIndices.length*4,4);La.setAttribute("skinIndex",ka.copyVector4sArray(Ia.skinIndices))}if(Ia.skinWeights.length>0){const ka=new J.Float32BufferAttribute(Ia.skinWeights.length*4,4);La.setAttribute("skinWeight",ka.copyVector4sArray(Ia.skinWeights))}return Ia.boundingSphere!==null&&(La.boundingSphere=Ia.boundingSphere.clone()),Ia.boundingBox!==null&&(La.boundingBox=Ia.boundingBox.clone()),La}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(Ia){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(Ia)}dispose(){this.dispatchEvent({type:"dispose"})}}class Sa{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(Ia){const La=[];let Fa,ka,el;const tl=Ia.faces;for(ka=0;ka<tl.length;ka++){const rl=tl[ka];rl.materialIndex!==el&&(el=rl.materialIndex,Fa!==void 0&&(Fa.count=ka*3-Fa.start,La.push(Fa)),Fa={start:ka*3,materialIndex:el})}Fa!==void 0&&(Fa.count=ka*3-Fa.start,La.push(Fa)),this.groups=La}fromGeometry(Ia){const La=Ia.faces,Fa=Ia.vertices,ka=Ia.faceVertexUvs,el=ka[0]&&ka[0].length>0,tl=ka[1]&&ka[1].length>0,rl=Ia.morphTargets,il=rl.length;let nl;if(il>0){nl=[];for(let Ll=0;Ll<il;Ll++)nl[Ll]={name:rl[Ll].name,data:[]};this.morphTargets.position=nl}const sl=Ia.morphNormals,ll=sl.length;let dl;if(ll>0){dl=[];for(let Ll=0;Ll<ll;Ll++)dl[Ll]={name:sl[Ll].name,data:[]};this.morphTargets.normal=dl}const gl=Ia.skinIndices,_l=Ia.skinWeights,vl=gl.length===Fa.length,Tl=_l.length===Fa.length;Fa.length>0&&La.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let Ll=0;Ll<La.length;Ll++){const Il=La[Ll];this.vertices.push(Fa[Il.a],Fa[Il.b],Fa[Il.c]);const Fl=Il.vertexNormals;if(Fl.length===3)this.normals.push(Fl[0],Fl[1],Fl[2]);else{const ql=Il.normal;this.normals.push(ql,ql,ql)}const Ol=Il.vertexColors;if(Ol.length===3)this.colors.push(Ol[0],Ol[1],Ol[2]);else{const ql=Il.color;this.colors.push(ql,ql,ql)}if(el===!0){const ql=ka[0][Ll];ql!==void 0?this.uvs.push(ql[0],ql[1],ql[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",Ll),this.uvs.push(new J.Vector2,new J.Vector2,new J.Vector2))}if(tl===!0){const ql=ka[1][Ll];ql!==void 0?this.uvs2.push(ql[0],ql[1],ql[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",Ll),this.uvs2.push(new J.Vector2,new J.Vector2,new J.Vector2))}for(let ql=0;ql<il;ql++){const rc=rl[ql].vertices;nl[ql].data.push(rc[Il.a],rc[Il.b],rc[Il.c])}for(let ql=0;ql<ll;ql++){const rc=sl[ql].vertexNormals[Ll];dl[ql].data.push(rc.a,rc.b,rc.c)}vl&&this.skinIndices.push(gl[Il.a],gl[Il.b],gl[Il.c]),Tl&&this.skinWeights.push(_l[Il.a],_l[Il.b],_l[Il.c])}return this.computeGroups(Ia),this.verticesNeedUpdate=Ia.verticesNeedUpdate,this.normalsNeedUpdate=Ia.normalsNeedUpdate,this.colorsNeedUpdate=Ia.colorsNeedUpdate,this.uvsNeedUpdate=Ia.uvsNeedUpdate,this.groupsNeedUpdate=Ia.groupsNeedUpdate,Ia.boundingSphere!==null&&(this.boundingSphere=Ia.boundingSphere.clone()),Ia.boundingBox!==null&&(this.boundingBox=Ia.boundingBox.clone()),this}}class Ma{constructor(Ia,La,Fa,ka,el,tl=0){this.a=Ia,this.b=La,this.c=Fa,this.normal=ka&&ka.isVector3?ka:new J.Vector3,this.vertexNormals=Array.isArray(ka)?ka:[],this.color=el&&el.isColor?el:new J.Color,this.vertexColors=Array.isArray(el)?el:[],this.materialIndex=tl}clone(){return new this.constructor().copy(this)}copy(Ia){this.a=Ia.a,this.b=Ia.b,this.c=Ia.c,this.normal.copy(Ia.normal),this.color.copy(Ia.color),this.materialIndex=Ia.materialIndex;for(let La=0,Fa=Ia.vertexNormals.length;La<Fa;La++)this.vertexNormals[La]=Ia.vertexNormals[La].clone();for(let La=0,Fa=Ia.vertexColors.length;La<Fa;La++)this.vertexColors[La]=Ia.vertexColors[La].clone();return this}}ua.Face3=Ma,ua.Geometry=ba}(Geometry)),Geometry}var MeshoptDecoder$1={},hasRequiredMeshoptDecoder;function requireMeshoptDecoder(){return hasRequiredMeshoptDecoder||(hasRequiredMeshoptDecoder=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});let J;const la=()=>{if(J)return J;const xa="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",Aa="B9h9z9tFBBBFiI9gBB9gLaaaaaFa9gEaaaB9gFaFaEMcBBFBFFGGGEILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBOn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBNI9z9iqlBVc+N9IcIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMk8lLbaE97F9+FaL978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAeDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAeDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBReCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBH8ZCFD9tA8ZAPD9OD9hD9RH8ZDQBTFtGmEYIPLdKeOnHpAIAQJDBIBHyCFD9tAyAPD9OD9hD9RHyAIASJDBIBH8cCFD9tA8cAPD9OD9hD9RH8cDQBTFtGmEYIPLdKeOnH8dDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAeD9uHeDyBjGBAEAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeApA8dDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNiV8ZcpMyS8cQ8df8eb8fHdAyA8cDQNiV8ZcpMyS8cQ8df8eb8fH8ZDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/dLEK97FaF97GXGXAGCI9HQBAF9FQFCBRGEXABABDBBBHECiD+rFCiD+sFD/6FHIAECND+rFCiD+sFD/6FAID/gFAECTD+rFCiD+sFD/6FHLD/gFD/kFD/lFHKCBDtD+2FHOAICUUUU94DtHND9OD9RD/kFHI9DBB/+hDYAIAID/mFAKAKD/mFALAOALAND9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHLD/mF9DBBX9LDYHOD/kFCgFDtD9OAECUUU94DtD9OD9QAIALD/mFAOD/kFCND+rFCU/+EDtD9OD9QAKALD/mFAOD/kFCTD+rFCUU/8ODtD9OD9QDMBBABCTJRBAGCIJHGAF9JQBSGMMAF9FQBCBRGEXABCTJHVAVDBBBHECBDtHOCUU98D8cFCUU98D8cEHND9OABDBBBHKAEDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAKAEDQBFGENVcMTtmYi8ZpyHECTD+sFD/6FHID/gFAECTD+rFCTD+sFD/6FHLD/gFD/kFD/lFHE9DB/+g6DYALAEAOD+2FHOALCUUUU94DtHcD9OD9RD/kFHLALD/mFAEAED/mFAIAOAIAcD9OD9RD/kFHEAED/mFD/kFD/kFD/jFD/nFHID/mF9DBBX9LDYHOD/kFCTD+rFALAID/mFAOD/kFCggEDtD9OD9QHLAEAID/mFAOD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHEDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAKAND9OALAEDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM/hEIGaF97FaL978jUUUUBCTlREGXAF9FQBCBRIEXAEABDBBBHLABCTJHKDBBBHODQILKOSQfbPden8c8d8e8fHNCTD+sFHVCID+rFDMIBAB9DBBU8/DY9D/zI818/DYAVCEDtD9QD/6FD/nFHVALAODQBFGENVcMTtmYi8ZpyHLCTD+rFCTD+sFD/6FD/mFHOAOD/mFAVALCTD+sFD/6FD/mFHcAcD/mFAVANCTD+rFCTD+sFD/6FD/mFHNAND/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHVD/mF9DBBX9LDYHLD/kFCggEDtHMD9OAcAVD/mFALD/kFCTD+rFD9QHcANAVD/mFALD/kFCTD+rFAOAVD/mFALD/kFAMD9OD9QHVDQBFTtGEmYILPdKOenHLD8dBAEDBIBDyB+t+J83EBABCNJALD8dFAEDBIBDyF+t+J83EBAKAcAVDQNVi8ZcMpySQ8c8dfb8e8fHVD8dBAEDBIBDyG+t+J83EBABCiJAVD8dFAEDBIBDyE+t+J83EBABCAJRBAICIJHIAF9JQBMMM9jFF97GXAGCGrAF9sHG9FQBCBRFEXABABDBBBHECND+rFCND+sFD/6FAECiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBABCTJRBAFCIJHFAG9JQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",ba=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),Sa=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if(typeof WebAssembly!="object")return{supported:!1};let Ma=xa;WebAssembly.validate(ba)&&(Ma=Aa);let Ra;const Ia=WebAssembly.instantiate(La(Ma),{}).then(tl=>{Ra=tl.instance,Ra.exports.__wasm_call_ctors()});function La(tl){const rl=new Uint8Array(tl.length);for(let nl=0;nl<tl.length;++nl){const sl=tl.charCodeAt(nl);rl[nl]=sl>96?sl-71:sl>64?sl-65:sl>47?sl+4:sl>46?63:62}let il=0;for(let nl=0;nl<tl.length;++nl)rl[il++]=rl[nl]<60?Sa[rl[nl]]:(rl[nl]-60)*64+rl[++nl];return rl.buffer.slice(0,il)}function Fa(tl,rl,il,nl,sl,ll){const dl=Ra.exports.sbrk,gl=il+3&-4,_l=dl(gl*nl),vl=dl(sl.length),Tl=new Uint8Array(Ra.exports.memory.buffer);Tl.set(sl,vl);const Ll=tl(_l,il,nl,vl,sl.length);if(Ll===0&&ll&&ll(_l,gl,nl),rl.set(Tl.subarray(_l,_l+il*nl)),dl(_l-dl(0)),Ll!==0)throw new Error(`Malformed buffer data: ${Ll}`)}const ka={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},el={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return J={ready:Ia,supported:!0,decodeVertexBuffer(tl,rl,il,nl,sl){Fa(Ra.exports.meshopt_decodeVertexBuffer,tl,rl,il,nl,Ra.exports[ka[sl]])},decodeIndexBuffer(tl,rl,il,nl){Fa(Ra.exports.meshopt_decodeIndexBuffer,tl,rl,il,nl)},decodeIndexSequence(tl,rl,il,nl){Fa(Ra.exports.meshopt_decodeIndexSequence,tl,rl,il,nl)},decodeGltfBuffer(tl,rl,il,nl,sl,ll){Fa(Ra.exports[el[sl]],tl,rl,il,nl,Ra.exports[ka[ll]])}},J};ua.MeshoptDecoder=la}(MeshoptDecoder$1)),MeshoptDecoder$1}var hasRequiredThreeStdlib;function requireThreeStdlib(){return hasRequiredThreeStdlib||(hasRequiredThreeStdlib=1,function(ua){Object.defineProperty(ua,Symbol.toStringTag,{value:"Module"});const J=requireMD2CharacterComplex(),la=requireConvexObjectBreaker(),xa=requireMorphBlendMesh(),Aa=requireGPUComputationRenderer(),ba=requireGyroscope(),Sa=requireMorphAnimMesh(),Ma=requireRollerCoaster(),Ra=requireTimer(),Ia=requireWebGL(),La=requireMD2Character(),Fa=requireVolumeSlice(),ka=requireTubePainter(),el=requireVolume$1(),tl=requireProgressiveLightmap(),rl=requireCSS2DRenderer(),il=requireCSS3DRenderer(),nl=requireProjector(),sl=requireSVGRenderer(),ll=requireFlakesTexture(),dl=requireCurveModifier(),gl=requireSimplifyModifier(),_l=requireEdgeSplitModifier(),vl=requireTessellateModifier(),Tl=requireGLTFExporter(),Ll=requireUSDZExporter(),Il=requirePLYExporter(),Fl=requireDRACOExporter(),Ol=requireColladaExporter(),ql=requireMMDExporter(),rc=requireSTLExporter(),sc=requireOBJExporter(),Kl=requireRoomEnvironment(),Gl=requireAnimationClipCreator(),kl=requireCCDIKSolver(),Wl=requireMMDPhysics(),tc=requireMMDAnimationHelper(),Zl=requireBatchedMesh(),ac=requireReflector(),Cc=requireRefractor(),_c=requireShadowMesh(),Dc=requireLensflare(),Uc=requireWater(),Oc=requireMarchingCubes(),jc=requireLightningStorm(),Bc=requireReflectorRTT(),vc=requireReflectorForSSRPass(),Mc=requireSky(),kc=requireWater2(),Jc=requireGroundProjectedEnv(),fu=requireSceneUtils(),hu=requireUVsDebug(),wu=requireGeometryUtils(),pu=requireRoughnessMipmapper(),Eu=requireSkeletonUtils(),Tu=requireShadowMapViewer(),mu=requireBufferGeometryUtils(),gu=requireGeometryCompressionUtils(),Gu=requireCinematicCamera(),Ou=requireConvexHull(),x0=requireMeshSurfaceSampler(),I0=requireSimplexNoise(),k0=requireOBB(),ku=requireCapsule(),Du=requireColorConverter(),f0=requireImprovedNoise(),Ru=requireOctree(),Wc=requireLut(),bu=requireCameraControls(),Mu=requireFirstPersonControls(),vu=requireTransformControls(),n0=requireDragControls(),Yu=requirePointerLockControls(),u0=requireDeviceOrientationControls(),ou=requireTrackballControls(),t0=requireOrbitControls(),a0=requireArcballControls(),$0=requireFlyControls(),yd=requireLUTPass(),Dd=requireClearPass(),gf=requireGlitchPass(),Rd=requireHalftonePass(),Pf=requireSMAAPass(),Q0=requireFilmPass(),ff=requireOutlinePass(),Ef=requireSSAOPass(),Bf=requireSavePass(),zf=requireBokehPass(),Ff=requirePass(),ld=requireTexturePass(),nf=requireAdaptiveToneMappingPass(),lf=requireUnrealBloomPass(),uf=requireCubeTexturePass(),Mf=requireSAOPass(),Qh=requireAfterimagePass(),P0=requireMaskPass(),$u=requireEffectComposer(),A0=requireDotScreenPass(),Vu=requireSSRPass(),z0=requireTAARenderPass(),qh=requireShaderPass(),Rc=requireSSAARenderPass(),Gc=requireRenderPass(),Iu=requireRenderPixelatedPass(),Xu=requireBloomPass(),_0=requireWaterPass(),B0=requireARButton(),G0=requireOculusHandModel(),wd=requireOculusHandPointerModel(),_d=requireText2D(),Cd=requireVRButton(),Jd=requireXRControllerModelFactory(),pf=requireXREstimatedLight(),nd=requireXRHandMeshModel(),Su=requireXRHandModelFactory(),Ju=requireXRHandPrimitiveModel(),y0=requireParametricGeometries(),j0=requireParametricGeometry(),hd=requireConvexGeometry(),qd=requireLightningStrike(),df=requireRoundedBoxGeometry(),Ad=requireBoxLineGeometry(),q0=requireDecalGeometry(),Bd=requireTeapotGeometry(),af=requireTextGeometry(),Gd=requireCSM(),bf=requireCSMFrustum(),dp=requireCSMHelper(),m0=requireCSMShader(),s0=requireACESFilmicToneMappingShader(),v0=requireAfterimageShader(),Y0=requireBasicShader(),Id=requireBleachBypassShader(),Ld=requireBlendShader(),Lf=requireBokehShader(),Sf=requireBokehShader2(),tp=requireBrightnessContrastShader(),Rf=requireColorCorrectionShader(),Pp=requireColorifyShader(),yp=requireConvolutionShader(),Np=requireCopyShader(),L0=requireDOFMipMapShader(),b0=requireDepthLimitedBlurShader(),N0=requireDigitalGlitch(),X0=requireDotScreenShader(),H0=requireFXAAShader(),vf=requireFilmShader(),kd=requireFocusShader(),gp=requireFreiChenShader(),_p=requireFresnelShader(),$p=requireGammaCorrectionShader(),rp=requireGodRaysShader(),ap=requireHalftoneShader(),qm=requireHorizontalBlurShader(),hm=requireHorizontalTiltShiftShader(),g1=requireHueSaturationShader(),xm=requireKaleidoShader(),Bm=requireLuminosityHighPassShader(),u1=requireLuminosityShader(),Tm=requireMirrorShader(),am=requireNormalMapShader(),x1=requireParallaxShader(),Y1=requirePixelShader(),Dv=requireRGBShiftShader(),Fm=requireSAOShader(),qp=requireSMAAShader(),Xg=requireSSAOShader(),yu=requireSSRShader(),T0=requireSepiaShader(),Sd=requireSobelOperatorShader(),Wd=requireSubsurfaceScatteringShader(),_f=requireTechnicolorShader(),kp=requireToneMapShader(),up=requireToonShader(),Zp=requireTriangleBlurShader(),lm=requireUnpackDepthRGBAShader(),Wm=requireVerticalBlurShader(),d1=requireVerticalTiltShiftShader(),Xp=requireVignetteShader(),eg=requireVolumeShader(),S1=requireWaterRefractionShader(),C1=requireHTMLMesh(),l1=requireInteractiveGroup(),q3=requireSelectionHelper(),Vg=requireSelectionBox(),m_=requireAmmoPhysics(),zy=requireParallaxBarrierEffect(),N9=requirePeppersGhostEffect(),I_=requireOutlineEffect(),M5=requireAnaglyphEffect(),X_=requireAsciiEffect(),L_=requireStereoEffect(),O9=requireFBXLoader(),X5=requireFontLoader(),Y5=requireTGALoader(),Q9=requireLUTCubeLoader(),b_=requireNRRDLoader(),Xy=requireSTLLoader(),a9=requireMTLLoader(),S_=requireXLoader(),A2=requireBVHLoader(),f3=requireKMZLoader(),Sy=requireVRMLoader(),Yy=requireVRMLLoader(),ny=requireKTX2Loader(),e3=requireLottieLoader(),Qv=requireTTFLoader(),Z3=requireRGBELoader(),Ey=requireAssimpLoader(),M3=requireColladaLoader(),Bg=requireMDDLoader(),A3=requireEXRLoader(),O3=require_3MFLoader(),w3=requireXYZLoader(),o2=requireVTKLoader(),l2=requireLUT3dlLoader(),I2=requireDDSLoader(),u9=requirePVRLoader(),P9=requireGCodeLoader(),Z9=requireBasisTextureLoader(),Yg=requireTDSLoader(),h9=requireLDrawLoader(),Ty=requireGLTFLoader(),k3=requireSVGLoader(),yy=require_3DMLoader(),iy=requireOBJLoader(),vg=requireAMFLoader(),Py=requireMMDLoader(),Vp=requireMD2Loader(),n1=requireKTXLoader(),N1=requireTiltLoader(),I9=requireDRACOLoader(),Gp=requireHDRCubeTextureLoader(),tg=requirePDBLoader(),L2=requirePRWMLoader(),K1=requireRGBMLoader(),I3=requireVOXLoader(),lg=requirePCDLoader(),Cv=requireLWOLoader(),Sg=requirePLYLoader(),t3=requireLineSegmentsGeometry(),D1=requireLineGeometry(),i1=requireWireframe(),zm=requireWireframeGeometry2(),$m=requireLine2$1(),A1=requireLineMaterial(),Ng=requireLineSegments2(),r3=requireLightProbeHelper(),D2=requireVertexTangentsHelper(),Xm=requirePositionalAudioHelper(),cy=requireVertexNormalsHelper(),rv=requireRectAreaLightHelper(),Wv=requireRectAreaLightUniformsLib(),yg=requireLightProbeGenerator(),yv=requireNURBSUtils(),n3=requireNURBSCurve(),ay=requireNURBSSurface(),cg=requireCurveExtras(),uy=requireGeometry(),Op=requireMeshoptDecoder(),p1=requireMotionControllers();ua.MD2CharacterComplex=J.MD2CharacterComplex,ua.ConvexObjectBreaker=la.ConvexObjectBreaker,ua.MorphBlendMesh=xa.MorphBlendMesh,ua.GPUComputationRenderer=Aa.GPUComputationRenderer,ua.Gyroscope=ba.Gyroscope,ua.MorphAnimMesh=Sa.MorphAnimMesh,ua.RollerCoasterGeometry=Ma.RollerCoasterGeometry,ua.RollerCoasterLiftersGeometry=Ma.RollerCoasterLiftersGeometry,ua.RollerCoasterShadowGeometry=Ma.RollerCoasterShadowGeometry,ua.SkyGeometry=Ma.SkyGeometry,ua.TreesGeometry=Ma.TreesGeometry,ua.Timer=Ra.Timer,ua.getErrorMessage=Ia.getErrorMessage,ua.getWebGL2ErrorMessage=Ia.getWebGL2ErrorMessage,ua.getWebGLErrorMessage=Ia.getWebGLErrorMessage,ua.isWebGL2Available=Ia.isWebGL2Available,ua.isWebGLAvailable=Ia.isWebGLAvailable,ua.MD2Character=La.MD2Character,ua.VolumeSlice=Fa.VolumeSlice,ua.TubePainter=ka.TubePainter,ua.Volume=el.Volume,ua.ProgressiveLightMap=tl.ProgressiveLightMap,ua.CSS2DObject=rl.CSS2DObject,ua.CSS2DRenderer=rl.CSS2DRenderer,ua.CSS3DObject=il.CSS3DObject,ua.CSS3DRenderer=il.CSS3DRenderer,ua.CSS3DSprite=il.CSS3DSprite,ua.Projector=nl.Projector,ua.RenderableFace=nl.RenderableFace,ua.RenderableLine=nl.RenderableLine,ua.RenderableObject=nl.RenderableObject,ua.RenderableSprite=nl.RenderableSprite,ua.RenderableVertex=nl.RenderableVertex,ua.SVGObject=sl.SVGObject,ua.SVGRenderer=sl.SVGRenderer,ua.FlakesTexture=ll.FlakesTexture,ua.Flow=dl.Flow,ua.InstancedFlow=dl.InstancedFlow,ua.getUniforms=dl.getUniforms,ua.initSplineTexture=dl.initSplineTexture,ua.modifyShader=dl.modifyShader,ua.updateSplineTexture=dl.updateSplineTexture,ua.SimplifyModifier=gl.SimplifyModifier,ua.EdgeSplitModifier=_l.EdgeSplitModifier,ua.TessellateModifier=vl.TessellateModifier,ua.GLTFExporter=Tl.GLTFExporter,ua.USDZExporter=Ll.USDZExporter,ua.PLYExporter=Il.PLYExporter,ua.DRACOExporter=Fl.DRACOExporter,ua.ColladaExporter=Ol.ColladaExporter,ua.MMDExporter=ql.MMDExporter,ua.STLExporter=rc.STLExporter,ua.OBJExporter=sc.OBJExporter,ua.RoomEnvironment=Kl.RoomEnvironment,ua.AnimationClipCreator=Gl.AnimationClipCreator,ua.CCDIKHelper=kl.CCDIKHelper,ua.CCDIKSolver=kl.CCDIKSolver,ua.MMDPhysics=Wl.MMDPhysics,ua.MMDAnimationHelper=tc.MMDAnimationHelper,ua.BatchedMesh=Zl.BatchedMesh,ua.Reflector=ac.Reflector,ua.Refractor=Cc.Refractor,ua.ShadowMesh=_c.ShadowMesh,ua.Lensflare=Dc.Lensflare,ua.LensflareElement=Dc.LensflareElement,ua.Water=Uc.Water,ua.MarchingCubes=Oc.MarchingCubes,ua.edgeTable=Oc.edgeTable,ua.triTable=Oc.triTable,ua.LightningStorm=jc.LightningStorm,ua.ReflectorRTT=Bc.ReflectorRTT,ua.ReflectorForSSRPass=vc.ReflectorForSSRPass,ua.Sky=Mc.Sky,ua.Water2=kc.Water2,ua.GroundProjectedEnv=Jc.GroundProjectedEnv,ua.SceneUtils=fu.SceneUtils,ua.UVsDebug=hu.UVsDebug,ua.GeometryUtils=wu.GeometryUtils,ua.RoughnessMipmapper=pu.RoughnessMipmapper,ua.SkeletonUtils=Eu.SkeletonUtils,ua.ShadowMapViewer=Tu.ShadowMapViewer,ua.computeMorphedAttributes=mu.computeMorphedAttributes,ua.estimateBytesUsed=mu.estimateBytesUsed,ua.interleaveAttributes=mu.interleaveAttributes,ua.mergeBufferAttributes=mu.mergeBufferAttributes,ua.mergeBufferGeometries=mu.mergeBufferGeometries,ua.mergeVertices=mu.mergeVertices,ua.toCreasedNormals=mu.toCreasedNormals,ua.toTrianglesDrawMode=mu.toTrianglesDrawMode,ua.GeometryCompressionUtils=gu.GeometryCompressionUtils,ua.PackedPhongMaterial=gu.PackedPhongMaterial,ua.CinematicCamera=Gu.CinematicCamera,ua.ConvexHull=Ou.ConvexHull,ua.Face=Ou.Face,ua.HalfEdge=Ou.HalfEdge,ua.VertexList=Ou.VertexList,ua.VertexNode=Ou.VertexNode,ua.MeshSurfaceSampler=x0.MeshSurfaceSampler,ua.SimplexNoise=I0.SimplexNoise,ua.OBB=k0.OBB,ua.Capsule=ku.Capsule,ua.ColorConverter=Du.ColorConverter,ua.ImprovedNoise=f0.ImprovedNoise,ua.Octree=Ru.Octree,ua.ColorMapKeywords=Wc.ColorMapKeywords,ua.Lut=Wc.Lut,ua.CameraControls=bu.CameraControls,ua.MapControlsExp=bu.MapControlsExp,ua.OrbitControlsExp=bu.OrbitControlsExp,ua.STATE=bu.STATE,ua.TrackballControlsExp=bu.TrackballControlsExp,ua.FirstPersonControls=Mu.FirstPersonControls,ua.TransformControls=vu.TransformControls,ua.TransformControlsGizmo=vu.TransformControlsGizmo,ua.TransformControlsPlane=vu.TransformControlsPlane,ua.DragControls=n0.DragControls,ua.PointerLockControls=Yu.PointerLockControls,ua.DeviceOrientationControls=u0.DeviceOrientationControls,ua.TrackballControls=ou.TrackballControls,ua.MapControls=t0.MapControls,ua.OrbitControls=t0.OrbitControls,ua.ArcballControls=a0.ArcballControls,ua.FlyControls=$0.FlyControls,ua.LUTPass=yd.LUTPass,ua.ClearPass=Dd.ClearPass,ua.GlitchPass=gf.GlitchPass,ua.HalftonePass=Rd.HalftonePass,ua.SMAAPass=Pf.SMAAPass,ua.FilmPass=Q0.FilmPass,ua.OutlinePass=ff.OutlinePass,ua.SSAOPass=Ef.SSAOPass,ua.SavePass=Bf.SavePass,ua.BokehPass=zf.BokehPass,ua.FullScreenQuad=Ff.FullScreenQuad,ua.Pass=Ff.Pass,ua.TexturePass=ld.TexturePass,ua.AdaptiveToneMappingPass=nf.AdaptiveToneMappingPass,ua.UnrealBloomPass=lf.UnrealBloomPass,ua.CubeTexturePass=uf.CubeTexturePass,ua.SAOPass=Mf.SAOPass,ua.AfterimagePass=Qh.AfterimagePass,ua.ClearMaskPass=P0.ClearMaskPass,ua.MaskPass=P0.MaskPass,ua.EffectComposer=$u.EffectComposer,ua.DotScreenPass=A0.DotScreenPass,ua.SSRPass=Vu.SSRPass,ua.TAARenderPass=z0.TAARenderPass,ua.ShaderPass=qh.ShaderPass,ua.SSAARenderPass=Rc.SSAARenderPass,ua.RenderPass=Gc.RenderPass,ua.RenderPixelatedPass=Iu.RenderPixelatedPass,ua.BloomPass=Xu.BloomPass,ua.WaterPass=_0.WaterPass,ua.ARButton=B0.ARButton,ua.OculusHandModel=G0.OculusHandModel,ua.OculusHandPointerModel=wd.OculusHandPointerModel,ua.createText=_d.createText,ua.VRButton=Cd.VRButton,ua.XRControllerModelFactory=Jd.XRControllerModelFactory,ua.XREstimatedLight=pf.XREstimatedLight,ua.XRHandMeshModel=nd.XRHandMeshModel,ua.XRHandModelFactory=Su.XRHandModelFactory,ua.XRHandPrimitiveModel=Ju.XRHandPrimitiveModel,ua.ParametricGeometries=y0.ParametricGeometries,ua.ParametricGeometry=j0.ParametricGeometry,ua.ConvexGeometry=hd.ConvexGeometry,ua.LightningStrike=qd.LightningStrike,ua.RoundedBoxGeometry=df.RoundedBoxGeometry,ua.BoxLineGeometry=Ad.BoxLineGeometry,ua.DecalGeometry=q0.DecalGeometry,ua.DecalVertex=q0.DecalVertex,ua.TeapotGeometry=Bd.TeapotGeometry,ua.TextBufferGeometry=af.TextGeometry,ua.TextGeometry=af.TextGeometry,ua.CSM=Gd.CSM,ua.CSMFrustum=bf.CSMFrustum,ua.CSMHelper=dp.CSMHelper,ua.CSMShader=m0.CSMShader,ua.ACESFilmicToneMappingShader=s0.ACESFilmicToneMappingShader,ua.AfterimageShader=v0.AfterimageShader,ua.BasicShader=Y0.BasicShader,ua.BleachBypassShader=Id.BleachBypassShader,ua.BlendShader=Ld.BlendShader,ua.BokehShader=Lf.BokehShader,ua.BokehDepthShader=Sf.BokehDepthShader,ua.BokehShader2=Sf.BokehShader2,ua.BrightnessContrastShader=tp.BrightnessContrastShader,ua.ColorCorrectionShader=Rf.ColorCorrectionShader,ua.ColorifyShader=Pp.ColorifyShader,ua.ConvolutionShader=yp.ConvolutionShader,ua.CopyShader=Np.CopyShader,ua.DOFMipMapShader=L0.DOFMipMapShader,ua.BlurShaderUtils=b0.BlurShaderUtils,ua.DepthLimitedBlurShader=b0.DepthLimitedBlurShader,ua.DigitalGlitch=N0.DigitalGlitch,ua.DotScreenShader=X0.DotScreenShader,ua.FXAAShader=H0.FXAAShader,ua.FilmShader=vf.FilmShader,ua.FocusShader=kd.FocusShader,ua.FreiChenShader=gp.FreiChenShader,ua.FresnelShader=_p.FresnelShader,ua.GammaCorrectionShader=$p.GammaCorrectionShader,ua.GodRaysCombineShader=rp.GodRaysCombineShader,ua.GodRaysDepthMaskShader=rp.GodRaysDepthMaskShader,ua.GodRaysFakeSunShader=rp.GodRaysFakeSunShader,ua.GodRaysGenerateShader=rp.GodRaysGenerateShader,ua.HalftoneShader=ap.HalftoneShader,ua.HorizontalBlurShader=qm.HorizontalBlurShader,ua.HorizontalTiltShiftShader=hm.HorizontalTiltShiftShader,ua.HueSaturationShader=g1.HueSaturationShader,ua.KaleidoShader=xm.KaleidoShader,ua.LuminosityHighPassShader=Bm.LuminosityHighPassShader,ua.LuminosityShader=u1.LuminosityShader,ua.MirrorShader=Tm.MirrorShader,ua.NormalMapShader=am.NormalMapShader,ua.ParallaxShader=x1.ParallaxShader,ua.PixelShader=Y1.PixelShader,ua.RGBShiftShader=Dv.RGBShiftShader,ua.SAOShader=Fm.SAOShader,ua.SMAABlendShader=qp.SMAABlendShader,ua.SMAAEdgesShader=qp.SMAAEdgesShader,ua.SMAAWeightsShader=qp.SMAAWeightsShader,ua.SSAOBlurShader=Xg.SSAOBlurShader,ua.SSAODepthShader=Xg.SSAODepthShader,ua.SSAOShader=Xg.SSAOShader,ua.SSRBlurShader=yu.SSRBlurShader,ua.SSRDepthShader=yu.SSRDepthShader,ua.SSRShader=yu.SSRShader,ua.SepiaShader=T0.SepiaShader,ua.SobelOperatorShader=Sd.SobelOperatorShader,ua.SubsurfaceScatteringShader=Wd.SubsurfaceScatteringShader,ua.TechnicolorShader=_f.TechnicolorShader,ua.ToneMapShader=kp.ToneMapShader,ua.ToonShader1=up.ToonShader1,ua.ToonShader2=up.ToonShader2,ua.ToonShaderDotted=up.ToonShaderDotted,ua.ToonShaderHatching=up.ToonShaderHatching,ua.TriangleBlurShader=Zp.TriangleBlurShader,ua.UnpackDepthRGBAShader=lm.UnpackDepthRGBAShader,ua.VerticalBlurShader=Wm.VerticalBlurShader,ua.VerticalTiltShiftShader=d1.VerticalTiltShiftShader,ua.VignetteShader=Xp.VignetteShader,ua.VolumeRenderShader1=eg.VolumeRenderShader1,ua.WaterRefractionShader=S1.WaterRefractionShader,ua.HTMLMesh=C1.HTMLMesh,ua.InteractiveGroup=l1.InteractiveGroup,ua.SelectionHelper=q3.SelectionHelper,ua.SelectionBox=Vg.SelectionBox,ua.AmmoPhysics=m_.AmmoPhysics,ua.ParallaxBarrierEffect=zy.ParallaxBarrierEffect,ua.PeppersGhostEffect=N9.PeppersGhostEffect,ua.OutlineEffect=I_.OutlineEffect,ua.AnaglyphEffect=M5.AnaglyphEffect,ua.AsciiEffect=X_.AsciiEffect,ua.StereoEffect=L_.StereoEffect,ua.FBXLoader=O9.FBXLoader,ua.Font=X5.Font,ua.FontLoader=X5.FontLoader,ua.TGALoader=Y5.TGALoader,ua.LUTCubeLoader=Q9.LUTCubeLoader,ua.NRRDLoader=b_.NRRDLoader,ua.STLLoader=Xy.STLLoader,ua.MTLLoader=a9.MTLLoader,ua.XLoader=S_.XLoader,ua.BVHLoader=A2.BVHLoader,ua.KMZLoader=f3.KMZLoader,ua.VRMLoader=Sy.VRMLoader,ua.VRMLLoader=Yy.VRMLLoader,ua.KTX2Loader=ny.KTX2Loader,ua.LottieLoader=e3.LottieLoader,ua.TTFLoader=Qv.TTFLoader,ua.RGBELoader=Z3.RGBELoader,ua.AssimpLoader=Ey.AssimpLoader,ua.ColladaLoader=M3.ColladaLoader,ua.MDDLoader=Bg.MDDLoader,ua.EXRLoader=A3.EXRLoader,ua.ThreeMFLoader=O3.ThreeMFLoader,ua.XYZLoader=w3.XYZLoader,ua.VTKLoader=o2.VTKLoader,ua.LUT3dlLoader=l2.LUT3dlLoader,ua.DDSLoader=I2.DDSLoader,ua.PVRLoader=u9.PVRLoader,ua.GCodeLoader=P9.GCodeLoader,ua.BasisTextureLoader=Z9.BasisTextureLoader,ua.TDSLoader=Yg.TDSLoader,ua.LDrawLoader=h9.LDrawLoader,ua.GLTFLoader=Ty.GLTFLoader,ua.SVGLoader=k3.SVGLoader,ua.Rhino3dmLoader=yy.Rhino3dmLoader,ua.OBJLoader=iy.OBJLoader,ua.AMFLoader=vg.AMFLoader,ua.MMDLoader=Py.MMDLoader,ua.MD2Loader=Vp.MD2Loader,ua.KTXLoader=n1.KTXLoader,ua.TiltLoader=N1.TiltLoader,ua.DRACOLoader=I9.DRACOLoader,ua.HDRCubeTextureLoader=Gp.HDRCubeTextureLoader,ua.PDBLoader=tg.PDBLoader,ua.PRWMLoader=L2.PRWMLoader,ua.RGBMLoader=K1.RGBMLoader,ua.VOXData3DTexture=I3.VOXData3DTexture,ua.VOXLoader=I3.VOXLoader,ua.VOXMesh=I3.VOXMesh,ua.PCDLoader=lg.PCDLoader,ua.LWOLoader=Cv.LWOLoader,ua.PLYLoader=Sg.PLYLoader,ua.LineSegmentsGeometry=t3.LineSegmentsGeometry,ua.LineGeometry=D1.LineGeometry,ua.Wireframe=i1.Wireframe,ua.WireframeGeometry2=zm.WireframeGeometry2,ua.Line2=$m.Line2,ua.LineMaterial=A1.LineMaterial,ua.LineSegments2=Ng.LineSegments2,ua.LightProbeHelper=r3.LightProbeHelper,ua.VertexTangentsHelper=D2.VertexTangentsHelper,ua.PositionalAudioHelper=Xm.PositionalAudioHelper,ua.VertexNormalsHelper=cy.VertexNormalsHelper,ua.RectAreaLightHelper=rv.RectAreaLightHelper,ua.RectAreaLightUniformsLib=Wv.RectAreaLightUniformsLib,ua.LightProbeGenerator=yg.LightProbeGenerator,ua.calcBSplineDerivatives=yv.calcBSplineDerivatives,ua.calcBSplinePoint=yv.calcBSplinePoint,ua.calcBasisFunctionDerivatives=yv.calcBasisFunctionDerivatives,ua.calcBasisFunctions=yv.calcBasisFunctions,ua.calcKoverI=yv.calcKoverI,ua.calcNURBSDerivatives=yv.calcNURBSDerivatives,ua.calcRationalCurveDerivatives=yv.calcRationalCurveDerivatives,ua.calcSurfacePoint=yv.calcSurfacePoint,ua.findSpan=yv.findSpan,ua.NURBSCurve=n3.NURBSCurve,ua.NURBSSurface=ay.NURBSSurface,ua.CinquefoilKnot=cg.CinquefoilKnot,ua.DecoratedTorusKnot4a=cg.DecoratedTorusKnot4a,ua.DecoratedTorusKnot4b=cg.DecoratedTorusKnot4b,ua.DecoratedTorusKnot5a=cg.DecoratedTorusKnot5a,ua.DecoratedTorusKnot5c=cg.DecoratedTorusKnot5c,ua.FigureEightPolynomialKnot=cg.FigureEightPolynomialKnot,ua.GrannyKnot=cg.GrannyKnot,ua.HeartCurve=cg.HeartCurve,ua.HelixCurve=cg.HelixCurve,ua.KnotCurve=cg.KnotCurve,ua.TorusKnot=cg.TorusKnot,ua.TrefoilKnot=cg.TrefoilKnot,ua.TrefoilPolynomialKnot=cg.TrefoilPolynomialKnot,ua.VivianiCurve=cg.VivianiCurve,ua.Face3=uy.Face3,ua.Geometry=uy.Geometry,ua.MeshoptDecoder=Op.MeshoptDecoder,ua.MotionController=p1.MotionController,ua.MotionControllerConstants=p1.MotionControllerConstants,ua.fetchProfile=p1.fetchProfile,ua.fetchProfilesList=p1.fetchProfilesList}(threeStdlib)),threeStdlib}var unitToMm={in:25.4,inch:25.4,mil:.0254,mm:1,m:1e3,cm:10,ft:304.8,feet:304.8},mm=ua=>{let J=typeof ua=="number"?"mm":ua.replace(/^[^a-zA-Z]+/g,"").toLowerCase();J||(J="mm");const la=typeof ua=="number"?ua:Number.parseFloat(ua.split(J)[0]);if(J in unitToMm)return la*unitToMm[J];throw new Error(`Unsupported unit: ${J}`)},mm_default=mm,util$2;(function(ua){ua.assertEqual=Aa=>Aa;function J(Aa){}ua.assertIs=J;function la(Aa){throw new Error}ua.assertNever=la,ua.arrayToEnum=Aa=>{const ba={};for(const Sa of Aa)ba[Sa]=Sa;return ba},ua.getValidEnumValues=Aa=>{const ba=ua.objectKeys(Aa).filter(Ma=>typeof Aa[Aa[Ma]]!="number"),Sa={};for(const Ma of ba)Sa[Ma]=Aa[Ma];return ua.objectValues(Sa)},ua.objectValues=Aa=>ua.objectKeys(Aa).map(function(ba){return Aa[ba]}),ua.objectKeys=typeof Object.keys=="function"?Aa=>Object.keys(Aa):Aa=>{const ba=[];for(const Sa in Aa)Object.prototype.hasOwnProperty.call(Aa,Sa)&&ba.push(Sa);return ba},ua.find=(Aa,ba)=>{for(const Sa of Aa)if(ba(Sa))return Sa},ua.isInteger=typeof Number.isInteger=="function"?Aa=>Number.isInteger(Aa):Aa=>typeof Aa=="number"&&isFinite(Aa)&&Math.floor(Aa)===Aa;function xa(Aa,ba=" | "){return Aa.map(Sa=>typeof Sa=="string"?`'${Sa}'`:Sa).join(ba)}ua.joinValues=xa,ua.jsonStringifyReplacer=(Aa,ba)=>typeof ba=="bigint"?ba.toString():ba})(util$2||(util$2={}));var objectUtil$1;(function(ua){ua.mergeShapes=(J,la)=>({...J,...la})})(objectUtil$1||(objectUtil$1={}));const ZodParsedType$1=util$2.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType$1=ua=>{switch(typeof ua){case"undefined":return ZodParsedType$1.undefined;case"string":return ZodParsedType$1.string;case"number":return isNaN(ua)?ZodParsedType$1.nan:ZodParsedType$1.number;case"boolean":return ZodParsedType$1.boolean;case"function":return ZodParsedType$1.function;case"bigint":return ZodParsedType$1.bigint;case"symbol":return ZodParsedType$1.symbol;case"object":return Array.isArray(ua)?ZodParsedType$1.array:ua===null?ZodParsedType$1.null:ua.then&&typeof ua.then=="function"&&ua.catch&&typeof ua.catch=="function"?ZodParsedType$1.promise:typeof Map<"u"&&ua instanceof Map?ZodParsedType$1.map:typeof Set<"u"&&ua instanceof Set?ZodParsedType$1.set:typeof Date<"u"&&ua instanceof Date?ZodParsedType$1.date:ZodParsedType$1.object;default:return ZodParsedType$1.unknown}},ZodIssueCode$1=util$2.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),quotelessJson$1=ua=>JSON.stringify(ua,null,2).replace(/"([^"]+)":/g,"$1:");let ZodError$2=class HM extends Error{constructor(J){super(),this.issues=[],this.addIssue=xa=>{this.issues=[...this.issues,xa]},this.addIssues=(xa=[])=>{this.issues=[...this.issues,...xa]};const la=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,la):this.__proto__=la,this.name="ZodError",this.issues=J}get errors(){return this.issues}format(J){const la=J||function(ba){return ba.message},xa={_errors:[]},Aa=ba=>{for(const Sa of ba.issues)if(Sa.code==="invalid_union")Sa.unionErrors.map(Aa);else if(Sa.code==="invalid_return_type")Aa(Sa.returnTypeError);else if(Sa.code==="invalid_arguments")Aa(Sa.argumentsError);else if(Sa.path.length===0)xa._errors.push(la(Sa));else{let Ma=xa,Ra=0;for(;Ra<Sa.path.length;){const Ia=Sa.path[Ra];Ra===Sa.path.length-1?(Ma[Ia]=Ma[Ia]||{_errors:[]},Ma[Ia]._errors.push(la(Sa))):Ma[Ia]=Ma[Ia]||{_errors:[]},Ma=Ma[Ia],Ra++}}};return Aa(this),xa}static assert(J){if(!(J instanceof HM))throw new Error(`Not a ZodError: ${J}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util$2.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(J=la=>la.message){const la={},xa=[];for(const Aa of this.issues)Aa.path.length>0?(la[Aa.path[0]]=la[Aa.path[0]]||[],la[Aa.path[0]].push(J(Aa))):xa.push(J(Aa));return{formErrors:xa,fieldErrors:la}}get formErrors(){return this.flatten()}};ZodError$2.create=ua=>new ZodError$2(ua);const errorMap$1=(ua,J)=>{let la;switch(ua.code){case ZodIssueCode$1.invalid_type:ua.received===ZodParsedType$1.undefined?la="Required":la=`Expected ${ua.expected}, received ${ua.received}`;break;case ZodIssueCode$1.invalid_literal:la=`Invalid literal value, expected ${JSON.stringify(ua.expected,util$2.jsonStringifyReplacer)}`;break;case ZodIssueCode$1.unrecognized_keys:la=`Unrecognized key(s) in object: ${util$2.joinValues(ua.keys,", ")}`;break;case ZodIssueCode$1.invalid_union:la="Invalid input";break;case ZodIssueCode$1.invalid_union_discriminator:la=`Invalid discriminator value. Expected ${util$2.joinValues(ua.options)}`;break;case ZodIssueCode$1.invalid_enum_value:la=`Invalid enum value. Expected ${util$2.joinValues(ua.options)}, received '${ua.received}'`;break;case ZodIssueCode$1.invalid_arguments:la="Invalid function arguments";break;case ZodIssueCode$1.invalid_return_type:la="Invalid function return type";break;case ZodIssueCode$1.invalid_date:la="Invalid date";break;case ZodIssueCode$1.invalid_string:typeof ua.validation=="object"?"includes"in ua.validation?(la=`Invalid input: must include "${ua.validation.includes}"`,typeof ua.validation.position=="number"&&(la=`${la} at one or more positions greater than or equal to ${ua.validation.position}`)):"startsWith"in ua.validation?la=`Invalid input: must start with "${ua.validation.startsWith}"`:"endsWith"in ua.validation?la=`Invalid input: must end with "${ua.validation.endsWith}"`:util$2.assertNever(ua.validation):ua.validation!=="regex"?la=`Invalid ${ua.validation}`:la="Invalid";break;case ZodIssueCode$1.too_small:ua.type==="array"?la=`Array must contain ${ua.exact?"exactly":ua.inclusive?"at least":"more than"} ${ua.minimum} element(s)`:ua.type==="string"?la=`String must contain ${ua.exact?"exactly":ua.inclusive?"at least":"over"} ${ua.minimum} character(s)`:ua.type==="number"?la=`Number must be ${ua.exact?"exactly equal to ":ua.inclusive?"greater than or equal to ":"greater than "}${ua.minimum}`:ua.type==="date"?la=`Date must be ${ua.exact?"exactly equal to ":ua.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(ua.minimum))}`:la="Invalid input";break;case ZodIssueCode$1.too_big:ua.type==="array"?la=`Array must contain ${ua.exact?"exactly":ua.inclusive?"at most":"less than"} ${ua.maximum} element(s)`:ua.type==="string"?la=`String must contain ${ua.exact?"exactly":ua.inclusive?"at most":"under"} ${ua.maximum} character(s)`:ua.type==="number"?la=`Number must be ${ua.exact?"exactly":ua.inclusive?"less than or equal to":"less than"} ${ua.maximum}`:ua.type==="bigint"?la=`BigInt must be ${ua.exact?"exactly":ua.inclusive?"less than or equal to":"less than"} ${ua.maximum}`:ua.type==="date"?la=`Date must be ${ua.exact?"exactly":ua.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(ua.maximum))}`:la="Invalid input";break;case ZodIssueCode$1.custom:la="Invalid input";break;case ZodIssueCode$1.invalid_intersection_types:la="Intersection results could not be merged";break;case ZodIssueCode$1.not_multiple_of:la=`Number must be a multiple of ${ua.multipleOf}`;break;case ZodIssueCode$1.not_finite:la="Number must be finite";break;default:la=J.defaultError,util$2.assertNever(ua)}return{message:la}};let overrideErrorMap$1=errorMap$1;function setErrorMap$1(ua){overrideErrorMap$1=ua}function getErrorMap$1(){return overrideErrorMap$1}const makeIssue$1=ua=>{const{data:J,path:la,errorMaps:xa,issueData:Aa}=ua,ba=[...la,...Aa.path||[]],Sa={...Aa,path:ba};if(Aa.message!==void 0)return{...Aa,path:ba,message:Aa.message};let Ma="";const Ra=xa.filter(Ia=>!!Ia).slice().reverse();for(const Ia of Ra)Ma=Ia(Sa,{data:J,defaultError:Ma}).message;return{...Aa,path:ba,message:Ma}},EMPTY_PATH$1=[];function addIssueToContext$1(ua,J){const la=getErrorMap$1(),xa=makeIssue$1({issueData:J,data:ua.data,path:ua.path,errorMaps:[ua.common.contextualErrorMap,ua.schemaErrorMap,la,la===errorMap$1?void 0:errorMap$1].filter(Aa=>!!Aa)});ua.common.issues.push(xa)}let ParseStatus$1=class qM{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(J,la){const xa=[];for(const Aa of la){if(Aa.status==="aborted")return INVALID$1;Aa.status==="dirty"&&J.dirty(),xa.push(Aa.value)}return{status:J.value,value:xa}}static async mergeObjectAsync(J,la){const xa=[];for(const Aa of la){const ba=await Aa.key,Sa=await Aa.value;xa.push({key:ba,value:Sa})}return qM.mergeObjectSync(J,xa)}static mergeObjectSync(J,la){const xa={};for(const Aa of la){const{key:ba,value:Sa}=Aa;if(ba.status==="aborted"||Sa.status==="aborted")return INVALID$1;ba.status==="dirty"&&J.dirty(),Sa.status==="dirty"&&J.dirty(),ba.value!=="__proto__"&&(typeof Sa.value<"u"||Aa.alwaysSet)&&(xa[ba.value]=Sa.value)}return{status:J.value,value:xa}}};const INVALID$1=Object.freeze({status:"aborted"}),DIRTY$1=ua=>({status:"dirty",value:ua}),OK$1=ua=>({status:"valid",value:ua}),isAborted$1=ua=>ua.status==="aborted",isDirty$1=ua=>ua.status==="dirty",isValid$2=ua=>ua.status==="valid",isAsync$1=ua=>typeof Promise<"u"&&ua instanceof Promise;function __classPrivateFieldGet$1(ua,J,la,xa){if(typeof J=="function"?ua!==J||!xa:!J.has(ua))throw new TypeError("Cannot read private member from an object whose class did not declare it");return J.get(ua)}function __classPrivateFieldSet$1(ua,J,la,xa,Aa){if(typeof J=="function"?ua!==J||!Aa:!J.has(ua))throw new TypeError("Cannot write private member to an object whose class did not declare it");return J.set(ua,la),la}typeof SuppressedError=="function"&&SuppressedError;var errorUtil$2;(function(ua){ua.errToObj=J=>typeof J=="string"?{message:J}:J||{},ua.toString=J=>typeof J=="string"?J:J==null?void 0:J.message})(errorUtil$2||(errorUtil$2={}));var _ZodEnum_cache$1,_ZodNativeEnum_cache$1;let ParseInputLazyPath$1=class{constructor(J,la,xa,Aa){this._cachedPath=[],this.parent=J,this.data=la,this._path=xa,this._key=Aa}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}};const handleResult$1=(ua,J)=>{if(isValid$2(J))return{success:!0,data:J.value};if(!ua.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const la=new ZodError$2(ua.common.issues);return this._error=la,this._error}}};function processCreateParams$1(ua){if(!ua)return{};const{errorMap:J,invalid_type_error:la,required_error:xa,description:Aa}=ua;if(J&&(la||xa))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return J?{errorMap:J,description:Aa}:{errorMap:(Sa,Ma)=>{var Ra,Ia;const{message:La}=ua;return Sa.code==="invalid_enum_value"?{message:La??Ma.defaultError}:typeof Ma.data>"u"?{message:(Ra=La??xa)!==null&&Ra!==void 0?Ra:Ma.defaultError}:Sa.code!=="invalid_type"?{message:Ma.defaultError}:{message:(Ia=La??la)!==null&&Ia!==void 0?Ia:Ma.defaultError}},description:Aa}}let ZodType$1=class{constructor(J){this.spa=this.safeParseAsync,this._def=J,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(J){return getParsedType$1(J.data)}_getOrReturnCtx(J,la){return la||{common:J.parent.common,data:J.data,parsedType:getParsedType$1(J.data),schemaErrorMap:this._def.errorMap,path:J.path,parent:J.parent}}_processInputParams(J){return{status:new ParseStatus$1,ctx:{common:J.parent.common,data:J.data,parsedType:getParsedType$1(J.data),schemaErrorMap:this._def.errorMap,path:J.path,parent:J.parent}}}_parseSync(J){const la=this._parse(J);if(isAsync$1(la))throw new Error("Synchronous parse encountered promise.");return la}_parseAsync(J){const la=this._parse(J);return Promise.resolve(la)}parse(J,la){const xa=this.safeParse(J,la);if(xa.success)return xa.data;throw xa.error}safeParse(J,la){var xa;const Aa={common:{issues:[],async:(xa=la==null?void 0:la.async)!==null&&xa!==void 0?xa:!1,contextualErrorMap:la==null?void 0:la.errorMap},path:(la==null?void 0:la.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:J,parsedType:getParsedType$1(J)},ba=this._parseSync({data:J,path:Aa.path,parent:Aa});return handleResult$1(Aa,ba)}async parseAsync(J,la){const xa=await this.safeParseAsync(J,la);if(xa.success)return xa.data;throw xa.error}async safeParseAsync(J,la){const xa={common:{issues:[],contextualErrorMap:la==null?void 0:la.errorMap,async:!0},path:(la==null?void 0:la.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:J,parsedType:getParsedType$1(J)},Aa=this._parse({data:J,path:xa.path,parent:xa}),ba=await(isAsync$1(Aa)?Aa:Promise.resolve(Aa));return handleResult$1(xa,ba)}refine(J,la){const xa=Aa=>typeof la=="string"||typeof la>"u"?{message:la}:typeof la=="function"?la(Aa):la;return this._refinement((Aa,ba)=>{const Sa=J(Aa),Ma=()=>ba.addIssue({code:ZodIssueCode$1.custom,...xa(Aa)});return typeof Promise<"u"&&Sa instanceof Promise?Sa.then(Ra=>Ra?!0:(Ma(),!1)):Sa?!0:(Ma(),!1)})}refinement(J,la){return this._refinement((xa,Aa)=>J(xa)?!0:(Aa.addIssue(typeof la=="function"?la(xa,Aa):la),!1))}_refinement(J){return new ZodEffects$1({schema:this,typeName:ZodFirstPartyTypeKind$1.ZodEffects,effect:{type:"refinement",refinement:J}})}superRefine(J){return this._refinement(J)}optional(){return ZodOptional$1.create(this,this._def)}nullable(){return ZodNullable$1.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray$1.create(this,this._def)}promise(){return ZodPromise$1.create(this,this._def)}or(J){return ZodUnion$1.create([this,J],this._def)}and(J){return ZodIntersection$1.create(this,J,this._def)}transform(J){return new ZodEffects$1({...processCreateParams$1(this._def),schema:this,typeName:ZodFirstPartyTypeKind$1.ZodEffects,effect:{type:"transform",transform:J}})}default(J){const la=typeof J=="function"?J:()=>J;return new ZodDefault$1({...processCreateParams$1(this._def),innerType:this,defaultValue:la,typeName:ZodFirstPartyTypeKind$1.ZodDefault})}brand(){return new ZodBranded$1({typeName:ZodFirstPartyTypeKind$1.ZodBranded,type:this,...processCreateParams$1(this._def)})}catch(J){const la=typeof J=="function"?J:()=>J;return new ZodCatch$1({...processCreateParams$1(this._def),innerType:this,catchValue:la,typeName:ZodFirstPartyTypeKind$1.ZodCatch})}describe(J){const la=this.constructor;return new la({...this._def,description:J})}pipe(J){return ZodPipeline$1.create(this,J)}readonly(){return ZodReadonly$1.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};const cuidRegex$1=/^c[^\s-]{8,}$/i,cuid2Regex$1=/^[0-9a-z]+$/,ulidRegex$1=/^[0-9A-HJKMNP-TV-Z]{26}$/,uuidRegex$1=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,nanoidRegex$1=/^[a-z0-9_-]{21}$/i,durationRegex$1=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,emailRegex$1=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex$1="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let emojiRegex$1;const ipv4Regex$1=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6Regex$1=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,base64Regex$1=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,dateRegexSource$1="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",dateRegex$1=new RegExp(`^${dateRegexSource$1}$`);function timeRegexSource$1(ua){let J="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return ua.precision?J=`${J}\\.\\d{${ua.precision}}`:ua.precision==null&&(J=`${J}(\\.\\d+)?`),J}function timeRegex$1(ua){return new RegExp(`^${timeRegexSource$1(ua)}$`)}function datetimeRegex$1(ua){let J=`${dateRegexSource$1}T${timeRegexSource$1(ua)}`;const la=[];return la.push(ua.local?"Z?":"Z"),ua.offset&&la.push("([+-]\\d{2}:?\\d{2})"),J=`${J}(${la.join("|")})`,new RegExp(`^${J}$`)}function isValidIP$1(ua,J){return!!((J==="v4"||!J)&&ipv4Regex$1.test(ua)||(J==="v6"||!J)&&ipv6Regex$1.test(ua))}let ZodString$1=class iE extends ZodType$1{_parse(J){if(this._def.coerce&&(J.data=String(J.data)),this._getType(J)!==ZodParsedType$1.string){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.string,received:ba.parsedType}),INVALID$1}const xa=new ParseStatus$1;let Aa;for(const ba of this._def.checks)if(ba.kind==="min")J.data.length<ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_small,minimum:ba.value,type:"string",inclusive:!0,exact:!1,message:ba.message}),xa.dirty());else if(ba.kind==="max")J.data.length>ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_big,maximum:ba.value,type:"string",inclusive:!0,exact:!1,message:ba.message}),xa.dirty());else if(ba.kind==="length"){const Sa=J.data.length>ba.value,Ma=J.data.length<ba.value;(Sa||Ma)&&(Aa=this._getOrReturnCtx(J,Aa),Sa?addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_big,maximum:ba.value,type:"string",inclusive:!0,exact:!0,message:ba.message}):Ma&&addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_small,minimum:ba.value,type:"string",inclusive:!0,exact:!0,message:ba.message}),xa.dirty())}else if(ba.kind==="email")emailRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"email",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="emoji")emojiRegex$1||(emojiRegex$1=new RegExp(_emojiRegex$1,"u")),emojiRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"emoji",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="uuid")uuidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"uuid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="nanoid")nanoidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"nanoid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="cuid")cuidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"cuid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="cuid2")cuid2Regex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"cuid2",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="ulid")ulidRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"ulid",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="url")try{new URL(J.data)}catch{Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"url",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()}else ba.kind==="regex"?(ba.regex.lastIndex=0,ba.regex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"regex",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty())):ba.kind==="trim"?J.data=J.data.trim():ba.kind==="includes"?J.data.includes(ba.value,ba.position)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:{includes:ba.value,position:ba.position},message:ba.message}),xa.dirty()):ba.kind==="toLowerCase"?J.data=J.data.toLowerCase():ba.kind==="toUpperCase"?J.data=J.data.toUpperCase():ba.kind==="startsWith"?J.data.startsWith(ba.value)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:{startsWith:ba.value},message:ba.message}),xa.dirty()):ba.kind==="endsWith"?J.data.endsWith(ba.value)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:{endsWith:ba.value},message:ba.message}),xa.dirty()):ba.kind==="datetime"?datetimeRegex$1(ba).test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:"datetime",message:ba.message}),xa.dirty()):ba.kind==="date"?dateRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:"date",message:ba.message}),xa.dirty()):ba.kind==="time"?timeRegex$1(ba).test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.invalid_string,validation:"time",message:ba.message}),xa.dirty()):ba.kind==="duration"?durationRegex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"duration",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="ip"?isValidIP$1(J.data,ba.version)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"ip",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="base64"?base64Regex$1.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{validation:"base64",code:ZodIssueCode$1.invalid_string,message:ba.message}),xa.dirty()):util$2.assertNever(ba);return{status:xa.value,value:J.data}}_regex(J,la,xa){return this.refinement(Aa=>J.test(Aa),{validation:la,code:ZodIssueCode$1.invalid_string,...errorUtil$2.errToObj(xa)})}_addCheck(J){return new iE({...this._def,checks:[...this._def.checks,J]})}email(J){return this._addCheck({kind:"email",...errorUtil$2.errToObj(J)})}url(J){return this._addCheck({kind:"url",...errorUtil$2.errToObj(J)})}emoji(J){return this._addCheck({kind:"emoji",...errorUtil$2.errToObj(J)})}uuid(J){return this._addCheck({kind:"uuid",...errorUtil$2.errToObj(J)})}nanoid(J){return this._addCheck({kind:"nanoid",...errorUtil$2.errToObj(J)})}cuid(J){return this._addCheck({kind:"cuid",...errorUtil$2.errToObj(J)})}cuid2(J){return this._addCheck({kind:"cuid2",...errorUtil$2.errToObj(J)})}ulid(J){return this._addCheck({kind:"ulid",...errorUtil$2.errToObj(J)})}base64(J){return this._addCheck({kind:"base64",...errorUtil$2.errToObj(J)})}ip(J){return this._addCheck({kind:"ip",...errorUtil$2.errToObj(J)})}datetime(J){var la,xa;return typeof J=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:J}):this._addCheck({kind:"datetime",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,offset:(la=J==null?void 0:J.offset)!==null&&la!==void 0?la:!1,local:(xa=J==null?void 0:J.local)!==null&&xa!==void 0?xa:!1,...errorUtil$2.errToObj(J==null?void 0:J.message)})}date(J){return this._addCheck({kind:"date",message:J})}time(J){return typeof J=="string"?this._addCheck({kind:"time",precision:null,message:J}):this._addCheck({kind:"time",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,...errorUtil$2.errToObj(J==null?void 0:J.message)})}duration(J){return this._addCheck({kind:"duration",...errorUtil$2.errToObj(J)})}regex(J,la){return this._addCheck({kind:"regex",regex:J,...errorUtil$2.errToObj(la)})}includes(J,la){return this._addCheck({kind:"includes",value:J,position:la==null?void 0:la.position,...errorUtil$2.errToObj(la==null?void 0:la.message)})}startsWith(J,la){return this._addCheck({kind:"startsWith",value:J,...errorUtil$2.errToObj(la)})}endsWith(J,la){return this._addCheck({kind:"endsWith",value:J,...errorUtil$2.errToObj(la)})}min(J,la){return this._addCheck({kind:"min",value:J,...errorUtil$2.errToObj(la)})}max(J,la){return this._addCheck({kind:"max",value:J,...errorUtil$2.errToObj(la)})}length(J,la){return this._addCheck({kind:"length",value:J,...errorUtil$2.errToObj(la)})}nonempty(J){return this.min(1,errorUtil$2.errToObj(J))}trim(){return new iE({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new iE({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new iE({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(J=>J.kind==="datetime")}get isDate(){return!!this._def.checks.find(J=>J.kind==="date")}get isTime(){return!!this._def.checks.find(J=>J.kind==="time")}get isDuration(){return!!this._def.checks.find(J=>J.kind==="duration")}get isEmail(){return!!this._def.checks.find(J=>J.kind==="email")}get isURL(){return!!this._def.checks.find(J=>J.kind==="url")}get isEmoji(){return!!this._def.checks.find(J=>J.kind==="emoji")}get isUUID(){return!!this._def.checks.find(J=>J.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(J=>J.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(J=>J.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(J=>J.kind==="cuid2")}get isULID(){return!!this._def.checks.find(J=>J.kind==="ulid")}get isIP(){return!!this._def.checks.find(J=>J.kind==="ip")}get isBase64(){return!!this._def.checks.find(J=>J.kind==="base64")}get minLength(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxLength(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}};ZodString$1.create=ua=>{var J;return new ZodString$1({checks:[],typeName:ZodFirstPartyTypeKind$1.ZodString,coerce:(J=ua==null?void 0:ua.coerce)!==null&&J!==void 0?J:!1,...processCreateParams$1(ua)})};function floatSafeRemainder$1(ua,J){const la=(ua.toString().split(".")[1]||"").length,xa=(J.toString().split(".")[1]||"").length,Aa=la>xa?la:xa,ba=parseInt(ua.toFixed(Aa).replace(".","")),Sa=parseInt(J.toFixed(Aa).replace(".",""));return ba%Sa/Math.pow(10,Aa)}let ZodNumber$1=class NT extends ZodType$1{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(J){if(this._def.coerce&&(J.data=Number(J.data)),this._getType(J)!==ZodParsedType$1.number){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.number,received:ba.parsedType}),INVALID$1}let xa;const Aa=new ParseStatus$1;for(const ba of this._def.checks)ba.kind==="int"?util$2.isInteger(J.data)||(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:"integer",received:"float",message:ba.message}),Aa.dirty()):ba.kind==="min"?(ba.inclusive?J.data<ba.value:J.data<=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,minimum:ba.value,type:"number",inclusive:ba.inclusive,exact:!1,message:ba.message}),Aa.dirty()):ba.kind==="max"?(ba.inclusive?J.data>ba.value:J.data>=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,maximum:ba.value,type:"number",inclusive:ba.inclusive,exact:!1,message:ba.message}),Aa.dirty()):ba.kind==="multipleOf"?floatSafeRemainder$1(J.data,ba.value)!==0&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.not_multiple_of,multipleOf:ba.value,message:ba.message}),Aa.dirty()):ba.kind==="finite"?Number.isFinite(J.data)||(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.not_finite,message:ba.message}),Aa.dirty()):util$2.assertNever(ba);return{status:Aa.value,value:J.data}}gte(J,la){return this.setLimit("min",J,!0,errorUtil$2.toString(la))}gt(J,la){return this.setLimit("min",J,!1,errorUtil$2.toString(la))}lte(J,la){return this.setLimit("max",J,!0,errorUtil$2.toString(la))}lt(J,la){return this.setLimit("max",J,!1,errorUtil$2.toString(la))}setLimit(J,la,xa,Aa){return new NT({...this._def,checks:[...this._def.checks,{kind:J,value:la,inclusive:xa,message:errorUtil$2.toString(Aa)}]})}_addCheck(J){return new NT({...this._def,checks:[...this._def.checks,J]})}int(J){return this._addCheck({kind:"int",message:errorUtil$2.toString(J)})}positive(J){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil$2.toString(J)})}negative(J){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil$2.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil$2.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil$2.toString(J)})}multipleOf(J,la){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil$2.toString(la)})}finite(J){return this._addCheck({kind:"finite",message:errorUtil$2.toString(J)})}safe(J){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil$2.toString(J)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil$2.toString(J)})}get minValue(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxValue(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}get isInt(){return!!this._def.checks.find(J=>J.kind==="int"||J.kind==="multipleOf"&&util$2.isInteger(J.value))}get isFinite(){let J=null,la=null;for(const xa of this._def.checks){if(xa.kind==="finite"||xa.kind==="int"||xa.kind==="multipleOf")return!0;xa.kind==="min"?(la===null||xa.value>la)&&(la=xa.value):xa.kind==="max"&&(J===null||xa.value<J)&&(J=xa.value)}return Number.isFinite(la)&&Number.isFinite(J)}};ZodNumber$1.create=ua=>new ZodNumber$1({checks:[],typeName:ZodFirstPartyTypeKind$1.ZodNumber,coerce:(ua==null?void 0:ua.coerce)||!1,...processCreateParams$1(ua)});let ZodBigInt$1=class OT extends ZodType$1{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(J){if(this._def.coerce&&(J.data=BigInt(J.data)),this._getType(J)!==ZodParsedType$1.bigint){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.bigint,received:ba.parsedType}),INVALID$1}let xa;const Aa=new ParseStatus$1;for(const ba of this._def.checks)ba.kind==="min"?(ba.inclusive?J.data<ba.value:J.data<=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,type:"bigint",minimum:ba.value,inclusive:ba.inclusive,message:ba.message}),Aa.dirty()):ba.kind==="max"?(ba.inclusive?J.data>ba.value:J.data>=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,type:"bigint",maximum:ba.value,inclusive:ba.inclusive,message:ba.message}),Aa.dirty()):ba.kind==="multipleOf"?J.data%ba.value!==BigInt(0)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext$1(xa,{code:ZodIssueCode$1.not_multiple_of,multipleOf:ba.value,message:ba.message}),Aa.dirty()):util$2.assertNever(ba);return{status:Aa.value,value:J.data}}gte(J,la){return this.setLimit("min",J,!0,errorUtil$2.toString(la))}gt(J,la){return this.setLimit("min",J,!1,errorUtil$2.toString(la))}lte(J,la){return this.setLimit("max",J,!0,errorUtil$2.toString(la))}lt(J,la){return this.setLimit("max",J,!1,errorUtil$2.toString(la))}setLimit(J,la,xa,Aa){return new OT({...this._def,checks:[...this._def.checks,{kind:J,value:la,inclusive:xa,message:errorUtil$2.toString(Aa)}]})}_addCheck(J){return new OT({...this._def,checks:[...this._def.checks,J]})}positive(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil$2.toString(J)})}negative(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil$2.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil$2.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil$2.toString(J)})}multipleOf(J,la){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil$2.toString(la)})}get minValue(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxValue(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}};ZodBigInt$1.create=ua=>{var J;return new ZodBigInt$1({checks:[],typeName:ZodFirstPartyTypeKind$1.ZodBigInt,coerce:(J=ua==null?void 0:ua.coerce)!==null&&J!==void 0?J:!1,...processCreateParams$1(ua)})};let ZodBoolean$1=class extends ZodType$1{_parse(J){if(this._def.coerce&&(J.data=!!J.data),this._getType(J)!==ZodParsedType$1.boolean){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.boolean,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodBoolean$1.create=ua=>new ZodBoolean$1({typeName:ZodFirstPartyTypeKind$1.ZodBoolean,coerce:(ua==null?void 0:ua.coerce)||!1,...processCreateParams$1(ua)});let ZodDate$1=class jM extends ZodType$1{_parse(J){if(this._def.coerce&&(J.data=new Date(J.data)),this._getType(J)!==ZodParsedType$1.date){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.date,received:ba.parsedType}),INVALID$1}if(isNaN(J.data.getTime())){const ba=this._getOrReturnCtx(J);return addIssueToContext$1(ba,{code:ZodIssueCode$1.invalid_date}),INVALID$1}const xa=new ParseStatus$1;let Aa;for(const ba of this._def.checks)ba.kind==="min"?J.data.getTime()<ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_small,message:ba.message,inclusive:!0,exact:!1,minimum:ba.value,type:"date"}),xa.dirty()):ba.kind==="max"?J.data.getTime()>ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext$1(Aa,{code:ZodIssueCode$1.too_big,message:ba.message,inclusive:!0,exact:!1,maximum:ba.value,type:"date"}),xa.dirty()):util$2.assertNever(ba);return{status:xa.value,value:new Date(J.data.getTime())}}_addCheck(J){return new jM({...this._def,checks:[...this._def.checks,J]})}min(J,la){return this._addCheck({kind:"min",value:J.getTime(),message:errorUtil$2.toString(la)})}max(J,la){return this._addCheck({kind:"max",value:J.getTime(),message:errorUtil$2.toString(la)})}get minDate(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J!=null?new Date(J):null}get maxDate(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J!=null?new Date(J):null}};ZodDate$1.create=ua=>new ZodDate$1({checks:[],coerce:(ua==null?void 0:ua.coerce)||!1,typeName:ZodFirstPartyTypeKind$1.ZodDate,...processCreateParams$1(ua)});let ZodSymbol$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.symbol){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.symbol,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodSymbol$1.create=ua=>new ZodSymbol$1({typeName:ZodFirstPartyTypeKind$1.ZodSymbol,...processCreateParams$1(ua)});let ZodUndefined$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.undefined){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.undefined,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodUndefined$1.create=ua=>new ZodUndefined$1({typeName:ZodFirstPartyTypeKind$1.ZodUndefined,...processCreateParams$1(ua)});let ZodNull$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.null){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.null,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodNull$1.create=ua=>new ZodNull$1({typeName:ZodFirstPartyTypeKind$1.ZodNull,...processCreateParams$1(ua)});let ZodAny$1=class extends ZodType$1{constructor(){super(...arguments),this._any=!0}_parse(J){return OK$1(J.data)}};ZodAny$1.create=ua=>new ZodAny$1({typeName:ZodFirstPartyTypeKind$1.ZodAny,...processCreateParams$1(ua)});let ZodUnknown$1=class extends ZodType$1{constructor(){super(...arguments),this._unknown=!0}_parse(J){return OK$1(J.data)}};ZodUnknown$1.create=ua=>new ZodUnknown$1({typeName:ZodFirstPartyTypeKind$1.ZodUnknown,...processCreateParams$1(ua)});let ZodNever$1=class extends ZodType$1{_parse(J){const la=this._getOrReturnCtx(J);return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.never,received:la.parsedType}),INVALID$1}};ZodNever$1.create=ua=>new ZodNever$1({typeName:ZodFirstPartyTypeKind$1.ZodNever,...processCreateParams$1(ua)});let ZodVoid$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.undefined){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.void,received:xa.parsedType}),INVALID$1}return OK$1(J.data)}};ZodVoid$1.create=ua=>new ZodVoid$1({typeName:ZodFirstPartyTypeKind$1.ZodVoid,...processCreateParams$1(ua)});let ZodArray$1=class PE extends ZodType$1{_parse(J){const{ctx:la,status:xa}=this._processInputParams(J),Aa=this._def;if(la.parsedType!==ZodParsedType$1.array)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.array,received:la.parsedType}),INVALID$1;if(Aa.exactLength!==null){const Sa=la.data.length>Aa.exactLength.value,Ma=la.data.length<Aa.exactLength.value;(Sa||Ma)&&(addIssueToContext$1(la,{code:Sa?ZodIssueCode$1.too_big:ZodIssueCode$1.too_small,minimum:Ma?Aa.exactLength.value:void 0,maximum:Sa?Aa.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:Aa.exactLength.message}),xa.dirty())}if(Aa.minLength!==null&&la.data.length<Aa.minLength.value&&(addIssueToContext$1(la,{code:ZodIssueCode$1.too_small,minimum:Aa.minLength.value,type:"array",inclusive:!0,exact:!1,message:Aa.minLength.message}),xa.dirty()),Aa.maxLength!==null&&la.data.length>Aa.maxLength.value&&(addIssueToContext$1(la,{code:ZodIssueCode$1.too_big,maximum:Aa.maxLength.value,type:"array",inclusive:!0,exact:!1,message:Aa.maxLength.message}),xa.dirty()),la.common.async)return Promise.all([...la.data].map((Sa,Ma)=>Aa.type._parseAsync(new ParseInputLazyPath$1(la,Sa,la.path,Ma)))).then(Sa=>ParseStatus$1.mergeArray(xa,Sa));const ba=[...la.data].map((Sa,Ma)=>Aa.type._parseSync(new ParseInputLazyPath$1(la,Sa,la.path,Ma)));return ParseStatus$1.mergeArray(xa,ba)}get element(){return this._def.type}min(J,la){return new PE({...this._def,minLength:{value:J,message:errorUtil$2.toString(la)}})}max(J,la){return new PE({...this._def,maxLength:{value:J,message:errorUtil$2.toString(la)}})}length(J,la){return new PE({...this._def,exactLength:{value:J,message:errorUtil$2.toString(la)}})}nonempty(J){return this.min(1,J)}};ZodArray$1.create=(ua,J)=>new ZodArray$1({type:ua,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind$1.ZodArray,...processCreateParams$1(J)});function deepPartialify$1(ua){if(ua instanceof ZodObject$1){const J={};for(const la in ua.shape){const xa=ua.shape[la];J[la]=ZodOptional$1.create(deepPartialify$1(xa))}return new ZodObject$1({...ua._def,shape:()=>J})}else return ua instanceof ZodArray$1?new ZodArray$1({...ua._def,type:deepPartialify$1(ua.element)}):ua instanceof ZodOptional$1?ZodOptional$1.create(deepPartialify$1(ua.unwrap())):ua instanceof ZodNullable$1?ZodNullable$1.create(deepPartialify$1(ua.unwrap())):ua instanceof ZodTuple$1?ZodTuple$1.create(ua.items.map(J=>deepPartialify$1(J))):ua}let ZodObject$1=class t7 extends ZodType$1{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const J=this._def.shape(),la=util$2.objectKeys(J);return this._cached={shape:J,keys:la}}_parse(J){if(this._getType(J)!==ZodParsedType$1.object){const Ia=this._getOrReturnCtx(J);return addIssueToContext$1(Ia,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.object,received:Ia.parsedType}),INVALID$1}const{status:xa,ctx:Aa}=this._processInputParams(J),{shape:ba,keys:Sa}=this._getCached(),Ma=[];if(!(this._def.catchall instanceof ZodNever$1&&this._def.unknownKeys==="strip"))for(const Ia in Aa.data)Sa.includes(Ia)||Ma.push(Ia);const Ra=[];for(const Ia of Sa){const La=ba[Ia],Fa=Aa.data[Ia];Ra.push({key:{status:"valid",value:Ia},value:La._parse(new ParseInputLazyPath$1(Aa,Fa,Aa.path,Ia)),alwaysSet:Ia in Aa.data})}if(this._def.catchall instanceof ZodNever$1){const Ia=this._def.unknownKeys;if(Ia==="passthrough")for(const La of Ma)Ra.push({key:{status:"valid",value:La},value:{status:"valid",value:Aa.data[La]}});else if(Ia==="strict")Ma.length>0&&(addIssueToContext$1(Aa,{code:ZodIssueCode$1.unrecognized_keys,keys:Ma}),xa.dirty());else if(Ia!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const Ia=this._def.catchall;for(const La of Ma){const Fa=Aa.data[La];Ra.push({key:{status:"valid",value:La},value:Ia._parse(new ParseInputLazyPath$1(Aa,Fa,Aa.path,La)),alwaysSet:La in Aa.data})}}return Aa.common.async?Promise.resolve().then(async()=>{const Ia=[];for(const La of Ra){const Fa=await La.key,ka=await La.value;Ia.push({key:Fa,value:ka,alwaysSet:La.alwaysSet})}return Ia}).then(Ia=>ParseStatus$1.mergeObjectSync(xa,Ia)):ParseStatus$1.mergeObjectSync(xa,Ra)}get shape(){return this._def.shape()}strict(J){return errorUtil$2.errToObj,new t7({...this._def,unknownKeys:"strict",...J!==void 0?{errorMap:(la,xa)=>{var Aa,ba,Sa,Ma;const Ra=(Sa=(ba=(Aa=this._def).errorMap)===null||ba===void 0?void 0:ba.call(Aa,la,xa).message)!==null&&Sa!==void 0?Sa:xa.defaultError;return la.code==="unrecognized_keys"?{message:(Ma=errorUtil$2.errToObj(J).message)!==null&&Ma!==void 0?Ma:Ra}:{message:Ra}}}:{}})}strip(){return new t7({...this._def,unknownKeys:"strip"})}passthrough(){return new t7({...this._def,unknownKeys:"passthrough"})}extend(J){return new t7({...this._def,shape:()=>({...this._def.shape(),...J})})}merge(J){return new t7({unknownKeys:J._def.unknownKeys,catchall:J._def.catchall,shape:()=>({...this._def.shape(),...J._def.shape()}),typeName:ZodFirstPartyTypeKind$1.ZodObject})}setKey(J,la){return this.augment({[J]:la})}catchall(J){return new t7({...this._def,catchall:J})}pick(J){const la={};return util$2.objectKeys(J).forEach(xa=>{J[xa]&&this.shape[xa]&&(la[xa]=this.shape[xa])}),new t7({...this._def,shape:()=>la})}omit(J){const la={};return util$2.objectKeys(this.shape).forEach(xa=>{J[xa]||(la[xa]=this.shape[xa])}),new t7({...this._def,shape:()=>la})}deepPartial(){return deepPartialify$1(this)}partial(J){const la={};return util$2.objectKeys(this.shape).forEach(xa=>{const Aa=this.shape[xa];J&&!J[xa]?la[xa]=Aa:la[xa]=Aa.optional()}),new t7({...this._def,shape:()=>la})}required(J){const la={};return util$2.objectKeys(this.shape).forEach(xa=>{if(J&&!J[xa])la[xa]=this.shape[xa];else{let ba=this.shape[xa];for(;ba instanceof ZodOptional$1;)ba=ba._def.innerType;la[xa]=ba}}),new t7({...this._def,shape:()=>la})}keyof(){return createZodEnum$1(util$2.objectKeys(this.shape))}};ZodObject$1.create=(ua,J)=>new ZodObject$1({shape:()=>ua,unknownKeys:"strip",catchall:ZodNever$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodObject,...processCreateParams$1(J)}),ZodObject$1.strictCreate=(ua,J)=>new ZodObject$1({shape:()=>ua,unknownKeys:"strict",catchall:ZodNever$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodObject,...processCreateParams$1(J)}),ZodObject$1.lazycreate=(ua,J)=>new ZodObject$1({shape:ua,unknownKeys:"strip",catchall:ZodNever$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodObject,...processCreateParams$1(J)});let ZodUnion$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J),xa=this._def.options;function Aa(ba){for(const Ma of ba)if(Ma.result.status==="valid")return Ma.result;for(const Ma of ba)if(Ma.result.status==="dirty")return la.common.issues.push(...Ma.ctx.common.issues),Ma.result;const Sa=ba.map(Ma=>new ZodError$2(Ma.ctx.common.issues));return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_union,unionErrors:Sa}),INVALID$1}if(la.common.async)return Promise.all(xa.map(async ba=>{const Sa={...la,common:{...la.common,issues:[]},parent:null};return{result:await ba._parseAsync({data:la.data,path:la.path,parent:Sa}),ctx:Sa}})).then(Aa);{let ba;const Sa=[];for(const Ra of xa){const Ia={...la,common:{...la.common,issues:[]},parent:null},La=Ra._parseSync({data:la.data,path:la.path,parent:Ia});if(La.status==="valid")return La;La.status==="dirty"&&!ba&&(ba={result:La,ctx:Ia}),Ia.common.issues.length&&Sa.push(Ia.common.issues)}if(ba)return la.common.issues.push(...ba.ctx.common.issues),ba.result;const Ma=Sa.map(Ra=>new ZodError$2(Ra));return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_union,unionErrors:Ma}),INVALID$1}}get options(){return this._def.options}};ZodUnion$1.create=(ua,J)=>new ZodUnion$1({options:ua,typeName:ZodFirstPartyTypeKind$1.ZodUnion,...processCreateParams$1(J)});const getDiscriminator$1=ua=>ua instanceof ZodLazy$1?getDiscriminator$1(ua.schema):ua instanceof ZodEffects$1?getDiscriminator$1(ua.innerType()):ua instanceof ZodLiteral$1?[ua.value]:ua instanceof ZodEnum$1?ua.options:ua instanceof ZodNativeEnum$1?util$2.objectValues(ua.enum):ua instanceof ZodDefault$1?getDiscriminator$1(ua._def.innerType):ua instanceof ZodUndefined$1?[void 0]:ua instanceof ZodNull$1?[null]:ua instanceof ZodOptional$1?[void 0,...getDiscriminator$1(ua.unwrap())]:ua instanceof ZodNullable$1?[null,...getDiscriminator$1(ua.unwrap())]:ua instanceof ZodBranded$1||ua instanceof ZodReadonly$1?getDiscriminator$1(ua.unwrap()):ua instanceof ZodCatch$1?getDiscriminator$1(ua._def.innerType):[];let ZodDiscriminatedUnion$1=class QM extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType$1.object)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.object,received:la.parsedType}),INVALID$1;const xa=this.discriminator,Aa=la.data[xa],ba=this.optionsMap.get(Aa);return ba?la.common.async?ba._parseAsync({data:la.data,path:la.path,parent:la}):ba._parseSync({data:la.data,path:la.path,parent:la}):(addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[xa]}),INVALID$1)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(J,la,xa){const Aa=new Map;for(const ba of la){const Sa=getDiscriminator$1(ba.shape[J]);if(!Sa.length)throw new Error(`A discriminator value for key \`${J}\` could not be extracted from all schema options`);for(const Ma of Sa){if(Aa.has(Ma))throw new Error(`Discriminator property ${String(J)} has duplicate value ${String(Ma)}`);Aa.set(Ma,ba)}}return new QM({typeName:ZodFirstPartyTypeKind$1.ZodDiscriminatedUnion,discriminator:J,options:la,optionsMap:Aa,...processCreateParams$1(xa)})}};function mergeValues$1(ua,J){const la=getParsedType$1(ua),xa=getParsedType$1(J);if(ua===J)return{valid:!0,data:ua};if(la===ZodParsedType$1.object&&xa===ZodParsedType$1.object){const Aa=util$2.objectKeys(J),ba=util$2.objectKeys(ua).filter(Ma=>Aa.indexOf(Ma)!==-1),Sa={...ua,...J};for(const Ma of ba){const Ra=mergeValues$1(ua[Ma],J[Ma]);if(!Ra.valid)return{valid:!1};Sa[Ma]=Ra.data}return{valid:!0,data:Sa}}else if(la===ZodParsedType$1.array&&xa===ZodParsedType$1.array){if(ua.length!==J.length)return{valid:!1};const Aa=[];for(let ba=0;ba<ua.length;ba++){const Sa=ua[ba],Ma=J[ba],Ra=mergeValues$1(Sa,Ma);if(!Ra.valid)return{valid:!1};Aa.push(Ra.data)}return{valid:!0,data:Aa}}else return la===ZodParsedType$1.date&&xa===ZodParsedType$1.date&&+ua==+J?{valid:!0,data:ua}:{valid:!1}}let ZodIntersection$1=class extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J),Aa=(ba,Sa)=>{if(isAborted$1(ba)||isAborted$1(Sa))return INVALID$1;const Ma=mergeValues$1(ba.value,Sa.value);return Ma.valid?((isDirty$1(ba)||isDirty$1(Sa))&&la.dirty(),{status:la.value,value:Ma.data}):(addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_intersection_types}),INVALID$1)};return xa.common.async?Promise.all([this._def.left._parseAsync({data:xa.data,path:xa.path,parent:xa}),this._def.right._parseAsync({data:xa.data,path:xa.path,parent:xa})]).then(([ba,Sa])=>Aa(ba,Sa)):Aa(this._def.left._parseSync({data:xa.data,path:xa.path,parent:xa}),this._def.right._parseSync({data:xa.data,path:xa.path,parent:xa}))}};ZodIntersection$1.create=(ua,J,la)=>new ZodIntersection$1({left:ua,right:J,typeName:ZodFirstPartyTypeKind$1.ZodIntersection,...processCreateParams$1(la)});let ZodTuple$1=class WM extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.array)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.array,received:xa.parsedType}),INVALID$1;if(xa.data.length<this._def.items.length)return addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID$1;!this._def.rest&&xa.data.length>this._def.items.length&&(addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),la.dirty());const ba=[...xa.data].map((Sa,Ma)=>{const Ra=this._def.items[Ma]||this._def.rest;return Ra?Ra._parse(new ParseInputLazyPath$1(xa,Sa,xa.path,Ma)):null}).filter(Sa=>!!Sa);return xa.common.async?Promise.all(ba).then(Sa=>ParseStatus$1.mergeArray(la,Sa)):ParseStatus$1.mergeArray(la,ba)}get items(){return this._def.items}rest(J){return new WM({...this._def,rest:J})}};ZodTuple$1.create=(ua,J)=>{if(!Array.isArray(ua))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple$1({items:ua,typeName:ZodFirstPartyTypeKind$1.ZodTuple,rest:null,...processCreateParams$1(J)})};let ZodRecord$1=class UT extends ZodType$1{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.object)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.object,received:xa.parsedType}),INVALID$1;const Aa=[],ba=this._def.keyType,Sa=this._def.valueType;for(const Ma in xa.data)Aa.push({key:ba._parse(new ParseInputLazyPath$1(xa,Ma,xa.path,Ma)),value:Sa._parse(new ParseInputLazyPath$1(xa,xa.data[Ma],xa.path,Ma)),alwaysSet:Ma in xa.data});return xa.common.async?ParseStatus$1.mergeObjectAsync(la,Aa):ParseStatus$1.mergeObjectSync(la,Aa)}get element(){return this._def.valueType}static create(J,la,xa){return la instanceof ZodType$1?new UT({keyType:J,valueType:la,typeName:ZodFirstPartyTypeKind$1.ZodRecord,...processCreateParams$1(xa)}):new UT({keyType:ZodString$1.create(),valueType:J,typeName:ZodFirstPartyTypeKind$1.ZodRecord,...processCreateParams$1(la)})}},ZodMap$1=class extends ZodType$1{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.map)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.map,received:xa.parsedType}),INVALID$1;const Aa=this._def.keyType,ba=this._def.valueType,Sa=[...xa.data.entries()].map(([Ma,Ra],Ia)=>({key:Aa._parse(new ParseInputLazyPath$1(xa,Ma,xa.path,[Ia,"key"])),value:ba._parse(new ParseInputLazyPath$1(xa,Ra,xa.path,[Ia,"value"]))}));if(xa.common.async){const Ma=new Map;return Promise.resolve().then(async()=>{for(const Ra of Sa){const Ia=await Ra.key,La=await Ra.value;if(Ia.status==="aborted"||La.status==="aborted")return INVALID$1;(Ia.status==="dirty"||La.status==="dirty")&&la.dirty(),Ma.set(Ia.value,La.value)}return{status:la.value,value:Ma}})}else{const Ma=new Map;for(const Ra of Sa){const Ia=Ra.key,La=Ra.value;if(Ia.status==="aborted"||La.status==="aborted")return INVALID$1;(Ia.status==="dirty"||La.status==="dirty")&&la.dirty(),Ma.set(Ia.value,La.value)}return{status:la.value,value:Ma}}}};ZodMap$1.create=(ua,J,la)=>new ZodMap$1({valueType:J,keyType:ua,typeName:ZodFirstPartyTypeKind$1.ZodMap,...processCreateParams$1(la)});let ZodSet$1=class kT extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType$1.set)return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.set,received:xa.parsedType}),INVALID$1;const Aa=this._def;Aa.minSize!==null&&xa.data.size<Aa.minSize.value&&(addIssueToContext$1(xa,{code:ZodIssueCode$1.too_small,minimum:Aa.minSize.value,type:"set",inclusive:!0,exact:!1,message:Aa.minSize.message}),la.dirty()),Aa.maxSize!==null&&xa.data.size>Aa.maxSize.value&&(addIssueToContext$1(xa,{code:ZodIssueCode$1.too_big,maximum:Aa.maxSize.value,type:"set",inclusive:!0,exact:!1,message:Aa.maxSize.message}),la.dirty());const ba=this._def.valueType;function Sa(Ra){const Ia=new Set;for(const La of Ra){if(La.status==="aborted")return INVALID$1;La.status==="dirty"&&la.dirty(),Ia.add(La.value)}return{status:la.value,value:Ia}}const Ma=[...xa.data.values()].map((Ra,Ia)=>ba._parse(new ParseInputLazyPath$1(xa,Ra,xa.path,Ia)));return xa.common.async?Promise.all(Ma).then(Ra=>Sa(Ra)):Sa(Ma)}min(J,la){return new kT({...this._def,minSize:{value:J,message:errorUtil$2.toString(la)}})}max(J,la){return new kT({...this._def,maxSize:{value:J,message:errorUtil$2.toString(la)}})}size(J,la){return this.min(J,la).max(J,la)}nonempty(J){return this.min(1,J)}};ZodSet$1.create=(ua,J)=>new ZodSet$1({valueType:ua,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind$1.ZodSet,...processCreateParams$1(J)});let ZodFunction$1=class IE extends ZodType$1{constructor(){super(...arguments),this.validate=this.implement}_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType$1.function)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.function,received:la.parsedType}),INVALID$1;function xa(Ma,Ra){return makeIssue$1({data:Ma,path:la.path,errorMaps:[la.common.contextualErrorMap,la.schemaErrorMap,getErrorMap$1(),errorMap$1].filter(Ia=>!!Ia),issueData:{code:ZodIssueCode$1.invalid_arguments,argumentsError:Ra}})}function Aa(Ma,Ra){return makeIssue$1({data:Ma,path:la.path,errorMaps:[la.common.contextualErrorMap,la.schemaErrorMap,getErrorMap$1(),errorMap$1].filter(Ia=>!!Ia),issueData:{code:ZodIssueCode$1.invalid_return_type,returnTypeError:Ra}})}const ba={errorMap:la.common.contextualErrorMap},Sa=la.data;if(this._def.returns instanceof ZodPromise$1){const Ma=this;return OK$1(async function(...Ra){const Ia=new ZodError$2([]),La=await Ma._def.args.parseAsync(Ra,ba).catch(el=>{throw Ia.addIssue(xa(Ra,el)),Ia}),Fa=await Reflect.apply(Sa,this,La);return await Ma._def.returns._def.type.parseAsync(Fa,ba).catch(el=>{throw Ia.addIssue(Aa(Fa,el)),Ia})})}else{const Ma=this;return OK$1(function(...Ra){const Ia=Ma._def.args.safeParse(Ra,ba);if(!Ia.success)throw new ZodError$2([xa(Ra,Ia.error)]);const La=Reflect.apply(Sa,this,Ia.data),Fa=Ma._def.returns.safeParse(La,ba);if(!Fa.success)throw new ZodError$2([Aa(La,Fa.error)]);return Fa.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...J){return new IE({...this._def,args:ZodTuple$1.create(J).rest(ZodUnknown$1.create())})}returns(J){return new IE({...this._def,returns:J})}implement(J){return this.parse(J)}strictImplement(J){return this.parse(J)}static create(J,la,xa){return new IE({args:J||ZodTuple$1.create([]).rest(ZodUnknown$1.create()),returns:la||ZodUnknown$1.create(),typeName:ZodFirstPartyTypeKind$1.ZodFunction,...processCreateParams$1(xa)})}},ZodLazy$1=class extends ZodType$1{get schema(){return this._def.getter()}_parse(J){const{ctx:la}=this._processInputParams(J);return this._def.getter()._parse({data:la.data,path:la.path,parent:la})}};ZodLazy$1.create=(ua,J)=>new ZodLazy$1({getter:ua,typeName:ZodFirstPartyTypeKind$1.ZodLazy,...processCreateParams$1(J)});let ZodLiteral$1=class extends ZodType$1{_parse(J){if(J.data!==this._def.value){const la=this._getOrReturnCtx(J);return addIssueToContext$1(la,{received:la.data,code:ZodIssueCode$1.invalid_literal,expected:this._def.value}),INVALID$1}return{status:"valid",value:J.data}}get value(){return this._def.value}};ZodLiteral$1.create=(ua,J)=>new ZodLiteral$1({value:ua,typeName:ZodFirstPartyTypeKind$1.ZodLiteral,...processCreateParams$1(J)});function createZodEnum$1(ua,J){return new ZodEnum$1({values:ua,typeName:ZodFirstPartyTypeKind$1.ZodEnum,...processCreateParams$1(J)})}let ZodEnum$1=class zT extends ZodType$1{constructor(){super(...arguments),_ZodEnum_cache$1.set(this,void 0)}_parse(J){if(typeof J.data!="string"){const la=this._getOrReturnCtx(J),xa=this._def.values;return addIssueToContext$1(la,{expected:util$2.joinValues(xa),received:la.parsedType,code:ZodIssueCode$1.invalid_type}),INVALID$1}if(__classPrivateFieldGet$1(this,_ZodEnum_cache$1)||__classPrivateFieldSet$1(this,_ZodEnum_cache$1,new Set(this._def.values)),!__classPrivateFieldGet$1(this,_ZodEnum_cache$1).has(J.data)){const la=this._getOrReturnCtx(J),xa=this._def.values;return addIssueToContext$1(la,{received:la.data,code:ZodIssueCode$1.invalid_enum_value,options:xa}),INVALID$1}return OK$1(J.data)}get options(){return this._def.values}get enum(){const J={};for(const la of this._def.values)J[la]=la;return J}get Values(){const J={};for(const la of this._def.values)J[la]=la;return J}get Enum(){const J={};for(const la of this._def.values)J[la]=la;return J}extract(J,la=this._def){return zT.create(J,{...this._def,...la})}exclude(J,la=this._def){return zT.create(this.options.filter(xa=>!J.includes(xa)),{...this._def,...la})}};_ZodEnum_cache$1=new WeakMap,ZodEnum$1.create=createZodEnum$1;let ZodNativeEnum$1=class extends ZodType$1{constructor(){super(...arguments),_ZodNativeEnum_cache$1.set(this,void 0)}_parse(J){const la=util$2.getValidEnumValues(this._def.values),xa=this._getOrReturnCtx(J);if(xa.parsedType!==ZodParsedType$1.string&&xa.parsedType!==ZodParsedType$1.number){const Aa=util$2.objectValues(la);return addIssueToContext$1(xa,{expected:util$2.joinValues(Aa),received:xa.parsedType,code:ZodIssueCode$1.invalid_type}),INVALID$1}if(__classPrivateFieldGet$1(this,_ZodNativeEnum_cache$1)||__classPrivateFieldSet$1(this,_ZodNativeEnum_cache$1,new Set(util$2.getValidEnumValues(this._def.values))),!__classPrivateFieldGet$1(this,_ZodNativeEnum_cache$1).has(J.data)){const Aa=util$2.objectValues(la);return addIssueToContext$1(xa,{received:xa.data,code:ZodIssueCode$1.invalid_enum_value,options:Aa}),INVALID$1}return OK$1(J.data)}get enum(){return this._def.values}};_ZodNativeEnum_cache$1=new WeakMap,ZodNativeEnum$1.create=(ua,J)=>new ZodNativeEnum$1({values:ua,typeName:ZodFirstPartyTypeKind$1.ZodNativeEnum,...processCreateParams$1(J)});let ZodPromise$1=class extends ZodType$1{unwrap(){return this._def.type}_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType$1.promise&&la.common.async===!1)return addIssueToContext$1(la,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.promise,received:la.parsedType}),INVALID$1;const xa=la.parsedType===ZodParsedType$1.promise?la.data:Promise.resolve(la.data);return OK$1(xa.then(Aa=>this._def.type.parseAsync(Aa,{path:la.path,errorMap:la.common.contextualErrorMap})))}};ZodPromise$1.create=(ua,J)=>new ZodPromise$1({type:ua,typeName:ZodFirstPartyTypeKind$1.ZodPromise,...processCreateParams$1(J)});let ZodEffects$1=class extends ZodType$1{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind$1.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(J){const{status:la,ctx:xa}=this._processInputParams(J),Aa=this._def.effect||null,ba={addIssue:Sa=>{addIssueToContext$1(xa,Sa),Sa.fatal?la.abort():la.dirty()},get path(){return xa.path}};if(ba.addIssue=ba.addIssue.bind(ba),Aa.type==="preprocess"){const Sa=Aa.transform(xa.data,ba);if(xa.common.async)return Promise.resolve(Sa).then(async Ma=>{if(la.value==="aborted")return INVALID$1;const Ra=await this._def.schema._parseAsync({data:Ma,path:xa.path,parent:xa});return Ra.status==="aborted"?INVALID$1:Ra.status==="dirty"||la.value==="dirty"?DIRTY$1(Ra.value):Ra});{if(la.value==="aborted")return INVALID$1;const Ma=this._def.schema._parseSync({data:Sa,path:xa.path,parent:xa});return Ma.status==="aborted"?INVALID$1:Ma.status==="dirty"||la.value==="dirty"?DIRTY$1(Ma.value):Ma}}if(Aa.type==="refinement"){const Sa=Ma=>{const Ra=Aa.refinement(Ma,ba);if(xa.common.async)return Promise.resolve(Ra);if(Ra instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return Ma};if(xa.common.async===!1){const Ma=this._def.schema._parseSync({data:xa.data,path:xa.path,parent:xa});return Ma.status==="aborted"?INVALID$1:(Ma.status==="dirty"&&la.dirty(),Sa(Ma.value),{status:la.value,value:Ma.value})}else return this._def.schema._parseAsync({data:xa.data,path:xa.path,parent:xa}).then(Ma=>Ma.status==="aborted"?INVALID$1:(Ma.status==="dirty"&&la.dirty(),Sa(Ma.value).then(()=>({status:la.value,value:Ma.value}))))}if(Aa.type==="transform")if(xa.common.async===!1){const Sa=this._def.schema._parseSync({data:xa.data,path:xa.path,parent:xa});if(!isValid$2(Sa))return Sa;const Ma=Aa.transform(Sa.value,ba);if(Ma instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:la.value,value:Ma}}else return this._def.schema._parseAsync({data:xa.data,path:xa.path,parent:xa}).then(Sa=>isValid$2(Sa)?Promise.resolve(Aa.transform(Sa.value,ba)).then(Ma=>({status:la.value,value:Ma})):Sa);util$2.assertNever(Aa)}};ZodEffects$1.create=(ua,J,la)=>new ZodEffects$1({schema:ua,typeName:ZodFirstPartyTypeKind$1.ZodEffects,effect:J,...processCreateParams$1(la)}),ZodEffects$1.createWithPreprocess=(ua,J,la)=>new ZodEffects$1({schema:J,effect:{type:"preprocess",transform:ua},typeName:ZodFirstPartyTypeKind$1.ZodEffects,...processCreateParams$1(la)});let ZodOptional$1=class extends ZodType$1{_parse(J){return this._getType(J)===ZodParsedType$1.undefined?OK$1(void 0):this._def.innerType._parse(J)}unwrap(){return this._def.innerType}};ZodOptional$1.create=(ua,J)=>new ZodOptional$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodOptional,...processCreateParams$1(J)});let ZodNullable$1=class extends ZodType$1{_parse(J){return this._getType(J)===ZodParsedType$1.null?OK$1(null):this._def.innerType._parse(J)}unwrap(){return this._def.innerType}};ZodNullable$1.create=(ua,J)=>new ZodNullable$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodNullable,...processCreateParams$1(J)});let ZodDefault$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J);let xa=la.data;return la.parsedType===ZodParsedType$1.undefined&&(xa=this._def.defaultValue()),this._def.innerType._parse({data:xa,path:la.path,parent:la})}removeDefault(){return this._def.innerType}};ZodDefault$1.create=(ua,J)=>new ZodDefault$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodDefault,defaultValue:typeof J.default=="function"?J.default:()=>J.default,...processCreateParams$1(J)});let ZodCatch$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J),xa={...la,common:{...la.common,issues:[]}},Aa=this._def.innerType._parse({data:xa.data,path:xa.path,parent:{...xa}});return isAsync$1(Aa)?Aa.then(ba=>({status:"valid",value:ba.status==="valid"?ba.value:this._def.catchValue({get error(){return new ZodError$2(xa.common.issues)},input:xa.data})})):{status:"valid",value:Aa.status==="valid"?Aa.value:this._def.catchValue({get error(){return new ZodError$2(xa.common.issues)},input:xa.data})}}removeCatch(){return this._def.innerType}};ZodCatch$1.create=(ua,J)=>new ZodCatch$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodCatch,catchValue:typeof J.catch=="function"?J.catch:()=>J.catch,...processCreateParams$1(J)});let ZodNaN$1=class extends ZodType$1{_parse(J){if(this._getType(J)!==ZodParsedType$1.nan){const xa=this._getOrReturnCtx(J);return addIssueToContext$1(xa,{code:ZodIssueCode$1.invalid_type,expected:ZodParsedType$1.nan,received:xa.parsedType}),INVALID$1}return{status:"valid",value:J.data}}};ZodNaN$1.create=ua=>new ZodNaN$1({typeName:ZodFirstPartyTypeKind$1.ZodNaN,...processCreateParams$1(ua)});const BRAND$1=Symbol("zod_brand");let ZodBranded$1=class extends ZodType$1{_parse(J){const{ctx:la}=this._processInputParams(J),xa=la.data;return this._def.type._parse({data:xa,path:la.path,parent:la})}unwrap(){return this._def.type}},ZodPipeline$1=class XM extends ZodType$1{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.common.async)return(async()=>{const ba=await this._def.in._parseAsync({data:xa.data,path:xa.path,parent:xa});return ba.status==="aborted"?INVALID$1:ba.status==="dirty"?(la.dirty(),DIRTY$1(ba.value)):this._def.out._parseAsync({data:ba.value,path:xa.path,parent:xa})})();{const Aa=this._def.in._parseSync({data:xa.data,path:xa.path,parent:xa});return Aa.status==="aborted"?INVALID$1:Aa.status==="dirty"?(la.dirty(),{status:"dirty",value:Aa.value}):this._def.out._parseSync({data:Aa.value,path:xa.path,parent:xa})}}static create(J,la){return new XM({in:J,out:la,typeName:ZodFirstPartyTypeKind$1.ZodPipeline})}},ZodReadonly$1=class extends ZodType$1{_parse(J){const la=this._def.innerType._parse(J),xa=Aa=>(isValid$2(Aa)&&(Aa.value=Object.freeze(Aa.value)),Aa);return isAsync$1(la)?la.then(Aa=>xa(Aa)):xa(la)}unwrap(){return this._def.innerType}};ZodReadonly$1.create=(ua,J)=>new ZodReadonly$1({innerType:ua,typeName:ZodFirstPartyTypeKind$1.ZodReadonly,...processCreateParams$1(J)});function custom$1(ua,J={},la){return ua?ZodAny$1.create().superRefine((xa,Aa)=>{var ba,Sa;if(!ua(xa)){const Ma=typeof J=="function"?J(xa):typeof J=="string"?{message:J}:J,Ra=(Sa=(ba=Ma.fatal)!==null&&ba!==void 0?ba:la)!==null&&Sa!==void 0?Sa:!0,Ia=typeof Ma=="string"?{message:Ma}:Ma;Aa.addIssue({code:"custom",...Ia,fatal:Ra})}}):ZodAny$1.create()}const late$1={object:ZodObject$1.lazycreate};var ZodFirstPartyTypeKind$1;(function(ua){ua.ZodString="ZodString",ua.ZodNumber="ZodNumber",ua.ZodNaN="ZodNaN",ua.ZodBigInt="ZodBigInt",ua.ZodBoolean="ZodBoolean",ua.ZodDate="ZodDate",ua.ZodSymbol="ZodSymbol",ua.ZodUndefined="ZodUndefined",ua.ZodNull="ZodNull",ua.ZodAny="ZodAny",ua.ZodUnknown="ZodUnknown",ua.ZodNever="ZodNever",ua.ZodVoid="ZodVoid",ua.ZodArray="ZodArray",ua.ZodObject="ZodObject",ua.ZodUnion="ZodUnion",ua.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ua.ZodIntersection="ZodIntersection",ua.ZodTuple="ZodTuple",ua.ZodRecord="ZodRecord",ua.ZodMap="ZodMap",ua.ZodSet="ZodSet",ua.ZodFunction="ZodFunction",ua.ZodLazy="ZodLazy",ua.ZodLiteral="ZodLiteral",ua.ZodEnum="ZodEnum",ua.ZodEffects="ZodEffects",ua.ZodNativeEnum="ZodNativeEnum",ua.ZodOptional="ZodOptional",ua.ZodNullable="ZodNullable",ua.ZodDefault="ZodDefault",ua.ZodCatch="ZodCatch",ua.ZodPromise="ZodPromise",ua.ZodBranded="ZodBranded",ua.ZodPipeline="ZodPipeline",ua.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind$1||(ZodFirstPartyTypeKind$1={}));const instanceOfType$1=(ua,J={message:`Input not instance of ${ua.name}`})=>custom$1(la=>la instanceof ua,J),stringType$1=ZodString$1.create,numberType$1=ZodNumber$1.create,nanType$1=ZodNaN$1.create,bigIntType$1=ZodBigInt$1.create,booleanType$1=ZodBoolean$1.create,dateType$1=ZodDate$1.create,symbolType$1=ZodSymbol$1.create,undefinedType$1=ZodUndefined$1.create,nullType$1=ZodNull$1.create,anyType$1=ZodAny$1.create,unknownType$1=ZodUnknown$1.create,neverType$1=ZodNever$1.create,voidType$1=ZodVoid$1.create,arrayType$1=ZodArray$1.create,objectType$1=ZodObject$1.create,strictObjectType$1=ZodObject$1.strictCreate,unionType$1=ZodUnion$1.create,discriminatedUnionType$1=ZodDiscriminatedUnion$1.create,intersectionType$1=ZodIntersection$1.create,tupleType$1=ZodTuple$1.create,recordType$1=ZodRecord$1.create,mapType$1=ZodMap$1.create,setType$1=ZodSet$1.create,functionType$1=ZodFunction$1.create,lazyType$1=ZodLazy$1.create,literalType$1=ZodLiteral$1.create,enumType$1=ZodEnum$1.create,nativeEnumType$1=ZodNativeEnum$1.create,promiseType$1=ZodPromise$1.create,effectsType$1=ZodEffects$1.create,optionalType$1=ZodOptional$1.create,nullableType$1=ZodNullable$1.create,preprocessType$1=ZodEffects$1.createWithPreprocess,pipelineType$1=ZodPipeline$1.create,ostring$1=()=>stringType$1().optional(),onumber$1=()=>numberType$1().optional(),oboolean$1=()=>booleanType$1().optional(),coerce$1={string:ua=>ZodString$1.create({...ua,coerce:!0}),number:ua=>ZodNumber$1.create({...ua,coerce:!0}),boolean:ua=>ZodBoolean$1.create({...ua,coerce:!0}),bigint:ua=>ZodBigInt$1.create({...ua,coerce:!0}),date:ua=>ZodDate$1.create({...ua,coerce:!0})},NEVER$1=INVALID$1;var z$3=Object.freeze({__proto__:null,defaultErrorMap:errorMap$1,setErrorMap:setErrorMap$1,getErrorMap:getErrorMap$1,makeIssue:makeIssue$1,EMPTY_PATH:EMPTY_PATH$1,addIssueToContext:addIssueToContext$1,ParseStatus:ParseStatus$1,INVALID:INVALID$1,DIRTY:DIRTY$1,OK:OK$1,isAborted:isAborted$1,isDirty:isDirty$1,isValid:isValid$2,isAsync:isAsync$1,get util(){return util$2},get objectUtil(){return objectUtil$1},ZodParsedType:ZodParsedType$1,getParsedType:getParsedType$1,ZodType:ZodType$1,datetimeRegex:datetimeRegex$1,ZodString:ZodString$1,ZodNumber:ZodNumber$1,ZodBigInt:ZodBigInt$1,ZodBoolean:ZodBoolean$1,ZodDate:ZodDate$1,ZodSymbol:ZodSymbol$1,ZodUndefined:ZodUndefined$1,ZodNull:ZodNull$1,ZodAny:ZodAny$1,ZodUnknown:ZodUnknown$1,ZodNever:ZodNever$1,ZodVoid:ZodVoid$1,ZodArray:ZodArray$1,ZodObject:ZodObject$1,ZodUnion:ZodUnion$1,ZodDiscriminatedUnion:ZodDiscriminatedUnion$1,ZodIntersection:ZodIntersection$1,ZodTuple:ZodTuple$1,ZodRecord:ZodRecord$1,ZodMap:ZodMap$1,ZodSet:ZodSet$1,ZodFunction:ZodFunction$1,ZodLazy:ZodLazy$1,ZodLiteral:ZodLiteral$1,ZodEnum:ZodEnum$1,ZodNativeEnum:ZodNativeEnum$1,ZodPromise:ZodPromise$1,ZodEffects:ZodEffects$1,ZodTransformer:ZodEffects$1,ZodOptional:ZodOptional$1,ZodNullable:ZodNullable$1,ZodDefault:ZodDefault$1,ZodCatch:ZodCatch$1,ZodNaN:ZodNaN$1,BRAND:BRAND$1,ZodBranded:ZodBranded$1,ZodPipeline:ZodPipeline$1,ZodReadonly:ZodReadonly$1,custom:custom$1,Schema:ZodType$1,ZodSchema:ZodType$1,late:late$1,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind$1},coerce:coerce$1,any:anyType$1,array:arrayType$1,bigint:bigIntType$1,boolean:booleanType$1,date:dateType$1,discriminatedUnion:discriminatedUnionType$1,effect:effectsType$1,enum:enumType$1,function:functionType$1,instanceof:instanceOfType$1,intersection:intersectionType$1,lazy:lazyType$1,literal:literalType$1,map:mapType$1,nan:nanType$1,nativeEnum:nativeEnumType$1,never:neverType$1,null:nullType$1,nullable:nullableType$1,number:numberType$1,object:objectType$1,oboolean:oboolean$1,onumber:onumber$1,optional:optionalType$1,ostring:ostring$1,pipeline:pipelineType$1,preprocess:preprocessType$1,promise:promiseType$1,record:recordType$1,set:setType$1,strictObject:strictObjectType$1,string:stringType$1,symbol:symbolType$1,transformer:effectsType$1,tuple:tupleType$1,undefined:undefinedType$1,union:unionType$1,unknown:unknownType$1,void:voidType$1,NEVER:NEVER$1,ZodIssueCode:ZodIssueCode$1,quotelessJson:quotelessJson$1,ZodError:ZodError$2});const urlAlphabet$1="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let random=ua=>crypto.getRandomValues(new Uint8Array(ua)),customRandom=(ua,J,la)=>{let xa=(2<<Math.log2(ua.length-1))-1,Aa=-~(1.6*xa*J/ua.length);return(ba=J)=>{let Sa="";for(;;){let Ma=la(Aa),Ra=Aa|0;for(;Ra--;)if(Sa+=ua[Ma[Ra]&xa]||"",Sa.length>=ba)return Sa}}},customAlphabet=(ua,J=21)=>customRandom(ua,J|0,random),nanoid$1=(ua=21)=>{let J="",la=crypto.getRandomValues(new Uint8Array(ua|=0));for(;ua--;)J+=urlAlphabet$1[la[ua]&63];return J};const index_browser=Object.freeze(Object.defineProperty({__proto__:null,customAlphabet,customRandom,nanoid:nanoid$1,random,urlAlphabet:urlAlphabet$1},Symbol.toStringTag,{value:"Module"}));var unitMappings$3={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},unitMappingAndVariantSuffixes$2=new Set;for(const[ua,J]of Object.entries(unitMappings$3)){unitMappingAndVariantSuffixes$2.add(ua);for(const la of Object.keys(J.variants))unitMappingAndVariantSuffixes$2.add(la)}function getBaseTscircuitUnit$3(ua){for(const[J,la]of Object.entries(unitMappings$3))if(ua in la.variants)return{baseUnit:la.baseUnit,conversionFactor:la.variants[ua]};return{baseUnit:ua,conversionFactor:1}}var si_prefix_multiplier$2={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},parseAndConvertSiUnit$3=ua=>{var Ma;if(typeof ua>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof ua=="string"&&ua.match(/^[\d\.]+$/))return{value:Number.parseFloat(ua),parsedUnit:null,unitOfValue:null};if(typeof ua=="number")return{value:ua,parsedUnit:null,unitOfValue:null};if(typeof ua=="object"&&"x"in ua&&"y"in ua){const{parsedUnit:Ra,unitOfValue:Ia}=parseAndConvertSiUnit$3(ua.x);return{parsedUnit:Ra,unitOfValue:Ia,value:{x:parseAndConvertSiUnit$3(ua.x).value,y:parseAndConvertSiUnit$3(ua.y).value}}}const la=(Ma=ua.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:Ma[0];if(!la)throw new Error(`Could not determine unit: "${ua}"`);const xa=la.split("").reverse().join(""),Aa=ua.slice(0,-xa.length);if(xa in si_prefix_multiplier$2&&!unitMappingAndVariantSuffixes$2.has(xa)){const Ra=si_prefix_multiplier$2[xa];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(Aa)*Ra}}const{baseUnit:ba,conversionFactor:Sa}=getBaseTscircuitUnit$3(xa);return{parsedUnit:xa,unitOfValue:ba,value:Sa*Number.parseFloat(Aa)}},resistance$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),capacitance$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),inductance$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),voltage$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),length$4=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),frequency$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),distance$6=length$4,current$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),time$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$3(ua).value),rotation$5=z$3.string().or(z$3.number()).transform(ua=>typeof ua=="number"?ua:ua.endsWith("deg")?Number.parseFloat(ua.split("deg")[0]):ua.endsWith("rad")?Number.parseFloat(ua.split("rad")[0])*180/Math.PI:Number.parseFloat(ua)),battery_capacity$3=z$3.number().or(z$3.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),point$4=z$3.object({x:distance$6,y:distance$6}),position$4=point$4,point3$4=z$3.object({x:distance$6,y:distance$6,z:distance$6}),position3$2=point3$4,size$6=z$3.object({width:z$3.number(),height:z$3.number()}),getZodPrefixedIdWithDefault$3=ua=>z$3.string().optional().default(()=>`${ua}_${nanoid$1(10)}`),supplier_name$3=z$3.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base$3=z$3.object({type:z$3.literal("source_component"),ftype:z$3.string().optional(),source_component_id:z$3.string(),name:z$3.string(),manufacturer_part_number:z$3.string().optional(),supplier_part_numbers:z$3.record(supplier_name$3,z$3.array(z$3.string())).optional(),display_value:z$3.string().optional()}),source_simple_capacitor$3=source_component_base$3.extend({ftype:z$3.literal("simple_capacitor"),capacitance:capacitance$3}),source_simple_resistor$3=source_component_base$3.extend({ftype:z$3.literal("simple_resistor"),resistance:resistance$3}),source_simple_diode$3=source_component_base$3.extend({ftype:z$3.literal("simple_diode")}),source_simple_ground$3=source_component_base$3.extend({ftype:z$3.literal("simple_ground")}),source_simple_bug$3=source_component_base$3.extend({ftype:z$3.literal("simple_bug")}).describe("@deprecated"),source_simple_chip$3=source_component_base$3.extend({ftype:z$3.literal("simple_chip")}),source_led$3=source_simple_diode$3.extend({ftype:z$3.literal("led")}),source_simple_power_source$3=source_component_base$3.extend({ftype:z$3.literal("simple_power_source"),voltage:voltage$3}),source_simple_battery$3=source_component_base$3.extend({ftype:z$3.literal("simple_battery"),capacity:battery_capacity$3}),source_simple_inductor$3=source_component_base$3.extend({ftype:z$3.literal("simple_inductor"),inductance:inductance$3}),source_simple_push_button$2=source_component_base$3.extend({ftype:z$3.literal("simple_push_button")}),source_simple_potentiometer$2=source_component_base$3.extend({ftype:z$3.literal("simple_potentiometer"),max_resistance:resistance$3}),source_simple_crystal$2=source_component_base$3.extend({ftype:z$3.literal("simple_crystal"),frequency:z$3.number().describe("Frequency in Hz"),load_capacitance:z$3.number().optional().describe("Load capacitance in pF")}),source_simple_pin_header$2=source_component_base$3.extend({ftype:z$3.literal("simple_pin_header"),pin_count:z$3.number(),gender:z$3.enum(["male","female"]).optional().default("male")}),source_simple_resonator$2=source_component_base$3.extend({ftype:z$3.literal("simple_resonator"),load_capacitance:capacitance$3,equivalent_series_resistance:resistance$3.optional(),frequency:frequency$2}),source_simple_transistor$2=source_component_base$3.extend({ftype:z$3.literal("simple_transistor"),transistor_type:z$3.enum(["npn","pnp"])}),any_source_component$3=z$3.union([source_simple_resistor$3,source_simple_capacitor$3,source_simple_diode$3,source_simple_ground$3,source_simple_chip$3,source_simple_bug$3,source_led$3,source_simple_power_source$3,source_simple_battery$3,source_simple_inductor$3,source_simple_push_button$2,source_simple_potentiometer$2,source_simple_crystal$2,source_simple_pin_header$2,source_simple_resonator$2,source_simple_transistor$2]),source_port$3=z$3.object({type:z$3.literal("source_port"),pin_number:z$3.number().optional(),port_hints:z$3.array(z$3.string()).optional(),name:z$3.string(),source_port_id:z$3.string(),source_component_id:z$3.string()}),source_trace$3=z$3.object({type:z$3.literal("source_trace"),source_trace_id:z$3.string(),connected_source_port_ids:z$3.array(z$3.string()),connected_source_net_ids:z$3.array(z$3.string()),subcircuit_connectivity_map_key:z$3.string().optional()}),source_group$3=z$3.object({type:z$3.literal("source_group"),source_group_id:z$3.string(),name:z$3.string().optional()}),source_net$3=z$3.object({type:z$3.literal("source_net"),source_net_id:z$3.string(),name:z$3.string(),member_source_group_ids:z$3.array(z$3.string()),is_power:z$3.boolean().optional(),is_ground:z$3.boolean().optional(),is_digital_signal:z$3.boolean().optional(),is_analog_signal:z$3.boolean().optional(),trace_width:z$3.number().optional()}),schematic_box$3=z$3.object({type:z$3.literal("schematic_box"),schematic_component_id:z$3.string(),width:distance$6,height:distance$6,x:distance$6,y:distance$6}).describe("Draws a box on the schematic"),schematic_path$3=z$3.object({type:z$3.literal("schematic_path"),schematic_component_id:z$3.string(),fill_color:z$3.enum(["red","blue"]).optional(),is_filled:z$3.boolean().optional(),points:z$3.array(point$4)}),schematic_pin_styles$3=z$3.record(z$3.object({left_margin:length$4.optional(),right_margin:length$4.optional(),top_margin:length$4.optional(),bottom_margin:length$4.optional()})),schematic_component_port_arrangement_by_size$2=z$3.object({left_size:z$3.number(),right_size:z$3.number(),top_size:z$3.number().optional(),bottom_size:z$3.number().optional()}),schematic_component_port_arrangement_by_sides$2=z$3.object({left_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional()}),port_arrangement$2=z$3.union([schematic_component_port_arrangement_by_size$2,schematic_component_port_arrangement_by_sides$2]),schematic_component$3=z$3.object({type:z$3.literal("schematic_component"),rotation:rotation$5.default(0),size:size$6,center:point$4,source_component_id:z$3.string(),schematic_component_id:z$3.string(),pin_spacing:length$4.optional(),pin_styles:schematic_pin_styles$3.optional(),box_width:length$4.optional(),symbol_name:z$3.string().optional(),port_arrangement:port_arrangement$2.optional(),port_labels:z$3.record(z$3.string()).optional(),symbol_display_value:z$3.string().optional()}),schematic_line$3=z$3.object({type:z$3.literal("schematic_line"),schematic_component_id:z$3.string(),x1:distance$6,x2:distance$6,y1:distance$6,y2:distance$6}),schematic_trace$3=z$3.object({type:z$3.literal("schematic_trace"),schematic_trace_id:z$3.string(),source_trace_id:z$3.string(),junctions:z$3.array(z$3.object({x:z$3.number(),y:z$3.number()})),edges:z$3.array(z$3.object({from:z$3.object({x:z$3.number(),y:z$3.number()}),to:z$3.object({x:z$3.number(),y:z$3.number()}),is_crossing:z$3.boolean().optional(),from_schematic_port_id:z$3.string().optional(),to_schematic_port_id:z$3.string().optional()}))}),schematic_text$3=z$3.object({type:z$3.literal("schematic_text"),schematic_component_id:z$3.string(),schematic_text_id:z$3.string(),text:z$3.string(),position:z$3.object({x:distance$6,y:distance$6}),rotation:z$3.number().default(0),anchor:z$3.enum(["center","left","right","top","bottom"]).default("center"),color:z$3.string().default("#000000")}),schematic_port$3=z$3.object({type:z$3.literal("schematic_port"),schematic_port_id:z$3.string(),source_port_id:z$3.string(),schematic_component_id:z$3.string().optional(),center:point$4,facing_direction:z$3.enum(["up","down","left","right"]).optional(),distance_from_component_edge:z$3.number().optional(),side_of_component:z$3.enum(["top","bottom","left","right"]).optional(),true_ccw_index:z$3.number().optional(),pin_number:z$3.number().optional(),display_pin_label:z$3.string().optional()}).describe("Defines a port on a schematic component"),schematic_net_label$3=z$3.object({type:z$3.literal("schematic_net_label"),source_net_id:z$3.string(),center:point$4,anchor_position:point$4.optional(),anchor_side:z$3.enum(["top","bottom","left","right"]),text:z$3.string(),symbol_name:z$3.string().optional()}),schematic_error$3=z$3.object({type:z$3.literal("schematic_error"),schematic_error_id:z$3.string(),error_type:z$3.literal("schematic_port_not_found"),message:z$3.string()}).describe("Defines a schematic error on the schematic"),schematic_debug_object_base$3=z$3.object({type:z$3.literal("schematic_debug_object"),label:z$3.string().optional()}),schematic_debug_rect$3=schematic_debug_object_base$3.extend({shape:z$3.literal("rect"),center:point$4,size:size$6}),schematic_debug_line$3=schematic_debug_object_base$3.extend({shape:z$3.literal("line"),start:point$4,end:point$4}),schematic_debug_point$3=schematic_debug_object_base$3.extend({shape:z$3.literal("point"),center:point$4}),schematic_debug_object$3=z$3.discriminatedUnion("shape",[schematic_debug_rect$3,schematic_debug_line$3,schematic_debug_point$3]),schematic_voltage_probe$2=z$3.object({type:z$3.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$3.string(),position:point$4,schematic_trace_id:z$3.string(),voltage:voltage$3.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers$3=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string$3=z$3.enum(all_layers$3),layer_ref$3=layer_string$3.or(z$3.object({name:layer_string$3})).transform(ua=>typeof ua=="string"?ua:ua.name),visible_layer$3=z$3.enum(["top","bottom"]),pcb_route_hint$3=z$3.object({x:distance$6,y:distance$6,via:z$3.boolean().optional(),via_to_layer:layer_ref$3.optional()}),pcb_route_hints$2=z$3.array(pcb_route_hint$3),route_hint_point$3=z$3.object({x:distance$6,y:distance$6,via:z$3.boolean().optional(),to_layer:layer_ref$3.optional(),trace_width:distance$6.optional()}),pcb_component$3=z$3.object({type:z$3.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault$3("pcb_component"),source_component_id:z$3.string(),center:point$4,layer:layer_ref$3,rotation:rotation$5,width:length$4,height:length$4}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square$3=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$3("pcb_hole"),hole_shape:z$3.enum(["circle","square"]),hole_diameter:z$3.number(),x:distance$6,y:distance$6}),pcb_hole_circle_or_square_shape$2=pcb_hole_circle_or_square$3.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval$3=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$3("pcb_hole"),hole_shape:z$3.literal("oval"),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$6,y:distance$6}),pcb_hole_oval_shape$2=pcb_hole_oval$3.describe("Defines an oval hole on the PCB"),pcb_hole$3=pcb_hole_circle_or_square$3.or(pcb_hole_oval$3),pcb_plated_hole_circle$3=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.literal("circle"),outer_diameter:z$3.number(),hole_diameter:z$3.number(),x:distance$6,y:distance$6,layers:z$3.array(layer_ref$3),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$3("pcb_plated_hole")}),pcb_plated_hole_oval$3=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.enum(["oval","pill"]),outer_width:z$3.number(),outer_height:z$3.number(),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$6,y:distance$6,layers:z$3.array(layer_ref$3),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$3("pcb_plated_hole")}),pcb_plated_hole$3=z$3.union([pcb_plated_hole_circle$3,pcb_plated_hole_oval$3]),pcb_port$3=z$3.object({type:z$3.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault$3("pcb_port"),source_port_id:z$3.string(),pcb_component_id:z$3.string(),x:distance$6,y:distance$6,layers:z$3.array(layer_ref$3)}).describe("Defines a port on the PCB"),pcb_smtpad_circle$3=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault$3("pcb_smtpad"),x:distance$6,y:distance$6,radius:z$3.number(),layer:layer_ref$3,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rect$3=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$3("pcb_smtpad"),x:distance$6,y:distance$6,width:z$3.number(),height:z$3.number(),layer:layer_ref$3,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rotated_rect$2=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$3("pcb_smtpad"),x:distance$6,y:distance$6,width:z$3.number(),height:z$3.number(),ccw_rotation:rotation$5,layer:layer_ref$3,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad$3=z$3.union([pcb_smtpad_circle$3,pcb_smtpad_rect$3,pcb_smtpad_rotated_rect$2]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle$3=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$3("pcb_solder_paste"),x:distance$6,y:distance$6,radius:z$3.number(),layer:layer_ref$3,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste_rect$3=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$3("pcb_solder_paste"),x:distance$6,y:distance$6,width:z$3.number(),height:z$3.number(),layer:layer_ref$3,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste$3=z$3.union([pcb_solder_paste_circle$3,pcb_solder_paste_rect$3]).describe("Defines solderpaste on the PCB"),pcb_text$3=z$3.object({type:z$3.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault$3("pcb_text"),text:z$3.string(),center:point$4,layer:layer_ref$3,width:length$4,height:length$4,lines:z$3.number(),align:z$3.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire$3=z$3.object({route_type:z$3.literal("wire"),x:distance$6,y:distance$6,width:distance$6,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$3}),pcb_trace_route_point_via$3=z$3.object({route_type:z$3.literal("via"),x:distance$6,y:distance$6,from_layer:z$3.string(),to_layer:z$3.string()}),pcb_trace_route_point$2=z$3.union([pcb_trace_route_point_wire$3,pcb_trace_route_point_via$3]),pcb_trace$3=z$3.object({type:z$3.literal("pcb_trace"),source_trace_id:z$3.string().optional(),pcb_component_id:z$3.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault$3("pcb_trace"),route_thickness_mode:z$3.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:z$3.number().optional(),should_round_corners:z$3.boolean().optional(),route:z$3.array(z$3.union([z$3.object({route_type:z$3.literal("wire"),x:distance$6,y:distance$6,width:distance$6,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$3}),z$3.object({route_type:z$3.literal("via"),x:distance$6,y:distance$6,from_layer:z$3.string(),to_layer:z$3.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error$3=z$3.object({type:z$3.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault$3("pcb_trace_error"),error_type:z$3.literal("pcb_trace_error"),message:z$3.string(),center:point$4.optional(),pcb_trace_id:z$3.string(),source_trace_id:z$3.string(),pcb_component_ids:z$3.array(z$3.string()),pcb_port_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB"),pcb_port_not_matched_error$3=z$3.object({type:z$3.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault$3("pcb_error"),message:z$3.string(),pcb_component_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB where a port is not matched"),pcb_via$3=z$3.object({type:z$3.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault$3("pcb_via"),x:distance$6,y:distance$6,outer_diameter:distance$6.default("0.6mm"),hole_diameter:distance$6.default("0.25mm"),from_layer:layer_ref$3.optional(),to_layer:layer_ref$3.optional(),layers:z$3.array(layer_ref$3),pcb_trace_id:z$3.string().optional()}).describe("Defines a via on the PCB"),pcb_board$3=z$3.object({type:z$3.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault$3("pcb_board"),width:length$4,height:length$4,center:point$4,thickness:length$4.optional().default(1.4),num_layers:z$3.number().optional().default(4),outline:z$3.array(point$4).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error$3=z$3.object({type:z$3.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault$3("pcb_placement_error"),message:z$3.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint$3=z$3.object({type:z$3.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault$3("pcb_trace_hint"),pcb_port_id:z$3.string(),pcb_component_id:z$3.string(),route:z$3.array(route_hint_point$3)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line$3=z$3.object({type:z$3.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_line"),pcb_component_id:z$3.string(),stroke_width:distance$6.default("0.1mm"),x1:distance$6,y1:distance$6,x2:distance$6,y2:distance$6,layer:visible_layer$3}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path$3=z$3.object({type:z$3.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_path"),pcb_component_id:z$3.string(),layer:visible_layer$3,route:z$3.array(point$4),stroke_width:length$4}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text$3=z$3.object({type:z$3.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_text"),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$6.default("0.2mm"),pcb_component_id:z$3.string(),text:z$3.string(),ccw_rotation:z$3.number().optional(),layer:layer_ref$3,is_mirrored:z$3.boolean().default(!1).optional(),anchor_position:point$4.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),pcb_silkscreen_rect$3=z$3.object({type:z$3.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_rect"),pcb_component_id:z$3.string(),center:point$4,width:length$4,height:length$4,layer:layer_ref$3}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle$3=z$3.object({type:z$3.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_circle"),pcb_component_id:z$3.string(),center:point$4,radius:length$4,layer:visible_layer$3}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval$3=z$3.object({type:z$3.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault$3("pcb_silkscreen_oval"),pcb_component_id:z$3.string(),center:point$4,radius_x:distance$6,radius_y:distance$6,layer:visible_layer$3}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text$3=z$3.object({type:z$3.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault$3("pcb_fabrication_note_text"),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$6.default("1mm"),pcb_component_id:z$3.string(),text:z$3.string(),layer:visible_layer$3,anchor_position:point$4.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:z$3.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),pcb_fabrication_note_path$3=z$3.object({type:z$3.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault$3("pcb_fabrication_note_path"),pcb_component_id:z$3.string(),layer:layer_ref$3,route:z$3.array(point$4),stroke_width:length$4,color:z$3.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout$3=z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("rect"),center:point$4,width:distance$6,height:distance$6,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()}).or(z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("circle"),center:point$4,radius:distance$6,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()})),pcb_missing_footprint_error$2=z$3.object({type:z$3.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault$3("pcb_missing_footprint_error"),error_type:z$3.literal("pcb_missing_footprint_error"),source_component_id:z$3.string(),message:z$3.string()}).describe("Defines a missing footprint error on the PCB"),pcb_manual_edit_conflict_error$2=z$3.object({type:z$3.literal("pcb_manual_edit_conflict_error"),pcb_error_id:getZodPrefixedIdWithDefault$3("pcb_manual_edit_conflict_error"),message:z$3.string(),pcb_component_id:z$3.string(),source_component_id:z$3.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),pcb_group$2=z$3.object({type:z$3.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault$3("pcb_group"),width:length$4,height:length$4,center:point$4,pcb_component_ids:z$3.array(z$3.string()),name:z$3.string().optional(),description:z$3.string().optional()}).describe("Defines a group of components on the PCB"),cad_component$3=z$3.object({type:z$3.literal("cad_component"),cad_component_id:z$3.string(),pcb_component_id:z$3.string(),source_component_id:z$3.string(),position:point3$4,rotation:point3$4.optional(),size:point3$4.optional(),layer:layer_ref$3.optional(),footprinter_string:z$3.string().optional(),model_obj_url:z$3.string().optional(),model_stl_url:z$3.string().optional(),model_3mf_url:z$3.string().optional(),model_jscad:z$3.any().optional()}).describe("Defines a component on the PCB"),any_circuit_element$2=z$3.union([source_trace$3,source_port$3,any_source_component$3,source_led$3,source_net$3,source_group$3,source_simple_bug$3,source_simple_chip$3,source_simple_capacitor$3,source_simple_diode$3,source_simple_resistor$3,source_simple_power_source$3,source_simple_battery$3,source_simple_inductor$3,source_simple_pin_header$2,source_simple_resonator$2,source_simple_transistor$2,source_simple_potentiometer$2,source_simple_push_button$2,pcb_component$3,pcb_hole$3,pcb_missing_footprint_error$2,pcb_manual_edit_conflict_error$2,pcb_plated_hole$3,pcb_keepout$3,pcb_port$3,pcb_text$3,pcb_trace$3,pcb_via$3,pcb_smtpad$3,pcb_solder_paste$3,pcb_board$3,pcb_group$2,pcb_trace_hint$3,pcb_silkscreen_line$3,pcb_silkscreen_path$3,pcb_silkscreen_text$3,pcb_silkscreen_rect$3,pcb_silkscreen_circle$3,pcb_silkscreen_oval$3,pcb_trace_error$3,pcb_placement_error$3,pcb_port_not_matched_error$3,pcb_fabrication_note_path$3,pcb_fabrication_note_text$3,schematic_box$3,schematic_text$3,schematic_line$3,schematic_component$3,schematic_port$3,schematic_trace$3,schematic_path$3,schematic_error$3,schematic_net_label$3,schematic_debug_object$3,schematic_voltage_probe$2,cad_component$3]),any_soup_element$2=any_circuit_element$2;const Soup$1=Object.freeze(Object.defineProperty({__proto__:null,all_layers:all_layers$3,any_circuit_element:any_circuit_element$2,any_soup_element:any_soup_element$2,any_source_component:any_source_component$3,battery_capacity:battery_capacity$3,cad_component:cad_component$3,capacitance:capacitance$3,current:current$2,distance:distance$6,frequency:frequency$2,getZodPrefixedIdWithDefault:getZodPrefixedIdWithDefault$3,inductance:inductance$3,layer_ref:layer_ref$3,layer_string:layer_string$3,length:length$4,pcb_board:pcb_board$3,pcb_component:pcb_component$3,pcb_fabrication_note_path:pcb_fabrication_note_path$3,pcb_fabrication_note_text:pcb_fabrication_note_text$3,pcb_group:pcb_group$2,pcb_hole:pcb_hole$3,pcb_hole_circle_or_square_shape:pcb_hole_circle_or_square_shape$2,pcb_hole_oval_shape:pcb_hole_oval_shape$2,pcb_keepout:pcb_keepout$3,pcb_manual_edit_conflict_error:pcb_manual_edit_conflict_error$2,pcb_missing_footprint_error:pcb_missing_footprint_error$2,pcb_placement_error:pcb_placement_error$3,pcb_plated_hole:pcb_plated_hole$3,pcb_port:pcb_port$3,pcb_port_not_matched_error:pcb_port_not_matched_error$3,pcb_route_hint:pcb_route_hint$3,pcb_route_hints:pcb_route_hints$2,pcb_silkscreen_circle:pcb_silkscreen_circle$3,pcb_silkscreen_line:pcb_silkscreen_line$3,pcb_silkscreen_oval:pcb_silkscreen_oval$3,pcb_silkscreen_path:pcb_silkscreen_path$3,pcb_silkscreen_rect:pcb_silkscreen_rect$3,pcb_silkscreen_text:pcb_silkscreen_text$3,pcb_smtpad:pcb_smtpad$3,pcb_solder_paste:pcb_solder_paste$3,pcb_text:pcb_text$3,pcb_trace:pcb_trace$3,pcb_trace_error:pcb_trace_error$3,pcb_trace_hint:pcb_trace_hint$3,pcb_trace_route_point:pcb_trace_route_point$2,pcb_trace_route_point_via:pcb_trace_route_point_via$3,pcb_trace_route_point_wire:pcb_trace_route_point_wire$3,pcb_via:pcb_via$3,point:point$4,point3:point3$4,port_arrangement:port_arrangement$2,position:position$4,position3:position3$2,resistance:resistance$3,rotation:rotation$5,route_hint_point:route_hint_point$3,schematic_box:schematic_box$3,schematic_component:schematic_component$3,schematic_component_port_arrangement_by_sides:schematic_component_port_arrangement_by_sides$2,schematic_component_port_arrangement_by_size:schematic_component_port_arrangement_by_size$2,schematic_debug_line:schematic_debug_line$3,schematic_debug_object:schematic_debug_object$3,schematic_debug_object_base:schematic_debug_object_base$3,schematic_debug_point:schematic_debug_point$3,schematic_debug_rect:schematic_debug_rect$3,schematic_error:schematic_error$3,schematic_line:schematic_line$3,schematic_net_label:schematic_net_label$3,schematic_path:schematic_path$3,schematic_pin_styles:schematic_pin_styles$3,schematic_port:schematic_port$3,schematic_text:schematic_text$3,schematic_trace:schematic_trace$3,schematic_voltage_probe:schematic_voltage_probe$2,size:size$6,source_component_base:source_component_base$3,source_group:source_group$3,source_led:source_led$3,source_net:source_net$3,source_port:source_port$3,source_simple_battery:source_simple_battery$3,source_simple_bug:source_simple_bug$3,source_simple_capacitor:source_simple_capacitor$3,source_simple_chip:source_simple_chip$3,source_simple_crystal:source_simple_crystal$2,source_simple_diode:source_simple_diode$3,source_simple_ground:source_simple_ground$3,source_simple_inductor:source_simple_inductor$3,source_simple_pin_header:source_simple_pin_header$2,source_simple_potentiometer:source_simple_potentiometer$2,source_simple_power_source:source_simple_power_source$3,source_simple_push_button:source_simple_push_button$2,source_simple_resistor:source_simple_resistor$3,source_simple_resonator:source_simple_resonator$2,source_simple_transistor:source_simple_transistor$2,source_trace:source_trace$3,supplier_name:supplier_name$3,time:time$2,visible_layer:visible_layer$3,voltage:voltage$3},Symbol.toStringTag,{value:"Module"}));var __defProp$p=Object.defineProperty,__export$5=(ua,J)=>{for(var la in J)__defProp$p(ua,la,{get:J[la],enumerable:!0})},fn_exports$1={};__export$5(fn_exports$1,{axial:()=>axial$1,bga:()=>bga$1,breakoutheaders:()=>breakoutheaders,cap:()=>cap$1,dfn:()=>dfn$1,diode:()=>diode$1,dip:()=>dip$1,led:()=>led$1,lqfp:()=>lqfp$1,mlp:()=>mlp$1,ms012:()=>ms012$1,ms013:()=>ms013$1,pinrow:()=>pinrow$1,pushbutton:()=>pushbutton$1,qfn:()=>qfn$1,qfp:()=>qfp$1,quad:()=>quad$1,res:()=>res$1,sod123:()=>sod123$1,soic:()=>soic$1,sot23:()=>sot23$1,sot235:()=>sot235$1,sot236:()=>sot236$1,sot363:()=>sot363$1,sot563:()=>sot563$1,sot723:()=>sot723$1,ssop:()=>ssop$1,stampboard:()=>stampboard$1,stampreceiver:()=>stampreceiver$1,tssop:()=>tssop$1});var u_curve$1=Array.from({length:9},(ua,J)=>Math.cos(J/8*Math.PI-Math.PI)).map(ua=>({x:ua,y:-Math.sqrt(1-ua**2)})),platedhole$1=(ua,J,la,xa,Aa)=>({type:"pcb_plated_hole",shape:"circle",x:J,y:la,hole_diameter:mm(xa),outer_diameter:mm(Aa),pcb_port_id:"",layers:["top","bottom"],port_hints:[ua.toString()]}),silkscreenRef$1=(ua,J,la)=>({type:"pcb_silkscreen_text",pcb_silkscreen_text_id:"silkscreen_text_1",font:"tscircuit2024",font_size:la,pcb_component_id:"pcb_component_1",text:"{REF}",layer:"top",anchor_position:{x:ua,y:J},anchor_alignment:"center"}),extendDipDef$1=ua=>z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(6),wide:z$3.boolean().optional(),narrow:z$3.boolean().optional(),w:length$4.optional(),p:length$4.default(length$4.parse(ua.p??"2.54mm")),id:length$4.optional(),od:length$4.optional()}).transform(J=>(!J.id&&!J.od?(J.id=length$4.parse("1.0mm"),J.od=length$4.parse("1.5mm")):J.id?J.od||(J.od=J.id*(1.5/1)):J.id=J.od*(1/1.5),J.w||(J.wide?J.w=length$4.parse("600mil"):J.narrow?J.w=length$4.parse("300mil"):J.w=length$4.parse(ua.w??"300mil")),J)),dip_def$1=extendDipDef$1({}),getCcwDipCoords$1=(ua,J,la,xa)=>{const Aa=ua/2,ba=J<=Aa,Sa=Aa-1,Ma=xa,Ra=Ma*Sa;return ba?{x:-la/2,y:Ra/2-(J-1)*Ma}:{x:la/2,y:-Ra/2+(J-Aa-1)*Ma}},dip$1=ua=>{const J=dip_def$1.parse(ua),la=[];for(let Ra=0;Ra<J.num_pins;Ra++){const{x:Ia,y:La}=getCcwDipCoords$1(J.num_pins,Ra+1,J.w,J.p??2.54);la.push(platedhole$1(Ra+1,Ia,La,J.id??"0.8mm",J.od??"1mm"))}const xa=J.w-J.od-.4,Aa=(J.num_pins/2-1)*J.p+J.od+.4,ba={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-xa/2,y:-Aa/2},{x:-xa/2,y:Aa/2},...u_curve$1.map(({x:Ra,y:Ia})=>({x:Ra*xa/6,y:Ia*xa/6+Aa/2})),{x:xa/2,y:Aa/2},{x:xa/2,y:-Aa/2},{x:-xa/2,y:-Aa/2}],type:"pcb_silkscreen_path",stroke_width:.1},Sa=[];for(let Ra=0;Ra<J.num_pins;Ra++){const Ia=Ra<J.num_pins/2,La=Ia?-J.w/2-J.p/2-.2:J.p/2+J.w/2+.2,Fa=Ia?(-Aa+1.6)/2+Ra*J.p:(-Aa+1.6)/2+(Ra-J.num_pins/2)*J.p,ka={type:"pcb_fabrication_note_text",layer:"top",pcb_component_id:`pin_${Ra+1}`,pcb_silkscreen_text_id:`pin_${Ra+1}`,text:`{pin${Ra+1}}`,anchor_position:{x:La,y:Fa},font_size:.3,font_color:"red",font:"tscircuit2024",anchor_alignment:"top-left"};Sa.push(ka)}const Ma=silkscreenRef$1(0,Aa/2+.5,.4);return{circuitJson:[...la,ba,Ma,...Sa],parameters:J}},rectpad$1=(ua,J,la,xa,Aa)=>({type:"pcb_smtpad",x:J,y:la,width:xa,height:Aa,layer:"top",shape:"rect",pcb_smtpad_id:"",port_hints:Array.isArray(ua)?ua.map(ba=>ba.toString()):[ua.toString()]}),sizes$1=[{imperial:"01005",metric:"0402",Z_mm_min:.58,G_mm_min:.18,X_mm_min:.21,C_mm_ref:.038},{imperial:"0201",metric:"0603",Z_mm_min:.9,G_mm_min:.3,X_mm_min:.3,C_mm_ref:.6},{imperial:"0402",metric:"1005",Z_mm_min:1.6,G_mm_min:.4,X_mm_min:.7,C_mm_ref:1},{imperial:"0603",metric:"1608",Z_mm_min:2.6,G_mm_min:.6,X_mm_min:1,C_mm_ref:1.7},{imperial:"0805",metric:"2012",Z_mm_min:3,G_mm_min:.6,X_mm_min:1.2,C_mm_ref:1.9},{imperial:"1206",metric:"3216",Z_mm_min:4.2,G_mm_min:1.2,X_mm_min:1.4,C_mm_ref:2.8},{imperial:"1210",metric:"3225",Z_mm_min:3.2,G_mm_min:1,X_mm_min:2.5,C_mm_ref:2},{imperial:"2010",metric:"5025",Z_mm_min:5,G_mm_min:1.2,X_mm_min:2.5,C_mm_ref:3.6},{imperial:"2512",metric:"6332",Z_mm_min:6.3,G_mm_min:1.2,X_mm_min:3.2,C_mm_ref:4.5}],metricMap$1=sizes$1.reduce((ua,J)=>(ua[J.metric]=J,ua),{}),imperialMap$1=sizes$1.reduce((ua,J)=>(ua[J.imperial]=J,ua),{});z$3.object({tht:z$3.boolean(),p:length$4,pw:length$4.optional(),ph:length$4.optional(),metric:distance$6.optional(),imperial:distance$6.optional(),w:length$4.optional(),h:length$4.optional()});var deriveXFromH$1=ua=>.079*ua**2+.94*ua-.009,deriveZFromW$1=ua=>1.09*ua+.6,deriveGFromW$1=ua=>.59*ua-.31,deriveCFromW$1=ua=>-.01*ua**2+.94*ua+.03,passive$1=ua=>{let{tht:J,p:la,pw:xa,ph:Aa,metric:ba,imperial:Sa,w:Ma,h:Ra}=ua;if(typeof Ma=="string"&&(Ma=mm_default(Ma)),typeof Ra=="string"&&(Ra=mm_default(Ra)),typeof la=="string"&&(la=mm_default(la)),typeof xa=="string"&&(xa=mm_default(xa)),typeof Aa=="string"&&(Aa=mm_default(Aa)),Ra>Ma)throw new Error("height cannot be greater than width (rotated footprint not yet implemented)");let Ia;if(ba&&(Ia=metricMap$1[ba]),Sa&&(Ia=imperialMap$1[Sa]),!Ia&&Ma&&Ra&&!xa&&!Aa&&(Ia={imperial:"custom",metric:"custom",Z_mm_min:deriveZFromW$1(Ma),G_mm_min:deriveGFromW$1(Ma),X_mm_min:deriveXFromH$1(Ra),C_mm_ref:deriveCFromW$1(Ma)}),Ia&&(Ma=Ia.Z_mm_min,Ra=Ia.X_mm_min,la=Ia.C_mm_ref,xa=(Ia.Z_mm_min-Ia.G_mm_min)/2,Aa=(Ia.Z_mm_min-Ia.G_mm_min)/2),xa===void 0)throw new Error("could not infer pad width");if(Aa===void 0)throw new Error("could not infer pad width");const La=silkscreenRef$1(0,.9,.2);return J?[platedhole$1(1,-la/2,0,xa,xa*1/.8),platedhole$1(2,la/2,0,xa,xa*1/.8),La]:[rectpad$1(["1","left"],-la/2,0,xa,Aa),rectpad$1(["2","right"],la/2,0,xa,Aa),La]},diode$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),cap$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),led$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),res$1=ua=>({circuitJson:passive$1(ua),parameters:ua}),ALPHABET$1="ABCDEFGHIJKLMNOPQRSTUVWXYZ",dim2d$1=z$3.string().transform(ua=>{const[J,la]=ua.split(/[x ]/);return{x:parseFloat(J),y:parseFloat(la)}}).pipe(z$3.object({x:z$3.number(),y:z$3.number()})),function_call$1=z$3.string().or(z$3.array(z$3.any())).transform(ua=>Array.isArray(ua)?ua:(ua.startsWith("(")&&ua.endsWith(")")&&(ua=ua.slice(1,-1)),ua.split(",").map(J=>{const la=Number(J);return isNaN(la)?J:la}))).pipe(z$3.array(z$3.string().or(z$3.number()))),bga_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(64),grid:dim2d$1.optional(),p:distance$6.default("0.8mm"),w:length$4.optional(),h:length$4.optional(),ball:length$4.optional().describe("ball diameter"),pad:length$4.optional().describe("pad width/height"),tlorigin:z$3.boolean().optional(),blorigin:z$3.boolean().optional(),trorigin:z$3.boolean().optional(),brorigin:z$3.boolean().optional(),missing:function_call$1.default([])}).transform(ua=>{let J="tl";if(ua.blorigin&&(J="bl"),ua.trorigin&&(J="tr"),ua.brorigin&&(J="br"),!ua.grid){const xa=Math.ceil(Math.sqrt(ua.num_pins));ua.grid={x:xa,y:xa}}return ua.missing&&(ua.missing=ua.missing.map(xa=>{if(typeof xa=="number")return xa;if(xa==="center")return"center";if(xa==="topleft")return"topleft";const Aa=xa.match(/([A-Z]+)(\d+)/);if(!Aa)return xa;const ba=ALPHABET$1.indexOf(Aa[1]),Sa=Number.parseInt(Aa[2])-1;return ba*ua.grid.x+Sa+1})),{...ua,origin:J}}),bga$1=ua=>{const J=bga_def$1.parse(ua);let{num_pins:la,grid:xa,p:Aa,w:ba,h:Sa,ball:Ma,pad:Ra,missing:Ia}=J;Ma??(Ma=.75/1.27*Aa),Ra??(Ra=Ma*.8);const La=[],Fa=(Ia??[]).filter(il=>typeof il=="number"),ka=xa.x*xa.y-la;if(Ia.length===0&&ka>0&&(Math.sqrt(ka)%1===0?Ia.push("center"):ka===1&&Ia.push("topleft")),Ia!=null&&Ia.includes("center")){const il=Math.floor(Math.sqrt(ka)),nl=Math.floor((xa.x-il)/2),sl=Math.floor((xa.y-il)/2);for(let ll=sl;ll<sl+il;ll++)for(let dl=nl;dl<nl+il;dl++)Fa.push(ll*xa.x+dl+1)}Ia!=null&&Ia.includes("topleft")&&Fa.push(1);const el=new Set(Fa);let tl=0;for(let il=0;il<xa.y;il++)for(let nl=0;nl<xa.x;nl++){let sl=il*xa.x+nl+1;if(el.has(sl)){tl++;continue}sl-=tl;const ll=(nl-(xa.x-1)/2)*Aa,dl=-(il-(xa.y-1)/2)*Aa;La.push(rectpad$1([sl,`${ALPHABET$1[il]}${nl+1}`],ll,dl,Ra,Ra))}const rl=silkscreenRef$1(0,xa.y*Aa/2,.2);return{circuitJson:[...La,rl],parameters:J}},extendSoicDef$1=ua=>z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(8),w:length$4.default(length$4.parse(ua.w??"5.3mm")),p:length$4.default(length$4.parse(ua.p??"1.27mm")),pw:length$4.optional(),pl:length$4.optional(),legsoutside:z$3.boolean().optional().default(ua.legsoutside??!1)}).transform(J=>(!J.pw&&!J.pl?(J.pw=length$4.parse("0.6mm"),J.pl=length$4.parse("1.0mm")):J.pw?J.pl||(J.pl=J.pw*(1/.6)):J.pw=J.pl*(.6/1),J)),soic_def$1=extendSoicDef$1({}),getCcwSoicCoords$1=ua=>{ua.widthincludeslegs!==void 0&&(ua.legsoutside=!ua.widthincludeslegs);const{num_pins:J,pn:la,w:xa,p:Aa,pl:ba,legsoutside:Sa}=ua,Ma=J/2,Ra=la<=Ma,Ia=Ma-1,La=Aa,Fa=La*Ia,ka=Sa?ba/2:-ba/2;return Ra?{x:-xa/2-ka,y:Fa/2-(la-1)*La}:{x:xa/2+ka,y:-Fa/2+(la-Ma-1)*La}},soic$1=ua=>{const J=soic_def$1.parse(ua);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},soicWithoutParsing$1=ua=>{const J=[];for(let Ma=0;Ma<ua.num_pins;Ma++){const{x:Ra,y:Ia}=getCcwSoicCoords$1({num_pins:ua.num_pins,pn:Ma+1,w:ua.w,p:ua.p??1.27,pl:ua.pl,legsoutside:ua.legsoutside});J.push(rectpad$1(Ma+1,Ra,Ia,ua.pl??"1mm",ua.pw??"0.6mm"))}const la=Math.min(1,ua.p/2),xa=ua.w-(ua.legsoutside?0:ua.pl*2)-.2,Aa=(ua.num_pins/2-1)*ua.p+ua.pw+la,ba=silkscreenRef$1(0,Aa/2+.4,Aa/12),Sa={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",stroke_width:.1,route:[{x:-xa/2,y:-Aa/2},{x:-xa/2,y:Aa/2},...u_curve$1.map(({x:Ma,y:Ra})=>({x:Ma*xa/6,y:Ra*xa/6+Aa/2})),{x:xa/2,y:Aa/2},{x:xa/2,y:-Aa/2},{x:-xa/2,y:-Aa/2}]};return[...J,Sa,ba]},pin_order_specifier$1=z$3.enum(["leftside","topside","rightside","bottomside","toppin","bottompin","leftpin","rightpin"]),getQuadPinMap$2=({num_pins:ua,cw:J,ccw:la,startingpin:xa})=>{const Aa=[],ba=ua/4;let Sa=1;const Ma={};for(const Ra of xa??[])Ma[Ra]=!0;!Ma.leftside&&!Ma.topside&&!Ma.rightside&&!Ma.bottomside&&(Ma.leftside=!0),!Ma.bottompin&&!Ma.leftpin&&!Ma.rightpin&&!Ma.toppin&&(Ma.leftside?Ma.toppin=!0:Ma.topside?Ma.rightpin=!0:Ma.rightside?Ma.bottompin=!0:Ma.bottomside&&(Ma.leftpin=!0)),Ma.leftside&&Ma.toppin?Sa=1:Ma.leftside&&Ma.bottompin?Sa=ba:Ma.bottomside&&Ma.leftpin?Sa=ba+1:Ma.bottomside&&Ma.rightpin?Sa=ba*2:Ma.rightside&&Ma.bottompin?Sa=ba*2+1:Ma.rightside&&Ma.toppin?Sa=ba*3:Ma.topside&&Ma.rightpin?Sa=ba*3+1:Ma.topside&&Ma.leftpin&&(Sa=ba*4),Aa.push(-1);for(let Ra=0;Ra<ua;Ra++)Aa[Sa]=Ra+1,la||!J?(Sa++,Sa>ua&&(Sa=1)):(Sa--,Sa<1&&(Sa=ua));return Aa},base_quad_def$1=z$3.object({fn:z$3.string(),cc:z$3.boolean().default(!0).optional(),ccw:z$3.boolean().default(!0).optional(),startingpin:z$3.string().or(z$3.array(pin_order_specifier$1)).transform(ua=>typeof ua=="string"?ua.slice(1,-1).split(","):ua).pipe(z$3.array(pin_order_specifier$1)).optional(),num_pins:z$3.number().optional().default(64),w:length$4.optional(),h:length$4.optional(),p:length$4.default(length$4.parse("0.5mm")),pw:length$4.optional(),pl:length$4.optional(),thermalpad:z$3.union([z$3.literal(!0),dim2d$1]).optional(),legsoutside:z$3.boolean().optional()}),quadTransform$1=ua=>{ua.w&&!ua.h?ua.h=ua.w:!ua.w&&ua.h&&(ua.w=ua.h);const J=ua.num_pins/4;if(!ua.p&&!ua.pw&&!ua.pl&&ua.w){const la=J+4;ua.p=ua.w/la}return!ua.p&&ua.w&&ua.h&&ua.pw&&ua.pl&&(ua.p=(ua.w-ua.pl*2)/(J-1)),!ua.w&&!ua.h&&ua.p&&(ua.w=ua.p*(J+4),ua.h=ua.w),ua.p&&!ua.pw&&!ua.pl?(ua.pw=ua.p/2,ua.pl=ua.p/2):ua.pw?ua.pl||(ua.pl=ua.pw*(1/.6)):ua.pw=ua.pl*(.6/1),ua},quad_def$1=base_quad_def$1.transform(quadTransform$1),SIDES_CCW$1=["left","bottom","right","top"],getQuadCoords$2=ua=>{const{pin_count:J,pn:la,w:xa,h:Aa,p:ba,pl:Sa,legsoutside:Ma}=ua,Ra=J/4,Ia=SIDES_CCW$1[Math.floor((la-1)/Ra)],La=(la-1)%Ra,Fa=ba*(Ra-1),ka=ba*(Ra-1),el=Ma?Sa/2:-Sa/2;switch(Ia){case"left":return{x:-xa/2-el,y:ka/2-La*ba,o:"vert"};case"bottom":return{x:-Fa/2+La*ba,y:-Aa/2-el,o:"horz"};case"right":return{x:xa/2+el,y:-ka/2+La*ba,o:"vert"};case"top":return{x:Fa/2-La*ba,y:Aa/2+el,o:"horz"};default:throw new Error("Invalid pin number")}},quad$1=ua=>{const J=quad_def$1.parse(ua),la=[],xa=getQuadPinMap$2(J),Aa=J.num_pins/4;for(let Ma=0;Ma<J.num_pins;Ma++){const{x:Ra,y:Ia,o:La}=getQuadCoords$2({pin_count:J.num_pins,pn:Ma+1,w:J.w,h:J.h,p:J.p??.5,pl:J.pl,legsoutside:J.legsoutside});let Fa=J.pw,ka=J.pl;La==="vert"&&([Fa,ka]=[ka,Fa]);const el=xa[Ma+1];la.push(rectpad$1(el,Ra,Ia,Fa,ka))}if(J.thermalpad)if(typeof J.thermalpad=="boolean"){const Ma=J.p*(Aa-1)+J.pw,Ra=J.p*(Aa-1)+J.pw;la.push(rectpad$1(["thermalpad"],0,0,Ma,Ra))}else la.push(rectpad$1(["thermalpad"],0,0,J.thermalpad.x,J.thermalpad.y));const ba=[];for(const[Ma,Ra,Ia]of[["top-left",-1,1],["bottom-left",-1,-1],["bottom-right",1,-1],["top-right",1,1]]){const La=J.w/2*Ra,Fa=J.h/2*Ia;let ka="none",el=La,tl=Fa;const rl=J.pw*2;xa[1]===1&&Ma==="top-left"?ka="in1":xa[Aa*4]===1&&Ma==="top-left"||xa[Aa*3+1]===1&&Ma==="top-right"?ka="in2":xa[Aa*3]===1&&Ma==="top-right"||xa[Aa]===1&&Ma==="bottom-left"?ka="in1":xa[Aa+1]===1&&Ma==="bottom-left"?ka="in2":xa[Aa*2]===1&&Ma==="bottom-right"?ka="in1":xa[Aa*2+1]===1&&Ma==="bottom-right"&&(ka="in2");const il=ka==="in1"?1:-1;if(J.legsoutside){const nl=ka==="in1"?J.pl/2:J.pw/2,sl=ka==="in1"?J.pw/2:J.pl/2;el+=nl*Ra*il,tl-=sl*Ia*il}(ka==="none"||J.legsoutside)&&ba.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}`,route:[{x:La-rl*Ra,y:Fa},{x:La,y:Fa},{x:La,y:Fa-rl*Ia}],type:"pcb_silkscreen_path",stroke_width:.1}),(ka==="in1"||ka==="in2")&&!J.legsoutside&&ba.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}_1`,route:[{x:La-rl*Ra,y:Fa},{x:La-rl*Ra/2,y:Fa}],type:"pcb_silkscreen_path",stroke_width:0},{layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}_2`,route:[{x:La,y:Fa-rl*Ia/2},{x:La,y:Fa-rl*Ia}],type:"pcb_silkscreen_path",stroke_width:.1}),(ka==="in1"||ka==="in2")&&ba.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${Ma}_3`,route:[{x:el-.2*-Ra,y:tl+.2*il},{x:el,y:tl},{x:el+.2*il*-Ra,y:tl+.2},{x:el-.2*-Ra,y:tl+.2*il}],type:"pcb_silkscreen_path",stroke_width:.1})}const Sa=silkscreenRef$1(0,J.h/2+(J.legsoutside?J.pl*1.2:.5),.3);return{circuitJson:[...la,...ba,Sa],parameters:J}};base_quad_def$1.extend({}).transform(quadTransform$1);var qfn$1=ua=>(ua.legsoutside=!1,quad$1(ua)),qfp$1=ua=>{ua.legsoutside=!0;const J=quad_def$1.parse(ua);if(!ua.p)switch(ua.num_pins){case 44:case 64:ua.p=.8;break;case 52:ua.w===14?ua.p=1:ua.p=.65;break;case 208:ua.p=.5;break}if(!ua.pl)switch(ua.num_pins){case 44:case 52:case 64:ua.pl=2.25;break;case 208:ua.pl=1.65;break;default:ua.pl=J.pl*4;break}if(!ua.pw)switch(ua.num_pins){case 44:case 64:ua.pw=.5;break;case 52:ua.w===14?ua.pw=.45:ua.pw=.55;break;case 208:ua.pw=.3;break;default:ua.pw=J.pw;break}return quad$1(ua)};base_quad_def$1.extend({}).transform(quadTransform$1);var mlp$1=ua=>(ua.legsoutside=!1,ua.thermalpad===void 0&&(ua.thermalpad=!0),quad$1(ua)),ssop_def$1=extendSoicDef$1({w:"3.9mm",p:"1.27mm"}),ssop$1=ua=>{const J=ssop_def$1.parse(ua);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},tssop_def$1=extendSoicDef$1({w:"6.1mm",p:"0.65mm",legsoutside:!0}),tssop$1=ua=>{const J=tssop_def$1.parse(ua);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot236_def$1=extendSoicDef$1({p:"0.95mm",w:"1.6mm",legsoutside:!0}),sot236$1=ua=>{const J=sot236_def$1.parse({...ua,num_pins:6});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot363_def$1=extendSoicDef$1({}),sot363$1=ua=>{const J=sot363_def$1.parse({fn:"sot363",num_pins:6,w:1.94,p:.65,pw:.3,pl:.7,legoutside:!0});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot23_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(3).default(3),w:z$3.string().default("1.92mm"),h:z$3.string().default("2.74mm"),pl:z$3.string().default("0.8mm"),pw:z$3.string().default("0.764mm")}),sot23$1=ua=>{const J=sot23_def$1.parse(ua);return{circuitJson:sot23WithoutParsing$1(J),parameters:J}},getCcwSot23Coords$1=ua=>{const{pn:J,w:la,h:xa,pl:Aa}=ua;return J===1?{x:-1.7,y:0}:J===2?{x:1.7,y:-.95}:{x:1.7,y:.95}},sot23WithoutParsing$1=ua=>{const J=[];for(let xa=0;xa<ua.num_pins;xa++){const{x:Aa,y:ba}=getCcwSot23Coords$1({num_pins:ua.num_pins,pn:xa+1,w:Number.parseFloat(ua.w),h:Number.parseFloat(ua.h),pl:Number.parseFloat(ua.pl)});J.push(rectpad$1(xa+1,Aa,ba,Number.parseFloat(ua.pl),Number.parseFloat(ua.pw)))}const la=silkscreenRef$1(0,Number(ua.h),.3);return[...J,la]},CORNERS$1=[{name:"top-left",dx:-1,dy:1},{name:"top-right",dx:1,dy:1},{name:"bottom-left",dx:-1,dy:-1},{name:"bottom-right",dx:1,dy:-1}],dfn_def$1=extendSoicDef$1({}),dfn$1=ua=>{const J=dfn_def$1.parse(ua),la=[];for(let Fa=0;Fa<J.num_pins;Fa++){const{x:ka,y:el}=getCcwSoicCoords$1({num_pins:J.num_pins,pn:Fa+1,w:J.w,p:J.p??1.27,pl:J.pl,widthincludeslegs:!0});la.push(rectpad$1(Fa+1,ka,el,J.pl??"1mm",J.pw??"0.6mm"))}const xa=Math.min(1,J.p/2),Aa=J.w+xa,ba=(J.num_pins/2-1)*J.p+J.pw+xa,Sa=[];for(const Fa of CORNERS$1){const{dx:ka,dy:el}=Fa;Sa.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",route:[{x:ka*Aa/2-ka*J.p,y:el*ba/2},{x:ka*Aa/2,y:el*ba/2},{x:ka*Aa/2,y:el*ba/2-el*J.p}],type:"pcb_silkscreen_path",stroke_width:.1})}const Ma=J.p/4,Ra=-Aa/2-Ma/2,Ia=ba/2-J.p/2;Sa.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",type:"pcb_silkscreen_path",route:[{x:Ra,y:Ia},{x:Ra-Ma,y:Ia+Ma},{x:Ra-Ma,y:Ia-Ma},{x:Ra,y:Ia}],stroke_width:.1});const La=silkscreenRef$1(0,ba/2+.4,ba/12);return{circuitJson:[...la,La,...Sa],parameters:J}},pinrow_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.number().optional().default(6),p:length$4.default("0.1in").describe("pitch"),id:length$4.default("1.0mm").describe("inner diameter"),od:length$4.default("1.5mm").describe("outer diameter")}),pinrow$1=ua=>{const J=pinrow_def$1.parse(ua),{p:la,id:xa,od:Aa}=J,ba=[],Ma=-((J.num_pins-1)/2)*la;for(let Ia=0;Ia<J.num_pins;Ia++)ba.push(platedhole$1(Ia+1,Ma+Ia*la,0,xa,Aa));const Ra=silkscreenRef$1(0,la/2,.5);return{circuitJson:[...ba,Ra],parameters:J}},sot563_def$1=extendSoicDef$1({}),sot563$1=ua=>{const J=sot563_def$1.parse({fn:"sot563",num_pins:6,w:1.94,p:.5,pw:.3,pl:.67,legoutside:!0});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},ms012_def$1=extendSoicDef$1({p:"1.27mm",w:"3.9mm",legsoutside:!0}),ms012$1=ua=>{const J=ms012_def$1.parse({...ua,num_pins:8});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},ms013_def$1=extendSoicDef$1({p:"1.27mm",w:"7.5mm",legsoutside:!0}),ms013$1=ua=>{const J=ms013_def$1.parse({...ua,num_pins:16});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot723_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(3).default(3),w:z$3.string().default("1.2mm"),h:z$3.string().default("1.2mm"),pl:z$3.string().default("0.3mm"),pw:z$3.string().default("0.32mm")}),sot723$1=ua=>{const J=sot723_def$1.parse(ua),la=sot723WithoutParsing$1(J),xa=silkscreenRef$1(.4,length$4.parse(J.h),.2);return{circuitJson:[...la,xa],parameters:J}},getCcwSot723Coords$2=ua=>{const{pn:J,w:la,h:xa,pl:Aa}=ua;return J===1?{x:0,y:0}:J===2?{x:1,y:-.4}:{x:1,y:.4}},sot723WithoutParsing$1=ua=>{const J=[];for(let la=0;la<3;la++){const{x:xa,y:Aa}=getCcwSot723Coords$2({num_pins:ua.num_pins,pn:la+1,w:Number.parseFloat(ua.w),h:Number.parseFloat(ua.h),pl:Number.parseFloat(ua.pl)});J.push(rectpad$1(la+1,xa,Aa,Number.parseFloat(ua.pl),la!==0?Number.parseFloat(ua.pw):.42))}return J},sod_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(2).default(2),w:z$3.string().default("2.36mm"),h:z$3.string().default("1.22mm"),pl:z$3.string().default("0.9mm"),pw:z$3.string().default("0.9mm"),pad_spacing:z$3.string().default("4.19mm")}),sod123$1=ua=>{const J=sod_def$1.parse(ua),la=silkscreenRef$1(0,length$4.parse(J.h)/4+.4,.3);return{circuitJson:sodWithoutParsing$1(J).concat(la),parameters:J}},getSodCoords$1=ua=>{const{pn:J,pad_spacing:la}=ua;return J===1?{x:-la/2,y:0}:{x:la/2,y:0}},sodWithoutParsing$1=ua=>{const J=[];for(let la=1;la<=ua.num_pins;la++){const{x:xa,y:Aa}=getSodCoords$1({pn:la,pad_spacing:Number.parseFloat(ua.pad_spacing)});J.push(rectpad$1(la,xa,Aa,Number.parseFloat(ua.pl),Number.parseFloat(ua.pw)))}return J},axial_def$1=z$3.object({fn:z$3.string(),p:length$4.optional().default("2.54mm"),id:length$4.optional().default("0.7mm"),od:length$4.optional().default("1mm")}),axial$1=ua=>{const J=axial_def$1.parse(ua),{p:la,id:xa,od:Aa}=J,ba=[platedhole$1(1,-la/2,0,xa,Aa),platedhole$1(2,la/2,0,xa,Aa)],Sa={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",route:[{x:-la/2+Aa+xa/2,y:0},{x:la/2-Aa-xa/2,y:0}],stroke_width:.1,pcb_silkscreen_path_id:""},Ma=silkscreenRef$1(0,la/4,.5);return{circuitJson:[...ba,Sa,Ma],parameters:J}},silkscreenpath$1=(ua,J={})=>({type:"pcb_silkscreen_path",layer:J.layer||"top",pcb_component_id:J.pcb_component_id||"",pcb_silkscreen_path_id:J.pcb_silkscreen_path_id||"",route:ua,stroke_width:J.stroke_width||.1}),pushbutton_def$1=z$3.object({fn:z$3.literal("pushbutton"),w:z$3.number().default(4.5),h:z$3.number().default(6.5),id:z$3.number().default(1),od:z$3.number().default(1.2)}),pushbutton$1=ua=>{const J=pushbutton_def$1.parse(ua),la=J.w,xa=J.h,Aa=J.id,ba=[platedhole$1(1,-la/2,xa/2,Aa,Aa*1.2),platedhole$1(2,-la/2,-xa/2,Aa,Aa*1.2),platedhole$1(3,la/2,-xa/2,Aa,Aa*1.2),platedhole$1(4,la/2,xa/2,Aa,Aa*1.2)],Sa=[silkscreenpath$1([{x:-la/2,y:-xa/2},{x:-la/2,y:xa/2}]),silkscreenpath$1([{x:la/2,y:-xa/2},{x:la/2,y:xa/2}]),silkscreenpath$1([{x:-la/2,y:0},{x:-la/5,y:0},{x:la/5*1/Math.sqrt(2),y:xa/8}]),silkscreenpath$1([{x:la/2,y:0},{x:la/5,y:0}])],Ma=silkscreenRef$1(0,xa/2+.4,.5);return{circuitJson:[...ba,...Sa,Ma],parameters:J}},stampboard_def$1=z$3.object({fn:z$3.string(),w:length$4.default("22.58mm"),h:length$4.optional(),left:length$4.optional().default(20),right:length$4.optional().default(20),top:length$4.optional().default(2),bottom:length$4.optional().default(2),p:length$4.default(length$4.parse("2.54mm")),pw:length$4.default(length$4.parse("1.6mm")),pl:length$4.default(length$4.parse("2.4mm")),innerhole:z$3.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight$1=ua=>{const J=stampboard_def$1.parse(ua);return J.left&&J.right?Math.max(J.left,J.right)*J.p:J.left?J.left*J.p:J.right?J.right*J.p:51},getTriangleDir$1=(ua,J,la)=>{let xa=[];return la==="right"&&(xa=[{x:ua+1/2,y:J},{x:ua-1/2,y:J+.6/2},{x:ua-1/2,y:J-.6/2},{x:ua+1/2,y:J}]),la==="left"&&(xa=[{x:ua-1/2,y:J},{x:ua+1/2,y:J+.6/2},{x:ua+1/2,y:J-.6/2},{x:ua-1/2,y:J}]),la==="top"&&(xa=[{x:ua,y:J+1/2},{x:ua-.6/2,y:J-1/2},{x:ua+.6/2,y:J-1/2},{x:ua,y:J+1/2}]),la==="bottom"&&(xa=[{x:ua,y:J-1/2},{x:ua-.6/2,y:J+1/2},{x:ua+.6/2,y:J+1/2},{x:ua,y:J-1/2}]),xa},stampboard$1=ua=>{const J=stampboard_def$1.parse(ua),la=J.h??getHeight$1(J),xa=[],Aa=[];let ba=[];const Sa=1,Ma=1.2,Ra=J.left+J.right+(J.bottom??0)+(J.top??0);if(J.right){const ka=-((J.right-1)/2)*J.p;for(let el=0;el<J.right;el++)el===0&&!J.left&&!J.bottom&&(ba=getTriangleDir$1(J.w/2-J.pl*1.4,ka+el*J.p,"right")),xa.push(rectpad$1(el+1+J.left+(J.bottom??0),J.w/2-J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&(Aa.push(platedhole$1(el+1+J.left+(J.bottom??0)+Ra,J.w/2,ka+el*J.p,Sa,Ma)),Aa.push(platedhole$1(el+1+J.left+(J.bottom??0)+Ra*2,J.w/2-J.innerholeedgedistance,ka+el*J.p,Sa,Ma)))}if(J.left){const ka=-((J.left-1)/2)*J.p;for(let el=0;el<J.left;el++)el===J.left-1&&(ba=getTriangleDir$1(-J.w/2+J.pl*1.4,ka+el*J.p,"left")),xa.push(rectpad$1(el+1,-J.w/2+J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&(Aa.push(platedhole$1(el+1+Ra,-J.w/2,ka+el*J.p,Sa,Ma)),Aa.push(platedhole$1(el+1+Ra*2,-J.w/2+J.innerholeedgedistance,ka+el*J.p,Sa,Ma)))}if(J.top){const ka=-((J.top-1)/2)*J.p;for(let el=0;el<J.top;el++)el===J.top-1&&!J.left&&!J.bottom&&!J.right&&(ba=getTriangleDir$1(ka+el*J.p,la/2-J.pl*1.4,"top")),xa.push(rectpad$1(el+1+J.left+J.right+(J.bottom??0),ka+el*J.p,la/2-J.pl/2,J.pw,J.pl)),J.innerhole&&(Aa.push(platedhole$1(el+1+J.left+J.right+(J.bottom??0)+Ra,ka+el*J.p,la/2,Sa,Ma)),Aa.push(platedhole$1(el+1+J.left+J.right+(J.bottom??0)+Ra*2,ka+el*J.p,la/2-J.innerholeedgedistance,Sa,Ma)))}if(J.bottom){const ka=-((J.bottom-1)/2)*J.p;for(let el=0;el<J.bottom;el++)el===0&&!J.left&&(ba=getTriangleDir$1(ka+el*J.p,-la/2+J.pl*1.4,"bottom")),xa.push(rectpad$1(el+1+J.left,ka+el*J.p,-la/2+J.pl/2,J.pw,J.pl)),J.innerhole&&(Aa.push(platedhole$1(el+1+J.left+Ra,ka+el*J.p,-la/2,Sa,Ma)),Aa.push(platedhole$1(el+1+J.left+Ra*2,ka+el*J.p,-la/2+J.innerholeedgedistance,Sa,Ma)))}const Ia={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_triangle_1",pcb_component_id:"2",route:ba,stroke_width:.1,layer:"top"},La={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2,y:la/2},{x:J.w/2,y:la/2},{x:J.w/2,y:-la/2},{x:-J.w/2,y:-la/2},{x:-J.w/2,y:la/2}],stroke_width:.1,layer:"top"},Fa=silkscreenRef$1(0,la/1.8,la/25);return{circuitJson:[...xa,...Aa,La,Ia,Fa],parameters:J}},stampreceiver_def$1=z$3.object({fn:z$3.string(),w:length$4.default("22.58mm"),h:length$4.optional(),left:length$4.optional().default(20),right:length$4.optional().default(20),top:length$4.optional().default(2),bottom:length$4.optional().default(2),p:length$4.default(length$4.parse("2.54mm")),pw:length$4.default(length$4.parse("1.6mm")),pl:length$4.default(length$4.parse("3.2mm")),innerhole:z$3.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight2$1=ua=>{const J=stampreceiver_def$1.parse(ua);return J.left&&J.right?Math.max(J.left,J.right)*J.p:J.left?J.left*J.p:J.right?J.right*J.p:51},getTriangleDir2$1=(ua,J,la,xa=1,Aa=.6)=>{const ba=xa/2,Sa=Aa/2;return{left:[{x:ua+ba,y:J},{x:ua-ba,y:J+Sa},{x:ua-ba,y:J-Sa},{x:ua+ba,y:J}],right:[{x:ua-ba,y:J},{x:ua+ba,y:J+Sa},{x:ua+ba,y:J-Sa},{x:ua-ba,y:J}],top:[{x:ua,y:J-ba},{x:ua-Sa,y:J+ba},{x:ua+Sa,y:J+ba},{x:ua,y:J-ba}],bottom:[{x:ua,y:J+ba},{x:ua-Sa,y:J-ba},{x:ua+Sa,y:J-ba},{x:ua,y:J+ba}]}[la]},stampreceiver$1=ua=>{const J=stampreceiver_def$1.parse(ua),la=J.h??getHeight2$1(J),xa=[],Aa=[],ba=1,Sa=1.2,Ma=J.left+J.right+(J.bottom??0)+(J.top??0);let Ra=[];if(J.right){const ka=-((J.right-1)/2)*J.p;for(let el=0;el<J.right;el++)el===0&&!J.left&&!J.bottom&&(Ra=getTriangleDir2$1(J.w/2+J.pl*1.4,ka+el*J.p,"right")),xa.push(rectpad$1(el+1+J.left+(J.bottom??0),J.w/2-J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&Aa.push(platedhole$1(el+1+J.left+(J.bottom??0)+Ma,J.w/2-J.innerholeedgedistance,ka+el*J.p,ba,Sa))}if(J.left){const ka=-((J.left-1)/2)*J.p;for(let el=0;el<J.left;el++)el===J.left-1&&(Ra=getTriangleDir2$1(-J.w/2-J.pl/3,ka+el*J.p,"left")),xa.push(rectpad$1(el+1,-J.w/2+J.pl/2,ka+el*J.p,J.pl,J.pw)),J.innerhole&&Aa.push(platedhole$1(el+1+Ma,-J.w/2+J.innerholeedgedistance,ka+el*J.p,ba,Sa))}if(J.top){const ka=-((J.top-1)/2)*J.p;for(let el=0;el<J.top;el++)el===J.top-1&&!J.left&&!J.bottom&&!J.right&&(Ra=getTriangleDir2$1(ka+el*J.p,la/2+J.pl*1.4,"top")),xa.push(rectpad$1(el+1+J.right+(J.bottom??0)+J.left,ka+el*J.p,la/2-J.pl/2,J.pw,J.pl)),J.innerhole&&Aa.push(platedhole$1(el+1+J.right+(J.bottom??0)+J.left+Ma,ka+el*J.p,la/2-J.innerholeedgedistance,ba,Sa))}if(J.bottom){const ka=-((J.bottom-1)/2)*J.p;for(let el=0;el<J.bottom;el++)el===0&&!J.left&&(Ra=getTriangleDir2$1(ka+el*J.p,-la/2-J.pl*1.4,"bottom")),xa.push(rectpad$1(el+1+J.left,ka+el*J.p,-la/2+J.pl/2,J.pw,J.pl)),J.innerhole&&Aa.push(platedhole$1(el+1+J.left+Ma,ka+el*J.p,-la/2+J.innerholeedgedistance,ba,Sa))}const Ia={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:Ra,stroke_width:.1},La={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2-J.pl/3,y:la/2+J.pl/3},{x:J.w/2+J.pl/3,y:la/2+J.pl/3},{x:J.w/2+J.pl/3,y:-la/2-J.pl/3},{x:-J.w/2-J.pl/3,y:-la/2-J.pl/3},{x:-J.w/2-J.pl/3,y:la/2+J.pl/3}],stroke_width:.1,layer:"top"},Fa=silkscreenRef$1(0,la/1.8,la/25);return{circuitJson:[...Aa,...xa,La,Ia,Fa],parameters:J}},lqfp$1=ua=>(ua.legsoutside=!0,quad$1(ua)),sot235_def$1=z$3.object({fn:z$3.string(),num_pins:z$3.literal(5).default(5),h:z$3.string().default("1.6mm"),pl:z$3.string().default("1mm"),pw:z$3.string().default("0.7mm"),p:z$3.string().default("0.95mm")}),sot235$1=ua=>{const J=sot235_def$1.parse(ua);return{circuitJson:sot23_5WithoutParsing$1(J),parameters:J}},getCcwSot235Coords$1=ua=>{const{p:J,h:la,pn:xa}=ua;if(xa===1)return{x:-la/2-.5,y:J};if(xa===2)return{x:-la/2-.5,y:0};if(xa===3)return{x:-la/2-.5,y:-J};if(xa===4)return{x:la/2+.5,y:-J};if(xa===5)return{x:la/2+.5,y:J};throw new Error("Invalid pin number")},sot23_5WithoutParsing$1=ua=>{const J=[];for(let Fa=1;Fa<=ua.num_pins;Fa++){const{x:ka,y:el}=getCcwSot235Coords$1({h:Number.parseFloat(ua.h),p:Number.parseFloat(ua.p),pn:Fa});J.push(rectpad$1(Fa,ka,el,Number.parseFloat(ua.pl),Number.parseFloat(ua.pw)))}const la=(ua.num_pins+1)/2*Number.parseFloat(ua.p),xa=Number.parseFloat(ua.h),Aa={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-la/3,y:xa/2+Number.parseFloat(ua.p)/1.3},{x:la/3,y:xa/2+Number.parseFloat(ua.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},ba={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_2",route:[{x:-la/3,y:-xa/2-Number.parseFloat(ua.p)/1.3},{x:la/3,y:-xa/2-Number.parseFloat(ua.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},Sa=silkscreenRef$1(0,xa+.3,.3),Ma=getCcwSot235Coords$1({h:Number.parseFloat(ua.h),p:Number.parseFloat(ua.p),pn:1});Ma.x=Ma.x-Number.parseFloat(ua.pw)*1.5;const Ra=.7,Ia=.3,La={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"pin1_indicator",route:[{x:Ma.x+Ra/2,y:Ma.y},{x:Ma.x-Ra/2,y:Ma.y+Ia/2},{x:Ma.x-Ra/2,y:Ma.y-Ia/2},{x:Ma.x+Ra/2,y:Ma.y}],stroke_width:.05};return[...J,Sa,Aa,ba,La]},breakoutheaders_def=z$3.object({fn:z$3.string(),w:length$4.default("10mm"),h:length$4.optional(),left:length$4.optional().default(20),right:length$4.optional().default(20),top:length$4.optional().default(0),bottom:length$4.optional().default(0),p:length$4.default(length$4.parse("2.54mm")),id:length$4.optional().default(length$4.parse("1mm")),od:length$4.optional().default(length$4.parse("1.5mm"))}),getHeight3=ua=>{const J=breakoutheaders_def.parse(ua);return J.left&&J.right?Math.max(J.left,J.right)*J.p:J.left?J.left*J.p:J.right?J.right*J.p:51},getTrianglePath=(ua,J,la,xa=1,Aa=.6)=>{const ba=xa/2,Sa=Aa/2;return{left:[{x:ua+ba,y:J},{x:ua-ba,y:J+Sa},{x:ua-ba,y:J-Sa},{x:ua+ba,y:J}],right:[{x:ua-ba,y:J},{x:ua+ba,y:J+Sa},{x:ua+ba,y:J-Sa},{x:ua-ba,y:J}],top:[{x:ua,y:J-ba},{x:ua-Sa,y:J+ba},{x:ua+Sa,y:J+ba},{x:ua,y:J-ba}],bottom:[{x:ua,y:J+ba},{x:ua-Sa,y:J-ba},{x:ua+Sa,y:J-ba},{x:ua,y:J+ba}]}[la]},breakoutheaders=ua=>{const J=breakoutheaders_def.parse(ua),la=J.h??getHeight3(J),xa=[],Aa=J.id,ba=J.od;let Sa=[];if(J.right){const La=-((J.right-1)/2)*J.p;for(let Fa=0;Fa<J.right;Fa++)Fa===0&&!J.left&&!J.bottom&&(Sa=getTrianglePath(J.w/2+ba*1.4,La+Fa*J.p,"right")),xa.push(platedhole$1(Fa+1+J.left+(J.bottom??0),J.w/2,La+Fa*J.p,Aa,ba))}if(J.left){const La=-((J.left-1)/2)*J.p;for(let Fa=0;Fa<J.left;Fa++)Fa===J.left-1&&(Sa=getTrianglePath(-J.w/2-ba*1.4,La+Fa*J.p,"left")),xa.push(platedhole$1(Fa+1,-J.w/2,La+Fa*J.p,Aa,ba))}if(J.top){const La=-((J.top-1)/2)*J.p;for(let Fa=0;Fa<J.top;Fa++)Fa===J.top-1&&!J.left&&!J.bottom&&!J.right&&(Sa=getTrianglePath(La+Fa*J.p,la/2+ba*1.4,"top")),xa.push(platedhole$1(Fa+1+J.right+(J.bottom??0)+J.left,La+Fa*J.p,la/2,Aa,ba))}if(J.bottom){const La=-((J.bottom-1)/2)*J.p;for(let Fa=0;Fa<J.bottom;Fa++)Fa===0&&!J.left&&(Sa=getTrianglePath(La+Fa*J.p,-la/2-ba*1.4,"bottom")),xa.push(platedhole$1(Fa+1+J.left,La+Fa*J.p,-la/2,Aa,ba))}const Ma={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:Sa,stroke_width:.1},Ra={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2-ba,y:la/2+ba},{x:J.w/2+ba,y:la/2+ba},{x:J.w/2+ba,y:-la/2-ba},{x:-J.w/2-ba,y:-la/2-ba},{x:-J.w/2-ba,y:la/2+ba}],stroke_width:.1,layer:"top"},Ia=silkscreenRef$1(0,la/1.7,la/25);return{circuitJson:[...xa,Ra,Ia,Ma],parameters:J}};function isNotNull$2(ua){return ua!==null}var string$1=ua=>{let J=footprinter$1();(ua.length===4||ua.length===5)&&/^\d+$/.test(ua)&&(ua=`res${ua}`);const la=ua.split("_").map(xa=>{const Aa=xa.match(/([a-z]+)([\(\d\.\+\?].*)?/),[ba,Sa,Ma]=Aa??[];return Ma!=null&&Ma.includes("?")?null:{fn:Aa==null?void 0:Aa[1],v:Aa==null?void 0:Aa[2]}}).filter(isNotNull$2);for(const{fn:xa,v:Aa}of la)J=J[xa](Aa);return J.setString(ua),J},getFootprintNames$1=()=>Object.keys(fn_exports$1),footprinter$1=()=>{const ua=new Proxy({},{get:(J,la)=>{if(la==="soup"||la==="circuitJson"){if("fn"in J&&fn_exports$1[J.fn])return()=>fn_exports$1[J.fn](J).circuitJson;if(!fn_exports$1[J.fn])throw new Error(`Invalid footprint function, got "${J.fn}"${J.string?`, from string "${J.string}"`:""}`);return()=>{throw new Error(`No function found for footprinter, make sure to specify .dip, .lr, .p, etc. Got "${la}"`)}}if(la==="json"){if(!fn_exports$1[J.fn])throw new Error(`Invalid footprint function, got "${J.fn}"${J.string?`, from string "${J.string}"`:""}`);return()=>fn_exports$1[J.fn](J).parameters}return la==="getFootprintNames"?()=>Object.keys(fn_exports$1):la==="params"?()=>J:la==="setString"?xa=>(J.string=xa,ua):xa=>(Object.keys(J).length===0?`${la}${xa}`in fn_exports$1?(J[`${la}${xa}`]=!0,J.fn=`${la}${xa}`):(J[la]=!0,J.fn=la,la==="res"||la==="cap"?xa&&(J.imperial=xa):J.num_pins=Number.isNaN(Number.parseFloat(xa))?void 0:Number.parseFloat(xa)):!xa&&["w","h","p"].includes(la)||(J[la]=xa??!0),ua)}});return ua};footprinter$1.string=string$1,footprinter$1.getFootprintNames=getFootprintNames$1;var fp$1=footprinter$1,unitMappings$2={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},unitMappingAndVariantSuffixes$1=new Set;for(const[ua,J]of Object.entries(unitMappings$2)){unitMappingAndVariantSuffixes$1.add(ua);for(const la of Object.keys(J.variants))unitMappingAndVariantSuffixes$1.add(la)}function getBaseTscircuitUnit$2(ua){for(const[J,la]of Object.entries(unitMappings$2))if(ua in la.variants)return{baseUnit:la.baseUnit,conversionFactor:la.variants[ua]};return{baseUnit:ua,conversionFactor:1}}var si_prefix_multiplier$1={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},parseAndConvertSiUnit$2=ua=>{var Ma;if(typeof ua>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof ua=="string"&&ua.match(/^[\d\.]+$/))return{value:Number.parseFloat(ua),parsedUnit:null,unitOfValue:null};if(typeof ua=="number")return{value:ua,parsedUnit:null,unitOfValue:null};if(typeof ua=="object"&&"x"in ua&&"y"in ua){const{parsedUnit:Ra,unitOfValue:Ia}=parseAndConvertSiUnit$2(ua.x);return{parsedUnit:Ra,unitOfValue:Ia,value:{x:parseAndConvertSiUnit$2(ua.x).value,y:parseAndConvertSiUnit$2(ua.y).value}}}const la=(Ma=ua.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:Ma[0];if(!la)throw new Error(`Could not determine unit: "${ua}"`);const xa=la.split("").reverse().join(""),Aa=ua.slice(0,-xa.length);if(xa in si_prefix_multiplier$1&&!unitMappingAndVariantSuffixes$1.has(xa)){const Ra=si_prefix_multiplier$1[xa];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(Aa)*Ra}}const{baseUnit:ba,conversionFactor:Sa}=getBaseTscircuitUnit$2(xa);return{parsedUnit:xa,unitOfValue:ba,value:Sa*Number.parseFloat(Aa)}},resistance$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),capacitance$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value).transform(ua=>Number.parseFloat(ua.toPrecision(12))),inductance$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),voltage$2=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),length$3=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),frequency$1=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),distance$5=length$3,current$1=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),time$1=z$3.string().or(z$3.number()).transform(ua=>parseAndConvertSiUnit$2(ua).value),rotation$4=z$3.string().or(z$3.number()).transform(ua=>typeof ua=="number"?ua:ua.endsWith("deg")?Number.parseFloat(ua.split("deg")[0]):ua.endsWith("rad")?Number.parseFloat(ua.split("rad")[0])*180/Math.PI:Number.parseFloat(ua)),battery_capacity$2=z$3.number().or(z$3.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),point$3=z$3.object({x:distance$5,y:distance$5}),position$3=point$3,point3$3=z$3.object({x:distance$5,y:distance$5,z:distance$5}),position3$1=point3$3,size$5=z$3.object({width:z$3.number(),height:z$3.number()}),getZodPrefixedIdWithDefault$2=ua=>z$3.string().optional().default(()=>`${ua}_${nanoid$1(10)}`),supplier_name$2=z$3.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base$2=z$3.object({type:z$3.literal("source_component"),ftype:z$3.string().optional(),source_component_id:z$3.string(),name:z$3.string(),manufacturer_part_number:z$3.string().optional(),supplier_part_numbers:z$3.record(supplier_name$2,z$3.array(z$3.string())).optional(),display_value:z$3.string().optional()}),source_simple_capacitor$2=source_component_base$2.extend({ftype:z$3.literal("simple_capacitor"),capacitance:capacitance$2,display_capacitance:z$3.string().optional(),max_decoupling_trace_length:distance$5.optional()}),source_simple_resistor$2=source_component_base$2.extend({ftype:z$3.literal("simple_resistor"),resistance:resistance$2,display_resistance:z$3.string().optional()}),source_simple_diode$2=source_component_base$2.extend({ftype:z$3.literal("simple_diode")}),source_simple_ground$2=source_component_base$2.extend({ftype:z$3.literal("simple_ground")}),source_simple_bug$2=source_component_base$2.extend({ftype:z$3.literal("simple_bug")}).describe("@deprecated"),source_simple_chip$2=source_component_base$2.extend({ftype:z$3.literal("simple_chip")}),source_led$2=source_simple_diode$2.extend({ftype:z$3.literal("led")}),source_simple_power_source$2=source_component_base$2.extend({ftype:z$3.literal("simple_power_source"),voltage:voltage$2}),source_simple_battery$2=source_component_base$2.extend({ftype:z$3.literal("simple_battery"),capacity:battery_capacity$2}),source_simple_inductor$2=source_component_base$2.extend({ftype:z$3.literal("simple_inductor"),inductance:inductance$2}),source_simple_push_button$1=source_component_base$2.extend({ftype:z$3.literal("simple_push_button")}),source_simple_potentiometer$1=source_component_base$2.extend({ftype:z$3.literal("simple_potentiometer"),max_resistance:resistance$2}),source_simple_crystal$1=source_component_base$2.extend({ftype:z$3.literal("simple_crystal"),frequency:z$3.number().describe("Frequency in Hz"),load_capacitance:z$3.number().optional().describe("Load capacitance in pF")}),source_simple_pin_header$1=source_component_base$2.extend({ftype:z$3.literal("simple_pin_header"),pin_count:z$3.number(),gender:z$3.enum(["male","female"]).optional().default("male")}),source_simple_resonator$1=source_component_base$2.extend({ftype:z$3.literal("simple_resonator"),load_capacitance:capacitance$2,equivalent_series_resistance:resistance$2.optional(),frequency:frequency$1}),source_simple_transistor$1=source_component_base$2.extend({ftype:z$3.literal("simple_transistor"),transistor_type:z$3.enum(["npn","pnp"])}),source_simple_mosfet$1=source_component_base$2.extend({ftype:z$3.literal("simple_mosfet"),channel_type:z$3.enum(["n","p"]),mosfet_mode:z$3.enum(["enhancement","depletion"])}),any_source_component$2=z$3.union([source_simple_resistor$2,source_simple_capacitor$2,source_simple_diode$2,source_simple_ground$2,source_simple_chip$2,source_simple_bug$2,source_led$2,source_simple_power_source$2,source_simple_battery$2,source_simple_inductor$2,source_simple_push_button$1,source_simple_potentiometer$1,source_simple_crystal$1,source_simple_pin_header$1,source_simple_resonator$1,source_simple_transistor$1,source_simple_mosfet$1]),source_port$2=z$3.object({type:z$3.literal("source_port"),pin_number:z$3.number().optional(),port_hints:z$3.array(z$3.string()).optional(),name:z$3.string(),source_port_id:z$3.string(),source_component_id:z$3.string()}),source_trace$2=z$3.object({type:z$3.literal("source_trace"),source_trace_id:z$3.string(),connected_source_port_ids:z$3.array(z$3.string()),connected_source_net_ids:z$3.array(z$3.string()),subcircuit_connectivity_map_key:z$3.string().optional(),max_length:z$3.number().optional(),display_name:z$3.string().optional()}),source_group$2=z$3.object({type:z$3.literal("source_group"),source_group_id:z$3.string(),subcircuit_id:z$3.string().optional(),parent_subcircuit_id:z$3.string().optional(),is_subcircuit:z$3.boolean().optional(),name:z$3.string().optional()}),source_net$2=z$3.object({type:z$3.literal("source_net"),source_net_id:z$3.string(),name:z$3.string(),member_source_group_ids:z$3.array(z$3.string()),is_power:z$3.boolean().optional(),is_ground:z$3.boolean().optional(),is_digital_signal:z$3.boolean().optional(),is_analog_signal:z$3.boolean().optional(),trace_width:z$3.number().optional()}),schematic_box$2=z$3.object({type:z$3.literal("schematic_box"),schematic_component_id:z$3.string(),width:distance$5,height:distance$5,x:distance$5,y:distance$5}).describe("Draws a box on the schematic"),schematic_path$2=z$3.object({type:z$3.literal("schematic_path"),schematic_component_id:z$3.string(),fill_color:z$3.enum(["red","blue"]).optional(),is_filled:z$3.boolean().optional(),points:z$3.array(point$3)}),schematic_pin_styles$2=z$3.record(z$3.object({left_margin:length$3.optional(),right_margin:length$3.optional(),top_margin:length$3.optional(),bottom_margin:length$3.optional()})),schematic_component_port_arrangement_by_size$1=z$3.object({left_size:z$3.number(),right_size:z$3.number(),top_size:z$3.number().optional(),bottom_size:z$3.number().optional()}),schematic_component_port_arrangement_by_sides$1=z$3.object({left_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:z$3.object({pins:z$3.array(z$3.number()),direction:z$3.enum(["left-to-right","right-to-left"]).optional()}).optional()}),port_arrangement$1=z$3.union([schematic_component_port_arrangement_by_size$1,schematic_component_port_arrangement_by_sides$1]),schematic_component$2=z$3.object({type:z$3.literal("schematic_component"),rotation:rotation$4.default(0),size:size$5,center:point$3,source_component_id:z$3.string(),schematic_component_id:z$3.string(),pin_spacing:length$3.optional(),pin_styles:schematic_pin_styles$2.optional(),box_width:length$3.optional(),symbol_name:z$3.string().optional(),port_arrangement:port_arrangement$1.optional(),port_labels:z$3.record(z$3.string()).optional(),symbol_display_value:z$3.string().optional()}),schematic_line$2=z$3.object({type:z$3.literal("schematic_line"),schematic_component_id:z$3.string(),x1:distance$5,x2:distance$5,y1:distance$5,y2:distance$5}),schematic_trace$2=z$3.object({type:z$3.literal("schematic_trace"),schematic_trace_id:z$3.string(),source_trace_id:z$3.string(),junctions:z$3.array(z$3.object({x:z$3.number(),y:z$3.number()})),edges:z$3.array(z$3.object({from:z$3.object({x:z$3.number(),y:z$3.number()}),to:z$3.object({x:z$3.number(),y:z$3.number()}),is_crossing:z$3.boolean().optional(),from_schematic_port_id:z$3.string().optional(),to_schematic_port_id:z$3.string().optional()}))}),schematic_text$2=z$3.object({type:z$3.literal("schematic_text"),schematic_component_id:z$3.string(),schematic_text_id:z$3.string(),text:z$3.string(),position:z$3.object({x:distance$5,y:distance$5}),rotation:z$3.number().default(0),anchor:z$3.enum(["center","left","right","top","bottom"]).default("center"),color:z$3.string().default("#000000")}),schematic_port$2=z$3.object({type:z$3.literal("schematic_port"),schematic_port_id:z$3.string(),source_port_id:z$3.string(),schematic_component_id:z$3.string().optional(),center:point$3,facing_direction:z$3.enum(["up","down","left","right"]).optional(),distance_from_component_edge:z$3.number().optional(),side_of_component:z$3.enum(["top","bottom","left","right"]).optional(),true_ccw_index:z$3.number().optional(),pin_number:z$3.number().optional(),display_pin_label:z$3.string().optional()}).describe("Defines a port on a schematic component"),schematic_net_label$2=z$3.object({type:z$3.literal("schematic_net_label"),source_net_id:z$3.string(),center:point$3,anchor_position:point$3.optional(),anchor_side:z$3.enum(["top","bottom","left","right"]),text:z$3.string(),symbol_name:z$3.string().optional()}),schematic_error$2=z$3.object({type:z$3.literal("schematic_error"),schematic_error_id:z$3.string(),error_type:z$3.literal("schematic_port_not_found"),message:z$3.string()}).describe("Defines a schematic error on the schematic"),schematic_debug_object_base$2=z$3.object({type:z$3.literal("schematic_debug_object"),label:z$3.string().optional()}),schematic_debug_rect$2=schematic_debug_object_base$2.extend({shape:z$3.literal("rect"),center:point$3,size:size$5}),schematic_debug_line$2=schematic_debug_object_base$2.extend({shape:z$3.literal("line"),start:point$3,end:point$3}),schematic_debug_point$2=schematic_debug_object_base$2.extend({shape:z$3.literal("point"),center:point$3}),schematic_debug_object$2=z$3.discriminatedUnion("shape",[schematic_debug_rect$2,schematic_debug_line$2,schematic_debug_point$2]),schematic_voltage_probe$1=z$3.object({type:z$3.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$3.string(),position:point$3,schematic_trace_id:z$3.string(),voltage:voltage$2.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers$2=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string$2=z$3.enum(all_layers$2),layer_ref$2=layer_string$2.or(z$3.object({name:layer_string$2})).transform(ua=>typeof ua=="string"?ua:ua.name),visible_layer$2=z$3.enum(["top","bottom"]),pcb_route_hint$2=z$3.object({x:distance$5,y:distance$5,via:z$3.boolean().optional(),via_to_layer:layer_ref$2.optional()}),pcb_route_hints$1=z$3.array(pcb_route_hint$2),route_hint_point$2=z$3.object({x:distance$5,y:distance$5,via:z$3.boolean().optional(),to_layer:layer_ref$2.optional(),trace_width:distance$5.optional()}),pcb_component$2=z$3.object({type:z$3.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault$2("pcb_component"),source_component_id:z$3.string(),center:point$3,layer:layer_ref$2,rotation:rotation$4,width:length$3,height:length$3,subcircuit_id:z$3.string().optional()}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square$2=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$2("pcb_hole"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),hole_shape:z$3.enum(["circle","square"]),hole_diameter:z$3.number(),x:distance$5,y:distance$5}),pcb_hole_circle_or_square_shape$1=pcb_hole_circle_or_square$2.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval$2=z$3.object({type:z$3.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$2("pcb_hole"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),hole_shape:z$3.literal("oval"),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$5,y:distance$5}),pcb_hole_oval_shape$1=pcb_hole_oval$2.describe("Defines an oval hole on the PCB"),pcb_hole$2=pcb_hole_circle_or_square$2.or(pcb_hole_oval$2),pcb_plated_hole_circle$2=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.literal("circle"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),outer_diameter:z$3.number(),hole_diameter:z$3.number(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$2("pcb_plated_hole")}),pcb_plated_hole_oval$2=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.enum(["oval","pill"]),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),outer_width:z$3.number(),outer_height:z$3.number(),hole_width:z$3.number(),hole_height:z$3.number(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$2("pcb_plated_hole")}),pcb_circular_hole_with_rect_pad$1=z$3.object({type:z$3.literal("pcb_plated_hole"),shape:z$3.literal("circular_hole_with_rect_pad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),hole_shape:z$3.literal("circle"),pad_shape:z$3.literal("rect"),hole_diameter:z$3.number(),rect_pad_width:z$3.number(),rect_pad_height:z$3.number(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2),port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault$2("pcb_plated_hole")}),pcb_plated_hole$2=z$3.union([pcb_plated_hole_circle$2,pcb_plated_hole_oval$2,pcb_circular_hole_with_rect_pad$1]),pcb_port$2=z$3.object({type:z$3.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault$2("pcb_port"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),source_port_id:z$3.string(),pcb_component_id:z$3.string(),x:distance$5,y:distance$5,layers:z$3.array(layer_ref$2)}).describe("Defines a port on the PCB"),pcb_smtpad_circle$2=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,radius:z$3.number(),layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rect$2=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_rotated_rect$1=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),ccw_rotation:rotation$4,layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad_pill=z$3.object({type:z$3.literal("pcb_smtpad"),shape:z$3.literal("pill"),pcb_smtpad_id:getZodPrefixedIdWithDefault$2("pcb_smtpad"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),radius:z$3.number(),layer:layer_ref$2,port_hints:z$3.array(z$3.string()).optional(),pcb_component_id:z$3.string().optional(),pcb_port_id:z$3.string().optional()}),pcb_smtpad$2=z$3.union([pcb_smtpad_circle$2,pcb_smtpad_rect$2,pcb_smtpad_rotated_rect$1,pcb_smtpad_pill]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle$2=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$2("pcb_solder_paste"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,radius:z$3.number(),layer:layer_ref$2,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste_rect$2=z$3.object({type:z$3.literal("pcb_solder_paste"),shape:z$3.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$2("pcb_solder_paste"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,width:z$3.number(),height:z$3.number(),layer:layer_ref$2,pcb_component_id:z$3.string().optional(),pcb_smtpad_id:z$3.string().optional()}),pcb_solder_paste$2=z$3.union([pcb_solder_paste_circle$2,pcb_solder_paste_rect$2]).describe("Defines solderpaste on the PCB"),pcb_text$2=z$3.object({type:z$3.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault$2("pcb_text"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),text:z$3.string(),center:point$3,layer:layer_ref$2,width:length$3,height:length$3,lines:z$3.number(),align:z$3.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire$2=z$3.object({route_type:z$3.literal("wire"),x:distance$5,y:distance$5,width:distance$5,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$2}),pcb_trace_route_point_via$2=z$3.object({route_type:z$3.literal("via"),x:distance$5,y:distance$5,from_layer:z$3.string(),to_layer:z$3.string()}),pcb_trace_route_point$1=z$3.union([pcb_trace_route_point_wire$2,pcb_trace_route_point_via$2]),pcb_trace$2=z$3.object({type:z$3.literal("pcb_trace"),source_trace_id:z$3.string().optional(),pcb_component_id:z$3.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault$2("pcb_trace"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),route_thickness_mode:z$3.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:z$3.number().optional(),should_round_corners:z$3.boolean().optional(),trace_length:z$3.number().optional(),route:z$3.array(z$3.union([z$3.object({route_type:z$3.literal("wire"),x:distance$5,y:distance$5,width:distance$5,start_pcb_port_id:z$3.string().optional(),end_pcb_port_id:z$3.string().optional(),layer:layer_ref$2}),z$3.object({route_type:z$3.literal("via"),x:distance$5,y:distance$5,from_layer:z$3.string(),to_layer:z$3.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error$2=z$3.object({type:z$3.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault$2("pcb_trace_error"),error_type:z$3.literal("pcb_trace_error"),message:z$3.string(),center:point$3.optional(),pcb_trace_id:z$3.string(),source_trace_id:z$3.string(),pcb_component_ids:z$3.array(z$3.string()),pcb_port_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB"),pcb_port_not_matched_error$2=z$3.object({type:z$3.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault$2("pcb_error"),message:z$3.string(),pcb_component_ids:z$3.array(z$3.string())}).describe("Defines a trace error on the PCB where a port is not matched"),pcb_via$2=z$3.object({type:z$3.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault$2("pcb_via"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),x:distance$5,y:distance$5,outer_diameter:distance$5.default("0.6mm"),hole_diameter:distance$5.default("0.25mm"),from_layer:layer_ref$2.optional(),to_layer:layer_ref$2.optional(),layers:z$3.array(layer_ref$2),pcb_trace_id:z$3.string().optional()}).describe("Defines a via on the PCB"),pcb_board$2=z$3.object({type:z$3.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault$2("pcb_board"),is_subcircuit:z$3.boolean().optional(),subcircuit_id:z$3.string().optional(),width:length$3,height:length$3,center:point$3,thickness:length$3.optional().default(1.4),num_layers:z$3.number().optional().default(4),outline:z$3.array(point$3).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error$2=z$3.object({type:z$3.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault$2("pcb_placement_error"),message:z$3.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint$2=z$3.object({type:z$3.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault$2("pcb_trace_hint"),pcb_port_id:z$3.string(),pcb_component_id:z$3.string(),route:z$3.array(route_hint_point$2)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line$2=z$3.object({type:z$3.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_line"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),stroke_width:distance$5.default("0.1mm"),x1:distance$5,y1:distance$5,x2:distance$5,y2:distance$5,layer:visible_layer$2}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path$2=z$3.object({type:z$3.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_path"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),layer:visible_layer$2,route:z$3.array(point$3),stroke_width:length$3}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text$2=z$3.object({type:z$3.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_text"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$5.default("0.2mm"),pcb_component_id:z$3.string(),text:z$3.string(),ccw_rotation:z$3.number().optional(),layer:layer_ref$2,is_mirrored:z$3.boolean().default(!1).optional(),anchor_position:point$3.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),pcb_silkscreen_rect$2=z$3.object({type:z$3.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_rect"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,width:length$3,height:length$3,layer:layer_ref$2}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle$2=z$3.object({type:z$3.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_circle"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,radius:length$3,layer:visible_layer$2}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval$2=z$3.object({type:z$3.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault$2("pcb_silkscreen_oval"),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,radius_x:distance$5,radius_y:distance$5,layer:visible_layer$2}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text$2=z$3.object({type:z$3.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault$2("pcb_fabrication_note_text"),subcircuit_id:z$3.string().optional(),pcb_group_id:z$3.string().optional(),font:z$3.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$5.default("1mm"),pcb_component_id:z$3.string(),text:z$3.string(),layer:visible_layer$2,anchor_position:point$3.default({x:0,y:0}),anchor_alignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:z$3.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),pcb_fabrication_note_path$2=z$3.object({type:z$3.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault$2("pcb_fabrication_note_path"),pcb_component_id:z$3.string(),subcircuit_id:z$3.string().optional(),layer:layer_ref$2,route:z$3.array(point$3),stroke_width:length$3,color:z$3.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout$2=z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("rect"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,width:distance$5,height:distance$5,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()}).or(z$3.object({type:z$3.literal("pcb_keepout"),shape:z$3.literal("circle"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),center:point$3,radius:distance$5,pcb_keepout_id:z$3.string(),layers:z$3.array(z$3.string()),description:z$3.string().optional()})),pcb_missing_footprint_error$1=z$3.object({type:z$3.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault$2("pcb_missing_footprint_error"),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),error_type:z$3.literal("pcb_missing_footprint_error"),source_component_id:z$3.string(),message:z$3.string()}).describe("Defines a missing footprint error on the PCB"),pcb_manual_edit_conflict_error$1=z$3.object({type:z$3.literal("pcb_manual_edit_conflict_error"),pcb_error_id:getZodPrefixedIdWithDefault$2("pcb_manual_edit_conflict_error"),message:z$3.string(),pcb_component_id:z$3.string(),pcb_group_id:z$3.string().optional(),subcircuit_id:z$3.string().optional(),source_component_id:z$3.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),pcb_group$1=z$3.object({type:z$3.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault$2("pcb_group"),source_group_id:z$3.string(),is_subcircuit:z$3.boolean().optional(),subcircuit_id:z$3.string().optional(),width:length$3,height:length$3,center:point$3,pcb_component_ids:z$3.array(z$3.string()),name:z$3.string().optional(),description:z$3.string().optional()}).describe("Defines a group of components on the PCB"),cad_component$2=z$3.object({type:z$3.literal("cad_component"),cad_component_id:z$3.string(),pcb_component_id:z$3.string(),source_component_id:z$3.string(),position:point3$3,rotation:point3$3.optional(),size:point3$3.optional(),layer:layer_ref$2.optional(),footprinter_string:z$3.string().optional(),model_obj_url:z$3.string().optional(),model_stl_url:z$3.string().optional(),model_3mf_url:z$3.string().optional(),model_jscad:z$3.any().optional()}).describe("Defines a component on the PCB"),any_circuit_element$1=z$3.union([source_trace$2,source_port$2,any_source_component$2,source_led$2,source_net$2,source_group$2,source_simple_bug$2,source_simple_chip$2,source_simple_capacitor$2,source_simple_diode$2,source_simple_resistor$2,source_simple_power_source$2,source_simple_battery$2,source_simple_inductor$2,source_simple_pin_header$1,source_simple_resonator$1,source_simple_transistor$1,source_simple_mosfet$1,source_simple_potentiometer$1,source_simple_push_button$1,pcb_component$2,pcb_hole$2,pcb_missing_footprint_error$1,pcb_manual_edit_conflict_error$1,pcb_plated_hole$2,pcb_keepout$2,pcb_port$2,pcb_text$2,pcb_trace$2,pcb_via$2,pcb_smtpad$2,pcb_solder_paste$2,pcb_board$2,pcb_group$1,pcb_trace_hint$2,pcb_silkscreen_line$2,pcb_silkscreen_path$2,pcb_silkscreen_text$2,pcb_silkscreen_rect$2,pcb_silkscreen_circle$2,pcb_silkscreen_oval$2,pcb_trace_error$2,pcb_placement_error$2,pcb_port_not_matched_error$2,pcb_fabrication_note_path$2,pcb_fabrication_note_text$2,schematic_box$2,schematic_text$2,schematic_line$2,schematic_component$2,schematic_port$2,schematic_trace$2,schematic_path$2,schematic_error$2,schematic_net_label$2,schematic_debug_object$2,schematic_voltage_probe$1,cad_component$2]),any_soup_element$1=any_circuit_element$1;const Soup=Object.freeze(Object.defineProperty({__proto__:null,all_layers:all_layers$2,any_circuit_element:any_circuit_element$1,any_soup_element:any_soup_element$1,any_source_component:any_source_component$2,battery_capacity:battery_capacity$2,cad_component:cad_component$2,capacitance:capacitance$2,current:current$1,distance:distance$5,frequency:frequency$1,getZodPrefixedIdWithDefault:getZodPrefixedIdWithDefault$2,inductance:inductance$2,layer_ref:layer_ref$2,layer_string:layer_string$2,length:length$3,pcb_board:pcb_board$2,pcb_component:pcb_component$2,pcb_fabrication_note_path:pcb_fabrication_note_path$2,pcb_fabrication_note_text:pcb_fabrication_note_text$2,pcb_group:pcb_group$1,pcb_hole:pcb_hole$2,pcb_hole_circle_or_square_shape:pcb_hole_circle_or_square_shape$1,pcb_hole_oval_shape:pcb_hole_oval_shape$1,pcb_keepout:pcb_keepout$2,pcb_manual_edit_conflict_error:pcb_manual_edit_conflict_error$1,pcb_missing_footprint_error:pcb_missing_footprint_error$1,pcb_placement_error:pcb_placement_error$2,pcb_plated_hole:pcb_plated_hole$2,pcb_port:pcb_port$2,pcb_port_not_matched_error:pcb_port_not_matched_error$2,pcb_route_hint:pcb_route_hint$2,pcb_route_hints:pcb_route_hints$1,pcb_silkscreen_circle:pcb_silkscreen_circle$2,pcb_silkscreen_line:pcb_silkscreen_line$2,pcb_silkscreen_oval:pcb_silkscreen_oval$2,pcb_silkscreen_path:pcb_silkscreen_path$2,pcb_silkscreen_rect:pcb_silkscreen_rect$2,pcb_silkscreen_text:pcb_silkscreen_text$2,pcb_smtpad:pcb_smtpad$2,pcb_smtpad_pill,pcb_solder_paste:pcb_solder_paste$2,pcb_text:pcb_text$2,pcb_trace:pcb_trace$2,pcb_trace_error:pcb_trace_error$2,pcb_trace_hint:pcb_trace_hint$2,pcb_trace_route_point:pcb_trace_route_point$1,pcb_trace_route_point_via:pcb_trace_route_point_via$2,pcb_trace_route_point_wire:pcb_trace_route_point_wire$2,pcb_via:pcb_via$2,point:point$3,point3:point3$3,port_arrangement:port_arrangement$1,position:position$3,position3:position3$1,resistance:resistance$2,rotation:rotation$4,route_hint_point:route_hint_point$2,schematic_box:schematic_box$2,schematic_component:schematic_component$2,schematic_component_port_arrangement_by_sides:schematic_component_port_arrangement_by_sides$1,schematic_component_port_arrangement_by_size:schematic_component_port_arrangement_by_size$1,schematic_debug_line:schematic_debug_line$2,schematic_debug_object:schematic_debug_object$2,schematic_debug_object_base:schematic_debug_object_base$2,schematic_debug_point:schematic_debug_point$2,schematic_debug_rect:schematic_debug_rect$2,schematic_error:schematic_error$2,schematic_line:schematic_line$2,schematic_net_label:schematic_net_label$2,schematic_path:schematic_path$2,schematic_pin_styles:schematic_pin_styles$2,schematic_port:schematic_port$2,schematic_text:schematic_text$2,schematic_trace:schematic_trace$2,schematic_voltage_probe:schematic_voltage_probe$1,size:size$5,source_component_base:source_component_base$2,source_group:source_group$2,source_led:source_led$2,source_net:source_net$2,source_port:source_port$2,source_simple_battery:source_simple_battery$2,source_simple_bug:source_simple_bug$2,source_simple_capacitor:source_simple_capacitor$2,source_simple_chip:source_simple_chip$2,source_simple_crystal:source_simple_crystal$1,source_simple_diode:source_simple_diode$2,source_simple_ground:source_simple_ground$2,source_simple_inductor:source_simple_inductor$2,source_simple_mosfet:source_simple_mosfet$1,source_simple_pin_header:source_simple_pin_header$1,source_simple_potentiometer:source_simple_potentiometer$1,source_simple_power_source:source_simple_power_source$2,source_simple_push_button:source_simple_push_button$1,source_simple_resistor:source_simple_resistor$2,source_simple_resonator:source_simple_resonator$1,source_simple_transistor:source_simple_transistor$1,source_trace:source_trace$2,supplier_name:supplier_name$2,time:time$1,visible_layer:visible_layer$2,voltage:voltage$2},Symbol.toStringTag,{value:"Module"}));var browser={exports:{}},ms$1,hasRequiredMs;function requireMs(){if(hasRequiredMs)return ms$1;hasRequiredMs=1;var ua=1e3,J=ua*60,la=J*60,xa=la*24,Aa=xa*7,ba=xa*365.25;ms$1=function(La,Fa){Fa=Fa||{};var ka=typeof La;if(ka==="string"&&La.length>0)return Sa(La);if(ka==="number"&&isFinite(La))return Fa.long?Ra(La):Ma(La);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(La))};function Sa(La){if(La=String(La),!(La.length>100)){var Fa=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(La);if(Fa){var ka=parseFloat(Fa[1]),el=(Fa[2]||"ms").toLowerCase();switch(el){case"years":case"year":case"yrs":case"yr":case"y":return ka*ba;case"weeks":case"week":case"w":return ka*Aa;case"days":case"day":case"d":return ka*xa;case"hours":case"hour":case"hrs":case"hr":case"h":return ka*la;case"minutes":case"minute":case"mins":case"min":case"m":return ka*J;case"seconds":case"second":case"secs":case"sec":case"s":return ka*ua;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return ka;default:return}}}}function Ma(La){var Fa=Math.abs(La);return Fa>=xa?Math.round(La/xa)+"d":Fa>=la?Math.round(La/la)+"h":Fa>=J?Math.round(La/J)+"m":Fa>=ua?Math.round(La/ua)+"s":La+"ms"}function Ra(La){var Fa=Math.abs(La);return Fa>=xa?Ia(La,Fa,xa,"day"):Fa>=la?Ia(La,Fa,la,"hour"):Fa>=J?Ia(La,Fa,J,"minute"):Fa>=ua?Ia(La,Fa,ua,"second"):La+" ms"}function Ia(La,Fa,ka,el){var tl=Fa>=ka*1.5;return Math.round(La/ka)+" "+el+(tl?"s":"")}return ms$1}var common$2,hasRequiredCommon;function requireCommon(){if(hasRequiredCommon)return common$2;hasRequiredCommon=1;function ua(J){xa.debug=xa,xa.default=xa,xa.coerce=Ia,xa.disable=Ma,xa.enable=ba,xa.enabled=Ra,xa.humanize=requireMs(),xa.destroy=La,Object.keys(J).forEach(Fa=>{xa[Fa]=J[Fa]}),xa.names=[],xa.skips=[],xa.formatters={};function la(Fa){let ka=0;for(let el=0;el<Fa.length;el++)ka=(ka<<5)-ka+Fa.charCodeAt(el),ka|=0;return xa.colors[Math.abs(ka)%xa.colors.length]}xa.selectColor=la;function xa(Fa){let ka,el=null,tl,rl;function il(...nl){if(!il.enabled)return;const sl=il,ll=Number(new Date),dl=ll-(ka||ll);sl.diff=dl,sl.prev=ka,sl.curr=ll,ka=ll,nl[0]=xa.coerce(nl[0]),typeof nl[0]!="string"&&nl.unshift("%O");let gl=0;nl[0]=nl[0].replace(/%([a-zA-Z%])/g,(vl,Tl)=>{if(vl==="%%")return"%";gl++;const Ll=xa.formatters[Tl];if(typeof Ll=="function"){const Il=nl[gl];vl=Ll.call(sl,Il),nl.splice(gl,1),gl--}return vl}),xa.formatArgs.call(sl,nl),(sl.log||xa.log).apply(sl,nl)}return il.namespace=Fa,il.useColors=xa.useColors(),il.color=xa.selectColor(Fa),il.extend=Aa,il.destroy=xa.destroy,Object.defineProperty(il,"enabled",{enumerable:!0,configurable:!1,get:()=>el!==null?el:(tl!==xa.namespaces&&(tl=xa.namespaces,rl=xa.enabled(Fa)),rl),set:nl=>{el=nl}}),typeof xa.init=="function"&&xa.init(il),il}function Aa(Fa,ka){const el=xa(this.namespace+(typeof ka>"u"?":":ka)+Fa);return el.log=this.log,el}function ba(Fa){xa.save(Fa),xa.namespaces=Fa,xa.names=[],xa.skips=[];const ka=(typeof Fa=="string"?Fa:"").trim().replace(" ",",").split(",").filter(Boolean);for(const el of ka)el[0]==="-"?xa.skips.push(el.slice(1)):xa.names.push(el)}function Sa(Fa,ka){let el=0,tl=0,rl=-1,il=0;for(;el<Fa.length;)if(tl<ka.length&&(ka[tl]===Fa[el]||ka[tl]==="*"))ka[tl]==="*"?(rl=tl,il=el,tl++):(el++,tl++);else if(rl!==-1)tl=rl+1,il++,el=il;else return!1;for(;tl<ka.length&&ka[tl]==="*";)tl++;return tl===ka.length}function Ma(){const Fa=[...xa.names,...xa.skips.map(ka=>"-"+ka)].join(",");return xa.enable(""),Fa}function Ra(Fa){for(const ka of xa.skips)if(Sa(Fa,ka))return!1;for(const ka of xa.names)if(Sa(Fa,ka))return!0;return!1}function Ia(Fa){return Fa instanceof Error?Fa.stack||Fa.message:Fa}function La(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return xa.enable(xa.load()),xa}return common$2=ua,common$2}var hasRequiredBrowser;function requireBrowser(){return hasRequiredBrowser||(hasRequiredBrowser=1,function(ua,J){J.formatArgs=xa,J.save=Aa,J.load=ba,J.useColors=la,J.storage=Sa(),J.destroy=(()=>{let Ra=!1;return()=>{Ra||(Ra=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),J.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function la(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let Ra;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(Ra=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(Ra[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function xa(Ra){if(Ra[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+Ra[0]+(this.useColors?"%c ":" ")+"+"+ua.exports.humanize(this.diff),!this.useColors)return;const Ia="color: "+this.color;Ra.splice(1,0,Ia,"color: inherit");let La=0,Fa=0;Ra[0].replace(/%[a-zA-Z%]/g,ka=>{ka!=="%%"&&(La++,ka==="%c"&&(Fa=La))}),Ra.splice(Fa,0,Ia)}J.log=console.debug||console.log||(()=>{});function Aa(Ra){try{Ra?J.storage.setItem("debug",Ra):J.storage.removeItem("debug")}catch{}}function ba(){let Ra;try{Ra=J.storage.getItem("debug")}catch{}return!Ra&&typeof process<"u"&&"env"in process&&(Ra=process.env.DEBUG),Ra}function Sa(){try{return localStorage}catch{}}ua.exports=requireCommon()(J);const{formatters:Ma}=ua.exports;Ma.j=function(Ra){try{return JSON.stringify(Ra)}catch(Ia){return"[UnexpectedJSONParseError]: "+Ia.message}}}(browser,browser.exports)),browser.exports}var browserExports=requireBrowser();const Debug$1=getDefaultExportFromCjs$1(browserExports);var reactReconciler$2={exports:{}},reactReconciler_production={exports:{}},scheduler$1={exports:{}},scheduler_production={};/**
|
|
7140
7140
|
* @license React
|
|
7141
7141
|
* scheduler.production.js
|
|
7142
7142
|
*
|
|
@@ -7536,7 +7536,7 @@ Check the render method of %s.`,u0(xd)||"Unknown"));var Fc=X9(zl,nc);Fc.payload=
|
|
|
7536
7536
|
`),{solved:!1,connectionName:ua.name}}createObstacleList({dominantLayer:ua,connection:J,obstaclesFromTraces:la}){return new ObstacleList(this.allObstacles.filter(xa=>!xa.connectedTo.includes(J.name)).filter(xa=>xa.layers.includes(ua)).concat(la??[]))}postprocessConnectionSolveResult(ua,J){return J}solve(){const ua=[],J=[];this.debugTraceCount=0;for(const la of this.input.connections){const xa=la.pointsToConnect[0].layer??"top";this.debugTraceCount+=1,this.obstacles=this.createObstacleList({dominantLayer:xa,connection:la,obstaclesFromTraces:J});let Aa=this.solveConnection(la);Aa=this.postprocessConnectionSolveResult(la,Aa),ua.push(Aa),debug2$2.enabled&&this.drawDebugTraceObstacles(J),Aa.solved&&J.push(...getObstaclesFromRoute(Aa.route.map(ba=>({x:ba.x,y:ba.y,layer:ba.layer??xa})),la.name))}return ua}solveAndMapToTraces(){return this.solve().flatMap(J=>J.solved?[{type:"pcb_trace",pcb_trace_id:`pcb_trace_for_${J.connectionName}`,route:addViasWhenLayerChanges(J.route.map(la=>({route_type:"wire",x:la.x,y:la.y,width:this.input.minTraceWidth,layer:la.layer})))}]:[])}getDebugGroup(){const ua=`t${this.debugTraceCount}_iter[${this.iterations-1}]`;return this.iterations<30||this.iterations<100&&this.iterations%10===0||this.iterations<1e3&&this.iterations%100===0||!this.debugSolutions?ua:null}drawDebugTraceObstacles(ua){const{debugTraceCount:J,debugSolutions:la}=this;for(const xa in la)xa.startsWith(`t${J}_`)&&la[xa].push(...ua.map((Aa,ba)=>({type:"pcb_smtpad",pcb_component_id:"",layer:Aa.layers[0],width:Aa.width,shape:"rect",x:Aa.center.x,y:Aa.center.y,pcb_smtpad_id:`trace_obstacle_${ba}`,height:Aa.height})))}drawDebugSolution({current:ua,newNeighbors:J}){const la=this.getDebugGroup();if(!la)return;const{openSet:xa,debugTraceCount:Aa,debugSolutions:ba}=this;ba[la]??(ba[la]=[]);const Sa=ba[la];Sa.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${ua.x}_${ua.y}`,font:"tscircuit2024",font_size:.25,text:"X"+(ua.l!==void 0?ua.l:""),pcb_component_id:"",layer:"top",anchor_position:{x:ua.x,y:ua.y},anchor_alignment:"center"});for(let Ma=0;Ma<xa.length;Ma++){const Ra=xa[Ma];Sa.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${Ra.x}_${Ra.y}`,layer:"top",route:[[0,.05],[.05,0],[0,-.05],[-.05,0],[0,.05]].map(([Ia,La])=>({x:Ra.x+Ia,y:Ra.y+La})),stroke_width:.01}),Sa.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${Ra.x}_${Ra.y}`,font:"tscircuit2024",font_size:.03,text:Ma.toString(),pcb_component_id:"",layer:"top",anchor_position:{x:Ra.x,y:Ra.y},anchor_alignment:"center"})}if(ua.parent){const Ma=[];let Ra=ua;for(;Ra;)Ma.unshift(Ra),Ra=Ra.parent;Sa.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${ua.x}_${ua.y}`,layer:"top",route:Ma,stroke_width:.01})}}},debug3$1=Debug$1("autorouting-dataset:infinite-grid-ijump-astar:get-distance-to-overcome-obstacle");function getDistanceToOvercomeObstacle({node:ua,travelDir:J,wallDir:la,obstacle:xa,obstacles:Aa,obstaclesInRow:ba=0,OBSTACLE_MARGIN:Sa=.15,SHOULD_DETECT_CONJOINED_OBSTACLES:Ma=!1,MAX_CONJOINED_OBSTACLES:Ra=20}){let Ia;if(J.dx===0?J.dy>0?Ia=xa.center.y+xa.height/2-ua.y:Ia=ua.y-(xa.center.y-xa.height/2):J.dx>0?Ia=xa.center.x+xa.width/2-ua.x:Ia=ua.x-(xa.center.x-xa.width/2),Ia+=Sa,Ma&&ba<Ra){const La=Aa.getObstacleAt(ua.x+J.dx*Ia+la.dx*(la.wallDistance+.001),ua.y+J.dy*Ia+la.dy*(la.wallDistance+.001));if(La===xa)return Ia;if(La&&La.type==="rect"){const Fa=J.dy===0,ka=Fa?xa.height:xa.width;if((Fa?La.height:La.width)>ka)return debug3$1("next obstacle on path is bigger, not trying to overcome it"),Ia;const tl=getDistanceToOvercomeObstacle({node:{x:ua.x+J.dx*Ia,y:ua.y+J.dy*Ia},travelDir:J,wallDir:la,obstacle:La,obstacles:Aa,obstaclesInRow:ba+1,SHOULD_DETECT_CONJOINED_OBSTACLES:Ma,MAX_CONJOINED_OBSTACLES:Ra,OBSTACLE_MARGIN:Sa});Ia+=tl}}return Ia}var IJumpAutorouter=class extends GeneralizedAstarAutorouter{constructor(){super(...arguments);jp(this,"MAX_ITERATIONS",200)}getNeighbors(J){const la=this.obstacles,xa=this.goalPoint;let Aa;J.parent?Aa=dirFromAToB(J.parent,J):Aa=dirFromAToB(J,xa);const ba=[{dx:0,dy:1},{dx:1,dy:0},{dx:0,dy:-1},{dx:-1,dy:0}].filter(Ma=>{var Ra;return Ma.dx===Aa.dx*-1&&Ma.dy===Aa.dy*-1?!1:!(Ma.dx===Aa.dx&&Ma.dy===Aa.dy&&((Ra=J.parent)!=null&&Ra.obstacleHit))}).map(Ma=>la.getOrthoDirectionCollisionInfo(J,Ma,{margin:this.OBSTACLE_MARGIN})).filter(Ma=>Ma.wallDistance>=this.OBSTACLE_MARGIN),Sa=[];for(const Ma of ba){let Ra=null;J!=null&&J.obstacleHit&&(Ra=getDistanceToOvercomeObstacle({node:J,travelDir:Ma,wallDir:{...Aa,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:la,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const Ia=distAlongDir(J,xa,Ma),La=(Ma.dx===0||Math.sign(xa.x-J.x)===Ma.dx)&&(Ma.dy===0||Math.sign(xa.y-J.y)===Ma.dy);Ia<Ma.wallDistance&&Ia>0&&La?Sa.push({...Ma,travelDistance:Ia}):Ra!==null&&Ra<Ma.wallDistance?Sa.push({...Ma,travelDistance:Ra}):Ma.wallDistance!==1/0&&Sa.push({...Ma,travelDistance:Ma.wallDistance-this.OBSTACLE_MARGIN})}return Sa.filter(Ma=>!la.isObstacleAt(J.x+Ma.dx*Ma.travelDistance,J.y+Ma.dy*Ma.travelDistance)).map(Ma=>({x:J.x+Ma.dx*Ma.travelDistance,y:J.y+Ma.dy*Ma.travelDistance,obstacleHit:Ma.obstacle}))}};function generateApproximatingRects(ua,J=4){const{center:la,width:xa,height:Aa,rotation:ba}=ua,Sa=[],Ma=ba*Math.PI/180,Ra=Math.cos(Ma),Ia=Math.sin(Ma),La=(ba%360+360)%360;if(Aa<=xa?La>=45&&La<135||La>=225&&La<315:La>=135&&La<225||La>=315||La<45){const ka=xa/J;for(let el=0;el<J;el++){const tl=(el-J/2+.5)*ka,rl=-tl*Ra,il=-tl*Ia,nl=ka*1.1,sl=Math.abs(Aa*Ra)+Math.abs(ka*Ia);Sa.push({center:{x:la.x+rl,y:la.y+il},width:nl,height:sl})}}else{const ka=Aa/J;for(let el=0;el<J;el++){const tl=(el-J/2+.5)*ka,rl=-tl*Ia,il=tl*Ra,nl=Math.abs(xa*Ra)+Math.abs(ka*Ia),sl=ka*1.1;Sa.push({center:{x:la.x+rl,y:la.y+il},width:nl,height:sl})}}return Sa}var EVERY_LAYER=["top","inner1","inner2","bottom"],getObstaclesFromCircuitJson=(ua,J)=>{const la=Aa=>J?Aa.concat(Aa.map(ba=>J==null?void 0:J.getNetConnectedToId(ba)).filter(Boolean)):Aa,xa=[];for(const Aa of ua)if(Aa.type==="pcb_smtpad"){if(Aa.shape==="circle")xa.push({type:"oval",layers:[Aa.layer],center:{x:Aa.x,y:Aa.y},width:Aa.radius*2,height:Aa.radius*2,connectedTo:la([Aa.pcb_smtpad_id])});else if(Aa.shape==="rect")xa.push({type:"rect",layers:[Aa.layer],center:{x:Aa.x,y:Aa.y},width:Aa.width,height:Aa.height,connectedTo:la([Aa.pcb_smtpad_id])});else if(Aa.shape==="rotated_rect"){const ba={center:{x:Aa.x,y:Aa.y},width:Aa.width,height:Aa.height,rotation:Aa.ccw_rotation},Sa=generateApproximatingRects(ba);for(const Ma of Sa)xa.push({type:"rect",layers:[Aa.layer],center:Ma.center,width:Ma.width,height:Ma.height,connectedTo:la([Aa.pcb_smtpad_id])})}}else if(Aa.type==="pcb_keepout")Aa.shape==="circle"?xa.push({type:"oval",layers:Aa.layers,center:{x:Aa.center.x,y:Aa.center.y},width:Aa.radius*2,height:Aa.radius*2,connectedTo:[]}):Aa.shape==="rect"&&xa.push({type:"rect",layers:Aa.layers,center:{x:Aa.center.x,y:Aa.center.y},width:Aa.width,height:Aa.height,connectedTo:[]});else if(Aa.type==="pcb_hole")Aa.hole_shape==="oval"?xa.push({type:"oval",center:{x:Aa.x,y:Aa.y},width:Aa.hole_width,height:Aa.hole_height,connectedTo:[]}):Aa.hole_shape==="square"?xa.push({type:"rect",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.hole_diameter,height:Aa.hole_diameter,connectedTo:[]}):(Aa.hole_shape==="round"||Aa.hole_shape==="circle")&&xa.push({type:"rect",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.hole_diameter,height:Aa.hole_diameter,connectedTo:[]});else if(Aa.type==="pcb_plated_hole")Aa.shape==="circle"?xa.push({type:"oval",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.outer_diameter,height:Aa.outer_diameter,connectedTo:la([Aa.pcb_plated_hole_id])}):(Aa.shape==="oval"||Aa.shape==="pill")&&xa.push({type:"oval",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.outer_width,height:Aa.outer_height,connectedTo:la([Aa.pcb_plated_hole_id])});else if(Aa.type==="pcb_trace"){const ba=getObstaclesFromRoute(Aa.route.map(Sa=>({x:Sa.x,y:Sa.y,layer:"layer"in Sa?Sa.layer:Sa.from_layer})),Aa.source_trace_id);xa.push(...ba)}else Aa.type==="pcb_via"&&xa.push({type:"rect",layers:Aa.layers,center:{x:Aa.x,y:Aa.y},connectedTo:[],width:Aa.outer_diameter,height:Aa.outer_diameter});return xa};function getAlternativeGoalBoxes(ua){const{pcbConnMap:J,goalElementId:la}=ua;if(!la.startsWith("pcb_port_"))throw new Error(`Currently alternative goal boxes must have a goal id with prefix "pcb_port_" (got ${la})`);const xa=J.getAllTracesConnectedToPort(la);return getObstaclesFromCircuitJson(xa).map(Aa=>({...Aa,connectedTo:[la]}))}var getConnectionWithAlternativeGoalBoxes=ua=>{let{connection:J,pcbConnMap:la}=ua;if(J.pointsToConnect.length!==2)throw new Error(`Connection must have exactly 2 points for alternative goal boxes (got ${J.pointsToConnect.length})`);const[xa,Aa]=J.pointsToConnect;if(!xa.pcb_port_id||!Aa.pcb_port_id)throw new Error(`Connection points must have pcb_port_id for alternative goal box calculation (got ${xa.pcb_port_id} and ${Aa.pcb_port_id})`);const ba=getAlternativeGoalBoxes({goalElementId:xa.pcb_port_id,pcbConnMap:la}).concat([{center:xa,width:.01,height:.01,connectedTo:[xa.pcb_port_id],layers:[xa.layer],type:"rect"}]),Sa=getAlternativeGoalBoxes({goalElementId:Aa.pcb_port_id,pcbConnMap:la}).concat([{center:Aa,width:.01,height:.01,connectedTo:[Aa.pcb_port_id],layers:[Aa.layer],type:"rect"}]);if(ba.length<=1&&Sa.length<=1)return{...J,startPoint:xa,endPoint:Aa,goalBoxes:[]};const Ma=findNearestPointsBetweenBoxSets(ba,Sa);let Ra,Ia,La;return ba.length>=Sa.length?(Ra={...Aa,...Ma.pointB},Ia={...xa,...Ma.pointA},La=ba):(Ra={...xa,...Ma.pointA},Ia={...Aa,...Ma.pointB},La=Sa),{startPoint:Ra,endPoint:Ia,goalBoxes:La,name:J.name,pointsToConnect:[Ra,Ia]}},getSimpleRouteJson=(ua,J={})=>{const la={minTraceWidth:.1};la.layerCount=J.layerCount??1,la.obstacles=getObstaclesFromCircuitJson(ua,J.connMap),la.connections=[];for(const Aa of ua)if(Aa.type==="source_trace"){let ba={name:Aa.source_trace_id,pointsToConnect:Aa.connected_source_port_ids.map(Sa=>{var Ra;const Ma=distExports$3.su(ua).pcb_port.getWhere({source_port_id:Sa});if(!Ma)throw new Error(`Could not find pcb_port for source_port_id "${Sa}"`);return{x:Ma.x,y:Ma.y,layer:((Ra=Ma.layers)==null?void 0:Ra[0])??"top",pcb_port_id:Ma.pcb_port_id}})};if(J.optimizeWithGoalBoxes){const Sa=new PcbConnectivityMap(ua);ba=getConnectionWithAlternativeGoalBoxes({connection:ba,pcbConnMap:Sa})}la.connections.push(ba),markObstaclesAsConnected(la.obstacles,ba.pointsToConnect,ba.name)}const xa={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0};for(const Aa of la.obstacles)xa.minX=Math.min(xa.minX,Aa.center.x-Aa.width/2),xa.maxX=Math.max(xa.maxX,Aa.center.x+Aa.width/2),xa.minY=Math.min(xa.minY,Aa.center.y-Aa.height/2),xa.maxY=Math.max(xa.maxY,Aa.center.y+Aa.height/2);for(const Aa of la.connections)for(const ba of Aa.pointsToConnect)xa.minX=Math.min(xa.minX,ba.x),xa.maxX=Math.max(xa.maxX,ba.x),xa.minY=Math.min(xa.minY,ba.y),xa.maxY=Math.max(xa.maxY,ba.y);return la.bounds=xa,la},markObstaclesAsConnected=(ua,J,la)=>{for(const xa of J)for(const Aa of ua)isPointInsideObstacle(xa,Aa)&&Aa.connectedTo.push(la)};function isPointInsideObstacle(ua,J){const la=J.width/2,xa=J.height/2;if(J.type==="rect")return ua.x>=J.center.x-la&&ua.x<=J.center.x+la&&ua.y>=J.center.y-xa&&ua.y<=J.center.y+xa;if(J.type==="oval"){const Aa=(ua.x-J.center.x)/la,ba=(ua.y-J.center.y)/xa;return Aa*Aa+ba*ba<=1}return!1}function dirFromAToB2(ua,J){const la=J.x>ua.x?1:J.x<ua.x?-1:0,xa=J.y>ua.y?1:J.y<ua.y?-1:0,Aa=J.l>ua.l?1:J.l<ua.l?-1:0;return{dx:la,dy:xa,dl:Aa}}var LAYER_COUNT_INDEX_MAP={1:["top"],2:["top","bottom"],4:["top","inner1","inner2","bottom"]},getLayerNamesForLayerCount=ua=>LAYER_COUNT_INDEX_MAP[ua];function getLayerIndex(ua,J){const xa=LAYER_COUNT_INDEX_MAP[ua].indexOf(J);if(xa===-1)throw new Error(`Invalid layer for getLayerIndex (for layerCount === ${ua}): "${J}"`);return xa}function indexToLayer(ua,J){const xa=LAYER_COUNT_INDEX_MAP[ua][J];if(!xa)throw new Error(`Invalid index for indexToLayer (for layerCount === ${ua}): "${J}"`);return xa}var ObstacleList3d=class extends ObstacleList{constructor(J,la){super([]);jp(this,"obstacles");jp(this,"GRID_STEP",.1);jp(this,"layerCount");this.layerCount=J;const xa=getLayerNamesForLayerCount(J);this.obstacles=la.flatMap(Aa=>Aa.layers.filter(ba=>xa.includes(ba)).map(ba=>({...Aa,left:Aa.center.x-Aa.width/2,right:Aa.center.x+Aa.width/2,top:Aa.center.y+Aa.height/2,bottom:Aa.center.y-Aa.height/2,l:getLayerIndex(J,ba)})))}getObstacleAt(J,la,xa,Aa){Aa??(Aa=this.GRID_STEP);for(const ba of this.obstacles){if(ba.l!==xa)continue;const Sa=ba.width/2+Aa,Ma=ba.height/2+Aa;if(J>=ba.center.x-Sa&&J<=ba.center.x+Sa&&la>=ba.center.y-Ma&&la<=ba.center.y+Ma)return ba}return null}isObstacleAt(J,la,xa,Aa){return this.getObstacleAt(J,la,xa,Aa)!==null}getDirectionDistancesToNearestObstacle3d(J,la,xa){const{GRID_STEP:Aa}=this,ba={left:1/0,top:1/0,bottom:1/0,right:1/0};for(const Sa of this.obstacles)if(Sa.l===xa&&Sa.type==="rect"){const Ma=Sa.center.x-Sa.width/2-Aa,Ra=Sa.center.x+Sa.width/2+Aa,Ia=Sa.center.y+Sa.height/2+Aa,La=Sa.center.y-Sa.height/2-Aa;la>=La&&la<=Ia&&J>Ma&&(ba.left=Math.min(ba.left,J-Ra)),la>=La&&la<=Ia&&J<Ra&&(ba.right=Math.min(ba.right,Ma-J)),J>=Ma&&J<=Ra&&la<Ia&&(ba.top=Math.min(ba.top,La-la)),J>=Ma&&J<=Ra&&la>La&&(ba.bottom=Math.min(ba.bottom,la-Ia))}return ba}getOrthoDirectionCollisionInfo(J,la,{margin:xa=0}={}){const{x:Aa,y:ba,l:Sa}=J,{dx:Ma,dy:Ra,dl:Ia}=la;let La=1/0,Fa=null;if(Ia!==0){const ka=Sa+Ia;return this.isObstacleAt(Aa,ba,ka,xa)?(La=1,Fa=this.getObstacleAt(Aa,ba,ka,xa)):La=1,{dx:Ma,dy:Ra,dl:Ia,wallDistance:La,obstacle:Fa}}else{for(const ka of this.obstacles){if(ka.l!==Sa)continue;const el=ka.left-xa,tl=ka.right+xa,rl=ka.top+xa,il=ka.bottom-xa;let nl=null;Ma===1&&Ra===0?ba>il&&ba<rl&&Aa<ka.left&&(nl=ka.left-Aa):Ma===-1&&Ra===0?ba>il&&ba<rl&&Aa>ka.right&&(nl=Aa-ka.right):Ma===0&&Ra===1?Aa>el&&Aa<tl&&ba<ka.bottom&&(nl=ka.bottom-ba):Ma===0&&Ra===-1&&Aa>el&&Aa<tl&&ba>ka.top&&(nl=ba-ka.top),nl!==null&&nl<La&&(La=nl,Fa=ka)}return{dx:Ma,dy:Ra,dl:0,wallDistance:La,obstacle:Fa}}}getObstaclesOverlappingRegion(J){const la=[];for(const xa of this.obstacles){if(xa.l!==J.l)continue;const{left:Aa,right:ba,top:Sa,bottom:Ma}=xa;Aa<=J.maxX&&ba>=J.minX&&Sa>=J.minY&&Ma<=J.maxY&&la.push(xa)}return la}},MultilayerIjump=class extends GeneralizedAstarAutorouter{constructor(J){super(J);jp(this,"MAX_ITERATIONS",500);jp(this,"VIA_COST",4);jp(this,"VIA_DIAMETER",.5);jp(this,"allowLayerChange",!0);jp(this,"layerCount");jp(this,"obstacles");jp(this,"optimizeWithGoalBoxes");jp(this,"connMap");jp(this,"pcbConnMap");jp(this,"GOAL_RUSH_FACTOR",1.1);jp(this,"defaultGoalViaMargin",.5);jp(this,"marginsWithCosts");this.layerCount=J.input.layerCount??2,this.MAX_ITERATIONS=J.MAX_ITERATIONS??this.MAX_ITERATIONS,this.VIA_COST=J.VIA_COST??this.VIA_COST,this.connMap=J.connMap,this.pcbConnMap=J.pcbConnMap??new PcbConnectivityMap,this.optimizeWithGoalBoxes=J.optimizeWithGoalBoxes??!1,this.obstacles=null,this.marginsWithCosts=J.marginsWithCosts??[{margin:1,enterCost:0,travelCostFactor:1},{margin:this.OBSTACLE_MARGIN,enterCost:10,travelCostFactor:2}]}get largestMargin(){return this.marginsWithCosts[0].margin}preprocessConnectionBeforeSolving(J){return this.optimizeWithGoalBoxes?getConnectionWithAlternativeGoalBoxes({connection:J,pcbConnMap:this.pcbConnMap}):J}postprocessConnectionSolveResult(J,la){if(!la.solved)return la;if(this.optimizeWithGoalBoxes){const xa=la.route.map(Aa=>({x:Aa.x,y:Aa.y,route_type:"wire",layer:Aa.layer,width:this.input.minTraceWidth}));xa[0].start_pcb_port_id=J.pointsToConnect[0].pcb_port_id,xa[xa.length-1].end_pcb_port_id=J.pointsToConnect[1].pcb_port_id,this.pcbConnMap.addTrace({type:"pcb_trace",pcb_trace_id:`postprocess_trace_${nanoid$1(8)}`,route:xa})}return la}createObstacleList({dominantLayer:J,connection:la,obstaclesFromTraces:xa}){const Aa=this.connMap?this.connMap.getNetConnectedToId(la.name):la.name;if(!Aa)throw new Error(`The connection.name "${la.name}" wasn't present in the full connectivity map`);return new ObstacleList3d(this.layerCount,this.allObstacles.filter(ba=>!ba.connectedTo.includes(Aa)).concat(xa??[]))}computeG(J,la){let xa=J.g+manDist(J,la)*(J.travelMarginCostFactor??1)+(la.enterMarginCost??0);return(la.l??J.l!==-1??-1)&&(xa+=this.VIA_COST),xa}computeH(J){const la=Math.abs(J.x-this.goalPoint.x),xa=Math.abs(J.y-this.goalPoint.y),Aa=Math.abs(J.l-this.goalPoint.l);return(la+xa)**this.GOAL_RUSH_FACTOR+Aa*this.VIA_COST}getStartNode(J){return{...super.getStartNode(J),l:this.layerToIndex(J.pointsToConnect[0].layer)}}layerToIndex(J){return getLayerIndex(this.layerCount,J)}indexToLayer(J){return indexToLayer(this.layerCount,J)}getNodeName(J){return`${nodeName(J,this.GRID_STEP)}-${J.l??0}`}hasSpaceForVia(J,la){return J.every(xa=>this.obstacles.getObstaclesOverlappingRegion({minX:la.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:la.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:la.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:la.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:xa}).length===0)}getNeighborsSurroundingGoal(J){this.obstacles;const la=this.goalPoint,xa=[],Aa=[{dx:1,dy:0,dl:0},{dx:-1,dy:0,dl:0},{dx:0,dy:1,dl:0},{dx:0,dy:-1,dl:0}],ba=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin;for(const Sa of Aa){const Ma={x:J.x+Sa.dx*ba,y:J.y+Sa.dy*ba,l:J.l+Sa.dl,obstacleHit:null};this.hasSpaceForVia([J.l,la.l],Ma)&&xa.push(Ma)}return xa}getNeighbors(J){const la=this.obstacles,xa=this.goalPoint,Aa=manDist(J,xa);if(Aa<=this.OBSTACLE_MARGIN)return this.getNeighborsSurroundingGoal(J);let ba;J.parent?ba=dirFromAToB2(J.parent,J):ba=dirFromAToB2(J,xa);const Sa=[{dx:0,dy:1,dl:0},{dx:1,dy:0,dl:0},{dx:0,dy:-1,dl:0},{dx:-1,dy:0,dl:0}],Ma=Aa>this.VIA_DIAMETER+this.OBSTACLE_MARGIN,Ra=manDist(J,this.startNode)>this.VIA_DIAMETER+this.OBSTACLE_MARGIN;this.allowLayerChange&&Ma&&Ra&&(J.l<this.layerCount-1&&Sa.push({dx:0,dy:0,dl:1}),J.l>0&&Sa.push({dx:0,dy:0,dl:-1}));const Ia=Sa.filter(Fa=>{var ka;return Fa.dx===ba.dx*-1&&Fa.dy===ba.dy*-1&&Fa.dl===ba.dl*-1?!1:!(Fa.dx===ba.dx&&Fa.dy===ba.dy&&Fa.dl===ba.dl&&((ka=J.parent)!=null&&ka.obstacleHit))}).map(Fa=>la.getOrthoDirectionCollisionInfo(J,Fa,{margin:this.OBSTACLE_MARGIN})).filter(Fa=>!(Fa.wallDistance<this.OBSTACLE_MARGIN)),La=[];for(const Fa of Ia){const ka=Fa.dx===0&&Fa.dy===0&&Fa.dl===1,el=Fa.dx===0&&Fa.dy===0&&Fa.dl===-1;if((ka||el)&&![J.l,J.l+Fa.dl].every(sl=>la.getObstaclesOverlappingRegion({minX:J.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:J.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:J.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:J.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:sl}).length===0))continue;if(ka){J.l<this.layerCount-1&&La.push({...Fa,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}if(el){J.l>0&&La.push({...Fa,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}let tl=null;J!=null&&J.obstacleHit&&(tl=getDistanceToOvercomeObstacle({node:J,travelDir:Fa,wallDir:{...ba,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:la,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const rl=distAlongDir(J,xa,Fa),il=(Fa.dx===0||Math.sign(xa.x-J.x)===Fa.dx)&&(Fa.dy===0||Math.sign(xa.y-J.y)===Fa.dy);if(rl<Fa.wallDistance&&rl>0&&il){const nl=J.l===xa.l;let sl=0;!nl&&Math.abs(rl-Aa)<this.GRID_STEP&&(sl=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin),La.push({...Fa,travelDistance:rl-sl,enterMarginCost:0,travelMarginCostFactor:1})}else if(tl!==null&&tl<Fa.wallDistance){for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)tl-this.OBSTACLE_MARGIN+nl*2<Fa.wallDistance&&La.push({...Fa,travelDistance:tl-this.OBSTACLE_MARGIN+nl,enterMarginCost:sl,travelMarginCostFactor:ll});if(Fa.wallDistance===1/0)La.push({...Fa,travelDistance:rl,enterMarginCost:0,travelMarginCostFactor:1});else if(Fa.wallDistance>this.largestMargin)for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)Fa.wallDistance>this.largestMargin+nl&&La.push({...Fa,travelDistance:Fa.wallDistance-nl,enterMarginCost:sl,travelMarginCostFactor:ll})}else if(Fa.wallDistance!==1/0)for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)Fa.wallDistance>nl&&La.push({...Fa,travelDistance:Fa.wallDistance-nl,enterMarginCost:sl,travelMarginCostFactor:ll})}return La.map(Fa=>({x:J.x+Fa.dx*Fa.travelDistance,y:J.y+Fa.dy*Fa.travelDistance,l:J.l+Fa.dl,obstacleHit:Fa.obstacle,travelMarginCostFactor:Fa.travelMarginCostFactor,enterMarginCost:Fa.enterMarginCost}))}};function autoroute2(ua){const J=getSimpleRouteJson(ua),la=new IJumpAutorouter({input:J});return{solution:la.solveAndMapToTraces(),debugSolutions:la.debugSolutions,debugMessage:la.debugMessage}}var getObstaclesFromSoup=getObstaclesFromCircuitJson,direction$1=z$3.enum(["up","down","left","right"]);z$3.enum(["top-to-bottom","left-to-right","bottom-to-top","right-to-left"]);var portHints=z$3.array(z$3.string().or(z$3.number())),point3$2=z$3.object({x:distance$6,y:distance$6,z:distance$6}),rotationPoint3=z$3.object({x:z$3.union([z$3.number(),z$3.string()]),y:z$3.union([z$3.number(),z$3.string()]),z:z$3.union([z$3.number(),z$3.string()])}),cadModelBase=z$3.object({rotationOffset:z$3.number().or(rotationPoint3).optional(),positionOffset:point3$2.optional(),size:point3$2.optional()}),cadModelStl=cadModelBase.extend({stlUrl:z$3.string()}),cadModelObj=cadModelBase.extend({objUrl:z$3.string(),mtlUrl:z$3.string().optional()}),cadModelJscad=cadModelBase.extend({jscad:z$3.record(z$3.any())}),cadModelProp=z$3.union([z$3.string(),cadModelStl,cadModelObj,cadModelJscad]),footprintProp=z$3.custom(ua=>!0),pcbLayoutProps=z$3.object({pcbX:distance$6.optional(),pcbY:distance$6.optional(),pcbRotation:rotation$5.optional(),layer:layer_ref$3.optional()}),commonLayoutProps=z$3.object({pcbX:distance$6.optional(),pcbY:distance$6.optional(),pcbRotation:rotation$5.optional(),schX:distance$6.optional(),schY:distance$6.optional(),schRotation:rotation$5.optional(),layer:layer_ref$3.optional(),footprint:footprintProp.optional()}),supplierProps=z$3.object({supplierPartNumbers:z$3.record(supplier_name$3,z$3.array(z$3.string())).optional()}),commonComponentProps=commonLayoutProps.merge(supplierProps).extend({key:z$3.any().optional(),name:z$3.string(),cadModel:cadModelProp.optional(),children:z$3.any().optional(),symbolName:z$3.string().optional()}),lrPins=["pin1","left","pin2","right"],lrPolarPins=["pin1","left","anode","pos","pin2","right","cathode","neg"];distance$6.or(z$3.enum(["2x","3x","4x"]));var explicitPinSideDefinition=z$3.object({pins:z$3.array(z$3.union([z$3.number(),z$3.string()])),direction:z$3.union([z$3.literal("top-to-bottom"),z$3.literal("left-to-right"),z$3.literal("bottom-to-top"),z$3.literal("right-to-left")])}),schematicPortArrangement=z$3.object({leftSize:z$3.number().optional().describe("@deprecated, use leftPinCount"),topSize:z$3.number().optional().describe("@deprecated, use topPinCount"),rightSize:z$3.number().optional().describe("@deprecated, use rightPinCount"),bottomSize:z$3.number().optional().describe("@deprecated, use bottomPinCount"),leftPinCount:z$3.number().optional(),rightPinCount:z$3.number().optional(),topPinCount:z$3.number().optional(),bottomPinCount:z$3.number().optional(),leftSide:explicitPinSideDefinition.optional(),rightSide:explicitPinSideDefinition.optional(),topSide:explicitPinSideDefinition.optional(),bottomSide:explicitPinSideDefinition.optional()}),schematicPinStyle=z$3.record(z$3.object({leftMargin:distance$6.optional(),rightMargin:distance$6.optional(),topMargin:distance$6.optional(),bottomMargin:distance$6.optional()})),point$2=z$3.object({x:distance$6,y:distance$6}),base_manual_edit_event=z$3.object({edit_event_id:z$3.string(),in_progress:z$3.boolean().optional(),created_at:z$3.number()}),edit_pcb_component_location_event=base_manual_edit_event.extend({pcb_edit_event_type:z$3.literal("edit_component_location").describe("deprecated"),edit_event_type:z$3.literal("edit_pcb_component_location"),pcb_component_id:z$3.string(),original_center:z$3.object({x:z$3.number(),y:z$3.number()}),new_center:z$3.object({x:z$3.number(),y:z$3.number()})}),edit_trace_hint_event=base_manual_edit_event.extend({pcb_edit_event_type:z$3.literal("edit_trace_hint").describe("deprecated"),edit_event_type:z$3.literal("edit_pcb_trace_hint").optional(),pcb_port_id:z$3.string(),pcb_trace_hint_id:z$3.string().optional(),route:z$3.array(z$3.object({x:z$3.number(),y:z$3.number(),via:z$3.boolean().optional()}))}),edit_schematic_component_location_event=base_manual_edit_event.extend({edit_event_type:z$3.literal("edit_schematic_component_location"),schematic_component_id:z$3.string(),original_center:z$3.object({x:z$3.number(),y:z$3.number()}),new_center:z$3.object({x:z$3.number(),y:z$3.number()})});z$3.union([edit_pcb_component_location_event,edit_trace_hint_event,edit_schematic_component_location_event]);var manual_pcb_placement=z$3.object({selector:z$3.string(),relative_to:z$3.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$4}),manual_trace_hint=z$3.object({pcb_port_selector:z$3.string(),offsets:z$3.array(route_hint_point$3)}),manual_schematic_placement=z$3.object({selector:z$3.string(),relative_to:z$3.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$4}),manual_edits_file=z$3.object({pcb_placements:z$3.array(manual_pcb_placement).optional(),manual_trace_hints:z$3.array(manual_trace_hint).optional(),schematic_placements:z$3.array(manual_schematic_placement).optional()}),autorouterConfig=z$3.object({serverUrl:z$3.string().optional(),inputFormat:z$3.enum(["simplified","circuit-json"]).optional(),serverMode:z$3.enum(["job","solve-endpoint"]).optional(),cache:z$3.custom(ua=>!0).optional()}),autorouterProp=z$3.union([autorouterConfig,z$3.literal("sequential-trace"),z$3.literal("subcircuit"),z$3.literal("auto"),z$3.literal("auto-local"),z$3.literal("auto-cloud")]),baseGroupProps=commonLayoutProps.extend({name:z$3.string().optional(),children:z$3.any().optional(),key:z$3.any().optional()}),subcircuitGroupProps=baseGroupProps.extend({layout:z$3.custom(ua=>!0).optional(),manualEdits:manual_edits_file.optional(),schAutoLayoutEnabled:z$3.boolean().optional(),schTraceAutoLabelEnabled:z$3.boolean().optional(),routingDisabled:z$3.boolean().optional(),defaultTraceWidth:length$4.optional(),minTraceWidth:length$4.optional(),partsEngine:z$3.custom(ua=>"findPart"in ua).optional(),pcbRouteCache:z$3.custom(ua=>!0).optional(),autorouter:autorouterProp.optional()}),subcircuitGroupPropsWithBool=subcircuitGroupProps.extend({subcircuit:z$3.literal(!0)}),groupProps=z$3.discriminatedUnion("subcircuit",[baseGroupProps.extend({subcircuit:z$3.literal(!1).optional()}),subcircuitGroupPropsWithBool]),boardProps=subcircuitGroupProps.extend({width:distance$6.optional(),height:distance$6.optional(),outline:z$3.array(point$2).optional(),outlineOffsetX:distance$6.optional(),outlineOffsetY:distance$6.optional()});z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()).readonly()).or(z$3.array(z$3.string())));var chipProps=commonComponentProps.extend({manufacturerPartNumber:z$3.string().optional(),pinLabels:z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()).readonly())).optional(),schPortArrangement:schematicPortArrangement.optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$6.optional(),schWidth:distance$6.optional(),schHeight:distance$6.optional(),noSchematicRepresentation:z$3.boolean().optional()}),jumperProps=commonComponentProps.extend({manufacturerPartNumber:z$3.string().optional(),pinLabels:z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()))).optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$6.optional(),schWidth:distance$6.optional(),schHeight:distance$6.optional(),schDirection:z$3.enum(["left","right"]).optional(),schPortArrangement:schematicPortArrangement.optional()}),platedHoleProps=z$3.discriminatedUnion("shape",[pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("circle"),holeDiameter:distance$6,outerDiameter:distance$6,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("oval"),outerWidth:distance$6,outerHeight:distance$6,innerWidth:distance$6,innerHeight:distance$6,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("pill"),outerWidth:distance$6,outerHeight:distance$6,innerWidth:distance$6,innerHeight:distance$6,portHints:portHints.optional()})]),resistorProps=commonComponentProps.extend({resistance:resistance$3,pullupFor:z$3.string().optional(),pullupTo:z$3.string().optional(),pulldownFor:z$3.string().optional(),pulldownTo:z$3.string().optional()}),resistorPins=lrPins,potentiometerProps=commonComponentProps.extend({maxResistance:resistance$3}),crystalProps=commonComponentProps.extend({frequency:frequency$2,loadCapacitance:capacitance$3,pinVariant:z$3.enum(["2pin","4pin"]).optional()}),resonatorProps=commonComponentProps.extend({frequency:frequency$2,loadCapacitance:capacitance$3,pinVariant:z$3.enum(["no_ground","ground_pin","two_ground_pins"]).optional()}),capacitorProps=commonComponentProps.extend({capacitance:capacitance$3,polarized:z$3.boolean().optional().default(!1),decouplingFor:z$3.string().optional(),decouplingTo:z$3.string().optional(),bypassFor:z$3.string().optional(),bypassTo:z$3.string().optional(),maxDecouplingTraceLength:z$3.number().optional()}),capacitorPins=lrPolarPins;z$3.object({name:z$3.string()}),z$3.object({name:z$3.string().optional(),pcbOnly:z$3.boolean().optional(),schOnly:z$3.boolean().optional()});var pcbXDistConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),xDist:distance$6,left:z$3.string(),right:z$3.string(),edgeToEdge:z$3.literal(!0).optional(),centerToCenter:z$3.literal(!0).optional()}),pcbYDistConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),yDist:distance$6,top:z$3.string(),bottom:z$3.string(),edgeToEdge:z$3.literal(!0).optional(),centerToCenter:z$3.literal(!0).optional()}),pcbSameYConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),sameY:z$3.literal(!0).optional(),for:z$3.array(z$3.string())}),pcbSameXConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),sameX:z$3.literal(!0).optional(),for:z$3.array(z$3.string())}),constraintProps=z$3.union([pcbXDistConstraintProps,pcbYDistConstraintProps,pcbSameYConstraintProps,pcbSameXConstraintProps]),rectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rect"),width:distance$6,height:distance$6,portHints:portHints.optional()}),rotatedRectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rotated_rect"),width:distance$6,height:distance$6,ccwRotation:z$3.number(),portHints:portHints.optional()}),circleSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$6,portHints:portHints.optional()}),smtPadProps=z$3.union([circleSmtPadProps,rectSmtPadProps,rotatedRectSmtPadProps]),rectSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rect"),width:distance$6,height:distance$6}),circleSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$6});z$3.union([circleSolderPasteProps,rectSolderPasteProps]);var holeProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({name:z$3.string().optional(),diameter:distance$6.optional(),radius:distance$6.optional()}).transform(ua=>({...ua,diameter:ua.diameter??2*ua.radius,radius:ua.radius??ua.diameter/2})),portRef=z$3.union([z$3.string(),z$3.custom(ua=>!!ua.getPortSelector)]),baseTraceProps=z$3.object({key:z$3.string().optional(),thickness:distance$6.optional(),schematicRouteHints:z$3.array(point$2).optional(),pcbRouteHints:z$3.array(route_hint_point$3).optional(),schDisplayLabel:z$3.string().optional(),maxLength:z$3.number().optional()}),traceProps=z$3.union([baseTraceProps.extend({path:z$3.array(portRef)}),baseTraceProps.extend({from:portRef,to:portRef})]),footprintProps=z$3.object({originalLayer:layer_ref$3.default("top").optional()}),capacity=z$3.number().or(z$3.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),batteryProps=commonComponentProps.extend({capacity:capacity.optional()}),pinHeaderProps=commonComponentProps.extend({pinCount:z$3.number(),pitch:distance$6.optional(),gender:z$3.enum(["male","female"]).optional().default("male"),showSilkscreenPinLabels:z$3.boolean().optional(),doubleRow:z$3.boolean().optional(),holeDiameter:distance$6.optional(),platedDiameter:distance$6.optional(),pinLabels:z$3.array(z$3.string()).optional(),facingDirection:z$3.enum(["left","right"]).optional()}),netAliasProps=z$3.object({net:z$3.string().optional(),schX:distance$6.optional(),schY:distance$6.optional(),schRotation:rotation$5.optional(),anchorSide:z$3.enum(["left","up","right","down"]).optional()}),pushButtonProps=commonComponentProps.extend({}),transistorProps=commonComponentProps.extend({transistorType:z$3.enum(["npn","pnp"])}),mosfetProps=commonComponentProps.extend({channelType:z$3.enum(["n","p"]),mosfetMode:z$3.enum(["enhancement","depletion"])}),inductorProps=commonComponentProps.extend({inductance:inductance$3}),diodeProps=commonComponentProps.extend({}),diodePins=lrPolarPins,ledProps=commonComponentProps.extend({color:z$3.string().optional()}),ledPins=lrPolarPins;commonComponentProps.extend({ftype:z$3.literal("switch"),switchType:z$3.enum(["spst"]).default("spst"),isNormallyClosed:z$3.boolean().default(!1)}),distance$6.or(z$3.enum(["2x","3x","4x"]));var viaProps=commonLayoutProps.extend({fromLayer:layer_ref$3,toLayer:layer_ref$3,holeDiameter:distance$6,outerDiameter:distance$6}),pcbKeepoutProps=z$3.union([pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$6}),pcbLayoutProps.extend({shape:z$3.literal("rect"),width:distance$6,height:distance$6})]);z$3.object({schX:distance$6,schY:distance$6,width:distance$6,height:distance$6}),z$3.object({schX:distance$6,schY:distance$6,text:z$3.string()}),z$3.object({x1:distance$6,y1:distance$6,x2:distance$6,y2:distance$6}),z$3.object({points:z$3.array(point$4),isFilled:z$3.boolean().optional().default(!1),fillColor:z$3.enum(["red","blue"]).optional()});var powerSourceProps=commonComponentProps.extend({voltage:voltage$3});commonLayoutProps.extend({name:z$3.string(),pinNumber:z$3.number().optional(),aliases:z$3.array(z$3.string()).optional(),direction:direction$1});var silkscreenTextProps=pcbLayoutProps.extend({text:z$3.string(),anchorAlignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$3.enum(["tscircuit2024"]).optional(),fontSize:length$4.optional()}),silkscreenPathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$3.array(route_hint_point$3),strokeWidth:length$4.optional()}),silkscreenLineProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({strokeWidth:distance$6,x1:distance$6,y1:distance$6,x2:distance$6,y2:distance$6}),silkscreenRectProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$3.boolean().optional(),isOutline:z$3.boolean().optional(),strokeWidth:distance$6.optional(),width:distance$6,height:distance$6}),silkscreenCircleProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$3.boolean().optional(),isOutline:z$3.boolean().optional(),strokeWidth:distance$6.optional(),radius:distance$6}),routeHintPointProps=z$3.object({x:distance$6,y:distance$6,via:z$3.boolean().optional(),toLayer:layer_ref$3.optional()}),traceHintProps=z$3.object({for:z$3.string().optional().describe("Selector for the port you're targeting, not required if you're inside a trace"),order:z$3.number().optional(),offset:route_hint_point$3.or(routeHintPointProps).optional(),offsets:z$3.array(route_hint_point$3).or(z$3.array(routeHintPointProps)).optional(),traceWidth:z$3.number().optional()});z$3.object({layer:z$3.string().optional(),thickness:distance$6.optional(),route:z$3.array(route_hint_point$3)});var fabricationNoteTextProps=pcbLayoutProps.extend({text:z$3.string(),anchorAlignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$3.enum(["tscircuit2024"]).optional(),fontSize:length$4.optional(),color:z$3.string().optional()}),fabricationNotePathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$3.array(route_hint_point$3),strokeWidth:length$4.optional(),color:z$3.string().optional()});function createMap(){return new IndexedMap}class IndexedMap{constructor(){jp(this,"index",{});jp(this,"array",[])}size(){return this.array.length}empty(){return this.array.length===0}itemAt(J){return this.array[J]}contains(J){return this.index[J.id()]!==void 0}find(J){const la=this.index[J.id()];return la===void 0?void 0:this.array[la]}setDefault(J,la){const xa=this.index[J.id()];if(xa===void 0){const Aa=new Pair(J,la());return this.index[J.id()]=this.array.length,this.array.push(Aa),Aa}else return this.array[xa]}insert(J,la){const xa=new Pair(J,la),Aa=this.index[J.id()];return Aa===void 0?(this.index[J.id()]=this.array.length,this.array.push(xa)):this.array[Aa]=xa,xa}erase(J){const la=this.index[J.id()];if(la===void 0)return;this.index[J.id()]=void 0;const xa=this.array[la],Aa=this.array.pop();return xa!==Aa&&(this.array[la]=Aa,this.index[Aa.first.id()]=la),xa}copy(){const J=new IndexedMap;for(let la=0;la<this.array.length;la++){const xa=this.array[la].copy();J.array[la]=xa,J.index[xa.first.id()]=la}return J}}class Pair{constructor(J,la){jp(this,"first");jp(this,"second");this.first=J,this.second=la}copy(){return new Pair(this.first,this.second)}}class Variable{constructor(J=""){jp(this,"_name");jp(this,"_value",0);jp(this,"_context",null);jp(this,"_id",VarId++);this._name=J}id(){return this._id}name(){return this._name}setName(J){this._name=J}context(){return this._context}setContext(J){this._context=J}value(){return this._value}setValue(J){this._value=J}plus(J){return new Expression(this,J)}minus(J){return new Expression(this,typeof J=="number"?-J:[-1,J])}multiply(J){return new Expression([J,this])}divide(J){return new Expression([1/J,this])}toJSON(){return{name:this._name,value:this._value}}toString(){return this._context+"["+this._name+":"+this._value+"]"}}let VarId=0;class Expression{constructor(){jp(this,"_terms");jp(this,"_constant");let J=parseArgs(arguments);this._terms=J.terms,this._constant=J.constant}terms(){return this._terms}constant(){return this._constant}value(){let J=this._constant;for(let la=0,xa=this._terms.size();la<xa;la++){let Aa=this._terms.itemAt(la);J+=Aa.first.value()*Aa.second}return J}plus(J){return new Expression(this,J)}minus(J){return new Expression(this,typeof J=="number"?-J:[-1,J])}multiply(J){return new Expression([J,this])}divide(J){return new Expression([1/J,this])}isConstant(){return this._terms.size()==0}toString(){let J=this._terms.array.map(function(la){return la.second+"*"+la.first.toString()}).join(" + ");return!this.isConstant()&&this._constant!==0&&(J+=" + "),J+=this._constant,J}}function parseArgs(ua){let J=0,la=()=>0,xa=createMap();for(let Aa=0,ba=ua.length;Aa<ba;++Aa){let Sa=ua[Aa];if(typeof Sa=="number")J+=Sa;else if(Sa instanceof Variable)xa.setDefault(Sa,la).second+=1;else if(Sa instanceof Expression){J+=Sa.constant();let Ma=Sa.terms();for(let Ra=0,Ia=Ma.size();Ra<Ia;Ra++){let La=Ma.itemAt(Ra);xa.setDefault(La.first,la).second+=La.second}}else if(Sa instanceof Array){if(Sa.length!==2)throw new Error("array must have length 2");let Ma=Sa[0],Ra=Sa[1];if(typeof Ma!="number")throw new Error("array item 0 must be a number");if(Ra instanceof Variable)xa.setDefault(Ra,la).second+=Ma;else if(Ra instanceof Expression){J+=Ra.constant()*Ma;let Ia=Ra.terms();for(let La=0,Fa=Ia.size();La<Fa;La++){let ka=Ia.itemAt(La);xa.setDefault(ka.first,la).second+=ka.second*Ma}}else throw new Error("array item 1 must be a variable or expression")}else throw new Error("invalid Expression argument: "+Sa)}return{terms:xa,constant:J}}const Wb=class Wb{static create(J,la,xa,Aa=1){let ba=0;return ba+=Math.max(0,Math.min(1e3,J*Aa))*1e6,ba+=Math.max(0,Math.min(1e3,la*Aa))*1e3,ba+=Math.max(0,Math.min(1e3,xa*Aa)),ba}static clip(J){return Math.max(0,Math.min(Wb.required,J))}};jp(Wb,"required",Wb.create(1e3,1e3,1e3)),jp(Wb,"strong",Wb.create(1,0,0)),jp(Wb,"medium",Wb.create(0,1,0)),jp(Wb,"weak",Wb.create(0,0,1));let Strength=Wb;var Operator;(function(ua){ua[ua.Le=0]="Le",ua[ua.Ge=1]="Ge",ua[ua.Eq=2]="Eq"})(Operator||(Operator={}));class Constraint{constructor(J,la,xa,Aa=Strength.required){jp(this,"_expression");jp(this,"_operator");jp(this,"_strength");jp(this,"_id",CnId++);this._operator=la,this._strength=Strength.clip(Aa),xa===void 0&&J instanceof Expression?this._expression=J:this._expression=J.minus(xa)}id(){return this._id}expression(){return this._expression}op(){return this._operator}strength(){return this._strength}toString(){return this._expression.toString()+" "+["<=",">=","="][this._operator]+" 0 ("+this._strength.toString()+")"}}let CnId=0;class Solver{constructor(){jp(this,"maxIterations",1e3);jp(this,"_cnMap",createCnMap());jp(this,"_rowMap",createRowMap());jp(this,"_varMap",createVarMap());jp(this,"_editMap",createEditMap());jp(this,"_infeasibleRows",[]);jp(this,"_objective",new Row$1);jp(this,"_artificial",null);jp(this,"_idTick",0)}createConstraint(J,la,xa,Aa=Strength.required){let ba=new Constraint(J,la,xa,Aa);return this.addConstraint(ba),ba}addConstraint(J){if(this._cnMap.find(J)!==void 0)throw new Error("duplicate constraint");let xa=this._createRow(J),Aa=xa.row,ba=xa.tag,Sa=this._chooseSubject(Aa,ba);if(Sa.type()===SymbolType.Invalid&&Aa.allDummies())if(nearZero(Aa.constant()))Sa=ba.marker;else throw new Error("unsatisfiable constraint");if(Sa.type()===SymbolType.Invalid){if(!this._addWithArtificialVariable(Aa))throw new Error("unsatisfiable constraint")}else Aa.solveFor(Sa),this._substitute(Sa,Aa),this._rowMap.insert(Sa,Aa);this._cnMap.insert(J,ba),this._optimize(this._objective)}removeConstraint(J){let la=this._cnMap.erase(J);if(la===void 0)throw new Error("unknown constraint");this._removeConstraintEffects(J,la.second);let xa=la.second.marker,Aa=this._rowMap.erase(xa);if(Aa===void 0){let ba=this._getMarkerLeavingSymbol(xa);if(ba.type()===SymbolType.Invalid)throw new Error("failed to find leaving row");Aa=this._rowMap.erase(ba),Aa.second.solveForEx(ba,xa),this._substitute(xa,Aa.second)}this._optimize(this._objective)}hasConstraint(J){return this._cnMap.contains(J)}getConstraints(){return this._cnMap.array.map(({first:J})=>J)}addEditVariable(J,la){if(this._editMap.find(J)!==void 0)throw new Error("duplicate edit variable");if(la=Strength.clip(la),la===Strength.required)throw new Error("bad required strength");let Aa=new Expression(J),ba=new Constraint(Aa,Operator.Eq,void 0,la);this.addConstraint(ba);let Ma={tag:this._cnMap.find(ba).second,constraint:ba,constant:0};this._editMap.insert(J,Ma)}removeEditVariable(J){let la=this._editMap.erase(J);if(la===void 0)throw new Error("unknown edit variable");this.removeConstraint(la.second.constraint)}hasEditVariable(J){return this._editMap.contains(J)}suggestValue(J,la){let xa=this._editMap.find(J);if(xa===void 0)throw new Error("unknown edit variable");let Aa=this._rowMap,ba=xa.second,Sa=la-ba.constant;ba.constant=la;let Ma=ba.tag.marker,Ra=Aa.find(Ma);if(Ra!==void 0){Ra.second.add(-Sa)<0&&this._infeasibleRows.push(Ma),this._dualOptimize();return}let Ia=ba.tag.other;if(Ra=Aa.find(Ia),Ra!==void 0){Ra.second.add(Sa)<0&&this._infeasibleRows.push(Ia),this._dualOptimize();return}for(let La=0,Fa=Aa.size();La<Fa;++La){let ka=Aa.itemAt(La),el=ka.second,tl=el.coefficientFor(Ma);tl!==0&&el.add(Sa*tl)<0&&ka.first.type()!==SymbolType.External&&this._infeasibleRows.push(ka.first)}this._dualOptimize()}updateVariables(){let J=this._varMap,la=this._rowMap;for(let xa=0,Aa=J.size();xa<Aa;++xa){let ba=J.itemAt(xa),Sa=la.find(ba.second);Sa!==void 0?ba.first.setValue(Sa.second.constant()):ba.first.setValue(0)}}_getVarSymbol(J){let la=()=>this._makeSymbol(SymbolType.External);return this._varMap.setDefault(J,la).second}_createRow(J){let la=J.expression(),xa=new Row$1(la.constant()),Aa=la.terms();for(let Ra=0,Ia=Aa.size();Ra<Ia;++Ra){let La=Aa.itemAt(Ra);if(!nearZero(La.second)){let Fa=this._getVarSymbol(La.first),ka=this._rowMap.find(Fa);ka!==void 0?xa.insertRow(ka.second,La.second):xa.insertSymbol(Fa,La.second)}}let ba=this._objective,Sa=J.strength(),Ma={marker:INVALID_SYMBOL,other:INVALID_SYMBOL};switch(J.op()){case Operator.Le:case Operator.Ge:{let Ra=J.op()===Operator.Le?1:-1,Ia=this._makeSymbol(SymbolType.Slack);if(Ma.marker=Ia,xa.insertSymbol(Ia,Ra),Sa<Strength.required){let La=this._makeSymbol(SymbolType.Error);Ma.other=La,xa.insertSymbol(La,-Ra),ba.insertSymbol(La,Sa)}break}case Operator.Eq:{if(Sa<Strength.required){let Ra=this._makeSymbol(SymbolType.Error),Ia=this._makeSymbol(SymbolType.Error);Ma.marker=Ra,Ma.other=Ia,xa.insertSymbol(Ra,-1),xa.insertSymbol(Ia,1),ba.insertSymbol(Ra,Sa),ba.insertSymbol(Ia,Sa)}else{let Ra=this._makeSymbol(SymbolType.Dummy);Ma.marker=Ra,xa.insertSymbol(Ra)}break}}return xa.constant()<0&&xa.reverseSign(),{row:xa,tag:Ma}}_chooseSubject(J,la){let xa=J.cells();for(let ba=0,Sa=xa.size();ba<Sa;++ba){let Ma=xa.itemAt(ba);if(Ma.first.type()===SymbolType.External)return Ma.first}let Aa=la.marker.type();return(Aa===SymbolType.Slack||Aa===SymbolType.Error)&&J.coefficientFor(la.marker)<0?la.marker:(Aa=la.other.type(),(Aa===SymbolType.Slack||Aa===SymbolType.Error)&&J.coefficientFor(la.other)<0?la.other:INVALID_SYMBOL)}_addWithArtificialVariable(J){let la=this._makeSymbol(SymbolType.Slack);this._rowMap.insert(la,J.copy()),this._artificial=J.copy(),this._optimize(this._artificial);let xa=nearZero(this._artificial.constant());this._artificial=null;let Aa=this._rowMap.erase(la);if(Aa!==void 0){let Sa=Aa.second;if(Sa.isConstant())return xa;let Ma=this._anyPivotableSymbol(Sa);if(Ma.type()===SymbolType.Invalid)return!1;Sa.solveForEx(la,Ma),this._substitute(Ma,Sa),this._rowMap.insert(Ma,Sa)}let ba=this._rowMap;for(let Sa=0,Ma=ba.size();Sa<Ma;++Sa)ba.itemAt(Sa).second.removeSymbol(la);return this._objective.removeSymbol(la),xa}_substitute(J,la){let xa=this._rowMap;for(let Aa=0,ba=xa.size();Aa<ba;++Aa){let Sa=xa.itemAt(Aa);Sa.second.substitute(J,la),Sa.second.constant()<0&&Sa.first.type()!==SymbolType.External&&this._infeasibleRows.push(Sa.first)}this._objective.substitute(J,la),this._artificial&&this._artificial.substitute(J,la)}_optimize(J){let la=0;for(;la<this.maxIterations;){let xa=this._getEnteringSymbol(J);if(xa.type()===SymbolType.Invalid)return;let Aa=this._getLeavingSymbol(xa);if(Aa.type()===SymbolType.Invalid)throw new Error("the objective is unbounded");let ba=this._rowMap.erase(Aa).second;ba.solveForEx(Aa,xa),this._substitute(xa,ba),this._rowMap.insert(xa,ba),la++}throw new Error("solver iterations exceeded")}_dualOptimize(){let J=this._rowMap,la=this._infeasibleRows;for(;la.length!==0;){let xa=la.pop(),Aa=J.find(xa);if(Aa!==void 0&&Aa.second.constant()<0){let ba=this._getDualEnteringSymbol(Aa.second);if(ba.type()===SymbolType.Invalid)throw new Error("dual optimize failed");let Sa=Aa.second;J.erase(xa),Sa.solveForEx(xa,ba),this._substitute(ba,Sa),J.insert(ba,Sa)}}}_getEnteringSymbol(J){let la=J.cells();for(let xa=0,Aa=la.size();xa<Aa;++xa){let ba=la.itemAt(xa),Sa=ba.first;if(ba.second<0&&Sa.type()!==SymbolType.Dummy)return Sa}return INVALID_SYMBOL}_getDualEnteringSymbol(J){let la=Number.MAX_VALUE,xa=INVALID_SYMBOL,Aa=J.cells();for(let ba=0,Sa=Aa.size();ba<Sa;++ba){let Ma=Aa.itemAt(ba),Ra=Ma.first,Ia=Ma.second;if(Ia>0&&Ra.type()!==SymbolType.Dummy){let Fa=this._objective.coefficientFor(Ra)/Ia;Fa<la&&(la=Fa,xa=Ra)}}return xa}_getLeavingSymbol(J){let la=Number.MAX_VALUE,xa=INVALID_SYMBOL,Aa=this._rowMap;for(let ba=0,Sa=Aa.size();ba<Sa;++ba){let Ma=Aa.itemAt(ba),Ra=Ma.first;if(Ra.type()!==SymbolType.External){let Ia=Ma.second,La=Ia.coefficientFor(J);if(La<0){let Fa=-Ia.constant()/La;Fa<la&&(la=Fa,xa=Ra)}}}return xa}_getMarkerLeavingSymbol(J){let la=Number.MAX_VALUE,xa=la,Aa=la,ba=INVALID_SYMBOL,Sa=ba,Ma=ba,Ra=ba,Ia=this._rowMap;for(let La=0,Fa=Ia.size();La<Fa;++La){let ka=Ia.itemAt(La),el=ka.second,tl=el.coefficientFor(J);if(tl===0)continue;let rl=ka.first;if(rl.type()===SymbolType.External)Ra=rl;else if(tl<0){let il=-el.constant()/tl;il<xa&&(xa=il,Sa=rl)}else{let il=el.constant()/tl;il<Aa&&(Aa=il,Ma=rl)}}return Sa!==ba?Sa:Ma!==ba?Ma:Ra}_removeConstraintEffects(J,la){la.marker.type()===SymbolType.Error&&this._removeMarkerEffects(la.marker,J.strength()),la.other.type()===SymbolType.Error&&this._removeMarkerEffects(la.other,J.strength())}_removeMarkerEffects(J,la){let xa=this._rowMap.find(J);xa!==void 0?this._objective.insertRow(xa.second,-la):this._objective.insertSymbol(J,-la)}_anyPivotableSymbol(J){let la=J.cells();for(let xa=0,Aa=la.size();xa<Aa;++xa){let ba=la.itemAt(xa),Sa=ba.first.type();if(Sa===SymbolType.Slack||Sa===SymbolType.Error)return ba.first}return INVALID_SYMBOL}_makeSymbol(J){return new Symbol$1(J,this._idTick++)}}function nearZero(ua){let J=1e-8;return ua<0?-ua<J:ua<J}function createCnMap(){return createMap()}function createRowMap(){return createMap()}function createVarMap(){return createMap()}function createEditMap(){return createMap()}var SymbolType;(function(ua){ua[ua.Invalid=0]="Invalid",ua[ua.External=1]="External",ua[ua.Slack=2]="Slack",ua[ua.Error=3]="Error",ua[ua.Dummy=4]="Dummy"})(SymbolType||(SymbolType={}));let Symbol$1=class{constructor(J,la){jp(this,"_id");jp(this,"_type");this._id=la,this._type=J}id(){return this._id}type(){return this._type}},INVALID_SYMBOL=new Symbol$1(SymbolType.Invalid,-1),Row$1=class YM{constructor(J=0){jp(this,"_cellMap",createMap());jp(this,"_constant");this._constant=J}cells(){return this._cellMap}constant(){return this._constant}isConstant(){return this._cellMap.empty()}allDummies(){let J=this._cellMap;for(let la=0,xa=J.size();la<xa;++la)if(J.itemAt(la).first.type()!==SymbolType.Dummy)return!1;return!0}copy(){let J=new YM(this._constant);return J._cellMap=this._cellMap.copy(),J}add(J){return this._constant+=J}insertSymbol(J,la=1){let xa=this._cellMap.setDefault(J,()=>0);nearZero(xa.second+=la)&&this._cellMap.erase(J)}insertRow(J,la=1){this._constant+=J._constant*la;let xa=J._cellMap;for(let Aa=0,ba=xa.size();Aa<ba;++Aa){let Sa=xa.itemAt(Aa);this.insertSymbol(Sa.first,Sa.second*la)}}removeSymbol(J){this._cellMap.erase(J)}reverseSign(){this._constant=-this._constant;let J=this._cellMap;for(let la=0,xa=J.size();la<xa;++la){let Aa=J.itemAt(la);Aa.second=-Aa.second}}solveFor(J){let la=this._cellMap,Aa=-1/la.erase(J).second;this._constant*=Aa;for(let ba=0,Sa=la.size();ba<Sa;++ba)la.itemAt(ba).second*=Aa}solveForEx(J,la){this.insertSymbol(J,-1),this.solveFor(la)}coefficientFor(J){let la=this._cellMap.find(J);return la!==void 0?la.second:0}substitute(J,la){let xa=this._cellMap.erase(J);xa!==void 0&&this.insertRow(la,xa.second)}};var su$3=(ua,J={})=>{let la=ua._internal_store;if(!la){la={counts:{}},ua._internal_store=la;for(const Aa of ua){const ba=Aa.type,Sa=Aa[`${ba}_id`];if(!Sa)continue;const Ma=Number.parseInt(Sa.split("_").pop());Number.isNaN(Ma)||(la.counts[ba]=Math.max(la.counts[ba]??0,Ma))}}return new Proxy({},{get:(Aa,ba)=>ba==="toArray"?()=>ua:{get:Sa=>ua.find(Ma=>Ma.type===ba&&Ma[`${ba}_id`]===Sa),getUsing:Sa=>{const Ma=Object.keys(Sa);if(Ma.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Ra=Ma[0],Ia=Ra.replace("_id",""),La=ua.find(Fa=>Fa.type===Ia&&Fa[Ra]===Sa[Ra]);return La?ua.find(Fa=>Fa.type===ba&&Fa[`${ba}_id`]===La[`${ba}_id`]):null},getWhere:Sa=>{const Ma=Object.keys(Sa);return ua.find(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},list:Sa=>{const Ma=Sa?Object.keys(Sa):[];return ua.filter(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},insert:Sa=>{var Ia;(Ia=la.counts)[ba]??(Ia[ba]=-1),la.counts[ba]++;const Ma=la.counts[ba],Ra={type:ba,[`${ba}_id`]:`${ba}_${Ma}`,...Sa};return J.validateInserts&&(Soup$1[ba]??any_soup_element$2).parse(Ra),ua.push(Ra),Ra},delete:Sa=>{const Ma=ua.find(Ra=>Ra[`${ba}_id`]===Sa);Ma&&ua.splice(ua.indexOf(Ma),1)},update:(Sa,Ma)=>{const Ra=ua.find(Ia=>Ia[`${ba}_id`]===Sa);if(Ra)return Object.assign(Ra,Ma),Ra},select:Sa=>{if(ba==="source_component")return ua.find(Ma=>Ma.type==="source_component"&&Ma.name===Sa.replace(/\./g,""));if(ba==="pcb_port"||ba==="source_port"||ba==="schematic_port"){const[Ma,Ra]=Sa.replace(/\./g,"").split(/[\s\>]+/),Ia=ua.find(Fa=>Fa.type==="source_component"&&Fa.name===Ma);if(!Ia)return null;const La=ua.find(Fa=>Fa.type==="source_port"&&Fa.source_component_id===Ia.source_component_id&&(Fa.name===Ra||(Fa.port_hints??[]).includes(Ra)));if(!La)return null;if(ba==="source_port")return La;if(ba==="pcb_port")return ua.find(Fa=>Fa.type==="pcb_port"&&Fa.source_port_id===La.source_port_id);if(ba==="schematic_port")return ua.find(Fa=>Fa.type==="schematic_port"&&Fa.source_port_id===La.source_port_id)}}}})};su$3.unparsed=su$3;var rotateClockwise=ua=>{if(ua==="up")return"right";if(ua==="right")return"down";if(ua==="down")return"left";if(ua==="left")return"up";throw new Error(`Invalid direction: ${ua}`)},rotateCounterClockwise=ua=>{if(ua==="up")return"left";if(ua==="left")return"down";if(ua==="down")return"right";if(ua==="right")return"up";throw new Error(`Invalid direction: ${ua}`)},rotateDirection=(ua,J)=>{for(;J>0;)ua=rotateClockwise(ua),J--;for(;J<0;)ua=rotateCounterClockwise(ua),J++;return ua},transformSchematicElement=(ua,J)=>{if(ua.type==="schematic_component")ua.center=applyToPoint(J,ua.center);else if(ua.type==="schematic_port")ua.center=applyToPoint(J,ua.center),ua.facing_direction&&(ua.facing_direction=rotateDirection(ua.facing_direction,-(Math.atan2(J.b,J.a)/Math.PI)*2));else if(ua.type==="schematic_text")ua.position=applyToPoint(J,ua.position);else if(ua.type!=="schematic_trace"){if(ua.type==="schematic_box"){const{x:la,y:xa}=applyToPoint(J,{x:ua.x,y:ua.y});ua.x=la,ua.y=xa}else if(ua.type==="schematic_line"){const{x:la,y:xa}=applyToPoint(J,{x:ua.x1,y:ua.y1}),{x:Aa,y:ba}=applyToPoint(J,{x:ua.x2,y:ua.y2});ua.x1=la,ua.y1=xa,ua.x2=Aa,ua.y2=ba}}return ua},mutateSoupForScene=(ua,J)=>{const la=ua;for(const xa of J.boxes){const Aa=la.find(Sa=>Sa.type==="schematic_component"&&Sa.schematic_component_id===xa.box_id),ba=translate(xa.x-Aa.center.x,xa.y-Aa.center.y);for(const Sa of la)Sa.schematic_component_id===xa.box_id&&transformSchematicElement(Sa,ba)}return la},convertSoupToScene=ua=>{const J=[],la=[],xa=[],Aa={schematic_component:ua.filter(ba=>ba.type==="schematic_component"),schematic_port:ua.filter(ba=>ba.type==="schematic_port"),source_port:ua.filter(ba=>ba.type==="source_port"),schematic_trace:ua.filter(ba=>ba.type==="schematic_trace"),source_trace:ua.filter(ba=>ba.type==="source_trace")};for(const ba of Aa.schematic_component){const Sa=[],Ma=ba.schematic_component_id;for(const Ia of Aa.schematic_port)Ia.schematic_component_id===ba.schematic_component_id&&Sa.push({port_id:`${Ma}.${Ia.schematic_port_id}`,rx:Ia.center.x-ba.center.x,ry:Ia.center.y-ba.center.y});const Ra={box_id:Ma,x:ba.center.x,y:ba.center.y,ports:Sa};J.push(Ra)}for(const ba of Aa.source_trace){const[Sa,Ma]=ba.connected_source_port_ids,Ra=Aa.schematic_port.find(el=>el.source_port_id===Sa),Ia=Aa.schematic_port.find(el=>el.source_port_id===Ma);if(!Ra||!Ia)continue;const La=Aa.schematic_component.find(el=>el.schematic_component_id===Ra.schematic_component_id),Fa=Aa.schematic_component.find(el=>el.schematic_component_id===Ia.schematic_component_id);if(!La||!Fa)continue;const ka={from:`${La.schematic_component_id}.${Ra.schematic_port_id}`,to:`${Fa.schematic_component_id}.${Ia.schematic_port_id}`};la.push(ka)}return{boxes:J,connections:la,nets:xa}};function getConnectionMap(ua){return ua.connections.reduce((J,la)=>(J[la.from]=la.to,J[la.to]=la.from,J),{})}function centerSides(ua,J){for(const la of["left","right"]){const xa=ua.filter(Sa=>Sa.side===la),Aa=xa.map(Sa=>Sa.ascending_box_index).filter(Sa=>!isNaN(Sa)),ba=Math.max(...Aa);for(const Sa of xa)Sa.box_id!==J.box_id&&(Sa.y-=ba/2*1.25)}}var findBoxWithMostPorts=ua=>{let J=ua[0];for(const la of ua)la.ports.length>J.ports.length&&(J=la);return J};function slideBoxesConnectedToSameNet(ua,J,la,xa){for(const Aa of["left","right"]){const ba=ua.filter(Sa=>Sa.side===Aa).sort((Sa,Ma)=>Sa.ascending_box_index-Ma.ascending_box_index);for(let Sa=0;Sa<ba.length-1;Sa++){const[Ma,Ra]=[ba[Sa],ba[Sa+1]];if(Ma.ports.length===2&&Ra.ports.length===2){const[Ia,La]=Ma.ports,[Fa,ka]=Ra.ports,[el,tl]=[Ia,La].map(ll=>J[ll.port_id]),[rl,il]=[Fa,ka].map(ll=>J[ll.port_id]);let nl=null;if((el===rl||el===il)&&la.has(el)?nl=el:(tl===rl||tl===il)&&la.has(tl)&&(nl=tl),!nl)continue;const sl=xa.nets.find(ll=>ll.net_id===nl);if(!sl.is_ground&&!sl.is_power)continue;sl.is_ground&&ba.slice(Sa+1).forEach(ll=>{ll.ascending_box_index-=1,ll.y-=1}),sl.is_power&&ba.slice(Sa+1).forEach(ll=>{ll.ascending_box_index-=1,ll.y-=1})}}}}function removeAscendingBoxIndexGaps(ua,J){for(let la=0;la<ua;la++){let xa=0;for(const Aa of J)Aa.ascending_box_index===la&&(xa+=1);if(xa===0){ua-=1;for(const Aa of J)Aa.ascending_box_index>la&&(Aa.ascending_box_index-=1)}}return ua}function addBoxesForNetsRewriteNetsToPlacedAliases(ua,J,la,xa){const Aa=Math.max(...ua.map(ba=>ba.ascending_box_index).filter(ba=>!isNaN(ba)));for(const ba of["left","right"])for(let Sa=0;Sa<=Aa;Sa++){const Ma=ua.filter(tl=>tl.side===ba).filter(tl=>tl.ascending_box_index===Sa);if(Ma.length===0)continue;const Ia=Ma.map(tl=>J.connections.filter(rl=>rl.from.startsWith(tl.box_id+".")||rl.to.startsWith(tl.box_id+".")).map(rl=>rl.from.startsWith(tl.box_id+".")?rl.to:rl.from)).map(tl=>tl.filter(rl=>la.has(rl))),La=Ia.reduce((tl,rl)=>tl.filter(il=>rl.includes(il)),Ia[0]),Fa=La.map(tl=>J.nets.find(rl=>rl.net_id===tl)),el=(ba==="left"?Math.max:Math.min)(...Ma.map(tl=>tl.x));for(const tl of Fa){const rl=Sa+(tl!=null&&tl.is_ground?-1:1),il=`${tl==null?void 0:tl.net_id}_${ba==="left"?"L":"R"}_${Sa}`,nl=tl!=null&&tl.is_ground?`${il}.top`:`${il}.bottom`,sl={box_id:il,x:el,y:rl,side:ba,ascending_port_index:0,ascending_box_index:Sa,width:0,ports:[{port_id:nl,rx:0,ry:tl!=null&&tl.is_ground?.1:-.1}]};ua.push(sl);for(const ll of Ma){const dl=xa.filter(gl=>gl.from.startsWith(ll.box_id+".")||gl.to.startsWith(ll.box_id+"."));for(const gl of dl)gl.from===tl.net_id&&(gl.from=nl),gl.to===tl.net_id&&(gl.to=nl)}}for(let tl=0;tl<Ma.length;tl++){const rl=Ma[tl],il=Ia[tl].filter(nl=>!La.includes(nl));for(const nl of il){const sl=J.nets.find(vl=>vl.net_id===nl),ll=`${nl}_${rl.ascending_box_index}_${ba==="left"?"L":"R"}_${tl}`,dl=`${ll}.${sl.is_ground?"top":"bottom"}`,gl={x:rl.x,y:rl.y+(sl.is_ground?-1:1),side:ba,ascending_port_index:0,ascending_box_index:rl.ascending_box_index,box_id:ll,ports:[{port_id:dl,rx:0,ry:sl.is_ground?.1:-.1}]};ua.push(gl);const _l=xa.find(vl=>vl.from===nl&&vl.to.startsWith(rl.box_id)||vl.to===nl&&vl.from.startsWith(rl.box_id));_l.from===nl&&(_l.from=dl),_l.to===nl&&(_l.to=dl)}}}return Aa}var rotateBox=(ua,J)=>{const la=rotate(J*(Math.PI/180));ua.ports.forEach(xa=>{const Aa=applyToPoint(la,{x:xa.rx,y:xa.ry});xa.rx=Aa.x,xa.ry=Aa.y})},normalizeVec=ua=>{const J=Math.sqrt(ua.x**2+ua.y**2);return{x:ua.x/J,y:ua.y/J}},getAllPossibleBoxRotations=ua=>[0,90,180,270].map(la=>{const xa={...ua,ports:ua.ports.map(Aa=>({...Aa}))};return rotateBox(xa,la),xa.applied_rotation_deg=la,xa}),autoRotateTwoPortBoxes=ua=>{const J=ua.boxes.sort((la,xa)=>la.y-xa.y);for(const la of J)if(la.ports.length===2){const xa=la.ports.map(Sa=>{var La;const Ma=ua.connections.filter(Fa=>Fa.from===Sa.port_id||Fa.to===Sa.port_id).map(Fa=>Fa.from===Sa.port_id?Fa.to:Fa.from);if(Ma.length===0)return null;const Ra=J.filter(Fa=>Ma.some(ka=>ka.startsWith(Fa.box_id+"."))),Ia=(La=Ra.flatMap(Fa=>Fa.ports))==null?void 0:La.filter(Fa=>Ma.includes(Fa.port_id));for(const Fa of Ia){const ka=Ra.find(el=>el.box_id===Fa.port_id.split(".")[0]);Fa.x=ka.x+Fa.rx,Fa.y=ka.y+Fa.ry}return{...Sa,connected_port:Ia[0],connected_ports:Ia}}).filter(Boolean);if(xa.length===0)continue;const Aa=getAllPossibleBoxRotations({...la,ports:xa});for(const Sa of Aa){Sa.natural_offset_sum_deg=0;for(const Ma of Sa.ports)for(const Ra of Ma.connected_ports){const Ia=normalizeVec({x:Ra.x-(Sa.x+Ma.rx),y:Ra.y-(Sa.y+Ma.ry)}),La=normalizeVec({x:Ma.rx,y:Ma.ry}),Fa=Math.sqrt((Ia.x-La.x)**2+(Ia.y-La.y)**2),ka=Ia.x*La.x+Ia.y*La.y,el=Ia.x*La.y-Ia.y*La.x,tl=Math.atan2(el,ka)*(180/Math.PI);Sa.natural_offset_sum_deg+=Math.abs(tl)/Fa}}const ba=Aa.reduce((Sa,Ma)=>Sa.natural_offset_sum_deg<Ma.natural_offset_sum_deg?Sa:Ma);rotateBox(la,ba.applied_rotation_deg)}return ua},ascendingCentralLrBug1=ua=>{const J=new Set(ua.nets.map(Ra=>Ra.net_id)),la=getConnectionMap(ua),xa=JSON.parse(JSON.stringify(ua.boxes)),Aa=JSON.parse(JSON.stringify(ua.connections));for(const Ra of xa){Ra.x=0,Ra.y=0;let Ia=0,La=0;for(const Fa of Ra.ports)Fa.rx<Ia?Ia=Fa.rx:Fa.rx>La&&(La=Fa.rx);Ra.width=La-Ia}const ba=findBoxWithMostPorts(xa);for(const Ra of ba.ports)Ra.rx>0?Ra.side="right":Ra.rx<0&&(Ra.side="left");for(const Ra of xa){if(Ra.box_id===ba.box_id)continue;const Ia=ba.ports.filter(ka=>Aa.some(el=>el.from.startsWith(Ra.box_id)&&el.to===ka.port_id||el.to.startsWith(Ra.box_id)&&el.from===ka.port_id));if(Ia.length===0){Ra.side="left";continue}let La=0,Fa=0;for(const ka of Ia)ka.rx>0?Fa+=1:ka.rx<0&&(La+=1);La>=Fa?Ra.side="left":Ra.side="right"}for(const Ra of["left","right"]){const Ia=ba.ports.filter(La=>La.side===Ra);Ia.sort((La,Fa)=>La.ry-Fa.ry);for(const La of Ia)La.ascending_port_index=Ia.indexOf(La)}for(const Ra of xa){if(Ra.box_id===ba.box_id)continue;const Ia=ua.connections.filter(Fa=>Fa.from.startsWith(Ra.box_id+".")||Fa.to.startsWith(Ra.box_id+".")).map(Fa=>Fa.from.startsWith(Ra.box_id+".")?Fa.to:Fa.from),La=ba.ports.filter(Fa=>Ia.includes(Fa.port_id));La.length!==0&&(Ra.ascending_port_index=Math.min(...La.map(Fa=>Fa.ascending_port_index)),Ra.ascending_box_index=Ra.ascending_port_index)}let Sa=Math.max(0,...xa.map(Ra=>Ra.ascending_box_index).filter(Ra=>!isNaN(Ra)));for(const Ra of xa)Ra.box_id!==ba.box_id&&Ra.ascending_box_index===void 0&&(Sa+=1,Ra.ascending_box_index=Sa);for(const Ra of["left","right"])removeAscendingBoxIndexGaps(Sa,xa.filter(Ia=>Ia.side===Ra));for(const Ra of["left","right"]){let Ia=ba.width*.75*(Ra==="left"?-1:1);for(let La=0;La<=Sa;La++){const Fa=xa.filter(tl=>tl.side===Ra&&tl.ascending_box_index===La),ka=Math.max(...Fa.map(tl=>tl.width)),el=Math.max(.5,ka)*(Ra==="left"?-1:1);Ia+=el;for(const tl of Fa)tl.box_id!==ba.box_id&&(tl.y=tl.ascending_box_index*1.25,tl.x=Ia);Ia+=el/2}}slideBoxesConnectedToSameNet(xa,la,J,ua),addBoxesForNetsRewriteNetsToPlacedAliases(xa,ua,J,Aa),centerSides(xa,ba);const Ma={...ua,connections:Aa,boxes:xa};return autoRotateTwoPortBoxes(Ma),Ma},getUnitVectorFromPointAToB=(ua,J)=>{const la={x:J.x-ua.x,y:J.y-ua.y},xa=Math.sqrt(la.x**2+la.y**2);return{x:la.x/xa,y:la.y/xa}},getUnitVectorFromDirection=ua=>{switch(ua){case"up":return{x:0,y:1};case"down":return{x:0,y:-1};case"left":return{x:-1,y:0};case"right":return{x:1,y:0}}};function doesLineIntersectLine([ua,J],[la,xa],{lineThickness:Aa=0}={}){return Aa===0?doSegmentsIntersect(ua,J,la,xa):segmentsDistance(ua,J,la,xa)<=Aa}function doSegmentsIntersect(ua,J,la,xa){const Aa=orientation(ua,J,la),ba=orientation(ua,J,xa),Sa=orientation(la,xa,ua),Ma=orientation(la,xa,J);return!!(Aa!==ba&&Sa!==Ma||Aa===0&&onSegment$1(ua,la,J)||ba===0&&onSegment$1(ua,xa,J)||Sa===0&&onSegment$1(la,ua,xa)||Ma===0&&onSegment$1(la,J,xa))}function orientation(ua,J,la){const xa=(J.y-ua.y)*(la.x-J.x)-(J.x-ua.x)*(la.y-J.y);return xa===0?0:xa>0?1:2}function onSegment$1(ua,J,la){return J.x<=Math.max(ua.x,la.x)&&J.x>=Math.min(ua.x,la.x)&&J.y<=Math.max(ua.y,la.y)&&J.y>=Math.min(ua.y,la.y)}function segmentsDistance(ua,J,la,xa){if(ua.x===J.x&&ua.y===J.y)return pointToSegmentDistance$1(ua,la,xa);if(la.x===xa.x&&la.y===xa.y)return pointToSegmentDistance$1(la,ua,J);if(doSegmentsIntersect(ua,J,la,xa))return 0;const Aa=[pointToSegmentDistance$1(ua,la,xa),pointToSegmentDistance$1(J,la,xa),pointToSegmentDistance$1(la,ua,J),pointToSegmentDistance$1(xa,ua,J)];return Math.min(...Aa)}function pointToSegmentDistance$1(ua,J,la){const xa=(la.x-J.x)**2+(la.y-J.y)**2;if(xa===0)return distance$3(ua,J);let Aa=((ua.x-J.x)*(la.x-J.x)+(ua.y-J.y)*(la.y-J.y))/xa;Aa=Math.max(0,Math.min(1,Aa));const ba={x:J.x+Aa*(la.x-J.x),y:J.y+Aa*(la.y-J.y)};return distance$3(ua,ba)}function distance$3(ua,J){const la=ua.x-J.x,xa=ua.y-J.y;return Math.sqrt(la*la+xa*xa)}var SI_PREFIXES=[{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"},{value:1,symbol:""},{value:.001,symbol:"m"},{value:1e-6,symbol:"µ"},{value:1e-9,symbol:"n"},{value:1e-12,symbol:"p"}];function formatSiUnit(ua){if(ua==null)return"";if(ua===0)return"0";const J=SI_PREFIXES.find(Aa=>Math.abs(ua)>=Aa.value)||SI_PREFIXES[SI_PREFIXES.length-1];return`${(ua/J.value).toPrecision(3).replace(/\.?0+$/,"")}${J.symbol}`}var su$2=(ua,J={})=>{let la=ua._internal_store;if(!la){la={counts:{}},ua._internal_store=la;for(const Aa of ua){const ba=Aa.type,Sa=Aa[`${ba}_id`];if(!Sa)continue;const Ma=Number.parseInt(Sa.split("_").pop());Number.isNaN(Ma)||(la.counts[ba]=Math.max(la.counts[ba]??0,Ma))}}return new Proxy({},{get:(Aa,ba)=>ba==="toArray"?()=>ua:{get:Sa=>ua.find(Ma=>Ma.type===ba&&Ma[`${ba}_id`]===Sa),getUsing:Sa=>{const Ma=Object.keys(Sa);if(Ma.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Ra=Ma[0],Ia=Ra.replace("_id",""),La=ua.find(Fa=>Fa.type===Ia&&Fa[Ra]===Sa[Ra]);return La?ua.find(Fa=>Fa.type===ba&&Fa[`${ba}_id`]===La[`${ba}_id`]):null},getWhere:Sa=>{const Ma=Object.keys(Sa);return ua.find(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},list:Sa=>{const Ma=Sa?Object.keys(Sa):[];return ua.filter(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},insert:Sa=>{var Ia;(Ia=la.counts)[ba]??(Ia[ba]=-1),la.counts[ba]++;const Ma=la.counts[ba],Ra={type:ba,[`${ba}_id`]:`${ba}_${Ma}`,...Sa};return J.validateInserts&&(Soup[ba]??any_soup_element$1).parse(Ra),ua.push(Ra),Ra},delete:Sa=>{const Ma=ua.find(Ra=>Ra[`${ba}_id`]===Sa);Ma&&ua.splice(ua.indexOf(Ma),1)},update:(Sa,Ma)=>{const Ra=ua.find(Ia=>Ia.type===ba&&Ia[`${ba}_id`]===Sa);if(Ra)return Object.assign(Ra,Ma),Ra},select:Sa=>{if(ba==="source_component")return ua.find(Ma=>Ma.type==="source_component"&&Ma.name===Sa.replace(/\./g,""));if(ba==="pcb_port"||ba==="source_port"||ba==="schematic_port"){const[Ma,Ra]=Sa.replace(/\./g,"").split(/[\s\>]+/),Ia=ua.find(Fa=>Fa.type==="source_component"&&Fa.name===Ma);if(!Ia)return null;const La=ua.find(Fa=>Fa.type==="source_port"&&Fa.source_component_id===Ia.source_component_id&&(Fa.name===Ra||(Fa.port_hints??[]).includes(Ra)));if(!La)return null;if(ba==="source_port")return La;if(ba==="pcb_port")return ua.find(Fa=>Fa.type==="pcb_port"&&Fa.source_port_id===La.source_port_id);if(ba==="schematic_port")return ua.find(Fa=>Fa.type==="schematic_port"&&Fa.source_port_id===La.source_port_id)}}}})};su$2.unparsed=su$2;var su_default$2=su$2,__defProp$o=Object.defineProperty,__export$4=(ua,J)=>{for(var la in J)__defProp$o(ua,la,{get:J[la],enumerable:!0})},components_exports={};__export$4(components_exports,{Battery:()=>Battery,Board:()=>Board,Capacitor:()=>Capacitor,Chip:()=>Chip,Constraint:()=>Constraint2,Crystal:()=>Crystal,Diode:()=>Diode,FabricationNotePath:()=>FabricationNotePath,FabricationNoteText:()=>FabricationNoteText,Footprint:()=>Footprint,Group:()=>Group$2,Hole:()=>Hole,Inductor:()=>Inductor,Jumper:()=>Jumper,Keepout:()=>Keepout,Led:()=>Led,Mosfet:()=>Mosfet,Net:()=>Net,NetAlias:()=>NetAlias,NormalComponent:()=>NormalComponent,PinHeader:()=>PinHeader,PlatedHole:()=>PlatedHole,Port:()=>Port,Potentiometer:()=>Potentiometer,PowerSource:()=>PowerSource,PrimitiveComponent:()=>PrimitiveComponent,PushButton:()=>PushButton,Renderable:()=>Renderable,Resistor:()=>Resistor,Resonator:()=>Resonator,SilkscreenCircle:()=>SilkscreenCircle,SilkscreenLine:()=>SilkscreenLine,SilkscreenPath:()=>SilkscreenPath,SilkscreenRect:()=>SilkscreenRect,SilkscreenText:()=>SilkscreenText,SmtPad:()=>SmtPad,Subcircuit:()=>Subcircuit,Trace:()=>Trace2,TraceHint:()=>TraceHint,Transistor:()=>Transistor,Via:()=>Via});var debug$4=Debug$1("tscircuit:renderable"),orderedRenderPhases=["ReactSubtreesRender","InitializePortsFromChildren","CreateNetsFromProps","CreateTracesFromProps","CreateTraceHintsFromProps","SourceRender","SourceParentAttachment","PortDiscovery","PortMatching","SourceTraceRender","SourceAddConnectivityMapKey","SchematicComponentRender","SchematicPortRender","SchematicLayout","SchematicTraceRender","PcbComponentRender","PcbPrimitiveRender","PcbFootprintLayout","PcbPortRender","PcbPortAttachment","PcbLayout","PcbComponentSizeCalculation","PcbTraceRender","PcbTraceHintRender","PcbRouteNetIslands","CadModelRender","PartsEngineRender"],globalRenderCounter=0,Renderable=class{constructor(ua){jp(this,"renderPhaseStates");jp(this,"shouldBeRemoved",!1);jp(this,"children");jp(this,"isPcbPrimitive",!1);jp(this,"isSchematicPrimitive",!1);jp(this,"_renderId");jp(this,"_currentRenderPhase",null);jp(this,"_asyncEffects",[]);jp(this,"parent",null);this._renderId=`${globalRenderCounter++}`,this.children=[],this.renderPhaseStates={};for(const J of orderedRenderPhases)this.renderPhaseStates[J]={initialized:!1,dirty:!1}}_markDirty(ua){var la;this.renderPhaseStates[ua].dirty=!0;const J=orderedRenderPhases.indexOf(ua);for(let xa=J+1;xa<orderedRenderPhases.length;xa++)this.renderPhaseStates[orderedRenderPhases[xa]].dirty=!0;(la=this.parent)!=null&&la._markDirty&&this.parent._markDirty(ua)}_queueAsyncEffect(ua,J){const la={promise:J(),phase:this._currentRenderPhase,effectName:ua,complete:!1};this._asyncEffects.push(la),"root"in this&&this.root&&this.root.emit("asyncEffect:start",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase}),la.promise.then(()=>{la.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase})}).catch(xa=>{console.error(`Async effect error in ${la.phase} "${ua}":
|
|
7537
7537
|
${xa.stack}`),la.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase,error:xa.toString()})})}_emitRenderLifecycleEvent(ua,J){debug$4(`${ua}:${J} ${this.getString()}`);const la=`renderable:renderLifecycle:${ua}:${J}`,xa={renderId:this._renderId,componentDisplayName:this.getString(),type:la};"root"in this&&this.root&&(this.root.emit(la,xa),this.root.emit("renderable:renderLifecycle:anyEvent",{...xa,type:la}))}getString(){return this.constructor.name}_hasIncompleteAsyncEffects(){return this._asyncEffects.some(ua=>!ua.complete)}getCurrentRenderPhase(){return this._currentRenderPhase}getRenderGraph(){return{id:this._renderId,currentPhase:this._currentRenderPhase,renderPhaseStates:this.renderPhaseStates,shouldBeRemoved:this.shouldBeRemoved,children:this.children.map(ua=>ua.getRenderGraph())}}runRenderCycle(){for(const ua of orderedRenderPhases)this.runRenderPhaseForChildren(ua),this.runRenderPhase(ua)}runRenderPhase(ua){var ba,Sa,Ma;this._currentRenderPhase=ua;const J=this.renderPhaseStates[ua],la=J.initialized,xa=J.dirty;if(!la&&this.shouldBeRemoved)return;if(this.shouldBeRemoved&&la){this._emitRenderLifecycleEvent(ua,"start"),(ba=this==null?void 0:this[`remove${ua}`])==null||ba.call(this),J.initialized=!1,J.dirty=!1,this._emitRenderLifecycleEvent(ua,"end");return}const Aa=orderedRenderPhases.indexOf(ua)-1;if(Aa>=0){const Ra=orderedRenderPhases[Aa];if(this._asyncEffects.filter(La=>La.phase===Ra).some(La=>!La.complete))return}if(this._emitRenderLifecycleEvent(ua,"start"),la){xa&&((Sa=this==null?void 0:this[`update${ua}`])==null||Sa.call(this),J.dirty=!1),this._emitRenderLifecycleEvent(ua,"end");return}J.dirty=!1,(Ma=this==null?void 0:this[`doInitial${ua}`])==null||Ma.call(this),J.initialized=!0,this._emitRenderLifecycleEvent(ua,"end")}runRenderPhaseForChildren(ua){for(const J of this.children)J.runRenderPhaseForChildren(ua),J.runRenderPhase(ua)}renderError(ua){throw typeof ua=="string"?new Error(ua):new Error(JSON.stringify(ua,null,2))}},catalogue$1={},extendCatalogue=ua=>{const J=Object.fromEntries(Object.entries(ua).map(([la,xa])=>[la.toLowerCase(),xa]));Object.assign(catalogue$1,ua),Object.assign(catalogue$1,J)};function prepare$1(ua,J){const la=ua;return la.__tsci={...J},ua}var hostConfig={supportsMutation:!0,createInstance(ua,J){const la=catalogue$1[ua];if(!la)throw Object.keys(catalogue$1).length===0?new Error("No components registered in catalogue, did you forget to import lib/register-catalogue in your test file?"):new Error(`Unsupported component type (not registered in @tscircuit/core catalogue): "${ua}" See CREATING_NEW_COMPONENTS.md`);return prepare$1(new la(J),{})},createTextInstance(){return{}},appendInitialChild(ua,J){ua.add(J)},appendChild(ua,J){ua.add(J)},appendChildToContainer(ua,J){ua.add(J)},finalizeInitialChildren(){return!1},prepareUpdate(){return null},shouldSetTextContent(){return!1},getRootHostContext(){return{}},getChildHostContext(){return{}},prepareForCommit(){return null},resetAfterCommit(){},commitMount(){},commitUpdate(){},removeChild(){},clearContainer(){},supportsPersistence:!1,getPublicInstance(ua){return ua},preparePortalMount(ua){throw new Error("Function not implemented.")},scheduleTimeout(ua,J){throw new Error("Function not implemented.")},cancelTimeout(ua){throw new Error("Function not implemented.")},noTimeout:void 0,isPrimaryRenderer:!1,getInstanceFromNode(ua){throw new Error("Function not implemented.")},beforeActiveInstanceBlur(){throw new Error("Function not implemented.")},afterActiveInstanceBlur(){throw new Error("Function not implemented.")},prepareScopeUpdate:(ua,J)=>{throw new Error("Function not implemented.")},getInstanceFromScope:ua=>{throw new Error("Function not implemented.")},detachDeletedInstance:ua=>{throw new Error("Function not implemented.")},getCurrentEventPriority:()=>constantsExports$1.DefaultEventPriority,getCurrentUpdatePriority:()=>constantsExports$1.DefaultEventPriority,resolveUpdatePriority:()=>constantsExports$1.DefaultEventPriority,setCurrentUpdatePriority:()=>{},maySuspendCommit:()=>!1,supportsHydration:!1},reconciler$1;React.version.startsWith("19.")?reconciler$1=ReactReconciler(hostConfig):reconciler$1=ReactReconciler18(hostConfig);var createInstanceFromReactElement=ua=>{const J={children:[],props:{name:"$root"},add(ba){ba.parent=this,this.children.push(ba)},computePcbGlobalTransform(){return identity$3()}},la=[],xa=reconciler$1.createContainer(J,0,null,!1,null,"tsci",ba=>{console.log("Error in createContainer"),console.error(ba),la.push(ba)},null);if(React.version.startsWith("19.")?(reconciler$1.updateContainerSync(ua,xa,null,()=>{}),reconciler$1.flushSyncWork()):reconciler$1.updateContainer(ua,xa,null,()=>{}),la.length>0)throw la[0];const Aa=reconciler$1.getPublicRootInstance(xa);return Aa||J.children[0]},parsePinNumberFromLabelsOrThrow=(ua,J)=>{if(typeof ua=="number")return ua;if(ua.startsWith("pin"))return Number(ua.slice(3));if(!J)throw new Error(`No pin labels provided and pin number or label is not a number: "${ua}"`);for(const la in J)if((Array.isArray(J[la])?J[la]:[J[la]]).includes(ua))return Number(la.replace("pin",""));throw new Error(`No pin labels provided and pin number or label is not a number: "${ua}"`)},underscorifyPinStyles=(ua,J)=>{if(!ua)return;const la={},xa={};for(const[Aa,ba]of Object.entries(ua)){const Sa=parsePinNumberFromLabelsOrThrow(Aa,J);xa[Sa]={...xa[Sa],...ba}}for(const[Aa,ba]of Object.entries(xa)){const Sa=`pin${Aa}`;la[Sa]={bottom_margin:ba.bottomMargin,left_margin:ba.leftMargin,right_margin:ba.rightMargin,top_margin:ba.topMargin}}return la},underscorifyPortArrangement=ua=>{if(ua){if("leftSide"in ua||"rightSide"in ua||"topSide"in ua||"bottomSide"in ua)return{left_side:ua.leftSide,right_side:ua.rightSide,top_side:ua.topSide,bottom_side:ua.bottomSide};if("leftPinCount"in ua||"rightPinCount"in ua||"topPinCount"in ua||"bottomPinCount"in ua)return{left_size:ua.leftPinCount,right_size:ua.rightPinCount,top_size:ua.topPinCount,bottom_size:ua.bottomPinCount};if("leftSize"in ua||"rightSize"in ua||"topSize"in ua||"bottomSize"in ua)return{left_size:ua.leftSize,right_size:ua.rightSize,top_size:ua.topSize,bottom_size:ua.bottomSize}}},InvalidProps=class extends Error{constructor(ua,J,la){let xa;const ba=Object.keys(la).filter(Sa=>Sa!=="_errors").map(Sa=>la[Sa]._errors[0]?`${Sa} (${la[Sa]._errors[0]})`:`${Sa} (${JSON.stringify(la[Sa])})`).join(", ");"name"in J?xa=`Invalid props for ${ua} "${J.name}": ${ba}`:"footprint"in J&&typeof J.footprint=="string"?xa=`Invalid props for ${ua} (unnamed ${J.footprint} component): ${ba}`:xa=`Invalid props for ${ua} (unnamed): ${ba}`,super(xa),this.componentName=ua,this.originalProps=J,this.formattedError=la}};function isMatchingSelector(ua,J){const la=J.match(/^#(\w+)/);if(la)return ua.props.id===la[1];const xa=J.match(/^\.(\w+)/);if(xa)return ua.isMatchingNameOrAlias(xa[1]);let[Aa,...ba]=J.split(/(?=[#.[])/);return Aa==="pin"&&(Aa="port"),Aa&&Aa!=="*"&&ua.lowercaseComponentName!==Aa.toLowerCase()?!1:ba.every(Sa=>{if(Sa.startsWith("#"))return ua.props.id===Sa.slice(1);if(Sa.startsWith("."))return ua.isMatchingNameOrAlias(Sa.slice(1));const Ma=Sa.match(/\[(\w+)=['"]?(.+?)['"]?\]/);if(!Ma)return!0;const[,Ra,Ia]=Ma;return ua.props[Ra].toString()===Ia})}var debugSelectAll=Debug$1("tscircuit:primitive-component:selectAll"),PrimitiveComponent=class extends Renderable{constructor(J){super(J);jp(this,"parent",null);jp(this,"children");jp(this,"childrenPendingRemoval");jp(this,"props");jp(this,"_parsedProps");jp(this,"externallyAddedAliases");jp(this,"isPrimitiveContainer",!1);jp(this,"source_group_id",null);jp(this,"source_component_id",null);jp(this,"schematic_component_id",null);jp(this,"pcb_component_id",null);jp(this,"cad_component_id",null);this.children=[],this.childrenPendingRemoval=[],this.props=J??{},this.externallyAddedAliases=[];const la=this.config.zodProps.safeParse(J??{});if(la.success)this._parsedProps=la.data;else throw new InvalidProps(this.lowercaseComponentName,this.props,la.error.format())}get config(){return{componentName:"",zodProps:z$3.object({}).passthrough()}}get componentName(){return this.config.componentName}getInheritedProperty(J){let la=this;for(;la;){if(la._parsedProps&&J in la._parsedProps)return la._parsedProps[J];la=la.parent}}get lowercaseComponentName(){return this.componentName.toLowerCase()}get isSubcircuit(){var J;return!!this.props.subcircuit||this.lowercaseComponentName==="group"&&((J=this==null?void 0:this.parent)==null?void 0:J.isRoot)}get isGroup(){return this.lowercaseComponentName==="group"}setProps(J){var Aa,ba;const la=this.config.zodProps.parse({...this.props,...J}),xa=this.props;this.props=la,this._parsedProps=this.config.zodProps.parse(J),this.onPropsChange({oldProps:xa,newProps:la,changedProps:Object.keys(J)}),(ba=(Aa=this.parent)==null?void 0:Aa.onChildChanged)==null||ba.call(Aa,this)}computePcbPropsTransform(){const{_parsedProps:J}=this;return compose(translate(J.pcbX??0,J.pcbY??0),rotate((J.pcbRotation??0)*Math.PI/180))}_computePcbGlobalTransformBeforeLayout(){var xa,Aa,ba;const{_parsedProps:J}=this,la=this.getSubcircuit()._getPcbManualPlacementForComponent(this);if(la&&this.props.pcbX===void 0&&this.props.pcbY===void 0)return compose(((xa=this.parent)==null?void 0:xa._computePcbGlobalTransformBeforeLayout())??identity$3(),compose(translate(la.x,la.y),rotate((J.pcbRotation??0)*Math.PI/180)));if(this.isPcbPrimitive){const Sa=this.getPrimitiveContainer();if(Sa){const Ma=Sa._parsedProps.layer==="bottom",Ra=Sa._getGlobalPcbPositionBeforeLayout();if(Ma)return compose(translate(Ra.x,Ra.y),flipY(),translate(-Ra.x,-Ra.y)),compose(((Aa=this.parent)==null?void 0:Aa._computePcbGlobalTransformBeforeLayout())??identity$3(),flipY(),this.computePcbPropsTransform())}}return compose(((ba=this.parent)==null?void 0:ba._computePcbGlobalTransformBeforeLayout())??identity$3(),this.computePcbPropsTransform())}getPrimitiveContainer(){var J,la;return this.isPrimitiveContainer?this:((la=(J=this.parent)==null?void 0:J.getPrimitiveContainer)==null?void 0:la.call(J))??null}_getPcbCircuitJsonBounds(){return{center:{x:0,y:0},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getPcbPrimitiveFlippedHelpers(){const J=this.getPrimitiveContainer(),la=J?J._parsedProps.layer==="bottom":!1;return{isFlipped:la,maybeFlipLayer:Aa=>la?Aa==="top"?"bottom":"top":Aa}}_setPositionFromLayout(J){throw new Error(`_setPositionFromLayout not implemented for ${this.componentName}`)}computeSchematicPropsTransform(){return compose(translate(this.props.schX??0,this.props.schY??0))}computeSchematicGlobalTransform(){var la,xa;const J=this._getSchematicGlobalManualPlacementTransform(this);return J||compose(((xa=(la=this.parent)==null?void 0:la.computeSchematicGlobalTransform)==null?void 0:xa.call(la))??identity$3(),this.computeSchematicPropsTransform())}_getSchematicSymbolName(){const{_parsedProps:J}=this,la=this.config.schematicSymbolName;let xa=J.schRotation;if(xa===void 0&&(xa=0),xa=xa%360,xa<0&&(xa+=360),J.schRotation!==void 0&&xa%90!==0)throw new Error(`Schematic rotation ${J.schRotation} is not supported for ${this.componentName}`);const Aa=`${la}_horz`,ba=`${la}_vert`,Sa=`${la}_up`,Ma=`${la}_down`,Ra=`${la}_left`,Ia=`${la}_right`;if(Ia in symbols_index_default$1&&xa===0)return Ia;if(Sa in symbols_index_default$1&&xa===90)return Sa;if(Ra in symbols_index_default$1&&xa===180)return Ra;if(Ma in symbols_index_default$1&&xa===270)return Ma;if(Aa in symbols_index_default$1&&(xa===0||xa===180))return Aa;if(ba in symbols_index_default$1&&(xa===90||xa===270))return ba;if(la in symbols_index_default$1)return la}_getSchematicSymbolNameOrThrow(){const J=this._getSchematicSymbolName();if(!J)throw new Error(`No schematic symbol found (given: "${this.config.schematicSymbolName}")`);return J}getSchematicSymbol(){const J=this._getSchematicSymbolName();return J?symbols_index_default$1[J]??null:null}_getPcbManualPlacementForComponent(J){var ba;if(!this.isSubcircuit)return null;const la=this.props.layout,xa=this.props.manualEdits;if(!la&&!xa)return null;const Aa=((ba=la==null?void 0:la.manual_pcb_placement_config)==null?void 0:ba.positions)||(xa==null?void 0:xa.pcb_placements);if(!Aa)return null;for(const Sa of Aa)if(la&&isMatchingSelector(J,Sa.selector)||J.props.name===Sa.selector)return applyToPoint(this._computePcbGlobalTransformBeforeLayout(),Sa.center);return null}_getSchematicGlobalManualPlacementTransform(J){var xa,Aa;const la=(xa=this.getSubcircuit())==null?void 0:xa._parsedProps.manualEdits;if(!la)return null;for(const ba of la.schematic_placements??[])if((isMatchingSelector(J,ba.selector)||J.props.name===ba.selector)&&ba.relative_to==="group_center")return compose(((Aa=this.parent)==null?void 0:Aa._computePcbGlobalTransformBeforeLayout())??identity$3(),translate(ba.center.x,ba.center.y));return null}_getGlobalPcbPositionBeforeLayout(){return applyToPoint(this._computePcbGlobalTransformBeforeLayout(),{x:0,y:0})}_getGlobalSchematicPositionBeforeLayout(){return applyToPoint(this.computeSchematicGlobalTransform(),{x:0,y:0})}get root(){var J;return((J=this.parent)==null?void 0:J.root)??null}onAddToParent(J){this.parent=J}onPropsChange(J){}onChildChanged(J){var la,xa;(xa=(la=this.parent)==null?void 0:la.onChildChanged)==null||xa.call(la,J)}add(J){J.onAddToParent(this),J.parent=this,this.children.push(J)}addAll(J){for(const la of J)this.add(la)}remove(J){this.children=this.children.filter(la=>la!==J),this.childrenPendingRemoval.push(J),J.shouldBeRemoved=!0}getSubcircuitSelector(){const J=this._parsedProps.name,la=J?`${this.lowercaseComponentName}.${J}`:this.lowercaseComponentName;return!this.parent||this.parent.isSubcircuit?la:`${this.parent.getSubcircuitSelector()} > ${la}`}getFullPathSelector(){var Aa,ba;const J=this._parsedProps.name,la=J?`${this.lowercaseComponentName}.${J}`:this.lowercaseComponentName,xa=(ba=(Aa=this.parent)==null?void 0:Aa.getFullPathSelector)==null?void 0:ba.call(Aa);return xa?`${xa} > ${la}`:la}getNameAndAliases(){return[this._parsedProps.name,...this._parsedProps.portHints??[]].filter(Boolean)}isMatchingNameOrAlias(J){return this.getNameAndAliases().includes(J)}isMatchingAnyOf(J){return this.getNameAndAliases().some(la=>J.map(xa=>xa.toString()).includes(la))}getPcbSize(){throw new Error(`getPcbSize not implemented for ${this.componentName}`)}doesSelectorMatch(J){const la=[this.componentName,this.lowercaseComponentName],xa=[this._parsedProps.name].filter(Boolean),Aa=J.trim().split(/\> /)[0],ba=Aa[0];return Aa.length>1?!1:!!(J==="*"||J[0]==="#"&&J.slice(1)===this.props.id||J[0]==="."&&xa.includes(J.slice(1))||/^[a-zA-Z0-9_]/.test(ba)&&la.includes(ba))}getSubcircuit(){var la,xa;if(this.isSubcircuit)return this;const J=(xa=(la=this.parent)==null?void 0:la.getSubcircuit)==null?void 0:xa.call(la);if(!J)throw new Error("Component is not inside an opaque group (no board?)");return J}getGroup(){var J,la;return this.isGroup?this:((la=(J=this.parent)==null?void 0:J.getGroup)==null?void 0:la.call(J))??null}selectAll(J){debugSelectAll(`selectAll: "${J}"`);const la=J.trim().split(/\s+/);let xa=la[0]===">"?this.children:this.getSelectableDescendants(),Aa=[],ba=!1,Sa=-1;for(const Ma of la)if(Sa++,debugSelectAll(`
|
|
7538
7538
|
|
|
7539
|
-
iteration: ${Sa}`),debugSelectAll(`part: "${la[Sa]}"`),debugSelectAll(`currentSearch: [${xa.map(Ra=>Ra.getString()).join(",")}]`),debugSelectAll(`currentResults: [${Aa.map(Ra=>Ra.getString()).join(",")}]`),Ma===">")ba=!0;else{const Ra=xa.filter(La=>isMatchingSelector(La,Ma));xa=Ra.flatMap(La=>ba?La.children:La.getSelectableDescendants()),Aa=Ra,ba=!1}return Aa}selectOne(J,la){var Aa;let xa=(Aa=la==null?void 0:la.type)==null?void 0:Aa.toLowerCase();return la!=null&&la.port&&(xa="port"),xa?this.selectAll(J).find(ba=>ba.lowercaseComponentName===xa)??null:la!=null&&la.pcbPrimitive?this.selectAll(J).find(ba=>ba.isPcbPrimitive)??null:la!=null&&la.schematicPrimitive?this.selectAll(J).find(ba=>ba.isSchematicPrimitive)??null:this.selectAll(J)[0]??null}getAvailablePcbLayers(){var J,la;if(this.isPcbPrimitive){const{maybeFlipLayer:xa}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[xa(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((la=(J=this.root)==null?void 0:J._getBoard())==null?void 0:la.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const J=[];for(const la of this.children)J.push(la),J.push(...la.getDescendants());return J}getSelectableDescendants(){const J=[];for(const la of this.children)la.isSubcircuit?J.push(la):(J.push(la),J.push(...la.getSelectableDescendants()));return J}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}renderError(J){var la;if(typeof J=="string")return super.renderError(J);(la=this.root)==null||la.db.pcb_placement_error.insert(J)}getString(){var Aa,ba;const{lowercaseComponentName:J,_parsedProps:la,parent:xa}=this;return(la==null?void 0:la.pinNumber)!==void 0&&((Aa=xa==null?void 0:xa.props)!=null&&Aa.name)&&(la!=null&&la.name)?`<${J}#${this._renderId}(pin:${la.pinNumber} .${xa==null?void 0:xa.props.name}>.${la.name}) />`:(ba=xa==null?void 0:xa.props)!=null&&ba.name&&(la!=null&&la.name)?`<${J}#${this._renderId}(.${xa==null?void 0:xa.props.name}>.${la==null?void 0:la.name}) />`:la!=null&&la.from&&(la!=null&&la.to)?`<${J}#${this._renderId}(from:${la.from} to:${la==null?void 0:la.to}) />`:la!=null&&la.name?`<${J}#${this._renderId} name=".${la==null?void 0:la.name}" />`:la!=null&&la.portHints?`<${J}#${this._renderId}(${la.portHints.map(Sa=>`.${Sa}`).join(", ")}) />`:`<${J}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}};function pairs$1(ua){const J=[];for(let la=0;la<ua.length-1;la++)J.push([ua[la],ua[la+1]]);return J}var netProps=z$3.object({name:z$3.string()}),Net=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:netProps}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:la}=this,xa=J.source_net.insert({name:la.name,member_source_group_ids:[]});this.source_net_id=xa.source_net_id}getAllConnectedPorts(){const J=this.getSubcircuit().selectAll("port"),la=[];for(const xa of J){const Aa=xa._getDirectlyConnectedTraces();for(const ba of Aa)if(ba._isExplicitlyConnectedToNet(this)){la.push(xa);break}}return la}_getAllDirectlyConnectedTraces(){const J=this.getSubcircuit().selectAll("trace"),la=[];for(const xa of J)xa._isExplicitlyConnectedToNet(this)&&la.push(xa);return la}doInitialPcbRouteNetIslands(){var ba;if((ba=this.root)!=null&&ba.pcbDisabled||this.getSubcircuit()._parsedProps.routingDisabled)return;const{db:J}=this.root,la=this._getAllDirectlyConnectedTraces().filter(Sa=>{var Ma;return(((Ma=Sa._portsRoutedOnPcb)==null?void 0:Ma.length)??0)>0}),xa=[];for(const Sa of la){const Ma=Sa._portsRoutedOnPcb,Ra=xa.find(Ia=>Ma.some(La=>Ia.ports.includes(La)));if(!Ra){xa.push({ports:[...Ma],traces:[Sa]});continue}Ra.traces.push(Sa),Ra.ports.push(...Ma)}if(xa.length===0)return;const Aa=pairs$1(xa);for(const[Sa,Ma]of Aa){const Ra=Sa.ports.map(nl=>nl._getGlobalPcbPositionBeforeLayout()),Ia=Ma.ports.map(nl=>nl._getGlobalPcbPositionBeforeLayout());let La=1/0,Fa=[-1,-1];for(let nl=0;nl<Ra.length;nl++){const sl=Ra[nl];for(let ll=0;ll<Ia.length;ll++){const dl=Ia[ll],gl=Math.sqrt((sl.x-dl.x)**2+(sl.y-dl.y)**2);gl<La&&(La=gl,Fa=[nl,ll])}}const ka=Sa.ports[Fa[0]],el=Ma.ports[Fa[1]],tl=J.toArray().filter(nl=>nl.type==="pcb_smtpad"||nl.type==="pcb_trace"||nl.type==="pcb_plated_hole"||nl.type==="pcb_hole"||nl.type==="source_port"||nl.type==="pcb_port"),{solution:rl}=autoroute2(tl.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[ka.source_port_id,el.source_port_id]}])),il=rl[0];if(!il){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[ka.pcb_component_id,el.pcb_component_id].filter(Boolean),pcb_port_ids:[ka.pcb_port_id,el.pcb_port_id].filter(Boolean),type:"pcb_trace_error",error_type:"pcb_trace_error",message:`Failed to route net islands for "${this.getString()}"`,source_trace_id:"__net_trace_tmp"});return}J.pcb_trace.insert(il)}}renderError(J){var la;if(typeof J=="string")return super.renderError(J);(la=this.root)==null||la.db.pcb_trace_error.insert(J)}},createNetsFromProps=(ua,J)=>{for(const la of J)typeof la=="string"&&la.startsWith("net.")&&(ua.getSubcircuit().selectOne(la)||ua.getSubcircuit().add(new Net({name:la.split("net.")[1]})))},SmtPad=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_smtpad_id",null);jp(this,"matchedPort",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SmtPad",zodProps:smtPadProps}}getPcbSize(){const{_parsedProps:J}=this;if(J.shape==="circle")return{width:J.radius*2,height:J.radius*2};if(J.shape==="rect")return{width:J.width,height:J.height};throw new Error(`getPcbSize for shape "${J.shape}" not implemented for ${this.componentName}`)}doInitialPortMatching(){var la;const J=(la=this.getPrimitiveContainer())==null?void 0:la.selectAll("port");if(this.props.portHints){for(const xa of J)if(xa.isMatchingAnyOf(this.props.portHints)){this.matchedPort=xa,xa.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var ka,el,tl,rl,il,nl,sl,ll,dl;if((ka=this.root)!=null&&ka.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this;if(!la.portHints)return;const xa=this.getPrimitiveContainer(),Aa=this.getSubcircuit(),ba=this._getGlobalPcbPositionBeforeLayout();xa==null||xa._getGlobalPcbPositionBeforeLayout();const Sa=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),Ma=Math.abs(Sa.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:Ra}=this._getPcbPrimitiveFlippedHelpers(),Ia=(xa==null?void 0:xa._parsedProps.pcbRotation)??0;let La=null;const Fa=((el=this.parent)==null?void 0:el.pcb_component_id)??((tl=this.getPrimitiveContainer())==null?void 0:tl.pcb_component_id);la.shape==="circle"?(La=J.pcb_smtpad.insert({pcb_component_id:Fa,pcb_port_id:(rl=this.matchedPort)==null?void 0:rl.pcb_port_id,layer:Ra(la.layer??"top"),shape:"circle",radius:la.radius,port_hints:la.portHints.map(gl=>gl.toString()),x:ba.x,y:ba.y,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0}),J.pcb_solder_paste.insert({layer:La.layer,shape:"circle",radius:La.radius*.7,x:La.x,y:La.y,pcb_component_id:La.pcb_component_id,pcb_smtpad_id:La.pcb_smtpad_id,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((il=this.getGroup())==null?void 0:il.pcb_group_id)??void 0})):la.shape==="rect"&&(La=Ia===0||Ma?J.pcb_smtpad.insert({pcb_component_id:Fa,pcb_port_id:(nl=this.matchedPort)==null?void 0:nl.pcb_port_id,layer:Ra(la.layer??"top"),shape:"rect",width:Ma?la.height:la.width,height:Ma?la.width:la.height,port_hints:la.portHints.map(gl=>gl.toString()),x:ba.x,y:ba.y,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((sl=this.getGroup())==null?void 0:sl.pcb_group_id)??void 0}):J.pcb_smtpad.insert({pcb_component_id:Fa,layer:la.layer??"top",shape:"rotated_rect",width:la.width,height:la.height,x:ba.x,y:ba.y,ccw_rotation:Ia,port_hints:la.portHints.map(gl=>gl.toString()),subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((ll=this.getGroup())==null?void 0:ll.pcb_group_id)??void 0}),La.shape==="rect"&&J.pcb_solder_paste.insert({layer:La.layer,shape:"rect",width:La.width*.7,height:La.height*.7,x:La.x,y:La.y,pcb_component_id:La.pcb_component_id,pcb_smtpad_id:La.pcb_smtpad_id,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((dl=this.getGroup())==null?void 0:dl.pcb_group_id)??void 0})),La&&(this.pcb_smtpad_id=La.pcb_smtpad_id)}doInitialPcbPortAttachment(){var la,xa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(xa=this.matchedPort)==null?void 0:xa.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_smtpad.get(this.pcb_smtpad_id);if(la.shape==="rect")return{center:{x:la.x,y:la.y},bounds:{left:la.x-la.width/2,top:la.y+la.height/2,right:la.x+la.width/2,bottom:la.y-la.height/2},width:la.width,height:la.height};if(la.shape==="rotated_rect"){const xa=la.ccw_rotation*Math.PI/180,Aa=Math.cos(xa),ba=Math.sin(xa),Sa=la.width/2,Ma=la.height/2,Ra=Math.abs(Sa*Aa)+Math.abs(Ma*ba),Ia=Math.abs(Sa*ba)+Math.abs(Ma*Aa);return{center:{x:la.x,y:la.y},bounds:{left:la.x-Ra,right:la.x+Ra,top:la.y-Ia,bottom:la.y+Ia},width:Ra*2,height:Ia*2}}if(la.shape==="circle")return{center:{x:la.x,y:la.y},bounds:{left:la.x-la.radius,top:la.y-la.radius,right:la.x+la.radius,bottom:la.y+la.radius},width:la.radius*2,height:la.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${la.shape}"`)}_setPositionFromLayout(J){var Aa;const{db:la}=this.root;la.pcb_smtpad.update(this.pcb_smtpad_id,{x:J.x,y:J.y});const xa=la.pcb_solder_paste.list().find(ba=>ba.pcb_smtpad_id===this.pcb_smtpad_id);la.pcb_solder_paste.update(xa==null?void 0:xa.pcb_solder_paste_id,{x:J.x,y:J.y}),(Aa=this.matchedPort)==null||Aa._setPositionFromLayout(J)}},SilkscreenPath=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_silkscreen_path_id",null)}get config(){return{componentName:"SilkscreenPath",zodProps:silkscreenPathProps}}doInitialPcbPrimitiveRender(){var Ma,Ra,Ia;if((Ma=this.root)!=null&&Ma.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=la.layer??"top";if(xa!=="top"&&xa!=="bottom")throw new Error(`Invalid layer "${xa}" for SilkscreenPath. Must be "top" or "bottom".`);const Aa=this._computePcbGlobalTransformBeforeLayout(),ba=this.getSubcircuit(),Sa=J.pcb_silkscreen_path.insert({pcb_component_id:(Ra=this.parent)==null?void 0:Ra.pcb_component_id,layer:xa,route:la.route.map(La=>{const Fa=applyToPoint(Aa,{x:La.x,y:La.y});return{...La,x:Fa.x,y:Fa.y}}),stroke_width:la.strokeWidth??.1,subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((Ia=this.getGroup())==null?void 0:Ia.pcb_group_id)??void 0});this.pcb_silkscreen_path_id=Sa.pcb_silkscreen_path_id}},PlatedHole=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_plated_hole_id",null);jp(this,"matchedPort",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PlatedHole",zodProps:platedHoleProps}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:J}=this;if(J.shape==="circle")return{width:J.outerDiameter,height:J.outerDiameter};if(J.shape==="oval"||J.shape==="pill")return{width:J.outerWidth,height:J.outerHeight};throw new Error(`getPcbSize for shape "${J.shape}" not implemented for ${this.componentName}`)}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_plated_hole.get(this.pcb_plated_hole_id),xa=this.getPcbSize();return{center:{x:la.x,y:la.y},bounds:{left:la.x-xa.width/2,top:la.y+xa.height/2,right:la.x+xa.width/2,bottom:la.y-xa.height/2},width:xa.width,height:xa.height}}_setPositionFromLayout(J){var xa;const{db:la}=this.root;la.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:J.x,y:J.y}),(xa=this.matchedPort)==null||xa._setPositionFromLayout(J)}doInitialPortMatching(){var la;const J=(la=this.getPrimitiveContainer())==null?void 0:la.selectAll("port");if(this.props.portHints){for(const xa of J)if(xa.isMatchingAnyOf(this.props.portHints)){this.matchedPort=xa,xa.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var Sa,Ma,Ra,Ia,La,Fa,ka;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getGlobalPcbPositionBeforeLayout(),Aa=((Ma=this.parent)==null?void 0:Ma.pcb_component_id)??((Ra=this.getPrimitiveContainer())==null?void 0:Ra.pcb_component_id),ba=this.getSubcircuit();if(la.shape==="circle"){const el=J.pcb_plated_hole.insert({pcb_component_id:Aa,pcb_port_id:(Ia=this.matchedPort)==null?void 0:Ia.pcb_port_id,outer_diameter:la.outerDiameter,hole_diameter:la.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:xa.x,y:xa.y,layers:["top","bottom"],subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((La=this.getGroup())==null?void 0:La.pcb_group_id)??void 0});this.pcb_plated_hole_id=el.pcb_plated_hole_id}else if(la.shape==="pill"||la.shape==="oval"){const el=J.pcb_plated_hole.insert({pcb_component_id:Aa,pcb_port_id:(Fa=this.matchedPort)==null?void 0:Fa.pcb_port_id,outer_width:la.outerWidth,outer_height:la.outerHeight,hole_width:la.innerWidth,hole_height:la.innerHeight,shape:la.shape,port_hints:this.getNameAndAliases(),x:xa.x,y:xa.y,layers:["top","bottom"],subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((ka=this.getGroup())==null?void 0:ka.pcb_group_id)??void 0});this.pcb_plated_hole_id=el.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var la,xa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(xa=this.matchedPort)==null?void 0:xa.pcb_port_id})}},Keepout=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_keepout_id",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:pcbKeepoutProps}}doInitialPcbPrimitiveRender(){var Ra,Ia,La;if((Ra=this.root)!=null&&Ra.pcbDisabled)return;const J=this.getSubcircuit(),{db:la}=this.root,{_parsedProps:xa}=this,Aa=this._getGlobalPcbPositionBeforeLayout(),ba=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),Sa=Math.abs(ba.rotation.angle*(180/Math.PI)-90)%180<.01;let Ma=null;xa.shape==="circle"?Ma=la.pcb_keepout.insert({layers:["top"],shape:"circle",radius:xa.radius,center:{x:Aa.x,y:Aa.y},subcircuit_id:(J==null?void 0:J.subcircuit_id)??void 0,pcb_group_id:((Ia=J==null?void 0:J.getGroup())==null?void 0:Ia.pcb_group_id)??void 0}):xa.shape==="rect"&&(Ma=la.pcb_keepout.insert({layers:["top"],shape:"rect",...Sa?{width:xa.height,height:xa.width}:{width:xa.width,height:xa.height},center:{x:Aa.x,y:Aa.y},subcircuit_id:(J==null?void 0:J.subcircuit_id)??void 0,pcb_group_id:((La=J==null?void 0:J.getGroup())==null?void 0:La.pcb_group_id)??void 0})),Ma&&(this.pcb_keepout_id=Ma.pcb_keepout_id)}},Hole=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_hole_id",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:holeProps}}getPcbSize(){const{_parsedProps:J}=this;return{width:J.diameter,height:J.diameter}}doInitialPcbPrimitiveRender(){var Sa,Ma;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getSubcircuit(),Aa=this._getGlobalPcbPositionBeforeLayout(),ba=J.pcb_hole.insert({hole_shape:"circle",hole_diameter:la.diameter,x:Aa.x,y:Aa.y,subcircuit_id:(xa==null?void 0:xa.subcircuit_id)??void 0,pcb_group_id:((Ma=xa==null?void 0:xa.getGroup())==null?void 0:Ma.pcb_group_id)??void 0});this.pcb_hole_id=ba.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_hole.get(this.pcb_hole_id),xa=this.getPcbSize();return{center:{x:la.x,y:la.y},bounds:{left:la.x-xa.width/2,top:la.y-xa.height/2,right:la.x+xa.width/2,bottom:la.y+xa.height/2},width:xa.width,height:xa.height}}_setPositionFromLayout(J){const{db:la}=this.root;la.pcb_hole.update(this.pcb_hole_id,{x:J.x,y:J.y})}},createComponentsFromSoup=ua=>{const J=[];for(const la of ua)la.type==="pcb_smtpad"&&la.shape==="rect"?J.push(new SmtPad({pcbX:la.x,pcbY:la.y,layer:la.layer,shape:"rect",height:la.height,width:la.width,portHints:la.port_hints})):la.type==="pcb_smtpad"&&la.shape==="circle"?J.push(new SmtPad({pcbX:la.x,pcbY:la.y,layer:la.layer,shape:"circle",radius:la.radius,portHints:la.port_hints})):la.type==="pcb_silkscreen_path"?J.push(new SilkscreenPath({layer:la.layer,route:la.route,strokeWidth:la.stroke_width})):la.type==="pcb_plated_hole"&&la.shape==="circle"?la.shape==="circle"&&J.push(new PlatedHole({pcbX:la.x,pcbY:la.y,shape:"circle",holeDiameter:la.hole_diameter,outerDiameter:la.outer_diameter,portHints:la.port_hints})):la.type==="pcb_keepout"&&la.shape==="circle"?J.push(new Keepout({pcbX:la.center.x,pcbY:la.center.y,shape:"circle",radius:la.radius})):la.type==="pcb_keepout"&&la.shape==="rect"?J.push(new Keepout({pcbX:la.center.x,pcbY:la.center.y,shape:"rect",width:la.width,height:la.height})):la.type==="pcb_hole"&&la.hole_shape==="circle"&&J.push(new Hole({pcbX:la.x,pcbY:la.y,diameter:la.hole_diameter}));return J};function getBoundsOfPcbComponents(ua){let J=1/0,la=1/0,xa=-1/0,Aa=-1/0;for(const Ma of ua)if(Ma.isPcbPrimitive){const{x:Ra,y:Ia}=Ma._getGlobalPcbPositionBeforeLayout(),{width:La,height:Fa}=Ma.getPcbSize();J=Math.min(J,Ra-La/2),la=Math.min(la,Ia-Fa/2),xa=Math.max(xa,Ra+La/2),Aa=Math.max(Aa,Ia+Fa/2)}else if(Ma.componentName==="Footprint"){const Ra=getBoundsOfPcbComponents(Ma.children);J=Math.min(J,Ra.minX),la=Math.min(la,Ra.minY),xa=Math.max(xa,Ra.maxX),Aa=Math.max(Aa,Ra.maxY)}let ba=xa-J,Sa=Aa-la;return ba<0&&(ba=0),Sa<0&&(Sa=0),{minX:J,minY:la,maxX:xa,maxY:Aa,width:ba,height:Sa}}function getRelativeDirection(ua,J){const la=J.x-ua.x,xa=J.y-ua.y;return Math.abs(la)>Math.abs(xa)?la>=0?"right":"left":xa>=0?"up":"down"}var areAllPcbPrimitivesOverlapping=ua=>{if(ua.length<=1)return!0;const J=ua.map(ba=>{const Sa=ba._getPcbCircuitJsonBounds();return{left:Sa.bounds.left,right:Sa.bounds.right,top:Sa.bounds.top,bottom:Sa.bounds.bottom}}),la=Array(J.length).fill(!1).map(()=>Array(J.length).fill(!1));for(let ba=0;ba<J.length;ba++)for(let Sa=ba+1;Sa<J.length;Sa++){const Ma=J[ba],Ra=J[Sa];la[ba][Sa]=la[Sa][ba]=!(Ma.right<Ra.left||Ma.left>Ra.right||Ma.bottom>Ra.top||Ma.top<Ra.bottom)}const xa=new Set,Aa=ba=>{xa.add(ba);for(let Sa=0;Sa<J.length;Sa++)la[ba][Sa]&&!xa.has(Sa)&&Aa(Sa)};return Aa(0),xa.size===J.length},getCenterOfPcbPrimitives=ua=>{if(ua.length===0)throw new Error("Cannot get center of empty PCB primitives array");const J=ua.map(Aa=>Aa._getPcbCircuitJsonBounds().center).filter(Boolean),la=J.reduce((Aa,ba)=>Aa+ba.x,0),xa=J.reduce((Aa,ba)=>Aa+ba.y,0);return{x:la/J.length,y:xa/J.length}},portProps=z$3.object({name:z$3.string().optional(),pinNumber:z$3.number().optional(),aliases:z$3.array(z$3.string()).optional()}),Port=class extends PrimitiveComponent{constructor(J,la={}){if(!J.name&&J.pinNumber!==void 0&&(J.name=`pin${J.pinNumber}`),!J.name)throw new Error("Port must have a name or a pinNumber");super(J);jp(this,"source_port_id",null);jp(this,"pcb_port_id",null);jp(this,"schematic_port_id",null);jp(this,"schematicSymbolPortDef",null);jp(this,"matchedComponents");jp(this,"facingDirection",null);jp(this,"originDescription",null);la.originDescription&&(this.originDescription=la.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:portProps}}_getGlobalPcbPositionBeforeLayout(){const J=this.matchedComponents.find(la=>la.isPcbPrimitive);if(!J)throw new Error(`Port ${this} has no matched pcb component, can't get global pcb position`);return(J==null?void 0:J._getGlobalPcbPositionBeforeLayout())??{x:0,y:0}}_getPcbCircuitJsonBounds(){if(!this.pcb_port_id)return super._getPcbCircuitJsonBounds();const{db:J}=this.root,la=J.pcb_port.get(this.pcb_port_id);return{center:{x:la.x,y:la.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getGlobalSchematicPositionBeforeLayout(){var xa,Aa;const J=(xa=this.parent)==null?void 0:xa.getSchematicSymbol();if(J&&this.schematicSymbolPortDef){const ba=compose(this.parent.computeSchematicGlobalTransform(),translate(-J.center.x,-J.center.y));return applyToPoint(ba,this.schematicSymbolPortDef)}const la=(Aa=this==null?void 0:this.parent)==null?void 0:Aa._getSchematicBoxDimensions();if(la&&this.props.pinNumber!==void 0){const ba=la.getPortPositionByPinNumber(this.props.pinNumber);return ba?applyToPoint(this.parent.computeSchematicGlobalTransform(),ba):{x:0,y:0}}return{x:0,y:0}}_getGlobalSchematicPositionAfterLayout(){const{db:J}=this.root;if(!this.schematic_port_id)throw new Error("Can't get schematic port position after layout, no schematic_port_id");const la=J.schematic_port.get(this.schematic_port_id);if(!la)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return la.center}registerMatch(J){this.matchedComponents.push(J)}getNameAndAliases(){const{_parsedProps:J}=this;return Array.from(new Set([...J.aliases??[],...J.name?[J.name]:[],...typeof J.pinNumber=="number"?[`pin${J.pinNumber}`,J.pinNumber.toString()]:[],...this.externallyAddedAliases??[]]))}isMatchingPort(J){return this.isMatchingAnyOf(J.getNameAndAliases())}getPortSelector(){var J;return`.${(J=this.parent)==null?void 0:J.props.name} > port.${this.props.name}`}getAvailablePcbLayers(){return Array.from(new Set(this.matchedComponents.flatMap(J=>J.getAvailablePcbLayers())))}_getDirectlyConnectedTraces(){return this.getSubcircuit().selectAll("trace").filter(xa=>xa._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var ba;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getNameAndAliases(),Aa=J.source_port.insert({name:la.name,pin_number:la.pinNumber,port_hints:xa,source_component_id:(ba=this.parent)==null?void 0:ba.source_component_id});this.source_port_id=Aa.source_port_id}doInitialSourceParentAttachment(){var la,xa,Aa,ba;const{db:J}=this.root;if(!((la=this.parent)!=null&&la.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(xa=this.parent)==null?void 0:xa.getString()})`);J.source_port.update(this.source_port_id,{source_component_id:(Aa=this.parent)==null?void 0:Aa.source_component_id}),this.source_component_id=(ba=this.parent)==null?void 0:ba.source_component_id}doInitialPcbPortRender(){var ba,Sa,Ma,Ra,Ia;if((ba=this.root)!=null&&ba.pcbDisabled)return;const{db:J}=this.root,{matchedComponents:la}=this;if(!((Sa=this.parent)!=null&&Sa.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(Ma=this.parent)==null?void 0:Ma.getString()})`);const xa=la.filter(La=>La.isPcbPrimitive);if(xa.length===0)return;let Aa=null;if(xa.length===1&&(Aa=xa[0]._getPcbCircuitJsonBounds().center),xa.length>1){if(!areAllPcbPrimitivesOverlapping(xa))throw new Error(`${this.getString()} has multiple non-overlapping pcb matches, unclear how to place pcb_port: ${xa.map(La=>La.getString()).join(", ")}. (Note: tscircuit core does not currently allow you to specify internally connected pcb primitives with the same port hints, try giving them different port hints and specifying they are connected externally- or file an issue)`);Aa=getCenterOfPcbPrimitives(xa)}if(Aa){const La=this.getSubcircuit(),Fa=J.pcb_port.insert({pcb_component_id:(Ra=this.parent)==null?void 0:Ra.pcb_component_id,layers:this.getAvailablePcbLayers(),subcircuit_id:(La==null?void 0:La.subcircuit_id)??void 0,pcb_group_id:((Ia=this.getGroup())==null?void 0:Ia.pcb_group_id)??void 0,...Aa,source_port_id:this.source_port_id});this.pcb_port_id=Fa.pcb_port_id}else{const La=xa[0];throw new Error(`${La.getString()} does not have a center or _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}}doInitialSchematicPortRender(){var Fa;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getPrimitiveContainer();if(!xa)return;const Aa=xa._getGlobalSchematicPositionBeforeLayout(),ba=this._getGlobalSchematicPositionBeforeLayout();let Sa=null;const Ma=xa._getSchematicBoxDimensions();Ma&&la.pinNumber!==void 0&&(Sa=Ma.getPortPositionByPinNumber(la.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&J.schematic_debug_object.insert({shape:"rect",center:ba,size:{width:.1,height:.1},label:"obstacle"}),Sa!=null&&Sa.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[Sa.side]:this.facingDirection=getRelativeDirection(Aa,ba);const Ra=J.source_port.get(this.source_port_id);let Ia;for(const ka of(Ra==null?void 0:Ra.port_hints)??[])ka.match(/^(pin)?\d+$/)||(Ia=ka);const La=J.schematic_port.insert({schematic_component_id:(Fa=this.parent)==null?void 0:Fa.schematic_component_id,center:ba,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:Sa==null?void 0:Sa.side,pin_number:la.pinNumber,true_ccw_index:Sa==null?void 0:Sa.trueIndex,display_pin_label:Ia});this.schematic_port_id=La.schematic_port_id}_setPositionFromLayout(J){const{db:la}=this.root;this.pcb_port_id&&la.pcb_port.update(this.pcb_port_id,{x:J.x,y:J.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(J=>J.isPcbPrimitive)}},getPinNumberFromLabels=ua=>{const J=ua.find(la=>/^(pin)?\d+$/.test(la));return J?Number.parseInt(J.replace(/^pin/,"")):null};function getPortFromHints(ua){const J=getPinNumberFromLabels(ua);return J?new Port({pinNumber:J,aliases:ua.filter(la=>la.toString()!==J.toString()&&la!==`pin${J}`)}):null}var hasExplicitPinMapping=ua=>{for(const J of["leftSide","rightSide","topSide","bottomSide"])if(J in ua&&typeof ua[J]=="number")throw new Error(`A number was specified for "${J}", you probably meant to use "size" not "side"`);return"leftSide"in ua||"rightSide"in ua||"topSide"in ua||"bottomSide"in ua},getSizeOfSidesFromPortArrangement=ua=>{var ba,Sa,Ma,Ra;if(hasExplicitPinMapping(ua))return{leftSize:((ba=ua.leftSide)==null?void 0:ba.pins.length)??0,rightSize:((Sa=ua.rightSide)==null?void 0:Sa.pins.length)??0,topSize:((Ma=ua.topSide)==null?void 0:Ma.pins.length)??0,bottomSize:((Ra=ua.bottomSide)==null?void 0:Ra.pins.length)??0};const{leftSize:J=0,rightSize:la=0,topSize:xa=0,bottomSize:Aa=0}=ua;return{leftSize:J,rightSize:la,topSize:xa,bottomSize:Aa}};function isExplicitPinMappingArrangement(ua){return ua.leftSide!==void 0}var getAllDimensionsForSchematicBox=ua=>{var il,nl,sl,ll,dl,gl,_l,vl;const J=ua.portDistanceFromEdge??.4;let la=ua.schPortArrangement?getSizeOfSidesFromPortArrangement(ua.schPortArrangement):null;const xa={left:0,right:0,top:0,bottom:0};let Aa=ua.pinCount??null;if(Aa===null)if(la)Aa=la.leftSize+la.rightSize+la.topSize;else throw new Error("Could not determine pin count for the schematic box");if(Aa&&!la){const Tl=Math.floor(Aa/2);la={leftSize:Aa-Tl,rightSize:Tl,topSize:0,bottomSize:0}}la||(la={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const ba=({side:Tl,sideIndex:Ll,truePinIndex:Il})=>{var sc,Kl,Gl,kl;if(!ua.schPortArrangement||!isExplicitPinMappingArrangement(ua.schPortArrangement))return Il+1;const Fl={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[Tl],Ol=((Kl=(sc=ua.schPortArrangement)==null?void 0:sc[`${Tl}Side`])==null?void 0:Kl.direction)??Fl,ql=(kl=(Gl=ua.schPortArrangement)==null?void 0:Gl[`${Tl}Side`])==null?void 0:kl.pins;let rc=Ll;return Ol!==Fl&&(rc=ql.length-Ll-1),parsePinNumberFromLabelsOrThrow(ql[rc],ua.pinLabels)},Sa=[];let Ma=0,Ra=0;for(let Tl=0;Tl<la.leftSize;Tl++){const Ll=ba({side:"left",sideIndex:Tl,truePinIndex:Ra}),Il=((il=ua.numericSchPinStyle)==null?void 0:il[`pin${Ll}`])??((nl=ua.numericSchPinStyle)==null?void 0:nl[Ll]);Il!=null&&Il.topMargin&&(Ma+=Il.topMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"left",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.bottomMargin&&(Ma+=Il.bottomMargin),Tl===la.leftSize-1?xa.left=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Tl=0;Tl<la.bottomSize;Tl++){const Ll=ba({side:"bottom",sideIndex:Tl,truePinIndex:Ra}),Il=((sl=ua.numericSchPinStyle)==null?void 0:sl[`pin${Ll}`])??((ll=ua.numericSchPinStyle)==null?void 0:ll[Ll]);Il!=null&&Il.leftMargin&&(Ma+=Il.leftMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"bottom",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.rightMargin&&(Ma+=Il.rightMargin),Tl===la.bottomSize-1?xa.bottom=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Tl=0;Tl<la.rightSize;Tl++){const Ll=ba({side:"right",sideIndex:Tl,truePinIndex:Ra}),Il=((dl=ua.numericSchPinStyle)==null?void 0:dl[`pin${Ll}`])??((gl=ua.numericSchPinStyle)==null?void 0:gl[Ll]);Il!=null&&Il.bottomMargin&&(Ma+=Il.bottomMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"right",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.topMargin&&(Ma+=Il.topMargin),Tl===la.rightSize-1?xa.right=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Tl=0;Tl<la.topSize;Tl++){const Ll=ba({side:"top",sideIndex:Tl,truePinIndex:Ra}),Il=((_l=ua.numericSchPinStyle)==null?void 0:_l[`pin${Ll}`])??((vl=ua.numericSchPinStyle)==null?void 0:vl[Ll]);Il!=null&&Il.rightMargin&&(Ma+=Il.rightMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"top",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.leftMargin&&(Ma+=Il.leftMargin),Tl===la.topSize-1?xa.top=Ma:Ma+=ua.schPinSpacing,Ra++}let Ia=ua.schWidth;Ia||(Ia=Math.max(xa.top+ua.schPinSpacing*2,xa.bottom+ua.schPinSpacing*2));const La=ua.pinLabels?Math.max(...Object.values(ua.pinLabels).map(Tl=>Tl.length*.1)):0,Fa=La>0?1.1:0;Ia=Math.max(Ia,La+Fa);let ka=ua.schHeight;ka||(ka=Math.max(xa.left+ua.schPinSpacing*2,xa.right+ua.schPinSpacing*2));const el={left:{x:-Ia/2-J,y:xa.left/2},bottom:{x:-xa.bottom/2,y:-ka/2-J},right:{x:Ia/2+J,y:-xa.right/2},top:{x:xa.top/2,y:ka/2+J}},tl={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},rl=Sa.map(Tl=>{const{distanceFromOrthogonalEdge:Ll,side:Il}=Tl,Fl=el[Il],Ol=tl[Il];return{x:Fl.x+Ll*Ol.x,y:Fl.y+Ll*Ol.y,...Tl}});return{getPortPositionByPinNumber(Tl){const Ll=rl.find(Il=>Il.pinNumber.toString()===Tl.toString());return Ll||null},getSize(){return{width:Ia,height:ka}},getSizeIncludingPins(){return{width:Ia+(la.leftSize||la.rightSize?.4:0),height:ka+(la.topSize||la.bottomSize?.4:0)}},pinCount:Aa}},debug2$1=Debug$1("tscircuit:core:footprint"),Footprint=class extends PrimitiveComponent{get config(){return{componentName:"Footprint",zodProps:footprintProps}}doInitialPcbFootprintLayout(){var Fa,ka,el,tl,rl;if((Fa=this.root)!=null&&Fa.pcbDisabled)return;const ua=this.children.filter(il=>il.componentName==="Constraint");if(ua.length===0)return;const{isFlipped:J}=this._getPcbPrimitiveFlippedHelpers(),la=il=>J&&"left"in il&&"right"in il?{...il,left:il.right,right:il.left}:il,xa=ua.flatMap(il=>il._getAllReferencedComponents().componentsWithSelectors).map(({component:il,selector:nl,componentSelector:sl,edge:ll})=>({component:il,selector:nl,componentSelector:sl,edge:ll,bounds:il._getPcbCircuitJsonBounds()}));if(xa.some(il=>il.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function Aa(il){return xa.find(({selector:nl})=>nl===il)}const ba=new Solver,Sa={};function Ma(il){return il in Sa||(Sa[il]=new Variable(il),ba.addEditVariable(Sa[il],Strength.weak)),Sa[il]}for(const{selector:il,bounds:nl}of xa){const sl=Ma(`${il}_x`),ll=Ma(`${il}_y`);ba.suggestValue(sl,nl.center.x),ba.suggestValue(ll,nl.center.y)}for(const il of ua){const nl=il._parsedProps;if("xDist"in nl){const{xDist:sl,left:ll,right:dl,edgeToEdge:gl,centerToCenter:_l}=la(nl),vl=Ma(`${ll}_x`),Tl=Ma(`${dl}_x`),Ll=(ka=Aa(ll))==null?void 0:ka.bounds,Il=(el=Aa(dl))==null?void 0:el.bounds;if(_l){const Fl=new Expression(Tl,[-1,vl]);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.xDist,Strength.required))}else if(gl){const Fl=new Expression(Tl,-Il.width/2,[-1,vl],-Ll.width/2);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.xDist,Strength.required))}}else if("yDist"in nl){const{yDist:sl,top:ll,bottom:dl,edgeToEdge:gl,centerToCenter:_l}=nl,vl=Ma(`${ll}_y`),Tl=Ma(`${dl}_y`),Ll=(tl=Aa(ll))==null?void 0:tl.bounds,Il=(rl=Aa(dl))==null?void 0:rl.bounds;if(_l){const Fl=new Expression(vl,[-1,Tl]);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.yDist,Strength.required))}else if(gl){const Fl=new Expression(vl,Ll.height/2,[-1,Tl],-Il.height/2);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.yDist,Strength.required))}}else if("sameY"in nl){const{for:sl}=nl;if(sl.length<2)continue;const ll=sl.map(gl=>Ma(`${gl}_y`)),dl=new Expression(...ll.slice(1));ba.addConstraint(new Constraint(dl,Operator.Eq,ll[0],Strength.required))}else if("sameX"in nl){const{for:sl}=nl;if(sl.length<2)continue;const ll=sl.map(gl=>Ma(`${gl}_x`)),dl=new Expression(...ll.slice(1));ba.addConstraint(new Constraint(dl,Operator.Eq,ll[0],Strength.required))}}ba.updateVariables(),debug2$1.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(Sa).map(([il,nl])=>({var:il,val:nl.value()}))));const Ra={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:il,bounds:{width:nl,height:sl}}of xa){const ll=Ma(`${il}_x`),dl=Ma(`${il}_y`),gl=ll.value()-nl/2,_l=ll.value()+nl/2,vl=dl.value()+sl/2,Tl=dl.value()-sl/2;Ra.left=Math.min(Ra.left,gl),Ra.right=Math.max(Ra.right,_l),Ra.top=Math.max(Ra.top,vl),Ra.bottom=Math.min(Ra.bottom,Tl)}const Ia={x:-(Ra.right+Ra.left)/2,y:-(Ra.top+Ra.bottom)/2},La=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();Ia.x+=La.x,Ia.y+=La.y;for(const{component:il,selector:nl}of xa){const sl=Ma(`${nl}_x`),ll=Ma(`${nl}_y`);il._setPositionFromLayout({x:sl.value()+Ia.x,y:ll.value()+Ia.y})}}},getNumericSchPinStyle=(ua,J)=>{if(!ua)return;const la={};for(const[xa,Aa]of Object.entries(ua)){const ba=parsePinNumberFromLabelsOrThrow(xa,J);la[`pin${ba}`]={...la[`pin${ba}`],...Aa}}return la},debug3=Debug$1("tscircuit:core"),rotation3=z$3.object({x:rotation$4,y:rotation$4,z:rotation$4}),NormalComponent=class extends PrimitiveComponent{constructor(J){super(J);jp(this,"reactSubtrees",[]);jp(this,"_impliedFootprint");jp(this,"isPrimitiveContainer",!0);jp(this,"_asyncSupplierPartNumbers");jp(this,"pcb_missing_footprint_error_id");this._addChildrenFromStringFootprint(),this.initPorts()}initPorts(J={}){var Sa,Ma,Ra,Ia,La,Fa,ka,el,tl,rl,il,nl,sl,ll;if((Sa=this.root)!=null&&Sa.schematicDisabled)return;const{config:la}=this,xa=[],Aa=this._parsedProps.schPortArrangement;if(Aa&&!this._parsedProps.pinLabels){for(const _l in Aa){const vl=Aa[_l].pins;if(Array.isArray(vl))for(const Tl of vl){const Ll=parsePinNumberFromLabelsOrThrow(Tl,this._parsedProps.pinLabels);xa.push(new Port({pinNumber:Ll,aliases:((Ma=J.additionalAliases)==null?void 0:Ma[`pin${Ll}`])??[]},{originDescription:`schPortArrangement:${_l}`}))}}const dl=["left","right","top","bottom"];let gl=1;for(const _l of dl){const vl=Aa[`${_l}Size`];for(let Tl=0;Tl<vl;Tl++)xa.push(new Port({pinNumber:gl++,aliases:((Ra=J.additionalAliases)==null?void 0:Ra[`pin${gl}`])??[]},{originDescription:`schPortArrangement:${_l}`}))}}const ba=this._parsedProps.pinLabels;if(ba)for(let[dl,gl]of Object.entries(ba)){dl=dl.replace("pin","");let _l=xa.find(Ll=>Ll._parsedProps.pinNumber===Number(dl));const vl=Array.isArray(gl)?gl[0]:gl,Tl=Array.isArray(gl)?gl.slice(1):[];_l?(_l.externallyAddedAliases.push(vl,...Tl),_l.props.name=vl):(_l=new Port({pinNumber:parseInt(dl),name:vl,aliases:[...Tl,...((Ia=J.additionalAliases)==null?void 0:Ia[`pin${parseInt(dl)}`])??[]]},{originDescription:`pinLabels:pin${dl}`}),xa.push(_l))}if(la.schematicSymbolName){const dl=symbols_index_default$1[this._getSchematicSymbolNameOrThrow()];if(!dl)return;for(const gl of dl.ports){const _l=getPinNumberFromLabels(gl.labels);if(!_l)continue;const vl=getPortFromHints(gl.labels.concat(((La=J.additionalAliases)==null?void 0:La[`pin${_l}`])??[]));vl&&(vl.originDescription=`schematicSymbol:labels[0]:${gl.labels[0]}`,vl.schematicSymbolPortDef=gl,xa.push(vl))}this.addAll(xa);return}if(!this._parsedProps.schPortArrangement){const dl=this.getPortsFromFootprint();for(const gl of dl)xa.some(_l=>_l.isMatchingAnyOf(gl.getNameAndAliases()))||xa.push(gl)}for(let dl=1;dl<=this._getPinCount();dl++){if(!this._parsedProps.schPortArrangement||xa.find(_l=>_l._parsedProps.pinNumber===dl))continue;let gl=[...((ka=(Fa=this._parsedProps.schPortArrangement)==null?void 0:Fa.leftSide)==null?void 0:ka.pins)??[],...((tl=(el=this._parsedProps.schPortArrangement)==null?void 0:el.rightSide)==null?void 0:tl.pins)??[],...((il=(rl=this._parsedProps.schPortArrangement)==null?void 0:rl.topSide)==null?void 0:il.pins)??[],...((sl=(nl=this._parsedProps.schPortArrangement)==null?void 0:nl.bottomSide)==null?void 0:sl.pins)??[]].map(_l=>parsePinNumberFromLabelsOrThrow(_l,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(_l=>_l in this._parsedProps.schPortArrangement)&&(gl=Array.from({length:this._getPinCount()},(_l,vl)=>vl+1)),gl.includes(dl)&&xa.push(new Port({pinNumber:dl,aliases:((ll=J.additionalAliases)==null?void 0:ll[`pin${dl}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${dl}`}))}xa.length>0&&this.addAll(xa)}_getImpliedFootprintString(){return null}_addChildrenFromStringFootprint(){var la;let{footprint:J}=this.props;if(J??(J=(la=this._getImpliedFootprintString)==null?void 0:la.call(this)),!!J&&typeof J=="string"){const xa=fp$1.string(J).soup(),Aa=createComponentsFromSoup(xa);this.addAll(Aa)}}get portMap(){return new Proxy({},{get:(J,la)=>{const xa=this.children.find(Aa=>Aa.componentName==="Port"&&Aa.isMatchingNameOrAlias(la));if(!xa)throw new Error(`There was an issue finding the port "${la.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return xa}})}getInstanceForReactElement(J){for(const la of this.reactSubtrees)if(la.element===J)return la.component;return null}doInitialSourceRender(){const J=this.config.sourceFtype;if(!J)return;const{db:la}=this.root,{_parsedProps:xa}=this,Aa=la.source_component.insert({ftype:J,name:xa.name,manufacturer_part_number:xa.manufacturerPartNumber??xa.mfn,supplier_part_numbers:xa.supplierPartNumbers});this.source_component_id=Aa.source_component_id}doInitialSchematicComponentRender(){var xa;if((xa=this.root)!=null&&xa.schematicDisabled)return;const{schematicSymbolName:J}=this.config;if(J)return this._doInitialSchematicComponentRenderWithSymbol();if(this._getSchematicBoxDimensions())return this._doInitialSchematicComponentRenderWithSchematicBoxDimensions()}_getSchematicSymbolDisplayValue(){}_doInitialSchematicComponentRenderWithSymbol(){var Sa;if((Sa=this.root)!=null&&Sa.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getSchematicSymbolNameOrThrow(),Aa=symbols_index_default$1[xa],ba=this._getGlobalSchematicPositionBeforeLayout();if(Aa){const Ma=J.schematic_component.insert({center:ba,rotation:la.schRotation??0,size:Aa.size,source_component_id:this.source_component_id,symbol_name:xa,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=Ma.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var La,Fa,ka;if((La=this.root)!=null&&La.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getSchematicBoxDimensions(),Aa={};if(Array.isArray(la.pinLabels))la.pinLabels.forEach((el,tl)=>{Aa[String(tl+1)]=el});else for(const[el,tl]of Object.entries(la.pinLabels??{}))Aa[el]=Array.isArray(tl)?tl[0]:tl;const ba=this._getGlobalSchematicPositionBeforeLayout(),Sa=J.schematic_component.insert({center:ba,rotation:la.schRotation??0,size:xa.getSize(),port_arrangement:underscorifyPortArrangement(la.schPortArrangement),pin_spacing:la.schPinSpacing??.2,pin_styles:underscorifyPinStyles(la.schPinStyle,la.pinLabels),port_labels:Aa,source_component_id:this.source_component_id}),Ma=((Fa=la.schPortArrangement)==null?void 0:Fa.topSide)!==void 0||((ka=la.schPortArrangement)==null?void 0:ka.bottomSide)!==void 0,Ra=xa==null?void 0:xa.getSize().width,Ia=xa==null?void 0:xa.getSize().height;J.schematic_text.insert({text:la.manufacturerPartNumber??"",schematic_component_id:Sa.schematic_component_id,anchor:"left",rotation:0,position:{x:Ma?ba.x+(Ra??0)/2+.1:ba.x-(Ra??0)/2,y:Ma?ba.y+(Ia??0)/2+.35:ba.y-(Ia??0)/2-.13},color:"#006464"}),J.schematic_text.insert({text:la.name??"",schematic_component_id:Sa.schematic_component_id,anchor:"left",rotation:0,position:{x:Ma?ba.x+(Ra??0)/2+.1:ba.x-(Ra??0)/2,y:Ma?ba.y+(Ia??0)/2+.55:ba.y+(Ia??0)/2+.13},color:"#006464"}),this.schematic_component_id=Sa.schematic_component_id}doInitialPcbComponentRender(){var ba;if((ba=this.root)!=null&&ba.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=J.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:la.layer??"top",rotation:la.pcbRotation??0,source_component_id:this.source_component_id});if(!la.footprint&&!this.isGroup){const Sa=J.pcb_missing_footprint_error.insert({message:`No footprint found for component: ${this.getString()}`,source_component_id:`${this.source_component_id}`,error_type:"pcb_missing_footprint_error"});this.pcb_missing_footprint_error_id=Sa.pcb_missing_footprint_error_id}this.pcb_component_id=xa.pcb_component_id;const Aa=this.getSubcircuit()._getPcbManualPlacementForComponent(this);this.props.pcbX!==void 0&&this.props.pcbY!==void 0&&Aa&&this.renderError({type:"pcb_manual_edit_conflict_error",message:`${this.getString()} has both manual placement and explicit coordinates. pcbX and pcbY will be used. Remove pcbX/pcbY or clear the manual placement.`,pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id})}doInitialPcbComponentSizeCalculation(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled||!this.pcb_component_id)return;const{db:J}=this.root,la=getBoundsOfPcbComponents(this.children);if(la.width===0||la.height===0)return;const xa={x:(la.minX+la.maxX)/2,y:(la.minY+la.maxY)/2};J.pcb_component.update(this.pcb_component_id,{center:xa,width:la.width,height:la.height})}_renderReactSubtree(J){return{element:J,component:createInstanceFromReactElement(J)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){if(reactExports.isValidElement(this.props.footprint)){if(this.reactSubtrees.some(la=>la.element===this.props.footprint))return;const J=this._renderReactSubtree(this.props.footprint);this.reactSubtrees.push(J),this.add(J.component)}}_hasExistingPortExactly(J){return this.children.filter(xa=>xa.componentName==="Port").some(xa=>{const Aa=J.getNameAndAliases(),ba=xa.getNameAndAliases();return Aa.length===ba.length&&Aa.every(Sa=>ba.includes(Sa))})}add(J){let la;if(reactExports.isValidElement(J)){const xa=this._renderReactSubtree(J);this.reactSubtrees.push(xa),la=xa.component}else la=J;if(la.componentName==="Port"){if(this._hasExistingPortExactly(la))return;const Aa=this.children.filter(ba=>ba.componentName==="Port").find(ba=>ba.isMatchingAnyOf(la.getNameAndAliases()));Aa&&debug3(`Similar ports added. Port 1: ${Aa}, Port 2: ${la}`)}super.add(la)}getPortsFromFootprint(){let{footprint:J}=this.props;if((!J||reactExports.isValidElement(J))&&(J=this.children.find(xa=>xa.componentName==="Footprint")),typeof J=="string"){const xa=fp$1.string(J).soup(),Aa=[];for(const ba of xa)if("port_hints"in ba&&ba.port_hints){const Sa=getPortFromHints(ba.port_hints);if(!Sa)continue;Sa.originDescription=`footprint:string:${J}:port_hints[0]:${ba.port_hints[0]}`,Aa.push(Sa)}return Aa}if(!reactExports.isValidElement(J)&&J&&J.componentName==="Footprint"){const xa=J;let Aa=1;const ba=[];for(const Sa of xa.children){if(!Sa.props.portHints)continue;let Ma=Sa.props.portHints;Ma.some(La=>La.startsWith("pin"))||(Ma=[...Ma,`pin${Aa}`]),Aa++;const Ia=getPortFromHints(Ma);Ia&&(Ia.originDescription=`footprint:${J}`,ba.push(Ia))}return ba}const la=[];if(!J){for(const xa of this.children)if(xa.props.portHints&&xa.isPcbPrimitive){const Aa=getPortFromHints(xa.props.portHints);Aa&&la.push(Aa)}}return la}getPortsFromSchematicSymbol(){var Aa;if((Aa=this.root)!=null&&Aa.schematicDisabled)return[];const{config:J}=this;if(!J.schematicSymbolName)return[];const la=symbols_index_default$1[J.schematicSymbolName];if(!la)return[];const xa=[];for(const ba of la.ports){const Sa=getPortFromHints(ba.labels);Sa&&(Sa.schematicSymbolPortDef=ba,xa.push(Sa))}return xa}_createNetsFromProps(J){createNetsFromProps(this,J)}doInitialPortDiscovery(){const{_parsedProps:J}=this;let la=[];J.schPortArrangement||(la=[...this.getPortsFromFootprint(),...this.getPortsFromSchematicSymbol()]);const xa=this.children.filter(Aa=>Aa.componentName==="Port");for(const Aa of la){const ba=xa.find(Sa=>Sa.isMatchingAnyOf(Aa.getNameAndAliases()));if(ba){!ba.schematicSymbolPortDef&&Aa.schematicSymbolPortDef&&(ba.schematicSymbolPortDef=Aa.schematicSymbolPortDef);continue}xa.push(Aa),this.add(Aa)}}_getPcbCircuitJsonBounds(){const{db:J}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const la=J.pcb_component.get(this.pcb_component_id);return{center:{x:la.center.x,y:la.center.y},bounds:{left:la.center.x-la.width/2,top:la.center.y-la.height/2,right:la.center.x+la.width/2,bottom:la.center.y+la.height/2},width:la.width,height:la.height}}_getPinCount(){const J=this._getSchematicPortArrangement();if(J){if(!isExplicitPinMappingArrangement(J))return(J.leftSize??J.leftPinCount??0)+(J.rightSize??J.rightPinCount??0)+(J.topSize??J.topPinCount??0)+(J.bottomSize??J.bottomPinCount??0);const{leftSide:xa,rightSide:Aa,topSide:ba,bottomSide:Sa}=J;return Math.max(...(xa==null?void 0:xa.pins)??[],...(Aa==null?void 0:Aa.pins)??[],...(ba==null?void 0:ba.pins)??[],...(Sa==null?void 0:Sa.pins)??[])}return this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:J}=this,la=this._getPinCount(),xa=J.schPinSpacing??.2;return getAllDimensionsForSchematicBox({schWidth:J.schWidth,schHeight:J.schHeight,schPinSpacing:xa,numericSchPinStyle:getNumericSchPinStyle(J.schPinStyle,J.pinLabels),pinCount:la,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:J.pinLabels})}doInitialCadModelRender(){var Ia;const{db:J}=this.root,{boardThickness:la=0}=((Ia=this.root)==null?void 0:Ia._getBoard())??{},xa=this._parsedProps.cadModel;if(!this.pcb_component_id||!xa&&!this.props.footprint)return;const Aa=this._getPcbCircuitJsonBounds(),ba=J.pcb_component.get(this.pcb_component_id);if(typeof xa=="string")throw new Error("String cadModel not yet implemented");const Sa=rotation3.parse({x:0,y:0,z:typeof(xa==null?void 0:xa.rotationOffset)=="number"?xa.rotationOffset:0,...typeof(xa==null?void 0:xa.rotationOffset)=="object"?xa.rotationOffset??{}:{}}),Ma=point3$3.parse({x:0,y:0,z:0,...typeof(xa==null?void 0:xa.positionOffset)=="object"?xa.positionOffset:{}}),Ra=this.props.layer==="bottom"?"bottom":"top";J.cad_component.insert({position:{x:Aa.center.x+Ma.x,y:Aa.center.y+Ma.y,z:(Ra==="bottom"?-la/2:la/2)+Ma.z},rotation:{x:Sa.x,y:(Ra==="top"?0:180)+Sa.y,z:((ba==null?void 0:ba.rotation)??0)+(Ra==="bottom"?180:0)+Sa.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(xa??{})?this._addCachebustToModelUrl(xa.stlUrl):void 0,model_obj_url:"objUrl"in(xa??{})?this._addCachebustToModelUrl(xa.objUrl):void 0,model_jscad:"jscad"in(xa??{})?xa.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!xa?this.props.footprint:void 0})}_addCachebustToModelUrl(J){var xa;if(!J||!J.includes("modelcdn.tscircuit.com"))return J;const la=((xa=this.root)==null?void 0:xa.getClientOrigin())??"";return`${J}${J.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(la)}`}doInitialPartsEngineRender(){const{partsEngine:J}=this.getSubcircuit()._parsedProps;if(!J)return;const{db:la}=this.root,xa=la.source_component.get(this.source_component_id);if(!xa||xa.supplier_part_numbers)return;let Aa;this.props.footprint&&typeof this.props.footprint=="string"&&(Aa=this.props.footprint);const ba=J.findPart({sourceComponent:xa,footprinterString:Aa});if(!(ba instanceof Promise)){la.source_component.update(this.source_component_id,{supplier_part_numbers:ba});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await ba,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){const{db:J}=this.root,la=J.source_component.get(this.source_component_id);if(la&&!la.supplier_part_numbers&&this._asyncSupplierPartNumbers){J.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}},getSimpleRouteJsonFromTracesAndDb=({db:ua,traces:J,minTraceWidth:la=.1})=>{const Aa=getObstaclesFromSoup([...ua.pcb_component.list(),...ua.pcb_smtpad.list(),...ua.pcb_plated_hole.list()]).flatMap(Ma=>[{x:Ma.center.x-Ma.width/2,y:Ma.center.y-Ma.height/2},{x:Ma.center.x+Ma.width/2,y:Ma.center.y+Ma.height/2}]),ba={minX:Math.min(...Aa.map(Ma=>Ma.x))-1,maxX:Math.max(...Aa.map(Ma=>Ma.x))+1,minY:Math.min(...Aa.map(Ma=>Ma.y))-1,maxY:Math.max(...Aa.map(Ma=>Ma.y))+1},Sa=J.map(Ma=>{const Ra=Ma._findConnectedPorts();return!Ra.allPortsFound||Ra.ports.length<2?null:{name:Ma.source_trace_id??"",pointsToConnect:Ra.ports.map(Ia=>{const La=Ia._getGlobalPcbPositionBeforeLayout();return{x:La.x,y:La.y,layer:Ia.getAvailablePcbLayers()[0]??"top"}})}}).filter(Ma=>Ma!==null);return{bounds:ba,obstacles:[],connections:Sa,layerCount:2,minTraceWidth:la}},TraceHint=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:traceHintProps}}doInitialPortMatching(){this.root;const{_parsedProps:J,parent:la}=this;if(!la)return;if(la.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!la)throw new Error("TraceHint has no parent");if(!J.for){this.renderError(`TraceHint has no for property (${this})`);return}const xa=la.selectOne(J.for,{type:"port"});xa||this.renderError(`${this} could not find port for selector "${J.for}"`),this.matchedPort=xa,xa.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:J}=this,la=J.offset?[J.offset]:J.offsets;if(!la)return[];const xa=this._computePcbGlobalTransformBeforeLayout();return la.map(Aa=>({...applyToPoint(xa,Aa),via:Aa.via,to_layer:Aa.to_layer,trace_width:Aa.trace_width}))}doInitialPcbTraceHintRender(){var la,xa,Aa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_trace_hint.insert({pcb_component_id:(xa=this.matchedPort)==null?void 0:xa.pcb_component_id,pcb_port_id:(Aa=this.matchedPort)==null?void 0:Aa.pcb_port_id,route:this.getPcbRouteHints()})}},Group$2=class extends NormalComponent{constructor(){super(...arguments);jp(this,"pcb_group_id",null);jp(this,"subcircuit_id",null);jp(this,"_hasStartedAsyncAutorouting",!1);jp(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:groupProps,componentName:"Group"}}doInitialSourceRender(){const{db:la}=this.root,xa=la.source_group.insert({name:this._parsedProps.name,is_subcircuit:this.isSubcircuit});this.subcircuit_id=`subcircuit_${xa.source_group_id}`,this.source_group_id=xa.source_group_id,la.source_group.update(xa.source_group_id,{subcircuit_id:this.subcircuit_id})}doInitialPcbComponentRender(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:la}=this.root,xa=la.pcb_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this._parsedProps.name,center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,pcb_component_ids:[],source_group_id:this.source_group_id});this.pcb_group_id=xa.pcb_group_id}doInitialCreateTraceHintsFromProps(){var ba;const{_parsedProps:la}=this;this.root;const xa=la;if(!this.isSubcircuit)return;const Aa=(ba=xa.layout)==null?void 0:ba.manual_trace_hints;if(Aa)for(const Sa of Aa)this.add(new TraceHint({for:Sa.pcb_port_selector,offsets:Sa.offsets}))}_getSimpleRouteJsonFromPcbTraces(){const la=this.selectAll("trace"),{db:xa}=this.root;return getSimpleRouteJsonFromTracesAndDb({db:xa,traces:la,minTraceWidth:this._parsedProps.minTraceWidth??.1})}doInitialSourceAddConnectivityMapKey(){if(!this.isSubcircuit)return;const{db:la}=this.root,xa=this.selectAll("trace"),Aa=new ConnectivityMap$1({});Aa.addConnections(xa.map(ba=>{const Sa=la.source_trace.get(ba.source_trace_id);return Sa?[Sa.source_trace_id,...Sa.connected_source_port_ids,...Sa.connected_source_net_ids]:null}).filter(ba=>ba!==null));for(const ba of xa){if(!ba.source_trace_id)continue;const Sa=Aa.getNetConnectedToId(ba.source_trace_id);if(!Sa)continue;const{name:Ma}=this._parsedProps;ba.subcircuit_connectivity_map_key=`${Ma??`unnamedsubcircuit${this._renderId}`}_${Sa}`,la.source_trace.update(ba.source_trace_id,{subcircuit_connectivity_map_key:ba.subcircuit_connectivity_map_key})}}_areChildSubcircuitsRouted(){const la=this.selectAll("group").filter(xa=>xa.isSubcircuit);for(const xa of la)if(xa._shouldRouteAsync()&&!xa._asyncAutoroutingResult)return!1;return!0}_shouldRouteAsync(){const la=this._parsedProps;return la.autorouter==="auto-local"||la.autorouter==="auto-cloud"?!0:la.autorouter==="sequential-trace"?!1:typeof la.autorouter=="object"}async _runEffectMakeHttpAutoroutingRequest(){var Ra,Ia,La,Fa;const la=Debug$1("tscircuit:core:_runEffectMakeHttpAutoroutingRequest"),xa=this._parsedProps,Aa=((Ra=xa.autorouter)==null?void 0:Ra.serverUrl)??"https://registry-api.tscircuit.com",ba=((Ia=xa.autorouter)==null?void 0:Ia.serverMode)??"job",Sa=(ka,el)=>(la("fetching",ka),fetch(ka,el));if(ba==="solve-endpoint"){if(((La=this.props.autorouter)==null?void 0:La.inputFormat)==="simplified"){const{autorouting_result:el}=await Sa(`${Aa}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:this._getSimpleRouteJsonFromPcbTraces()}),headers:{"Content-Type":"application/json"}}).then(tl=>tl.json());this._asyncAutoroutingResult=el,this._markDirty("PcbTraceRender");return}const{autorouting_result:ka}=await Sa(`${Aa}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:this.root.db.toArray()}),headers:{"Content-Type":"application/json"}}).then(el=>el.json());this._asyncAutoroutingResult=ka,this._markDirty("PcbTraceRender");return}const{autorouting_job:Ma}=await Sa(`${Aa}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:this.root.db.toArray(),provider:"freerouting",autostart:!0,display_name:(Fa=this.root)==null?void 0:Fa.name}),headers:{"Content-Type":"application/json"}}).then(ka=>ka.json());for(;;){const{autorouting_job:ka}=await Sa(`${Aa}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:Ma.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(el=>el.json());if(ka.is_finished){const{autorouting_job_output:el}=await Sa(`${Aa}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:Ma.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(tl=>tl.json());this._asyncAutoroutingResult={output_pcb_traces:el.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(ka.has_error)throw new Error(`Autorouting job failed: ${JSON.stringify(ka.error)}`);await new Promise(el=>setTimeout(el,100))}}_startAsyncAutorouting(){this._hasStartedAsyncAutorouting=!0,this._queueAsyncEffect("make-http-autorouting-request",async()=>this._runEffectMakeHttpAutoroutingRequest())}doInitialPcbTraceRender(){var xa;const la=Debug$1("tscircuit:core:doInitialPcbTraceRender");if(!((xa=this.root)!=null&&xa.pcbDisabled)&&!this._shouldUseTraceByTraceRouting()){if(!this._areChildSubcircuitsRouted()){la(`[${this.getString()}] child subcircuits are not routed, skipping async autorouting until subcircuits routed`);return}la(`[${this.getString()}] no child subcircuits to wait for, initiating async routing`),this._startAsyncAutorouting()}}updatePcbTraceRender(){const la=Debug$1("tscircuit:core:updatePcbTraceRender");if(this._shouldRouteAsync()&&!this._hasStartedAsyncAutorouting){this._areChildSubcircuitsRouted()&&(la(`[${this.getString()}] child subcircuits are now routed, starting async autorouting`),this._startAsyncAutorouting());return}if(this._asyncAutoroutingResult&&!this._shouldUseTraceByTraceRouting()){if(this.root,this._asyncAutoroutingResult.output_simple_route_json){this._updatePcbTraceRenderFromSimpleRouteJson();return}if(this._asyncAutoroutingResult.output_pcb_traces){this._updatePcbTraceRenderFromPcbTraces();return}}}_updatePcbTraceRenderFromSimpleRouteJson(){const{db:la}=this.root,{traces:xa}=this._asyncAutoroutingResult.output_simple_route_json;if(xa){this.selectAll("trace");for(const Aa of xa)la.pcb_trace.insert({route:Aa.route})}}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:la}=this._asyncAutoroutingResult;if(!la)return;const{db:xa}=this.root;for(const Aa of la)xa.pcb_trace.insert(Aa)}doInitialSchematicLayout(){if(!this.isSubcircuit||!this._parsedProps.schAutoLayoutEnabled)return;const{db:xa}=this.root,Aa=this.getDescendants(),ba=[];for(const Ra of Aa)if("schematic_component_id"in Ra){const Ia=xa.schematic_component.get(Ra.schematic_component_id);if(Ia){const La=xa.schematic_port.list().filter(Fa=>Fa.schematic_component_id===Ia.schematic_component_id);ba.push(...La)}}const Sa=convertSoupToScene(xa.toArray()),Ma=ascendingCentralLrBug1(Sa);mutateSoupForScene(xa.toArray(),Ma)}_shouldUseTraceByTraceRouting(){const la=this._parsedProps;return la.autorouter==="auto-local"||la.autorouter==="sequential-trace"?!0:!la.autorouter}},Board=class extends Group$2{constructor(){super(...arguments);jp(this,"pcb_board_id",null)}get isSubcircuit(){return!0}get config(){return{componentName:"Board",zodProps:boardProps}}get boardThickness(){return 1.4}get allLayers(){return["top","bottom","inner1","inner2"]}doInitialPcbComponentRender(){var Aa,ba;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this;if(!la.width||!la.height)throw new Error("Board width and height or an outline are required");const xa=J.pcb_board.insert({center:{x:(la.pcbX??0)+(la.outlineOffsetX??0),y:(la.pcbY??0)+(la.outlineOffsetY??0)},thickness:this.boardThickness,num_layers:this.allLayers.length,width:la.width,height:la.height,outline:(ba=la.outline)==null?void 0:ba.map(Sa=>({x:Sa.x+(la.outlineOffsetX??0),y:Sa.y+(la.outlineOffsetY??0)}))});this.pcb_board_id=xa.pcb_board_id}removePcbComponentRender(){const{db:J}=this.root;this.pcb_board_id&&(J.pcb_board.delete(this.pcb_board_id),this.pcb_board_id=null)}_computePcbGlobalTransformBeforeLayout(){return identity$3()}},stringProxy=new Proxy({},{get:(ua,J)=>J}),FTYPE=stringProxy,DirectLineRouter=class{constructor({input:ua}){jp(this,"input");this.input=ua}solveAndMapToTraces(){const ua=[];for(const J of this.input.connections){if(J.pointsToConnect.length!==2)continue;const[la,xa]=J.pointsToConnect,Aa={type:"pcb_trace",pcb_trace_id:"",route:[{route_type:"wire",x:la.x,y:la.y,layer:"top",width:.1},{route_type:"wire",x:xa.x,y:xa.y,layer:"top",width:.1}]};ua.push(Aa)}return ua}},computeObstacleBounds=ua=>{const J=Math.min(...ua.map(ba=>ba.center.x)),la=Math.max(...ua.map(ba=>ba.center.x)),xa=Math.min(...ua.map(ba=>ba.center.y)),Aa=Math.max(...ua.map(ba=>ba.center.y));return{minX:J,maxX:la,minY:xa,maxY:Aa}},LAYER_SELECTION_PREFERENCE=["top","bottom","inner1","inner2"],findPossibleTraceLayerCombinations=(ua,J=[])=>{var Ma;const la=[];if(J.length===0){const Ra=ua[0].layers;for(const Ia of Ra)la.push(...findPossibleTraceLayerCombinations(ua.slice(1),[Ia]));return la}if(ua.length===0)return[];const xa=ua[0],Aa=xa.via||xa.optional_via,ba=J[J.length-1];if(ua.length===1){const Ra=xa;return Ra.layers&&Aa?Ra.layers.map(Ia=>({layer_path:[...J,Ia]})):(Ma=Ra.layers)!=null&&Ma.includes(ba)?[{layer_path:[...J,ba]}]:[]}if(!Aa)return xa.layers&&!xa.layers.includes(ba)?[]:findPossibleTraceLayerCombinations(ua.slice(1),J.concat([ba]));const Sa=(xa.optional_via?LAYER_SELECTION_PREFERENCE:LAYER_SELECTION_PREFERENCE.filter(Ra=>Ra!==ba)).filter(Ra=>{var Ia;return!xa.layers||((Ia=xa.layers)==null?void 0:Ia.includes(Ra))});for(const Ra of Sa)la.push(...findPossibleTraceLayerCombinations(ua.slice(1),J.concat(Ra)));return la};function getDominantDirection(ua){const J={x:ua.to.x-ua.from.x,y:ua.to.y-ua.from.y},la=Math.abs(J.x),xa=Math.abs(J.y);return la>xa?J.x>0?"right":"left":J.y>0?"down":"up"}function pdist(ua,J){return Math.hypot(ua.x-J.x,ua.y-J.y)}var mergeRoutes=ua=>{if(ua.length===1)return ua[0];if(ua.some(Ra=>Ra.length===0))throw new Error("Cannot merge routes with zero length");const J=[],la=ua[0][0],xa=ua[0][ua[0].length-1],Aa=ua[1][0],ba=ua[1][ua[1].length-1],Sa=Math.min(pdist(la,Aa),pdist(la,ba)),Ma=Math.min(pdist(xa,Aa),pdist(xa,ba));Sa<Ma?J.push(...ua[0].reverse()):J.push(...ua[0]);for(let Ra=1;Ra<ua.length;Ra++){const Ia=J[J.length-1],La=ua[Ra],Fa=La[0],ka=La[La.length-1],el=pdist(Ia,Fa),tl=pdist(Ia,ka);el<tl?J.push(...La):J.push(...La.reverse())}for(let Ra=1;Ra<J.length-1;Ra++){const Ia=J[Ra-1],La=J[Ra];Ia.route_type==="wire"&&La.route_type==="wire"&&Ia.layer!==La.layer&&J.splice(Ra,0,{x:Ia.x,y:Ia.y,from_layer:Ia.layer,to_layer:La.layer,route_type:"via"})}return J};function getTraceLength(ua){let J=0;for(let la=0;la<ua.length;la++){const xa=ua[la];if(xa.route_type==="wire"){const Aa=ua[la+1];if(Aa){const ba=Aa.x-xa.x,Sa=Aa.y-xa.y;J+=Math.sqrt(ba*ba+Sa*Sa)}}else xa.route_type==="via"&&(J+=1.6)}return J}var getDistance=(ua,J)=>{const la="_getGlobalPcbPositionBeforeLayout"in ua?ua._getGlobalPcbPositionBeforeLayout():ua,xa="_getGlobalPcbPositionBeforeLayout"in J?J._getGlobalPcbPositionBeforeLayout():J;return Math.sqrt((la.x-xa.x)**2+(la.y-xa.y)**2)};function getClosest(ua,J){if(J.length===0)throw new Error("No candidates given to getClosest method");let la=J[0],xa=1/0;for(const Aa of J){const ba=getDistance(ua,Aa);ba<xa&&(la=Aa,xa=ba)}return la}var getEnteringEdgeFromDirection=ua=>({up:"bottom",down:"top",left:"right",right:"left"})[ua]??null,getStubEdges=({firstEdge:ua,firstEdgePort:J,firstDominantDirection:la,lastEdge:xa,lastEdgePort:Aa,lastDominantDirection:ba})=>{if(ua&&J)return getStubEdges({lastEdge:{from:ua.to,to:ua.from},lastEdgePort:J,lastDominantDirection:la}).reverse().map(Ma=>({from:Ma.to,to:Ma.from}));let Sa=[];if(xa&&Aa){const Ma={x:xa.to.x,y:xa.to.y};ba==="left"||ba==="right"?(Ma.x=Aa.position.x,Sa.push({from:xa.to,to:{...Ma}}),Sa.push({from:Ma,to:{...Aa.position}})):(Ma.y=Aa.position.y,Sa.push({from:xa.to,to:{...Ma}}),Sa.push({from:Ma,to:{...Aa.position}}))}return Sa=Sa.filter(Ma=>distance$3(Ma.from,Ma.to)>.01),Sa};function tryNow(ua){try{return[ua(),null]}catch(J){return[null,J]}}var getOtherSchematicTraces=({db:ua,source_trace_id:J,sameNetOnly:la,differentNetOnly:xa})=>{!la&&!xa&&(xa=!0);const Aa=ua.source_trace.get(J),ba=[];for(const Sa of ua.schematic_trace.list()){if(Sa.source_trace_id===J)continue;const Ma=ua.source_trace.get(Sa.source_trace_id),Ra=(Ma==null?void 0:Ma.subcircuit_connectivity_map_key)===Aa.subcircuit_connectivity_map_key;xa&&Ra||la&&!Ra||ba.push(Sa)}return ba},createSchematicTraceCrossingSegments=({edges:ua,otherEdges:J})=>{const la=[...ua];for(let xa=0;xa<la.length;xa++){if(xa>2e3)throw new Error("Over 2000 iterations spent inside createSchematicTraceCrossingSegments, you have triggered an infinite loop, please report this!");const Aa=la[xa],ba=Math.abs(Aa.from.x-Aa.to.x)<.01?"vertical":Aa.from.y===Aa.to.y?"horizontal":"not-orthogonal";if(ba==="not-orthogonal")continue;const Sa=[];for(const rl of J){const il=rl.from.x===rl.to.x?"vertical":rl.from.y===rl.to.y?"horizontal":"not-orthogonal";if(il==="not-orthogonal"||ba===il)continue;if(doesLineIntersectLine([Aa.from,Aa.to],[rl.from,rl.to],{lineThickness:.01})){const sl=ba==="vertical"?Aa.from.x:rl.from.x,ll=ba==="vertical"?rl.from.y:Aa.from.y,dl={x:sl,y:ll};Sa.push({otherEdge:rl,crossingPoint:dl,distanceFromEdgeFrom:distance$3(Aa.from,dl)})}}if(Sa.length===0)continue;let Ma=Sa[0];for(const rl of Sa)rl.distanceFromEdgeFrom<Ma.distanceFromEdgeFrom&&(Ma=rl);const Ra=Ma.crossingPoint,Ia=.075;if(Ra.x===Aa.from.x&&Ra.y===Aa.from.y)continue;const La=getUnitVectorFromPointAToB(Aa.from,Ra),Fa={x:Ra.x-La.x*Ia/2,y:Ra.y-La.y*Ia/2},ka={x:Ra.x+La.x*Ia/2,y:Ra.y+La.y*Ia/2},el=distance$3(ka,Aa.to)<Ia,tl=[{from:Aa.from,to:Fa},{from:Fa,to:ka,is_crossing:!0},{from:ka,to:Aa.to}];la.splice(xa,1,...tl),xa+=tl.length-2,el&&xa++}return la},getIntersectionPoint=(ua,J)=>{if(ua.from.x===ua.to.x&&J.from.x===J.to.x)return null;if(ua.from.x===ua.to.x){const La=ua.from.x,Fa=(J.to.y-J.from.y)/(J.to.x-J.from.x),ka=J.from.y-Fa*J.from.x,el=Fa*La+ka;return La>=Math.min(J.from.x,J.to.x)&&La<=Math.max(J.from.x,J.to.x)&&el>=Math.min(J.from.y,J.to.y)&&el<=Math.max(J.from.y,J.to.y)?{x:La,y:el}:null}if(J.from.x===J.to.x){const La=J.from.x,Fa=(ua.to.y-ua.from.y)/(ua.to.x-ua.from.x),ka=ua.from.y-Fa*ua.from.x,el=Fa*La+ka;return La>=Math.min(ua.from.x,ua.to.x)&&La<=Math.max(ua.from.x,ua.to.x)&&el>=Math.min(ua.from.y,ua.to.y)&&el<=Math.max(ua.from.y,ua.to.y)?{x:La,y:el}:null}const la=(ua.to.y-ua.from.y)/(ua.to.x-ua.from.x),xa=ua.from.y-la*ua.from.x,Aa=(J.to.y-J.from.y)/(J.to.x-J.from.x),ba=J.from.y-Aa*J.from.x;if(la===Aa)return null;const Sa=(ba-xa)/(la-Aa),Ma=la*Sa+xa,Ra=Sa>=Math.min(ua.from.x,ua.to.x)&&Sa<=Math.max(ua.from.x,ua.to.x)&&Ma>=Math.min(ua.from.y,ua.to.y)&&Ma<=Math.max(ua.from.y,ua.to.y),Ia=Sa>=Math.min(J.from.x,J.to.x)&&Sa<=Math.max(J.from.x,J.to.x)&&Ma>=Math.min(J.from.y,J.to.y)&&Ma<=Math.max(J.from.y,J.to.y);return Ra&&Ia?{x:Sa,y:Ma}:null},createSchematicTraceJunctions=({edges:ua,db:J,source_trace_id:la})=>{const xa=getOtherSchematicTraces({db:J,source_trace_id:la,sameNetOnly:!0}).flatMap(Aa=>Aa.edges);for(const Aa of ua)for(const ba of xa){const Sa=getIntersectionPoint(Aa,ba);if(Sa)return`${Sa.x}${Sa.y}`,[{x:Sa.x,y:Sa.y}]}return[]},pushEdgesOfSchematicTraceToPreventOverlap=({edges:ua,db:J,source_trace_id:la})=>{J.source_trace.get(la);const xa=getOtherSchematicTraces({db:J,source_trace_id:la,differentNetOnly:!0}).flatMap(ba=>ba.edges),Aa=ba=>{const{from:Sa,to:Ma}=ba;return Sa.x===Ma.x?"vertical":"horizontal"};for(const ba of ua){const Sa=Aa(ba),Ma=()=>xa.find(Ia=>Aa(Ia)===Sa&&doesLineIntersectLine([ba.from,ba.to],[Ia.from,Ia.to],{lineThickness:.05}));let Ra=Ma();for(;Ra;)Sa==="horizontal"?(ba.from.y+=.1,ba.to.y+=.1):(ba.from.x+=.1,ba.to.x+=.1),Ra=Ma()}},countComplexElements=(ua,J)=>{let la=0;la+=ua.length??0,la+=J.filter(xa=>xa.is_crossing).length;for(let xa=1;xa<J.length;xa++){const Aa=J[xa-1],ba=J[xa],Sa=Math.abs(Aa.from.x-Aa.to.x)<.01,Ma=Math.abs(ba.from.x-ba.to.x)<.01;Sa!==Ma&&la++}return la},calculateOffsets=ua=>{var Ma,Ra;const J={left:{x:-.5,y:0},up:{x:.5,y:.5},right:{x:.5,y:0},down:{x:0,y:-.5}}[ua.facingDirection],la=(Ma=ua.parent)!=null&&Ma.config.shouldRenderAsSchematicBox?3:1,xa=(Ra=ua.parent)!=null&&Ra.config.shouldRenderAsSchematicBox&&(ua.facingDirection==="left"||ua.facingDirection==="right")?3:1,Aa=J.x,ba=J.y,Sa=ua.facingDirection==="up"?.5:0;return{schBoxVertOffset:la,schBoxHorzOffset:xa,horzPortDirection:Aa,vertPortDirectionOffset:ba,handleUp:Sa}},createDownwardNetLabelGroundSymbol=({fromPort:ua,toPort:J,fromAnchorPos:la,toAnchorPos:xa,schDisplayLabel:Aa,source_trace_id:ba},{db:Sa})=>{const Ma=calculateOffsets(ua);Sa.schematic_net_label.insert({anchor_side:"top",center:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset},source_net_id:ua.source_port_id,text:Aa,anchor_position:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset},symbol_name:"ground_horz"}),Sa.schematic_trace.insert({edges:[{from:{x:la.x,y:la.y},to:{x:la.x,y:la.y+Ma.handleUp*Ma.schBoxVertOffset}},{from:{x:la.x,y:la.y},to:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset}}],junctions:[{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset}],source_trace_id:ba});const Ra=calculateOffsets(J);Sa.schematic_net_label.insert({anchor_side:"top",center:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset},source_net_id:J.source_port_id,text:Aa,anchor_position:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset},symbol_name:"ground_horz"});const Ia=J.facingDirection==="up"?.5:0;Sa.schematic_trace.insert({edges:[{from:{x:xa.x,y:xa.y},to:{x:xa.x,y:xa.y+Ia*Ra.schBoxVertOffset}},{from:{x:xa.x,y:xa.y},to:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset}}],junctions:[{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset}],source_trace_id:ba})},getMaxLengthFromConnectedCapacitors=(ua,{db:J})=>{const la=ua.map(xa=>{const Aa=J.source_port.get(xa.source_port_id);if(!(Aa!=null&&Aa.source_component_id))return null;const ba=J.source_component.get(Aa.source_component_id);return(ba==null?void 0:ba.ftype)==="simple_capacitor"?ba.max_decoupling_trace_length:null}).filter(xa=>xa!==null);if(la.length!==0)return Math.min(...la)};function getTraceDisplayName({ports:ua,nets:J}){var la,xa,Aa;if(ua.length>=2)return`${(la=ua[0])==null?void 0:la.selector} to ${(xa=ua[1])==null?void 0:xa.selector}`;if(ua.length===1&&J.length===1)return`${(Aa=ua[0])==null?void 0:Aa.selector} to net.${J[0]._parsedProps.name}`}var getSchematicObstaclesForTrace=ua=>{var ba;const J=ua.root.db,la=ua._findConnectedPorts().ports??[],xa=new Set(la.map(Sa=>Sa.schematic_port_id)),Aa=[];for(const Sa of J.toArray()){if(Sa.type==="schematic_component"){const Ma=!!Sa.symbol_name,Ra=Sa.size.width>Sa.size.height?"horz":"vert";Aa.push({type:"rect",layers:["top"],center:Sa.center,width:Sa.size.width+(Ma&&Ra==="horz"?-.5:0),height:Sa.size.height+(Ma&&Ra==="vert"?-.5:0),connectedTo:[]})}if(Sa.type==="schematic_port"){if(xa.has(Sa.schematic_port_id))continue;const Ma=Sa.facing_direction?getUnitVectorFromDirection(Sa.facing_direction):{x:0,y:0};Aa.push({type:"rect",layers:["top"],center:{x:Sa.center.x-Ma.x*.1,y:Sa.center.y-Ma.y*.1},width:.1+Math.abs(Ma.x)*.3,height:.1+Math.abs(Ma.y)*.3,connectedTo:[]})}Sa.type==="schematic_text"&&Aa.push({type:"rect",layers:["top"],center:Sa.position,width:(((ba=Sa.text)==null?void 0:ba.length)??0)*.1,height:.2,connectedTo:[]}),Sa.type==="schematic_box"&&Aa.push({type:"rect",layers:["top"],center:{x:Sa.x,y:Sa.y},width:Sa.width,height:Sa.height,connectedTo:[]})}return Aa},portToObjective=ua=>({...ua._getGlobalPcbPositionAfterLayout(),layers:ua.getAvailablePcbLayers()}),Trace2=class extends PrimitiveComponent{constructor(J){super(J);jp(this,"source_trace_id",null);jp(this,"pcb_trace_id",null);jp(this,"schematic_trace_id",null);jp(this,"_portsRoutedOnPcb");jp(this,"subcircuit_connectivity_map_key",null);this._portsRoutedOnPcb=[]}get config(){return{zodProps:traceProps,componentName:"Trace"}}_getTracePortOrNetSelectorListFromProps(){return"from"in this.props&&"to"in this.props?[typeof this.props.from=="string"?this.props.from:this.props.from.getPortSelector(),typeof this.props.to=="string"?this.props.to:this.props.to.getPortSelector()]:"path"in this.props?this.props.path.map(J=>typeof J=="string"?J:J.getPortSelector()):[]}getTracePortPathSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(J=>!J.includes("net."))}getTracePathNetSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(J=>J.includes("net."))}_findConnectedPorts(){this.root;const{_parsedProps:J,parent:la}=this;if(!la)throw new Error("Trace has no parent");const Aa=this.getTracePortPathSelectors().map(ba=>({selector:ba,port:this.getSubcircuit().selectOne(ba,{type:"port"})??null}));for(const{selector:ba,port:Sa}of Aa)if(!Sa){const Ma=ba.replace(/\>.*$/,""),Ra=this.getSubcircuit().selectOne(Ma);Ra?this.renderError(`Could not find port for selector "${ba}" (did you forget to include the pin name?)
|
|
7539
|
+
iteration: ${Sa}`),debugSelectAll(`part: "${la[Sa]}"`),debugSelectAll(`currentSearch: [${xa.map(Ra=>Ra.getString()).join(",")}]`),debugSelectAll(`currentResults: [${Aa.map(Ra=>Ra.getString()).join(",")}]`),Ma===">")ba=!0;else{const Ra=xa.filter(La=>isMatchingSelector(La,Ma));xa=Ra.flatMap(La=>ba?La.children:La.getSelectableDescendants()),Aa=Ra,ba=!1}return Aa}selectOne(J,la){var Aa;let xa=(Aa=la==null?void 0:la.type)==null?void 0:Aa.toLowerCase();return la!=null&&la.port&&(xa="port"),xa?this.selectAll(J).find(ba=>ba.lowercaseComponentName===xa)??null:la!=null&&la.pcbPrimitive?this.selectAll(J).find(ba=>ba.isPcbPrimitive)??null:la!=null&&la.schematicPrimitive?this.selectAll(J).find(ba=>ba.isSchematicPrimitive)??null:this.selectAll(J)[0]??null}getAvailablePcbLayers(){var J,la;if(this.isPcbPrimitive){const{maybeFlipLayer:xa}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[xa(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((la=(J=this.root)==null?void 0:J._getBoard())==null?void 0:la.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const J=[];for(const la of this.children)J.push(la),J.push(...la.getDescendants());return J}getSelectableDescendants(){const J=[];for(const la of this.children)la.isSubcircuit?J.push(la):(J.push(la),J.push(...la.getSelectableDescendants()));return J}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}renderError(J){var la;if(typeof J=="string")return super.renderError(J);(la=this.root)==null||la.db.pcb_placement_error.insert(J)}getString(){var Aa,ba;const{lowercaseComponentName:J,_parsedProps:la,parent:xa}=this;return(la==null?void 0:la.pinNumber)!==void 0&&((Aa=xa==null?void 0:xa.props)!=null&&Aa.name)&&(la!=null&&la.name)?`<${J}#${this._renderId}(pin:${la.pinNumber} .${xa==null?void 0:xa.props.name}>.${la.name}) />`:(ba=xa==null?void 0:xa.props)!=null&&ba.name&&(la!=null&&la.name)?`<${J}#${this._renderId}(.${xa==null?void 0:xa.props.name}>.${la==null?void 0:la.name}) />`:la!=null&&la.from&&(la!=null&&la.to)?`<${J}#${this._renderId}(from:${la.from} to:${la==null?void 0:la.to}) />`:la!=null&&la.name?`<${J}#${this._renderId} name=".${la==null?void 0:la.name}" />`:la!=null&&la.portHints?`<${J}#${this._renderId}(${la.portHints.map(Sa=>`.${Sa}`).join(", ")}) />`:`<${J}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}};function pairs$1(ua){const J=[];for(let la=0;la<ua.length-1;la++)J.push([ua[la],ua[la+1]]);return J}var netProps=z$3.object({name:z$3.string()}),Net=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:netProps}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:la}=this,xa=J.source_net.insert({name:la.name,member_source_group_ids:[]});this.source_net_id=xa.source_net_id}getAllConnectedPorts(){const J=this.getSubcircuit().selectAll("port"),la=[];for(const xa of J){const Aa=xa._getDirectlyConnectedTraces();for(const ba of Aa)if(ba._isExplicitlyConnectedToNet(this)){la.push(xa);break}}return la}_getAllDirectlyConnectedTraces(){const J=this.getSubcircuit().selectAll("trace"),la=[];for(const xa of J)xa._isExplicitlyConnectedToNet(this)&&la.push(xa);return la}doInitialPcbRouteNetIslands(){var ba;if((ba=this.root)!=null&&ba.pcbDisabled||this.getSubcircuit()._parsedProps.routingDisabled)return;const{db:J}=this.root,la=this._getAllDirectlyConnectedTraces().filter(Sa=>{var Ma;return(((Ma=Sa._portsRoutedOnPcb)==null?void 0:Ma.length)??0)>0}),xa=[];for(const Sa of la){const Ma=Sa._portsRoutedOnPcb,Ra=xa.find(Ia=>Ma.some(La=>Ia.ports.includes(La)));if(!Ra){xa.push({ports:[...Ma],traces:[Sa]});continue}Ra.traces.push(Sa),Ra.ports.push(...Ma)}if(xa.length===0)return;const Aa=pairs$1(xa);for(const[Sa,Ma]of Aa){const Ra=Sa.ports.map(nl=>nl._getGlobalPcbPositionBeforeLayout()),Ia=Ma.ports.map(nl=>nl._getGlobalPcbPositionBeforeLayout());let La=1/0,Fa=[-1,-1];for(let nl=0;nl<Ra.length;nl++){const sl=Ra[nl];for(let ll=0;ll<Ia.length;ll++){const dl=Ia[ll],gl=Math.sqrt((sl.x-dl.x)**2+(sl.y-dl.y)**2);gl<La&&(La=gl,Fa=[nl,ll])}}const ka=Sa.ports[Fa[0]],el=Ma.ports[Fa[1]],tl=J.toArray().filter(nl=>nl.type==="pcb_smtpad"||nl.type==="pcb_trace"||nl.type==="pcb_plated_hole"||nl.type==="pcb_hole"||nl.type==="source_port"||nl.type==="pcb_port"),{solution:rl}=autoroute2(tl.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[ka.source_port_id,el.source_port_id]}])),il=rl[0];if(!il){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[ka.pcb_component_id,el.pcb_component_id].filter(Boolean),pcb_port_ids:[ka.pcb_port_id,el.pcb_port_id].filter(Boolean),type:"pcb_trace_error",error_type:"pcb_trace_error",message:`Failed to route net islands for "${this.getString()}"`,source_trace_id:"__net_trace_tmp"});return}J.pcb_trace.insert(il)}}renderError(J){var la;if(typeof J=="string")return super.renderError(J);(la=this.root)==null||la.db.pcb_trace_error.insert(J)}},createNetsFromProps=(ua,J)=>{for(const la of J)typeof la=="string"&&la.startsWith("net.")&&(ua.getSubcircuit().selectOne(la)||ua.getSubcircuit().add(new Net({name:la.split("net.")[1]})))},SmtPad=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_smtpad_id",null);jp(this,"matchedPort",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SmtPad",zodProps:smtPadProps}}getPcbSize(){const{_parsedProps:J}=this;if(J.shape==="circle")return{width:J.radius*2,height:J.radius*2};if(J.shape==="rect")return{width:J.width,height:J.height};throw new Error(`getPcbSize for shape "${J.shape}" not implemented for ${this.componentName}`)}doInitialPortMatching(){var la;const J=(la=this.getPrimitiveContainer())==null?void 0:la.selectAll("port");if(this.props.portHints){for(const xa of J)if(xa.isMatchingAnyOf(this.props.portHints)){this.matchedPort=xa,xa.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var ka,el,tl,rl,il,nl,sl,ll,dl;if((ka=this.root)!=null&&ka.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this;if(!la.portHints)return;const xa=this.getPrimitiveContainer(),Aa=this.getSubcircuit(),ba=this._getGlobalPcbPositionBeforeLayout();xa==null||xa._getGlobalPcbPositionBeforeLayout();const Sa=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),Ma=Math.abs(Sa.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:Ra}=this._getPcbPrimitiveFlippedHelpers(),Ia=(xa==null?void 0:xa._parsedProps.pcbRotation)??0;let La=null;const Fa=((el=this.parent)==null?void 0:el.pcb_component_id)??((tl=this.getPrimitiveContainer())==null?void 0:tl.pcb_component_id);la.shape==="circle"?(La=J.pcb_smtpad.insert({pcb_component_id:Fa,pcb_port_id:(rl=this.matchedPort)==null?void 0:rl.pcb_port_id,layer:Ra(la.layer??"top"),shape:"circle",radius:la.radius,port_hints:la.portHints.map(gl=>gl.toString()),x:ba.x,y:ba.y,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0}),J.pcb_solder_paste.insert({layer:La.layer,shape:"circle",radius:La.radius*.7,x:La.x,y:La.y,pcb_component_id:La.pcb_component_id,pcb_smtpad_id:La.pcb_smtpad_id,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((il=this.getGroup())==null?void 0:il.pcb_group_id)??void 0})):la.shape==="rect"&&(La=Ia===0||Ma?J.pcb_smtpad.insert({pcb_component_id:Fa,pcb_port_id:(nl=this.matchedPort)==null?void 0:nl.pcb_port_id,layer:Ra(la.layer??"top"),shape:"rect",width:Ma?la.height:la.width,height:Ma?la.width:la.height,port_hints:la.portHints.map(gl=>gl.toString()),x:ba.x,y:ba.y,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((sl=this.getGroup())==null?void 0:sl.pcb_group_id)??void 0}):J.pcb_smtpad.insert({pcb_component_id:Fa,layer:la.layer??"top",shape:"rotated_rect",width:la.width,height:la.height,x:ba.x,y:ba.y,ccw_rotation:Ia,port_hints:la.portHints.map(gl=>gl.toString()),subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((ll=this.getGroup())==null?void 0:ll.pcb_group_id)??void 0}),La.shape==="rect"&&J.pcb_solder_paste.insert({layer:La.layer,shape:"rect",width:La.width*.7,height:La.height*.7,x:La.x,y:La.y,pcb_component_id:La.pcb_component_id,pcb_smtpad_id:La.pcb_smtpad_id,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((dl=this.getGroup())==null?void 0:dl.pcb_group_id)??void 0})),La&&(this.pcb_smtpad_id=La.pcb_smtpad_id)}doInitialPcbPortAttachment(){var la,xa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(xa=this.matchedPort)==null?void 0:xa.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_smtpad.get(this.pcb_smtpad_id);if(la.shape==="rect")return{center:{x:la.x,y:la.y},bounds:{left:la.x-la.width/2,top:la.y+la.height/2,right:la.x+la.width/2,bottom:la.y-la.height/2},width:la.width,height:la.height};if(la.shape==="rotated_rect"){const xa=la.ccw_rotation*Math.PI/180,Aa=Math.cos(xa),ba=Math.sin(xa),Sa=la.width/2,Ma=la.height/2,Ra=Math.abs(Sa*Aa)+Math.abs(Ma*ba),Ia=Math.abs(Sa*ba)+Math.abs(Ma*Aa);return{center:{x:la.x,y:la.y},bounds:{left:la.x-Ra,right:la.x+Ra,top:la.y-Ia,bottom:la.y+Ia},width:Ra*2,height:Ia*2}}if(la.shape==="circle")return{center:{x:la.x,y:la.y},bounds:{left:la.x-la.radius,top:la.y-la.radius,right:la.x+la.radius,bottom:la.y+la.radius},width:la.radius*2,height:la.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${la.shape}"`)}_setPositionFromLayout(J){var Aa;const{db:la}=this.root;la.pcb_smtpad.update(this.pcb_smtpad_id,{x:J.x,y:J.y});const xa=la.pcb_solder_paste.list().find(ba=>ba.pcb_smtpad_id===this.pcb_smtpad_id);la.pcb_solder_paste.update(xa==null?void 0:xa.pcb_solder_paste_id,{x:J.x,y:J.y}),(Aa=this.matchedPort)==null||Aa._setPositionFromLayout(J)}},SilkscreenPath=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_silkscreen_path_id",null)}get config(){return{componentName:"SilkscreenPath",zodProps:silkscreenPathProps}}doInitialPcbPrimitiveRender(){var Ma,Ra,Ia;if((Ma=this.root)!=null&&Ma.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=la.layer??"top";if(xa!=="top"&&xa!=="bottom")throw new Error(`Invalid layer "${xa}" for SilkscreenPath. Must be "top" or "bottom".`);const Aa=this._computePcbGlobalTransformBeforeLayout(),ba=this.getSubcircuit(),Sa=J.pcb_silkscreen_path.insert({pcb_component_id:(Ra=this.parent)==null?void 0:Ra.pcb_component_id,layer:xa,route:la.route.map(La=>{const Fa=applyToPoint(Aa,{x:La.x,y:La.y});return{...La,x:Fa.x,y:Fa.y}}),stroke_width:la.strokeWidth??.1,subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((Ia=this.getGroup())==null?void 0:Ia.pcb_group_id)??void 0});this.pcb_silkscreen_path_id=Sa.pcb_silkscreen_path_id}},PlatedHole=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_plated_hole_id",null);jp(this,"matchedPort",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PlatedHole",zodProps:platedHoleProps}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:J}=this;if(J.shape==="circle")return{width:J.outerDiameter,height:J.outerDiameter};if(J.shape==="oval"||J.shape==="pill")return{width:J.outerWidth,height:J.outerHeight};throw new Error(`getPcbSize for shape "${J.shape}" not implemented for ${this.componentName}`)}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_plated_hole.get(this.pcb_plated_hole_id),xa=this.getPcbSize();return{center:{x:la.x,y:la.y},bounds:{left:la.x-xa.width/2,top:la.y+xa.height/2,right:la.x+xa.width/2,bottom:la.y-xa.height/2},width:xa.width,height:xa.height}}_setPositionFromLayout(J){var xa;const{db:la}=this.root;la.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:J.x,y:J.y}),(xa=this.matchedPort)==null||xa._setPositionFromLayout(J)}doInitialPortMatching(){var la;const J=(la=this.getPrimitiveContainer())==null?void 0:la.selectAll("port");if(this.props.portHints){for(const xa of J)if(xa.isMatchingAnyOf(this.props.portHints)){this.matchedPort=xa,xa.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var Sa,Ma,Ra,Ia,La,Fa,ka;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getGlobalPcbPositionBeforeLayout(),Aa=((Ma=this.parent)==null?void 0:Ma.pcb_component_id)??((Ra=this.getPrimitiveContainer())==null?void 0:Ra.pcb_component_id),ba=this.getSubcircuit();if(la.shape==="circle"){const el=J.pcb_plated_hole.insert({pcb_component_id:Aa,pcb_port_id:(Ia=this.matchedPort)==null?void 0:Ia.pcb_port_id,outer_diameter:la.outerDiameter,hole_diameter:la.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:xa.x,y:xa.y,layers:["top","bottom"],subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((La=this.getGroup())==null?void 0:La.pcb_group_id)??void 0});this.pcb_plated_hole_id=el.pcb_plated_hole_id}else if(la.shape==="pill"||la.shape==="oval"){const el=J.pcb_plated_hole.insert({pcb_component_id:Aa,pcb_port_id:(Fa=this.matchedPort)==null?void 0:Fa.pcb_port_id,outer_width:la.outerWidth,outer_height:la.outerHeight,hole_width:la.innerWidth,hole_height:la.innerHeight,shape:la.shape,port_hints:this.getNameAndAliases(),x:xa.x,y:xa.y,layers:["top","bottom"],subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((ka=this.getGroup())==null?void 0:ka.pcb_group_id)??void 0});this.pcb_plated_hole_id=el.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var la,xa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(xa=this.matchedPort)==null?void 0:xa.pcb_port_id})}},Keepout=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_keepout_id",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:pcbKeepoutProps}}doInitialPcbPrimitiveRender(){var Ra,Ia,La;if((Ra=this.root)!=null&&Ra.pcbDisabled)return;const J=this.getSubcircuit(),{db:la}=this.root,{_parsedProps:xa}=this,Aa=this._getGlobalPcbPositionBeforeLayout(),ba=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),Sa=Math.abs(ba.rotation.angle*(180/Math.PI)-90)%180<.01;let Ma=null;xa.shape==="circle"?Ma=la.pcb_keepout.insert({layers:["top"],shape:"circle",radius:xa.radius,center:{x:Aa.x,y:Aa.y},subcircuit_id:(J==null?void 0:J.subcircuit_id)??void 0,pcb_group_id:((Ia=J==null?void 0:J.getGroup())==null?void 0:Ia.pcb_group_id)??void 0}):xa.shape==="rect"&&(Ma=la.pcb_keepout.insert({layers:["top"],shape:"rect",...Sa?{width:xa.height,height:xa.width}:{width:xa.width,height:xa.height},center:{x:Aa.x,y:Aa.y},subcircuit_id:(J==null?void 0:J.subcircuit_id)??void 0,pcb_group_id:((La=J==null?void 0:J.getGroup())==null?void 0:La.pcb_group_id)??void 0})),Ma&&(this.pcb_keepout_id=Ma.pcb_keepout_id)}},Hole=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_hole_id",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:holeProps}}getPcbSize(){const{_parsedProps:J}=this;return{width:J.diameter,height:J.diameter}}doInitialPcbPrimitiveRender(){var Sa,Ma;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getSubcircuit(),Aa=this._getGlobalPcbPositionBeforeLayout(),ba=J.pcb_hole.insert({hole_shape:"circle",hole_diameter:la.diameter,x:Aa.x,y:Aa.y,subcircuit_id:(xa==null?void 0:xa.subcircuit_id)??void 0,pcb_group_id:((Ma=xa==null?void 0:xa.getGroup())==null?void 0:Ma.pcb_group_id)??void 0});this.pcb_hole_id=ba.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_hole.get(this.pcb_hole_id),xa=this.getPcbSize();return{center:{x:la.x,y:la.y},bounds:{left:la.x-xa.width/2,top:la.y-xa.height/2,right:la.x+xa.width/2,bottom:la.y+xa.height/2},width:xa.width,height:xa.height}}_setPositionFromLayout(J){const{db:la}=this.root;la.pcb_hole.update(this.pcb_hole_id,{x:J.x,y:J.y})}},createComponentsFromSoup=ua=>{const J=[];for(const la of ua)la.type==="pcb_smtpad"&&la.shape==="rect"?J.push(new SmtPad({pcbX:la.x,pcbY:la.y,layer:la.layer,shape:"rect",height:la.height,width:la.width,portHints:la.port_hints})):la.type==="pcb_smtpad"&&la.shape==="circle"?J.push(new SmtPad({pcbX:la.x,pcbY:la.y,layer:la.layer,shape:"circle",radius:la.radius,portHints:la.port_hints})):la.type==="pcb_silkscreen_path"?J.push(new SilkscreenPath({layer:la.layer,route:la.route,strokeWidth:la.stroke_width})):la.type==="pcb_plated_hole"&&la.shape==="circle"?la.shape==="circle"&&J.push(new PlatedHole({pcbX:la.x,pcbY:la.y,shape:"circle",holeDiameter:la.hole_diameter,outerDiameter:la.outer_diameter,portHints:la.port_hints})):la.type==="pcb_keepout"&&la.shape==="circle"?J.push(new Keepout({pcbX:la.center.x,pcbY:la.center.y,shape:"circle",radius:la.radius})):la.type==="pcb_keepout"&&la.shape==="rect"?J.push(new Keepout({pcbX:la.center.x,pcbY:la.center.y,shape:"rect",width:la.width,height:la.height})):la.type==="pcb_hole"&&la.hole_shape==="circle"&&J.push(new Hole({pcbX:la.x,pcbY:la.y,diameter:la.hole_diameter}));return J};function getBoundsOfPcbComponents(ua){let J=1/0,la=1/0,xa=-1/0,Aa=-1/0;for(const Ma of ua)if(Ma.isPcbPrimitive){const{x:Ra,y:Ia}=Ma._getGlobalPcbPositionBeforeLayout(),{width:La,height:Fa}=Ma.getPcbSize();J=Math.min(J,Ra-La/2),la=Math.min(la,Ia-Fa/2),xa=Math.max(xa,Ra+La/2),Aa=Math.max(Aa,Ia+Fa/2)}else if(Ma.componentName==="Footprint"){const Ra=getBoundsOfPcbComponents(Ma.children);J=Math.min(J,Ra.minX),la=Math.min(la,Ra.minY),xa=Math.max(xa,Ra.maxX),Aa=Math.max(Aa,Ra.maxY)}let ba=xa-J,Sa=Aa-la;return ba<0&&(ba=0),Sa<0&&(Sa=0),{minX:J,minY:la,maxX:xa,maxY:Aa,width:ba,height:Sa}}function getRelativeDirection(ua,J){const la=J.x-ua.x,xa=J.y-ua.y;return Math.abs(la)>Math.abs(xa)?la>=0?"right":"left":xa>=0?"up":"down"}var areAllPcbPrimitivesOverlapping=ua=>{if(ua.length<=1)return!0;const J=ua.map(ba=>{const Sa=ba._getPcbCircuitJsonBounds();return{left:Sa.bounds.left,right:Sa.bounds.right,top:Sa.bounds.top,bottom:Sa.bounds.bottom}}),la=Array(J.length).fill(!1).map(()=>Array(J.length).fill(!1));for(let ba=0;ba<J.length;ba++)for(let Sa=ba+1;Sa<J.length;Sa++){const Ma=J[ba],Ra=J[Sa];la[ba][Sa]=la[Sa][ba]=!(Ma.right<Ra.left||Ma.left>Ra.right||Ma.bottom>Ra.top||Ma.top<Ra.bottom)}const xa=new Set,Aa=ba=>{xa.add(ba);for(let Sa=0;Sa<J.length;Sa++)la[ba][Sa]&&!xa.has(Sa)&&Aa(Sa)};return Aa(0),xa.size===J.length},getCenterOfPcbPrimitives=ua=>{if(ua.length===0)throw new Error("Cannot get center of empty PCB primitives array");const J=ua.map(Aa=>Aa._getPcbCircuitJsonBounds().center).filter(Boolean),la=J.reduce((Aa,ba)=>Aa+ba.x,0),xa=J.reduce((Aa,ba)=>Aa+ba.y,0);return{x:la/J.length,y:xa/J.length}},portProps=z$3.object({name:z$3.string().optional(),pinNumber:z$3.number().optional(),aliases:z$3.array(z$3.string()).optional()}),Port=class extends PrimitiveComponent{constructor(J,la={}){if(!J.name&&J.pinNumber!==void 0&&(J.name=`pin${J.pinNumber}`),!J.name)throw new Error("Port must have a name or a pinNumber");super(J);jp(this,"source_port_id",null);jp(this,"pcb_port_id",null);jp(this,"schematic_port_id",null);jp(this,"schematicSymbolPortDef",null);jp(this,"matchedComponents");jp(this,"facingDirection",null);jp(this,"originDescription",null);la.originDescription&&(this.originDescription=la.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:portProps}}_getGlobalPcbPositionBeforeLayout(){const J=this.matchedComponents.find(la=>la.isPcbPrimitive);if(!J)throw new Error(`Port ${this} has no matched pcb component, can't get global pcb position`);return(J==null?void 0:J._getGlobalPcbPositionBeforeLayout())??{x:0,y:0}}_getPcbCircuitJsonBounds(){if(!this.pcb_port_id)return super._getPcbCircuitJsonBounds();const{db:J}=this.root,la=J.pcb_port.get(this.pcb_port_id);return{center:{x:la.x,y:la.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getGlobalSchematicPositionBeforeLayout(){var xa,Aa;const J=(xa=this.parent)==null?void 0:xa.getSchematicSymbol();if(J&&this.schematicSymbolPortDef){const ba=compose(this.parent.computeSchematicGlobalTransform(),translate(-J.center.x,-J.center.y));return applyToPoint(ba,this.schematicSymbolPortDef)}const la=(Aa=this==null?void 0:this.parent)==null?void 0:Aa._getSchematicBoxDimensions();if(la&&this.props.pinNumber!==void 0){const ba=la.getPortPositionByPinNumber(this.props.pinNumber);return ba?applyToPoint(this.parent.computeSchematicGlobalTransform(),ba):{x:0,y:0}}return{x:0,y:0}}_getGlobalSchematicPositionAfterLayout(){const{db:J}=this.root;if(!this.schematic_port_id)throw new Error("Can't get schematic port position after layout, no schematic_port_id");const la=J.schematic_port.get(this.schematic_port_id);if(!la)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return la.center}registerMatch(J){this.matchedComponents.push(J)}getNameAndAliases(){const{_parsedProps:J}=this;return Array.from(new Set([...J.aliases??[],...J.name?[J.name]:[],...typeof J.pinNumber=="number"?[`pin${J.pinNumber}`,J.pinNumber.toString()]:[],...this.externallyAddedAliases??[]]))}isMatchingPort(J){return this.isMatchingAnyOf(J.getNameAndAliases())}getPortSelector(){var J;return`.${(J=this.parent)==null?void 0:J.props.name} > port.${this.props.name}`}getAvailablePcbLayers(){return Array.from(new Set(this.matchedComponents.flatMap(J=>J.getAvailablePcbLayers())))}_getDirectlyConnectedTraces(){return this.getSubcircuit().selectAll("trace").filter(xa=>xa._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var ba;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getNameAndAliases(),Aa=J.source_port.insert({name:la.name,pin_number:la.pinNumber,port_hints:xa,source_component_id:(ba=this.parent)==null?void 0:ba.source_component_id});this.source_port_id=Aa.source_port_id}doInitialSourceParentAttachment(){var la,xa,Aa,ba;const{db:J}=this.root;if(!((la=this.parent)!=null&&la.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(xa=this.parent)==null?void 0:xa.getString()})`);J.source_port.update(this.source_port_id,{source_component_id:(Aa=this.parent)==null?void 0:Aa.source_component_id}),this.source_component_id=(ba=this.parent)==null?void 0:ba.source_component_id}doInitialPcbPortRender(){var ba,Sa,Ma,Ra,Ia;if((ba=this.root)!=null&&ba.pcbDisabled)return;const{db:J}=this.root,{matchedComponents:la}=this;if(!((Sa=this.parent)!=null&&Sa.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(Ma=this.parent)==null?void 0:Ma.getString()})`);const xa=la.filter(La=>La.isPcbPrimitive);if(xa.length===0)return;let Aa=null;if(xa.length===1&&(Aa=xa[0]._getPcbCircuitJsonBounds().center),xa.length>1){if(!areAllPcbPrimitivesOverlapping(xa))throw new Error(`${this.getString()} has multiple non-overlapping pcb matches, unclear how to place pcb_port: ${xa.map(La=>La.getString()).join(", ")}. (Note: tscircuit core does not currently allow you to specify internally connected pcb primitives with the same port hints, try giving them different port hints and specifying they are connected externally- or file an issue)`);Aa=getCenterOfPcbPrimitives(xa)}if(Aa){const La=this.getSubcircuit(),Fa=J.pcb_port.insert({pcb_component_id:(Ra=this.parent)==null?void 0:Ra.pcb_component_id,layers:this.getAvailablePcbLayers(),subcircuit_id:(La==null?void 0:La.subcircuit_id)??void 0,pcb_group_id:((Ia=this.getGroup())==null?void 0:Ia.pcb_group_id)??void 0,...Aa,source_port_id:this.source_port_id});this.pcb_port_id=Fa.pcb_port_id}else{const La=xa[0];throw new Error(`${La.getString()} does not have a center or _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}}doInitialSchematicPortRender(){var Fa;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getPrimitiveContainer();if(!xa)return;const Aa=xa._getGlobalSchematicPositionBeforeLayout(),ba=this._getGlobalSchematicPositionBeforeLayout();let Sa=null;const Ma=xa._getSchematicBoxDimensions();Ma&&la.pinNumber!==void 0&&(Sa=Ma.getPortPositionByPinNumber(la.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&J.schematic_debug_object.insert({shape:"rect",center:ba,size:{width:.1,height:.1},label:"obstacle"}),Sa!=null&&Sa.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[Sa.side]:this.facingDirection=getRelativeDirection(Aa,ba);const Ra=J.source_port.get(this.source_port_id);let Ia;for(const ka of(Ra==null?void 0:Ra.port_hints)??[])ka.match(/^(pin)?\d+$/)||(Ia=ka);const La=J.schematic_port.insert({schematic_component_id:(Fa=this.parent)==null?void 0:Fa.schematic_component_id,center:ba,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:Sa==null?void 0:Sa.side,pin_number:la.pinNumber,true_ccw_index:Sa==null?void 0:Sa.trueIndex,display_pin_label:Ia});this.schematic_port_id=La.schematic_port_id}_setPositionFromLayout(J){const{db:la}=this.root;this.pcb_port_id&&la.pcb_port.update(this.pcb_port_id,{x:J.x,y:J.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(J=>J.isPcbPrimitive)}},getPinNumberFromLabels=ua=>{const J=ua.find(la=>/^(pin)?\d+$/.test(la));return J?Number.parseInt(J.replace(/^pin/,"")):null};function getPortFromHints(ua){const J=getPinNumberFromLabels(ua);return J?new Port({pinNumber:J,aliases:ua.filter(la=>la.toString()!==J.toString()&&la!==`pin${J}`)}):null}var hasExplicitPinMapping=ua=>{for(const J of["leftSide","rightSide","topSide","bottomSide"])if(J in ua&&typeof ua[J]=="number")throw new Error(`A number was specified for "${J}", you probably meant to use "size" not "side"`);return"leftSide"in ua||"rightSide"in ua||"topSide"in ua||"bottomSide"in ua},getSizeOfSidesFromPortArrangement=ua=>{var ba,Sa,Ma,Ra;if(hasExplicitPinMapping(ua))return{leftSize:((ba=ua.leftSide)==null?void 0:ba.pins.length)??0,rightSize:((Sa=ua.rightSide)==null?void 0:Sa.pins.length)??0,topSize:((Ma=ua.topSide)==null?void 0:Ma.pins.length)??0,bottomSize:((Ra=ua.bottomSide)==null?void 0:Ra.pins.length)??0};const{leftSize:J=0,rightSize:la=0,topSize:xa=0,bottomSize:Aa=0}=ua;return{leftSize:J,rightSize:la,topSize:xa,bottomSize:Aa}};function isExplicitPinMappingArrangement(ua){return ua.leftSide!==void 0}var getAllDimensionsForSchematicBox=ua=>{var il,nl,sl,ll,dl,gl,_l,vl;const J=ua.portDistanceFromEdge??.4;let la=ua.schPortArrangement?getSizeOfSidesFromPortArrangement(ua.schPortArrangement):null;const xa={left:0,right:0,top:0,bottom:0};let Aa=ua.pinCount??null;if(Aa===null)if(la)Aa=la.leftSize+la.rightSize+la.topSize;else throw new Error("Could not determine pin count for the schematic box");if(Aa&&!la){const Tl=Math.floor(Aa/2);la={leftSize:Aa-Tl,rightSize:Tl,topSize:0,bottomSize:0}}la||(la={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const ba=({side:Tl,sideIndex:Ll,truePinIndex:Il})=>{var sc,Kl,Gl,kl;if(!ua.schPortArrangement||!isExplicitPinMappingArrangement(ua.schPortArrangement))return Il+1;const Fl={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[Tl],Ol=((Kl=(sc=ua.schPortArrangement)==null?void 0:sc[`${Tl}Side`])==null?void 0:Kl.direction)??Fl,ql=(kl=(Gl=ua.schPortArrangement)==null?void 0:Gl[`${Tl}Side`])==null?void 0:kl.pins;let rc=Ll;return Ol!==Fl&&(rc=ql.length-Ll-1),parsePinNumberFromLabelsOrThrow(ql[rc],ua.pinLabels)},Sa=[];let Ma=0,Ra=0;for(let Tl=0;Tl<la.leftSize;Tl++){const Ll=ba({side:"left",sideIndex:Tl,truePinIndex:Ra}),Il=((il=ua.numericSchPinStyle)==null?void 0:il[`pin${Ll}`])??((nl=ua.numericSchPinStyle)==null?void 0:nl[Ll]);Il!=null&&Il.topMargin&&(Ma+=Il.topMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"left",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.bottomMargin&&(Ma+=Il.bottomMargin),Tl===la.leftSize-1?xa.left=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Tl=0;Tl<la.bottomSize;Tl++){const Ll=ba({side:"bottom",sideIndex:Tl,truePinIndex:Ra}),Il=((sl=ua.numericSchPinStyle)==null?void 0:sl[`pin${Ll}`])??((ll=ua.numericSchPinStyle)==null?void 0:ll[Ll]);Il!=null&&Il.leftMargin&&(Ma+=Il.leftMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"bottom",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.rightMargin&&(Ma+=Il.rightMargin),Tl===la.bottomSize-1?xa.bottom=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Tl=0;Tl<la.rightSize;Tl++){const Ll=ba({side:"right",sideIndex:Tl,truePinIndex:Ra}),Il=((dl=ua.numericSchPinStyle)==null?void 0:dl[`pin${Ll}`])??((gl=ua.numericSchPinStyle)==null?void 0:gl[Ll]);Il!=null&&Il.bottomMargin&&(Ma+=Il.bottomMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"right",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.topMargin&&(Ma+=Il.topMargin),Tl===la.rightSize-1?xa.right=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Tl=0;Tl<la.topSize;Tl++){const Ll=ba({side:"top",sideIndex:Tl,truePinIndex:Ra}),Il=((_l=ua.numericSchPinStyle)==null?void 0:_l[`pin${Ll}`])??((vl=ua.numericSchPinStyle)==null?void 0:vl[Ll]);Il!=null&&Il.rightMargin&&(Ma+=Il.rightMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"top",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.leftMargin&&(Ma+=Il.leftMargin),Tl===la.topSize-1?xa.top=Ma:Ma+=ua.schPinSpacing,Ra++}let Ia=ua.schWidth;Ia||(Ia=Math.max(xa.top+ua.schPinSpacing*2,xa.bottom+ua.schPinSpacing*2));const La=ua.pinLabels?Math.max(...Object.values(ua.pinLabels).map(Tl=>Tl.length*.1)):0,Fa=La>0?1.1:0;Ia=Math.max(Ia,La+Fa);let ka=ua.schHeight;ka||(ka=Math.max(xa.left+ua.schPinSpacing*2,xa.right+ua.schPinSpacing*2));const el={left:{x:-Ia/2-J,y:xa.left/2},bottom:{x:-xa.bottom/2,y:-ka/2-J},right:{x:Ia/2+J,y:-xa.right/2},top:{x:xa.top/2,y:ka/2+J}},tl={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},rl=Sa.map(Tl=>{const{distanceFromOrthogonalEdge:Ll,side:Il}=Tl,Fl=el[Il],Ol=tl[Il];return{x:Fl.x+Ll*Ol.x,y:Fl.y+Ll*Ol.y,...Tl}});return{getPortPositionByPinNumber(Tl){const Ll=rl.find(Il=>Il.pinNumber.toString()===Tl.toString());return Ll||null},getSize(){return{width:Ia,height:ka}},getSizeIncludingPins(){return{width:Ia+(la.leftSize||la.rightSize?.4:0),height:ka+(la.topSize||la.bottomSize?.4:0)}},pinCount:Aa}},debug2$1=Debug$1("tscircuit:core:footprint"),Footprint=class extends PrimitiveComponent{get config(){return{componentName:"Footprint",zodProps:footprintProps}}doInitialPcbFootprintLayout(){var Fa,ka,el,tl,rl;if((Fa=this.root)!=null&&Fa.pcbDisabled)return;const ua=this.children.filter(il=>il.componentName==="Constraint");if(ua.length===0)return;const{isFlipped:J}=this._getPcbPrimitiveFlippedHelpers(),la=il=>J&&"left"in il&&"right"in il?{...il,left:il.right,right:il.left}:il,xa=ua.flatMap(il=>il._getAllReferencedComponents().componentsWithSelectors).map(({component:il,selector:nl,componentSelector:sl,edge:ll})=>({component:il,selector:nl,componentSelector:sl,edge:ll,bounds:il._getPcbCircuitJsonBounds()}));if(xa.some(il=>il.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function Aa(il){return xa.find(({selector:nl})=>nl===il)}const ba=new Solver,Sa={};function Ma(il){return il in Sa||(Sa[il]=new Variable(il),ba.addEditVariable(Sa[il],Strength.weak)),Sa[il]}for(const{selector:il,bounds:nl}of xa){const sl=Ma(`${il}_x`),ll=Ma(`${il}_y`);ba.suggestValue(sl,nl.center.x),ba.suggestValue(ll,nl.center.y)}for(const il of ua){const nl=il._parsedProps;if("xDist"in nl){const{xDist:sl,left:ll,right:dl,edgeToEdge:gl,centerToCenter:_l}=la(nl),vl=Ma(`${ll}_x`),Tl=Ma(`${dl}_x`),Ll=(ka=Aa(ll))==null?void 0:ka.bounds,Il=(el=Aa(dl))==null?void 0:el.bounds;if(_l){const Fl=new Expression(Tl,[-1,vl]);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.xDist,Strength.required))}else if(gl){const Fl=new Expression(Tl,-Il.width/2,[-1,vl],-Ll.width/2);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.xDist,Strength.required))}}else if("yDist"in nl){const{yDist:sl,top:ll,bottom:dl,edgeToEdge:gl,centerToCenter:_l}=nl,vl=Ma(`${ll}_y`),Tl=Ma(`${dl}_y`),Ll=(tl=Aa(ll))==null?void 0:tl.bounds,Il=(rl=Aa(dl))==null?void 0:rl.bounds;if(_l){const Fl=new Expression(vl,[-1,Tl]);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.yDist,Strength.required))}else if(gl){const Fl=new Expression(vl,Ll.height/2,[-1,Tl],-Il.height/2);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.yDist,Strength.required))}}else if("sameY"in nl){const{for:sl}=nl;if(sl.length<2)continue;const ll=sl.map(gl=>Ma(`${gl}_y`)),dl=new Expression(...ll.slice(1));ba.addConstraint(new Constraint(dl,Operator.Eq,ll[0],Strength.required))}else if("sameX"in nl){const{for:sl}=nl;if(sl.length<2)continue;const ll=sl.map(gl=>Ma(`${gl}_x`)),dl=new Expression(...ll.slice(1));ba.addConstraint(new Constraint(dl,Operator.Eq,ll[0],Strength.required))}}ba.updateVariables(),debug2$1.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(Sa).map(([il,nl])=>({var:il,val:nl.value()}))));const Ra={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:il,bounds:{width:nl,height:sl}}of xa){const ll=Ma(`${il}_x`),dl=Ma(`${il}_y`),gl=ll.value()-nl/2,_l=ll.value()+nl/2,vl=dl.value()+sl/2,Tl=dl.value()-sl/2;Ra.left=Math.min(Ra.left,gl),Ra.right=Math.max(Ra.right,_l),Ra.top=Math.max(Ra.top,vl),Ra.bottom=Math.min(Ra.bottom,Tl)}const Ia={x:-(Ra.right+Ra.left)/2,y:-(Ra.top+Ra.bottom)/2},La=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();Ia.x+=La.x,Ia.y+=La.y;for(const{component:il,selector:nl}of xa){const sl=Ma(`${nl}_x`),ll=Ma(`${nl}_y`);il._setPositionFromLayout({x:sl.value()+Ia.x,y:ll.value()+Ia.y})}}},getNumericSchPinStyle=(ua,J)=>{if(!ua)return;const la={};for(const[xa,Aa]of Object.entries(ua)){const ba=parsePinNumberFromLabelsOrThrow(xa,J);la[`pin${ba}`]={...la[`pin${ba}`],...Aa}}return la},debug3=Debug$1("tscircuit:core"),rotation3=z$3.object({x:rotation$4,y:rotation$4,z:rotation$4}),NormalComponent=class extends PrimitiveComponent{constructor(J){super(J);jp(this,"reactSubtrees",[]);jp(this,"_impliedFootprint");jp(this,"isPrimitiveContainer",!0);jp(this,"_asyncSupplierPartNumbers");jp(this,"pcb_missing_footprint_error_id");this._addChildrenFromStringFootprint(),this.initPorts()}initPorts(J={}){var Sa,Ma,Ra,Ia,La,Fa,ka,el,tl,rl,il,nl,sl,ll;if((Sa=this.root)!=null&&Sa.schematicDisabled)return;const{config:la}=this,xa=[],Aa=this._parsedProps.schPortArrangement;if(Aa&&!this._parsedProps.pinLabels){for(const _l in Aa){const vl=Aa[_l].pins;if(Array.isArray(vl))for(const Tl of vl){const Ll=parsePinNumberFromLabelsOrThrow(Tl,this._parsedProps.pinLabels);xa.push(new Port({pinNumber:Ll,aliases:((Ma=J.additionalAliases)==null?void 0:Ma[`pin${Ll}`])??[]},{originDescription:`schPortArrangement:${_l}`}))}}const dl=["left","right","top","bottom"];let gl=1;for(const _l of dl){const vl=Aa[`${_l}Size`];for(let Tl=0;Tl<vl;Tl++)xa.push(new Port({pinNumber:gl++,aliases:((Ra=J.additionalAliases)==null?void 0:Ra[`pin${gl}`])??[]},{originDescription:`schPortArrangement:${_l}`}))}}const ba=this._parsedProps.pinLabels;if(ba)for(let[dl,gl]of Object.entries(ba)){dl=dl.replace("pin","");let _l=xa.find(Ll=>Ll._parsedProps.pinNumber===Number(dl));const vl=Array.isArray(gl)?gl[0]:gl,Tl=Array.isArray(gl)?gl.slice(1):[];_l?(_l.externallyAddedAliases.push(vl,...Tl),_l.props.name=vl):(_l=new Port({pinNumber:parseInt(dl),name:vl,aliases:[...Tl,...((Ia=J.additionalAliases)==null?void 0:Ia[`pin${parseInt(dl)}`])??[]]},{originDescription:`pinLabels:pin${dl}`}),xa.push(_l))}if(la.schematicSymbolName){const dl=symbols_index_default$1[this._getSchematicSymbolNameOrThrow()];if(!dl)return;for(const gl of dl.ports){const _l=getPinNumberFromLabels(gl.labels);if(!_l)continue;const vl=getPortFromHints(gl.labels.concat(((La=J.additionalAliases)==null?void 0:La[`pin${_l}`])??[]));vl&&(vl.originDescription=`schematicSymbol:labels[0]:${gl.labels[0]}`,vl.schematicSymbolPortDef=gl,xa.push(vl))}this.addAll(xa);return}if(!this._parsedProps.schPortArrangement){const dl=this.getPortsFromFootprint();for(const gl of dl)xa.some(_l=>_l.isMatchingAnyOf(gl.getNameAndAliases()))||xa.push(gl)}for(let dl=1;dl<=this._getPinCount();dl++){if(!this._parsedProps.schPortArrangement||xa.find(_l=>_l._parsedProps.pinNumber===dl))continue;let gl=[...((ka=(Fa=this._parsedProps.schPortArrangement)==null?void 0:Fa.leftSide)==null?void 0:ka.pins)??[],...((tl=(el=this._parsedProps.schPortArrangement)==null?void 0:el.rightSide)==null?void 0:tl.pins)??[],...((il=(rl=this._parsedProps.schPortArrangement)==null?void 0:rl.topSide)==null?void 0:il.pins)??[],...((sl=(nl=this._parsedProps.schPortArrangement)==null?void 0:nl.bottomSide)==null?void 0:sl.pins)??[]].map(_l=>parsePinNumberFromLabelsOrThrow(_l,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(_l=>_l in this._parsedProps.schPortArrangement)&&(gl=Array.from({length:this._getPinCount()},(_l,vl)=>vl+1)),gl.includes(dl)&&xa.push(new Port({pinNumber:dl,aliases:((ll=J.additionalAliases)==null?void 0:ll[`pin${dl}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${dl}`}))}xa.length>0&&this.addAll(xa)}_getImpliedFootprintString(){return null}_addChildrenFromStringFootprint(){var la;let{footprint:J}=this.props;if(J??(J=(la=this._getImpliedFootprintString)==null?void 0:la.call(this)),!!J&&typeof J=="string"){const xa=fp$1.string(J).soup(),Aa=createComponentsFromSoup(xa);this.addAll(Aa)}}get portMap(){return new Proxy({},{get:(J,la)=>{const xa=this.children.find(Aa=>Aa.componentName==="Port"&&Aa.isMatchingNameOrAlias(la));if(!xa)throw new Error(`There was an issue finding the port "${la.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return xa}})}getInstanceForReactElement(J){for(const la of this.reactSubtrees)if(la.element===J)return la.component;return null}doInitialSourceRender(){const J=this.config.sourceFtype;if(!J)return;const{db:la}=this.root,{_parsedProps:xa}=this,Aa=la.source_component.insert({ftype:J,name:xa.name,manufacturer_part_number:xa.manufacturerPartNumber??xa.mfn,supplier_part_numbers:xa.supplierPartNumbers});this.source_component_id=Aa.source_component_id}doInitialSchematicComponentRender(){var xa;if((xa=this.root)!=null&&xa.schematicDisabled)return;const{schematicSymbolName:J}=this.config;if(J)return this._doInitialSchematicComponentRenderWithSymbol();if(this._getSchematicBoxDimensions())return this._doInitialSchematicComponentRenderWithSchematicBoxDimensions()}_getSchematicSymbolDisplayValue(){}_doInitialSchematicComponentRenderWithSymbol(){var Sa;if((Sa=this.root)!=null&&Sa.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getSchematicSymbolNameOrThrow(),Aa=symbols_index_default$1[xa],ba=this._getGlobalSchematicPositionBeforeLayout();if(Aa){const Ma=J.schematic_component.insert({center:ba,rotation:la.schRotation??0,size:Aa.size,source_component_id:this.source_component_id,symbol_name:xa,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=Ma.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var La,Fa,ka;if((La=this.root)!=null&&La.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getSchematicBoxDimensions(),Aa={};if(Array.isArray(la.pinLabels))la.pinLabels.forEach((el,tl)=>{Aa[String(tl+1)]=el});else for(const[el,tl]of Object.entries(la.pinLabels??{}))Aa[el]=Array.isArray(tl)?tl[0]:tl;const ba=this._getGlobalSchematicPositionBeforeLayout(),Sa=J.schematic_component.insert({center:ba,rotation:la.schRotation??0,size:xa.getSize(),port_arrangement:underscorifyPortArrangement(la.schPortArrangement),pin_spacing:la.schPinSpacing??.2,pin_styles:underscorifyPinStyles(la.schPinStyle,la.pinLabels),port_labels:Aa,source_component_id:this.source_component_id}),Ma=((Fa=la.schPortArrangement)==null?void 0:Fa.topSide)!==void 0||((ka=la.schPortArrangement)==null?void 0:ka.bottomSide)!==void 0,Ra=xa==null?void 0:xa.getSize().width,Ia=xa==null?void 0:xa.getSize().height;J.schematic_text.insert({text:la.manufacturerPartNumber??"",schematic_component_id:Sa.schematic_component_id,anchor:"left",rotation:0,position:{x:Ma?ba.x+(Ra??0)/2+.1:ba.x-(Ra??0)/2,y:Ma?ba.y+(Ia??0)/2+.35:ba.y-(Ia??0)/2-.13},color:"#006464"}),J.schematic_text.insert({text:la.name??"",schematic_component_id:Sa.schematic_component_id,anchor:"left",rotation:0,position:{x:Ma?ba.x+(Ra??0)/2+.1:ba.x-(Ra??0)/2,y:Ma?ba.y+(Ia??0)/2+.55:ba.y+(Ia??0)/2+.13},color:"#006464"}),this.schematic_component_id=Sa.schematic_component_id}doInitialPcbComponentRender(){var Sa;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getSubcircuit(),Aa=J.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:la.layer??"top",rotation:la.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:xa.subcircuit_id??void 0});if(!la.footprint&&!this.isGroup){const Ma=J.pcb_missing_footprint_error.insert({message:`No footprint found for component: ${this.getString()}`,source_component_id:`${this.source_component_id}`,error_type:"pcb_missing_footprint_error"});this.pcb_missing_footprint_error_id=Ma.pcb_missing_footprint_error_id}this.pcb_component_id=Aa.pcb_component_id;const ba=this.getSubcircuit()._getPcbManualPlacementForComponent(this);this.props.pcbX!==void 0&&this.props.pcbY!==void 0&&ba&&this.renderError({type:"pcb_manual_edit_conflict_error",message:`${this.getString()} has both manual placement and explicit coordinates. pcbX and pcbY will be used. Remove pcbX/pcbY or clear the manual placement.`,pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id})}doInitialPcbComponentSizeCalculation(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled||!this.pcb_component_id)return;const{db:J}=this.root,la=getBoundsOfPcbComponents(this.children);if(la.width===0||la.height===0)return;const xa={x:(la.minX+la.maxX)/2,y:(la.minY+la.maxY)/2};J.pcb_component.update(this.pcb_component_id,{center:xa,width:la.width,height:la.height})}_renderReactSubtree(J){return{element:J,component:createInstanceFromReactElement(J)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){if(reactExports.isValidElement(this.props.footprint)){if(this.reactSubtrees.some(la=>la.element===this.props.footprint))return;const J=this._renderReactSubtree(this.props.footprint);this.reactSubtrees.push(J),this.add(J.component)}}_hasExistingPortExactly(J){return this.children.filter(xa=>xa.componentName==="Port").some(xa=>{const Aa=J.getNameAndAliases(),ba=xa.getNameAndAliases();return Aa.length===ba.length&&Aa.every(Sa=>ba.includes(Sa))})}add(J){let la;if(reactExports.isValidElement(J)){const xa=this._renderReactSubtree(J);this.reactSubtrees.push(xa),la=xa.component}else la=J;if(la.componentName==="Port"){if(this._hasExistingPortExactly(la))return;const Aa=this.children.filter(ba=>ba.componentName==="Port").find(ba=>ba.isMatchingAnyOf(la.getNameAndAliases()));Aa&&debug3(`Similar ports added. Port 1: ${Aa}, Port 2: ${la}`)}super.add(la)}getPortsFromFootprint(){let{footprint:J}=this.props;if((!J||reactExports.isValidElement(J))&&(J=this.children.find(xa=>xa.componentName==="Footprint")),typeof J=="string"){const xa=fp$1.string(J).soup(),Aa=[];for(const ba of xa)if("port_hints"in ba&&ba.port_hints){const Sa=getPortFromHints(ba.port_hints);if(!Sa)continue;Sa.originDescription=`footprint:string:${J}:port_hints[0]:${ba.port_hints[0]}`,Aa.push(Sa)}return Aa}if(!reactExports.isValidElement(J)&&J&&J.componentName==="Footprint"){const xa=J;let Aa=1;const ba=[];for(const Sa of xa.children){if(!Sa.props.portHints)continue;let Ma=Sa.props.portHints;Ma.some(La=>La.startsWith("pin"))||(Ma=[...Ma,`pin${Aa}`]),Aa++;const Ia=getPortFromHints(Ma);Ia&&(Ia.originDescription=`footprint:${J}`,ba.push(Ia))}return ba}const la=[];if(!J){for(const xa of this.children)if(xa.props.portHints&&xa.isPcbPrimitive){const Aa=getPortFromHints(xa.props.portHints);Aa&&la.push(Aa)}}return la}getPortsFromSchematicSymbol(){var Aa;if((Aa=this.root)!=null&&Aa.schematicDisabled)return[];const{config:J}=this;if(!J.schematicSymbolName)return[];const la=symbols_index_default$1[J.schematicSymbolName];if(!la)return[];const xa=[];for(const ba of la.ports){const Sa=getPortFromHints(ba.labels);Sa&&(Sa.schematicSymbolPortDef=ba,xa.push(Sa))}return xa}_createNetsFromProps(J){createNetsFromProps(this,J)}doInitialPortDiscovery(){const{_parsedProps:J}=this;let la=[];J.schPortArrangement||(la=[...this.getPortsFromFootprint(),...this.getPortsFromSchematicSymbol()]);const xa=this.children.filter(Aa=>Aa.componentName==="Port");for(const Aa of la){const ba=xa.find(Sa=>Sa.isMatchingAnyOf(Aa.getNameAndAliases()));if(ba){!ba.schematicSymbolPortDef&&Aa.schematicSymbolPortDef&&(ba.schematicSymbolPortDef=Aa.schematicSymbolPortDef);continue}xa.push(Aa),this.add(Aa)}}_getPcbCircuitJsonBounds(){const{db:J}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const la=J.pcb_component.get(this.pcb_component_id);return{center:{x:la.center.x,y:la.center.y},bounds:{left:la.center.x-la.width/2,top:la.center.y-la.height/2,right:la.center.x+la.width/2,bottom:la.center.y+la.height/2},width:la.width,height:la.height}}_getPinCount(){const J=this._getSchematicPortArrangement();if(J){if(!isExplicitPinMappingArrangement(J))return(J.leftSize??J.leftPinCount??0)+(J.rightSize??J.rightPinCount??0)+(J.topSize??J.topPinCount??0)+(J.bottomSize??J.bottomPinCount??0);const{leftSide:xa,rightSide:Aa,topSide:ba,bottomSide:Sa}=J;return Math.max(...(xa==null?void 0:xa.pins)??[],...(Aa==null?void 0:Aa.pins)??[],...(ba==null?void 0:ba.pins)??[],...(Sa==null?void 0:Sa.pins)??[])}return this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:J}=this,la=this._getPinCount(),xa=J.schPinSpacing??.2;return getAllDimensionsForSchematicBox({schWidth:J.schWidth,schHeight:J.schHeight,schPinSpacing:xa,numericSchPinStyle:getNumericSchPinStyle(J.schPinStyle,J.pinLabels),pinCount:la,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:J.pinLabels})}doInitialCadModelRender(){var Ia;const{db:J}=this.root,{boardThickness:la=0}=((Ia=this.root)==null?void 0:Ia._getBoard())??{},xa=this._parsedProps.cadModel;if(!this.pcb_component_id||!xa&&!this.props.footprint)return;const Aa=this._getPcbCircuitJsonBounds(),ba=J.pcb_component.get(this.pcb_component_id);if(typeof xa=="string")throw new Error("String cadModel not yet implemented");const Sa=rotation3.parse({x:0,y:0,z:typeof(xa==null?void 0:xa.rotationOffset)=="number"?xa.rotationOffset:0,...typeof(xa==null?void 0:xa.rotationOffset)=="object"?xa.rotationOffset??{}:{}}),Ma=point3$3.parse({x:0,y:0,z:0,...typeof(xa==null?void 0:xa.positionOffset)=="object"?xa.positionOffset:{}}),Ra=this.props.layer==="bottom"?"bottom":"top";J.cad_component.insert({position:{x:Aa.center.x+Ma.x,y:Aa.center.y+Ma.y,z:(Ra==="bottom"?-la/2:la/2)+Ma.z},rotation:{x:Sa.x,y:(Ra==="top"?0:180)+Sa.y,z:((ba==null?void 0:ba.rotation)??0)+(Ra==="bottom"?180:0)+Sa.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(xa??{})?this._addCachebustToModelUrl(xa.stlUrl):void 0,model_obj_url:"objUrl"in(xa??{})?this._addCachebustToModelUrl(xa.objUrl):void 0,model_jscad:"jscad"in(xa??{})?xa.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!xa?this.props.footprint:void 0})}_addCachebustToModelUrl(J){var xa;if(!J||!J.includes("modelcdn.tscircuit.com"))return J;const la=((xa=this.root)==null?void 0:xa.getClientOrigin())??"";return`${J}${J.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(la)}`}doInitialPartsEngineRender(){const{partsEngine:J}=this.getSubcircuit()._parsedProps;if(!J)return;const{db:la}=this.root,xa=la.source_component.get(this.source_component_id);if(!xa||xa.supplier_part_numbers)return;let Aa;this.props.footprint&&typeof this.props.footprint=="string"&&(Aa=this.props.footprint);const ba=J.findPart({sourceComponent:xa,footprinterString:Aa});if(!(ba instanceof Promise)){la.source_component.update(this.source_component_id,{supplier_part_numbers:ba});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await ba,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){const{db:J}=this.root,la=J.source_component.get(this.source_component_id);if(la&&!la.supplier_part_numbers&&this._asyncSupplierPartNumbers){J.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}},getSimpleRouteJsonFromTracesAndDb=({db:ua,traces:J,minTraceWidth:la=.1})=>{const Aa=getObstaclesFromSoup([...ua.pcb_component.list(),...ua.pcb_smtpad.list(),...ua.pcb_plated_hole.list()]).flatMap(Ma=>[{x:Ma.center.x-Ma.width/2,y:Ma.center.y-Ma.height/2},{x:Ma.center.x+Ma.width/2,y:Ma.center.y+Ma.height/2}]),ba={minX:Math.min(...Aa.map(Ma=>Ma.x))-1,maxX:Math.max(...Aa.map(Ma=>Ma.x))+1,minY:Math.min(...Aa.map(Ma=>Ma.y))-1,maxY:Math.max(...Aa.map(Ma=>Ma.y))+1},Sa=J.map(Ma=>{const Ra=Ma._findConnectedPorts();return!Ra.allPortsFound||Ra.ports.length<2?null:{name:Ma.source_trace_id??"",pointsToConnect:Ra.ports.map(Ia=>{const La=Ia._getGlobalPcbPositionBeforeLayout();return{x:La.x,y:La.y,layer:Ia.getAvailablePcbLayers()[0]??"top"}})}}).filter(Ma=>Ma!==null);return{bounds:ba,obstacles:[],connections:Sa,layerCount:2,minTraceWidth:la}},TraceHint=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:traceHintProps}}doInitialPortMatching(){this.root;const{_parsedProps:J,parent:la}=this;if(!la)return;if(la.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!la)throw new Error("TraceHint has no parent");if(!J.for){this.renderError(`TraceHint has no for property (${this})`);return}const xa=la.selectOne(J.for,{type:"port"});xa||this.renderError(`${this} could not find port for selector "${J.for}"`),this.matchedPort=xa,xa.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:J}=this,la=J.offset?[J.offset]:J.offsets;if(!la)return[];const xa=this._computePcbGlobalTransformBeforeLayout();return la.map(Aa=>({...applyToPoint(xa,Aa),via:Aa.via,to_layer:Aa.to_layer,trace_width:Aa.trace_width}))}doInitialPcbTraceHintRender(){var la,xa,Aa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_trace_hint.insert({pcb_component_id:(xa=this.matchedPort)==null?void 0:xa.pcb_component_id,pcb_port_id:(Aa=this.matchedPort)==null?void 0:Aa.pcb_port_id,route:this.getPcbRouteHints()})}},Group$2=class extends NormalComponent{constructor(){super(...arguments);jp(this,"pcb_group_id",null);jp(this,"subcircuit_id",null);jp(this,"_hasStartedAsyncAutorouting",!1);jp(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:groupProps,componentName:"Group"}}doInitialSourceRender(){const{db:la}=this.root,xa=la.source_group.insert({name:this._parsedProps.name,is_subcircuit:this.isSubcircuit});this.subcircuit_id=`subcircuit_${xa.source_group_id}`,this.source_group_id=xa.source_group_id,la.source_group.update(xa.source_group_id,{subcircuit_id:this.subcircuit_id})}doInitialSourceParentAttachment(){var Aa,ba,Sa;const{db:la}=this.root;if(!this.isSubcircuit)return;const xa=(Sa=(ba=(Aa=this.parent)==null?void 0:Aa.getSubcircuit)==null?void 0:ba.call(Aa))==null?void 0:Sa.subcircuit_id;xa&&la.source_group.update(this.source_group_id,{parent_subcircuit_id:xa})}doInitialPcbComponentRender(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:la}=this.root,xa=la.pcb_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this._parsedProps.name,center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,pcb_component_ids:[],source_group_id:this.source_group_id});this.pcb_group_id=xa.pcb_group_id}doInitialCreateTraceHintsFromProps(){var ba;const{_parsedProps:la}=this;this.root;const xa=la;if(!this.isSubcircuit)return;const Aa=(ba=xa.layout)==null?void 0:ba.manual_trace_hints;if(Aa)for(const Sa of Aa)this.add(new TraceHint({for:Sa.pcb_port_selector,offsets:Sa.offsets}))}_getSimpleRouteJsonFromPcbTraces(){const la=this.selectAll("trace"),{db:xa}=this.root;return getSimpleRouteJsonFromTracesAndDb({db:xa,traces:la,minTraceWidth:this._parsedProps.minTraceWidth??.1})}doInitialSourceAddConnectivityMapKey(){if(!this.isSubcircuit)return;const{db:la}=this.root,xa=this.selectAll("trace"),Aa=new ConnectivityMap$1({});Aa.addConnections(xa.map(ba=>{const Sa=la.source_trace.get(ba.source_trace_id);return Sa?[Sa.source_trace_id,...Sa.connected_source_port_ids,...Sa.connected_source_net_ids]:null}).filter(ba=>ba!==null));for(const ba of xa){if(!ba.source_trace_id)continue;const Sa=Aa.getNetConnectedToId(ba.source_trace_id);if(!Sa)continue;const{name:Ma}=this._parsedProps;ba.subcircuit_connectivity_map_key=`${Ma??`unnamedsubcircuit${this._renderId}`}_${Sa}`,la.source_trace.update(ba.source_trace_id,{subcircuit_connectivity_map_key:ba.subcircuit_connectivity_map_key})}}_areChildSubcircuitsRouted(){const la=this.selectAll("group").filter(xa=>xa.isSubcircuit);for(const xa of la)if(xa._shouldRouteAsync()&&!xa._asyncAutoroutingResult)return!1;return!0}_shouldRouteAsync(){const la=this._parsedProps;return la.autorouter==="auto-local"||la.autorouter==="auto-cloud"?!0:la.autorouter==="sequential-trace"?!1:typeof la.autorouter=="object"}async _runEffectMakeHttpAutoroutingRequest(){var Ia,La,Fa,ka;const la=Debug$1("tscircuit:core:_runEffectMakeHttpAutoroutingRequest"),xa=this._parsedProps,Aa=((Ia=xa.autorouter)==null?void 0:Ia.serverUrl)??"https://registry-api.tscircuit.com",ba=((La=xa.autorouter)==null?void 0:La.serverMode)??"job",Sa=(el,tl)=>(la("fetching",el),fetch(el,tl)),Ma=this.root.db.toArray().filter(el=>el.type.startsWith("source_")||el.type.startsWith("pcb_"));if(ba==="solve-endpoint"){if(((Fa=this.props.autorouter)==null?void 0:Fa.inputFormat)==="simplified"){const{autorouting_result:tl}=await Sa(`${Aa}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:this._getSimpleRouteJsonFromPcbTraces()}),headers:{"Content-Type":"application/json"}}).then(rl=>rl.json());this._asyncAutoroutingResult=tl,this._markDirty("PcbTraceRender");return}const{autorouting_result:el}=await Sa(`${Aa}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:Ma,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(tl=>tl.json());this._asyncAutoroutingResult=el,this._markDirty("PcbTraceRender");return}const{autorouting_job:Ra}=await Sa(`${Aa}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:Ma,provider:"freerouting",autostart:!0,display_name:(ka=this.root)==null?void 0:ka.name,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(el=>el.json());for(;;){const{autorouting_job:el}=await Sa(`${Aa}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:Ra.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(tl=>tl.json());if(el.is_finished){const{autorouting_job_output:tl}=await Sa(`${Aa}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:Ra.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(rl=>rl.json());this._asyncAutoroutingResult={output_pcb_traces:tl.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(el.has_error)throw new Error(`Autorouting job failed: ${JSON.stringify(el.error)}`);await new Promise(tl=>setTimeout(tl,100))}}_startAsyncAutorouting(){this._hasStartedAsyncAutorouting=!0,this._queueAsyncEffect("make-http-autorouting-request",async()=>this._runEffectMakeHttpAutoroutingRequest())}doInitialPcbTraceRender(){var xa;const la=Debug$1("tscircuit:core:doInitialPcbTraceRender");if(!((xa=this.root)!=null&&xa.pcbDisabled)&&!this._shouldUseTraceByTraceRouting()){if(!this._areChildSubcircuitsRouted()){la(`[${this.getString()}] child subcircuits are not routed, skipping async autorouting until subcircuits routed`);return}la(`[${this.getString()}] no child subcircuits to wait for, initiating async routing`),this._startAsyncAutorouting()}}updatePcbTraceRender(){const la=Debug$1("tscircuit:core:updatePcbTraceRender");if(this._shouldRouteAsync()&&!this._hasStartedAsyncAutorouting){this._areChildSubcircuitsRouted()&&(la(`[${this.getString()}] child subcircuits are now routed, starting async autorouting`),this._startAsyncAutorouting());return}if(this._asyncAutoroutingResult&&!this._shouldUseTraceByTraceRouting()){if(this.root,this._asyncAutoroutingResult.output_simple_route_json){this._updatePcbTraceRenderFromSimpleRouteJson();return}if(this._asyncAutoroutingResult.output_pcb_traces){this._updatePcbTraceRenderFromPcbTraces();return}}}_updatePcbTraceRenderFromSimpleRouteJson(){const{db:la}=this.root,{traces:xa}=this._asyncAutoroutingResult.output_simple_route_json;if(xa){this.selectAll("trace");for(const Aa of xa)la.pcb_trace.insert({route:Aa.route})}}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:la}=this._asyncAutoroutingResult;if(!la)return;const{db:xa}=this.root;for(const Aa of la)xa.pcb_trace.insert(Aa)}doInitialSchematicLayout(){if(!this.isSubcircuit||!this._parsedProps.schAutoLayoutEnabled)return;const{db:xa}=this.root,Aa=this.getDescendants(),ba=[];for(const Ra of Aa)if("schematic_component_id"in Ra){const Ia=xa.schematic_component.get(Ra.schematic_component_id);if(Ia){const La=xa.schematic_port.list().filter(Fa=>Fa.schematic_component_id===Ia.schematic_component_id);ba.push(...La)}}const Sa=convertSoupToScene(xa.toArray()),Ma=ascendingCentralLrBug1(Sa);mutateSoupForScene(xa.toArray(),Ma)}_shouldUseTraceByTraceRouting(){const la=this._parsedProps;return la.autorouter==="auto-local"||la.autorouter==="sequential-trace"?!0:!la.autorouter}},Board=class extends Group$2{constructor(){super(...arguments);jp(this,"pcb_board_id",null)}get isSubcircuit(){return!0}get config(){return{componentName:"Board",zodProps:boardProps}}get boardThickness(){return 1.4}get allLayers(){return["top","bottom","inner1","inner2"]}doInitialPcbComponentRender(){var Aa,ba;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this;if(!la.width||!la.height)throw new Error("Board width and height or an outline are required");const xa=J.pcb_board.insert({center:{x:(la.pcbX??0)+(la.outlineOffsetX??0),y:(la.pcbY??0)+(la.outlineOffsetY??0)},thickness:this.boardThickness,num_layers:this.allLayers.length,width:la.width,height:la.height,outline:(ba=la.outline)==null?void 0:ba.map(Sa=>({x:Sa.x+(la.outlineOffsetX??0),y:Sa.y+(la.outlineOffsetY??0)}))});this.pcb_board_id=xa.pcb_board_id}removePcbComponentRender(){const{db:J}=this.root;this.pcb_board_id&&(J.pcb_board.delete(this.pcb_board_id),this.pcb_board_id=null)}_computePcbGlobalTransformBeforeLayout(){return identity$3()}},stringProxy=new Proxy({},{get:(ua,J)=>J}),FTYPE=stringProxy,DirectLineRouter=class{constructor({input:ua}){jp(this,"input");this.input=ua}solveAndMapToTraces(){const ua=[];for(const J of this.input.connections){if(J.pointsToConnect.length!==2)continue;const[la,xa]=J.pointsToConnect,Aa={type:"pcb_trace",pcb_trace_id:"",route:[{route_type:"wire",x:la.x,y:la.y,layer:"top",width:.1},{route_type:"wire",x:xa.x,y:xa.y,layer:"top",width:.1}]};ua.push(Aa)}return ua}},computeObstacleBounds=ua=>{const J=Math.min(...ua.map(ba=>ba.center.x)),la=Math.max(...ua.map(ba=>ba.center.x)),xa=Math.min(...ua.map(ba=>ba.center.y)),Aa=Math.max(...ua.map(ba=>ba.center.y));return{minX:J,maxX:la,minY:xa,maxY:Aa}},LAYER_SELECTION_PREFERENCE=["top","bottom","inner1","inner2"],findPossibleTraceLayerCombinations=(ua,J=[])=>{var Ma;const la=[];if(J.length===0){const Ra=ua[0].layers;for(const Ia of Ra)la.push(...findPossibleTraceLayerCombinations(ua.slice(1),[Ia]));return la}if(ua.length===0)return[];const xa=ua[0],Aa=xa.via||xa.optional_via,ba=J[J.length-1];if(ua.length===1){const Ra=xa;return Ra.layers&&Aa?Ra.layers.map(Ia=>({layer_path:[...J,Ia]})):(Ma=Ra.layers)!=null&&Ma.includes(ba)?[{layer_path:[...J,ba]}]:[]}if(!Aa)return xa.layers&&!xa.layers.includes(ba)?[]:findPossibleTraceLayerCombinations(ua.slice(1),J.concat([ba]));const Sa=(xa.optional_via?LAYER_SELECTION_PREFERENCE:LAYER_SELECTION_PREFERENCE.filter(Ra=>Ra!==ba)).filter(Ra=>{var Ia;return!xa.layers||((Ia=xa.layers)==null?void 0:Ia.includes(Ra))});for(const Ra of Sa)la.push(...findPossibleTraceLayerCombinations(ua.slice(1),J.concat(Ra)));return la};function getDominantDirection(ua){const J={x:ua.to.x-ua.from.x,y:ua.to.y-ua.from.y},la=Math.abs(J.x),xa=Math.abs(J.y);return la>xa?J.x>0?"right":"left":J.y>0?"down":"up"}function pdist(ua,J){return Math.hypot(ua.x-J.x,ua.y-J.y)}var mergeRoutes=ua=>{if(ua.length===1)return ua[0];if(ua.some(Ra=>Ra.length===0))throw new Error("Cannot merge routes with zero length");const J=[],la=ua[0][0],xa=ua[0][ua[0].length-1],Aa=ua[1][0],ba=ua[1][ua[1].length-1],Sa=Math.min(pdist(la,Aa),pdist(la,ba)),Ma=Math.min(pdist(xa,Aa),pdist(xa,ba));Sa<Ma?J.push(...ua[0].reverse()):J.push(...ua[0]);for(let Ra=1;Ra<ua.length;Ra++){const Ia=J[J.length-1],La=ua[Ra],Fa=La[0],ka=La[La.length-1],el=pdist(Ia,Fa),tl=pdist(Ia,ka);el<tl?J.push(...La):J.push(...La.reverse())}for(let Ra=1;Ra<J.length-1;Ra++){const Ia=J[Ra-1],La=J[Ra];Ia.route_type==="wire"&&La.route_type==="wire"&&Ia.layer!==La.layer&&J.splice(Ra,0,{x:Ia.x,y:Ia.y,from_layer:Ia.layer,to_layer:La.layer,route_type:"via"})}return J};function getTraceLength(ua){let J=0;for(let la=0;la<ua.length;la++){const xa=ua[la];if(xa.route_type==="wire"){const Aa=ua[la+1];if(Aa){const ba=Aa.x-xa.x,Sa=Aa.y-xa.y;J+=Math.sqrt(ba*ba+Sa*Sa)}}else xa.route_type==="via"&&(J+=1.6)}return J}var getDistance=(ua,J)=>{const la="_getGlobalPcbPositionBeforeLayout"in ua?ua._getGlobalPcbPositionBeforeLayout():ua,xa="_getGlobalPcbPositionBeforeLayout"in J?J._getGlobalPcbPositionBeforeLayout():J;return Math.sqrt((la.x-xa.x)**2+(la.y-xa.y)**2)};function getClosest(ua,J){if(J.length===0)throw new Error("No candidates given to getClosest method");let la=J[0],xa=1/0;for(const Aa of J){const ba=getDistance(ua,Aa);ba<xa&&(la=Aa,xa=ba)}return la}var getEnteringEdgeFromDirection=ua=>({up:"bottom",down:"top",left:"right",right:"left"})[ua]??null,getStubEdges=({firstEdge:ua,firstEdgePort:J,firstDominantDirection:la,lastEdge:xa,lastEdgePort:Aa,lastDominantDirection:ba})=>{if(ua&&J)return getStubEdges({lastEdge:{from:ua.to,to:ua.from},lastEdgePort:J,lastDominantDirection:la}).reverse().map(Ma=>({from:Ma.to,to:Ma.from}));let Sa=[];if(xa&&Aa){const Ma={x:xa.to.x,y:xa.to.y};ba==="left"||ba==="right"?(Ma.x=Aa.position.x,Sa.push({from:xa.to,to:{...Ma}}),Sa.push({from:Ma,to:{...Aa.position}})):(Ma.y=Aa.position.y,Sa.push({from:xa.to,to:{...Ma}}),Sa.push({from:Ma,to:{...Aa.position}}))}return Sa=Sa.filter(Ma=>distance$3(Ma.from,Ma.to)>.01),Sa};function tryNow(ua){try{return[ua(),null]}catch(J){return[null,J]}}var getOtherSchematicTraces=({db:ua,source_trace_id:J,sameNetOnly:la,differentNetOnly:xa})=>{!la&&!xa&&(xa=!0);const Aa=ua.source_trace.get(J),ba=[];for(const Sa of ua.schematic_trace.list()){if(Sa.source_trace_id===J)continue;const Ma=ua.source_trace.get(Sa.source_trace_id),Ra=(Ma==null?void 0:Ma.subcircuit_connectivity_map_key)===Aa.subcircuit_connectivity_map_key;xa&&Ra||la&&!Ra||ba.push(Sa)}return ba},createSchematicTraceCrossingSegments=({edges:ua,otherEdges:J})=>{const la=[...ua];for(let xa=0;xa<la.length;xa++){if(xa>2e3)throw new Error("Over 2000 iterations spent inside createSchematicTraceCrossingSegments, you have triggered an infinite loop, please report this!");const Aa=la[xa],ba=Math.abs(Aa.from.x-Aa.to.x)<.01?"vertical":Aa.from.y===Aa.to.y?"horizontal":"not-orthogonal";if(ba==="not-orthogonal")continue;const Sa=[];for(const rl of J){const il=rl.from.x===rl.to.x?"vertical":rl.from.y===rl.to.y?"horizontal":"not-orthogonal";if(il==="not-orthogonal"||ba===il)continue;if(doesLineIntersectLine([Aa.from,Aa.to],[rl.from,rl.to],{lineThickness:.01})){const sl=ba==="vertical"?Aa.from.x:rl.from.x,ll=ba==="vertical"?rl.from.y:Aa.from.y,dl={x:sl,y:ll};Sa.push({otherEdge:rl,crossingPoint:dl,distanceFromEdgeFrom:distance$3(Aa.from,dl)})}}if(Sa.length===0)continue;let Ma=Sa[0];for(const rl of Sa)rl.distanceFromEdgeFrom<Ma.distanceFromEdgeFrom&&(Ma=rl);const Ra=Ma.crossingPoint,Ia=.075;if(Ra.x===Aa.from.x&&Ra.y===Aa.from.y)continue;const La=getUnitVectorFromPointAToB(Aa.from,Ra),Fa={x:Ra.x-La.x*Ia/2,y:Ra.y-La.y*Ia/2},ka={x:Ra.x+La.x*Ia/2,y:Ra.y+La.y*Ia/2},el=distance$3(ka,Aa.to)<Ia,tl=[{from:Aa.from,to:Fa},{from:Fa,to:ka,is_crossing:!0},{from:ka,to:Aa.to}];la.splice(xa,1,...tl),xa+=tl.length-2,el&&xa++}return la},getIntersectionPoint=(ua,J)=>{if(ua.from.x===ua.to.x&&J.from.x===J.to.x)return null;if(ua.from.x===ua.to.x){const La=ua.from.x,Fa=(J.to.y-J.from.y)/(J.to.x-J.from.x),ka=J.from.y-Fa*J.from.x,el=Fa*La+ka;return La>=Math.min(J.from.x,J.to.x)&&La<=Math.max(J.from.x,J.to.x)&&el>=Math.min(J.from.y,J.to.y)&&el<=Math.max(J.from.y,J.to.y)?{x:La,y:el}:null}if(J.from.x===J.to.x){const La=J.from.x,Fa=(ua.to.y-ua.from.y)/(ua.to.x-ua.from.x),ka=ua.from.y-Fa*ua.from.x,el=Fa*La+ka;return La>=Math.min(ua.from.x,ua.to.x)&&La<=Math.max(ua.from.x,ua.to.x)&&el>=Math.min(ua.from.y,ua.to.y)&&el<=Math.max(ua.from.y,ua.to.y)?{x:La,y:el}:null}const la=(ua.to.y-ua.from.y)/(ua.to.x-ua.from.x),xa=ua.from.y-la*ua.from.x,Aa=(J.to.y-J.from.y)/(J.to.x-J.from.x),ba=J.from.y-Aa*J.from.x;if(la===Aa)return null;const Sa=(ba-xa)/(la-Aa),Ma=la*Sa+xa,Ra=Sa>=Math.min(ua.from.x,ua.to.x)&&Sa<=Math.max(ua.from.x,ua.to.x)&&Ma>=Math.min(ua.from.y,ua.to.y)&&Ma<=Math.max(ua.from.y,ua.to.y),Ia=Sa>=Math.min(J.from.x,J.to.x)&&Sa<=Math.max(J.from.x,J.to.x)&&Ma>=Math.min(J.from.y,J.to.y)&&Ma<=Math.max(J.from.y,J.to.y);return Ra&&Ia?{x:Sa,y:Ma}:null},createSchematicTraceJunctions=({edges:ua,db:J,source_trace_id:la})=>{const xa=getOtherSchematicTraces({db:J,source_trace_id:la,sameNetOnly:!0}).flatMap(Aa=>Aa.edges);for(const Aa of ua)for(const ba of xa){const Sa=getIntersectionPoint(Aa,ba);if(Sa)return`${Sa.x}${Sa.y}`,[{x:Sa.x,y:Sa.y}]}return[]},pushEdgesOfSchematicTraceToPreventOverlap=({edges:ua,db:J,source_trace_id:la})=>{J.source_trace.get(la);const xa=getOtherSchematicTraces({db:J,source_trace_id:la,differentNetOnly:!0}).flatMap(ba=>ba.edges),Aa=ba=>{const{from:Sa,to:Ma}=ba;return Sa.x===Ma.x?"vertical":"horizontal"};for(const ba of ua){const Sa=Aa(ba),Ma=()=>xa.find(Ia=>Aa(Ia)===Sa&&doesLineIntersectLine([ba.from,ba.to],[Ia.from,Ia.to],{lineThickness:.05}));let Ra=Ma();for(;Ra;)Sa==="horizontal"?(ba.from.y+=.1,ba.to.y+=.1):(ba.from.x+=.1,ba.to.x+=.1),Ra=Ma()}},countComplexElements=(ua,J)=>{let la=0;la+=ua.length??0,la+=J.filter(xa=>xa.is_crossing).length;for(let xa=1;xa<J.length;xa++){const Aa=J[xa-1],ba=J[xa],Sa=Math.abs(Aa.from.x-Aa.to.x)<.01,Ma=Math.abs(ba.from.x-ba.to.x)<.01;Sa!==Ma&&la++}return la},calculateOffsets=ua=>{var Ma,Ra;const J={left:{x:-.5,y:0},up:{x:.5,y:.5},right:{x:.5,y:0},down:{x:0,y:-.5}}[ua.facingDirection],la=(Ma=ua.parent)!=null&&Ma.config.shouldRenderAsSchematicBox?3:1,xa=(Ra=ua.parent)!=null&&Ra.config.shouldRenderAsSchematicBox&&(ua.facingDirection==="left"||ua.facingDirection==="right")?3:1,Aa=J.x,ba=J.y,Sa=ua.facingDirection==="up"?.5:0;return{schBoxVertOffset:la,schBoxHorzOffset:xa,horzPortDirection:Aa,vertPortDirectionOffset:ba,handleUp:Sa}},createDownwardNetLabelGroundSymbol=({fromPort:ua,toPort:J,fromAnchorPos:la,toAnchorPos:xa,schDisplayLabel:Aa,source_trace_id:ba},{db:Sa})=>{const Ma=calculateOffsets(ua);Sa.schematic_net_label.insert({anchor_side:"top",center:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset},source_net_id:ua.source_port_id,text:Aa,anchor_position:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset},symbol_name:"ground_horz"}),Sa.schematic_trace.insert({edges:[{from:{x:la.x,y:la.y},to:{x:la.x,y:la.y+Ma.handleUp*Ma.schBoxVertOffset}},{from:{x:la.x,y:la.y},to:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset}}],junctions:[{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset}],source_trace_id:ba});const Ra=calculateOffsets(J);Sa.schematic_net_label.insert({anchor_side:"top",center:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset},source_net_id:J.source_port_id,text:Aa,anchor_position:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset},symbol_name:"ground_horz"});const Ia=J.facingDirection==="up"?.5:0;Sa.schematic_trace.insert({edges:[{from:{x:xa.x,y:xa.y},to:{x:xa.x,y:xa.y+Ia*Ra.schBoxVertOffset}},{from:{x:xa.x,y:xa.y},to:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset}}],junctions:[{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset}],source_trace_id:ba})},getMaxLengthFromConnectedCapacitors=(ua,{db:J})=>{const la=ua.map(xa=>{const Aa=J.source_port.get(xa.source_port_id);if(!(Aa!=null&&Aa.source_component_id))return null;const ba=J.source_component.get(Aa.source_component_id);return(ba==null?void 0:ba.ftype)==="simple_capacitor"?ba.max_decoupling_trace_length:null}).filter(xa=>xa!==null);if(la.length!==0)return Math.min(...la)};function getTraceDisplayName({ports:ua,nets:J}){var la,xa,Aa;if(ua.length>=2)return`${(la=ua[0])==null?void 0:la.selector} to ${(xa=ua[1])==null?void 0:xa.selector}`;if(ua.length===1&&J.length===1)return`${(Aa=ua[0])==null?void 0:Aa.selector} to net.${J[0]._parsedProps.name}`}var getSchematicObstaclesForTrace=ua=>{var ba;const J=ua.root.db,la=ua._findConnectedPorts().ports??[],xa=new Set(la.map(Sa=>Sa.schematic_port_id)),Aa=[];for(const Sa of J.toArray()){if(Sa.type==="schematic_component"){const Ma=!!Sa.symbol_name,Ra=Sa.size.width>Sa.size.height?"horz":"vert";Aa.push({type:"rect",layers:["top"],center:Sa.center,width:Sa.size.width+(Ma&&Ra==="horz"?-.5:0),height:Sa.size.height+(Ma&&Ra==="vert"?-.5:0),connectedTo:[]})}if(Sa.type==="schematic_port"){if(xa.has(Sa.schematic_port_id))continue;const Ma=Sa.facing_direction?getUnitVectorFromDirection(Sa.facing_direction):{x:0,y:0};Aa.push({type:"rect",layers:["top"],center:{x:Sa.center.x-Ma.x*.1,y:Sa.center.y-Ma.y*.1},width:.1+Math.abs(Ma.x)*.3,height:.1+Math.abs(Ma.y)*.3,connectedTo:[]})}Sa.type==="schematic_text"&&Aa.push({type:"rect",layers:["top"],center:Sa.position,width:(((ba=Sa.text)==null?void 0:ba.length)??0)*.1,height:.2,connectedTo:[]}),Sa.type==="schematic_box"&&Aa.push({type:"rect",layers:["top"],center:{x:Sa.x,y:Sa.y},width:Sa.width,height:Sa.height,connectedTo:[]})}return Aa},portToObjective=ua=>({...ua._getGlobalPcbPositionAfterLayout(),layers:ua.getAvailablePcbLayers()}),Trace2=class extends PrimitiveComponent{constructor(J){super(J);jp(this,"source_trace_id",null);jp(this,"pcb_trace_id",null);jp(this,"schematic_trace_id",null);jp(this,"_portsRoutedOnPcb");jp(this,"subcircuit_connectivity_map_key",null);this._portsRoutedOnPcb=[]}get config(){return{zodProps:traceProps,componentName:"Trace"}}_getTracePortOrNetSelectorListFromProps(){return"from"in this.props&&"to"in this.props?[typeof this.props.from=="string"?this.props.from:this.props.from.getPortSelector(),typeof this.props.to=="string"?this.props.to:this.props.to.getPortSelector()]:"path"in this.props?this.props.path.map(J=>typeof J=="string"?J:J.getPortSelector()):[]}getTracePortPathSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(J=>!J.includes("net."))}getTracePathNetSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(J=>J.includes("net."))}_findConnectedPorts(){this.root;const{_parsedProps:J,parent:la}=this;if(!la)throw new Error("Trace has no parent");const Aa=this.getTracePortPathSelectors().map(ba=>({selector:ba,port:this.getSubcircuit().selectOne(ba,{type:"port"})??null}));for(const{selector:ba,port:Sa}of Aa)if(!Sa){const Ma=ba.replace(/\>.*$/,""),Ra=this.getSubcircuit().selectOne(Ma);Ra?this.renderError(`Could not find port for selector "${ba}" (did you forget to include the pin name?)
|
|
7540
7540
|
searched component ${Ra.getString()}, which has ports: ${Ra.children.filter(Ia=>Ia.componentName==="Port").map(Ia=>`${Ia.getString()}(${Ia.getNameAndAliases().join(",")})`).join(" & ")}`):this.renderError(`Could not find port for selector "${ba}"`)}return Aa.some(ba=>!ba.port)?{allPortsFound:!1}:{allPortsFound:!0,portsWithSelectors:Aa,ports:Aa.map(({port:ba})=>ba)}}_findConnectedNets(){const J=this.getTracePathNetSelectors().map(xa=>({selector:xa,net:this.getSubcircuit().selectOne(xa,{type:"net"})})),la=J.filter(xa=>!xa.net);return la.length>0&&this.renderError(`Could not find net for selector "${la[0].selector}" inside ${this}`),{netsWithSelectors:J,nets:J.map(xa=>xa.net)}}_getAllTracesConnectedToSameNet(){const J=this.getSubcircuit().selectAll("trace"),la=this._findConnectedNets().nets,xa=this._findConnectedPorts().ports??[];return J.filter(Aa=>{if(Aa===this)return!1;const ba=Aa._findConnectedNets().nets,Sa=Aa._findConnectedPorts().ports??[];return ba.some(Ma=>la.includes(Ma))||Sa.some(Ma=>xa.includes(Ma))})}_isExplicitlyConnectedToPort(J){const{allPortsFound:la,portsWithSelectors:xa}=this._findConnectedPorts();return la?xa.map(ba=>ba.port).includes(J):!1}_isExplicitlyConnectedToNet(J){return this._findConnectedNets().nets.includes(J)}doInitialCreateNetsFromProps(){createNetsFromProps(this,this.getTracePathNetSelectors())}doInitialSourceTraceRender(){const{db:J}=this.root,{_parsedProps:la,parent:xa}=this;if(!xa){this.renderError("Trace has no parent");return}const{allPortsFound:Aa,portsWithSelectors:ba}=this._findConnectedPorts();if(!Aa)return;const Sa=this._findConnectedNets().nets,Ma=getTraceDisplayName({ports:ba,nets:Sa}),Ra=J.source_trace.insert({connected_source_port_ids:ba.map(Ia=>Ia.port.source_port_id),connected_source_net_ids:Sa.map(Ia=>Ia.source_net_id),max_length:getMaxLengthFromConnectedCapacitors(ba.map(Ia=>Ia.port),{db:J})??la.maxLength,display_name:Ma});this.source_trace_id=Ra.source_trace_id}doInitialPcbTraceRender(){var Tl,Ll,Il;if((Tl=this.root)!=null&&Tl.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la,parent:xa}=this,Aa=this.getSubcircuit();if(!xa)throw new Error("Trace has no parent");if(Aa._parsedProps.routingDisabled)return;const ba=(Ll=Aa._parsedProps.pcbRouteCache)==null?void 0:Ll.pcbTraces;if(ba){const Fl=J.pcb_trace.insert({route:ba.flatMap(Ol=>Ol.route),source_trace_id:this.source_trace_id,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((Il=this.getGroup())==null?void 0:Il.pcb_group_id)??void 0});this.pcb_trace_id=Fl.pcb_trace_id;return}if(!Aa._shouldUseTraceByTraceRouting())return;const{allPortsFound:Sa,ports:Ma}=this._findConnectedPorts();if(!Sa)return;const Ra=[];for(const Fl of Ma)Fl._hasMatchedPcbPrimitive()||Ra.push(Fl);if(Ra.length>0){J.pcb_trace_error.insert({error_type:"pcb_trace_error",source_trace_id:this.source_trace_id,message:`Some ports did not have a matching PCB primitive (e.g. a pad or plated hole), this can happen if a footprint is missing. As a result, ${this} wasn't routed. Missing ports: ${Ra.map(Fl=>Fl.getString()).join(", ")}`,pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[],pcb_port_ids:Ra.map(Fl=>Fl.pcb_port_id).filter(Boolean)});return}const Ia=this._findConnectedNets().netsWithSelectors;if(Ma.length===0&&Ia.length===2){this.renderError("Trace connects two nets, we haven't implemented a way to route this yet");return}else if(Ma.length===1&&Ia.length===1){const Fl=Ma[0],ql=Ia[0].net.getAllConnectedPorts().filter(sc=>sc!==Fl);if(ql.length===0){console.log("Nothing to connect this port to, the net is empty. TODO should emit a warning!");return}const rc=getClosest(Fl,ql);Ma.push(rc)}else if(Ma.length>1&&Ia.length>=1){this.renderError("Trace has more than one port and one or more nets, we don't currently support this type of complex trace routing");return}const La=Ma.flatMap(Fl=>Fl.matchedComponents.filter(Ol=>Ol.componentName==="TraceHint")),Fa=(this._parsedProps.pcbRouteHints??[]).concat(La.flatMap(Fl=>Fl.getPcbRouteHints()));if(Ma.length>2){this.renderError(`Trace has more than two ports (${Ma.map(Fl=>Fl.getString()).join(", ")}), routing between more than two ports for a single trace is not implemented`);return}if(this.getSubcircuit().selectAll("trace").filter(Fl=>Fl.renderPhaseStates.PcbTraceRender.initialized).some(Fl=>Fl._portsRoutedOnPcb.length===Ma.length&&Fl._portsRoutedOnPcb.every(Ol=>Ma.includes(Ol))))return;let tl=[];Fa.length===0?tl=[portToObjective(Ma[0]),portToObjective(Ma[1])]:tl=[portToObjective(Ma[0]),...Fa,portToObjective(Ma[1])];const rl=findPossibleTraceLayerCombinations(tl),il=getFullConnectivityMapFromCircuitJson$1(this.root.db.toArray()),[nl,sl]=tryNow(()=>getObstaclesFromSoup(this.root.db.toArray()));if(sl){this.renderError({type:"pcb_trace_error",error_type:"pcb_trace_error",pcb_trace_error_id:this.pcb_trace_id,message:`Error getting obstacles for autorouting: ${sl.message}`,source_trace_id:this.source_trace_id,center:{x:0,y:0},pcb_port_ids:Ma.map(Fl=>Fl.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[]});return}for(const Fl of nl)if(Fl.connectedTo.length>0){const ql=il.getNetConnectedToId(Fl.connectedTo[0]);ql&&Fl.connectedTo.push(ql)}let ll=[];if(rl.length===0)ll=tl;else{const Fl=rl[0].layer_path;ll=tl.map((Ol,ql)=>Ol.via?{...Ol,via_to_layer:Fl[ql]}:{...Ol,layers:[Fl[ql]]})}ll[0].pcb_port_id=Ma[0].pcb_port_id,ll[ll.length-1].pcb_port_id=Ma[1].pcb_port_id;const dl=[];for(const[Fl,Ol]of pairs$1(ll)){const ql="via_to_layer"in Fl?Fl.via_to_layer:null,rc=2,sc="layers"in Fl&&Fl.layers.length===1?Fl.layers[0]:ql??"top",Kl="layers"in Ol&&Ol.layers.length===1?Ol.layers[0]:ql??"top",Gl="pcb_port_id"in Fl?Fl.pcb_port_id:null,kl="pcb_port_id"in Ol?Ol.pcb_port_id:null,Wl=this.getSubcircuit()._parsedProps.minTraceWidth??.16,tc=new MultilayerIjump({OBSTACLE_MARGIN:Wl*2,isRemovePathLoopsEnabled:!0,optimizeWithGoalBoxes:!!(Gl&&kl),connMap:il,input:{obstacles:nl,minTraceWidth:Wl,connections:[{name:this.source_trace_id,pointsToConnect:[{...Fl,layer:sc,pcb_port_id:Gl},{...Ol,layer:Kl,pcb_port_id:kl}]}],layerCount:2,bounds:{minX:Math.min(Fl.x,Ol.x)-rc,maxX:Math.max(Fl.x,Ol.x)+rc,minY:Math.min(Fl.y,Ol.y)-rc,maxY:Math.max(Fl.y,Ol.y)+rc}}});let Zl=null;try{Zl=tc.solveAndMapToTraces()}catch(_c){this.renderError({type:"pcb_trace_error",pcb_trace_error_id:this.source_trace_id,error_type:"pcb_trace_error",message:`error solving route: ${_c.message}`,source_trace_id:this.pcb_trace_id,center:{x:(Fl.x+Ol.x)/2,y:(Fl.y+Ol.y)/2},pcb_port_ids:Ma.map(Dc=>Dc.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:Ma.map(Dc=>Dc.pcb_component_id)})}if(!Zl)return;if(Zl.length===0){this.renderError({type:"pcb_trace_error",error_type:"pcb_trace_error",pcb_trace_error_id:this.pcb_trace_id,message:`Could not find a route for ${this}`,source_trace_id:this.source_trace_id,center:{x:(Fl.x+Ol.x)/2,y:(Fl.y+Ol.y)/2},pcb_port_ids:Ma.map(_c=>_c.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:Ma.map(_c=>_c.pcb_component_id)});return}const[ac]=Zl;ql&&(ac.route=ac.route.map(_c=>(_c.route_type==="wire"&&!_c.layer&&(_c.layer=ql),_c))),Gl&&ac.route[0].route_type==="wire"&&(ac.route[0].start_pcb_port_id=Gl);const Cc=ac.route[ac.route.length-1];kl&&Cc.route_type==="wire"&&(Cc.end_pcb_port_id=kl),dl.push(ac.route)}const gl=mergeRoutes(dl),_l=getTraceLength(gl),vl=J.pcb_trace.insert({route:gl,source_trace_id:this.source_trace_id,trace_length:_l});this._portsRoutedOnPcb=Ma,this.pcb_trace_id=vl.pcb_trace_id;for(const Fl of gl)Fl.route_type==="via"&&J.pcb_via.insert({pcb_trace_id:vl.pcb_trace_id,x:Fl.x,y:Fl.y,hole_diameter:.3,outer_diameter:.6,layers:[Fl.from_layer,Fl.to_layer],from_layer:Fl.from_layer,to_layer:Fl.to_layer})}_doInitialSchematicTraceRenderWithDisplayLabel(){var dl,gl,_l,vl;if((dl=this.root)!=null&&dl.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la,parent:xa}=this;if(!xa)throw new Error("Trace has no parent");const{allPortsFound:Aa,portsWithSelectors:ba}=this._findConnectedPorts();if(!Aa)return;const Sa=ba.map(({port:Tl})=>({port:Tl,position:Tl._getGlobalSchematicPositionAfterLayout(),schematic_port_id:Tl.schematic_port_id,facingDirection:Tl.facingDirection}));if(Sa.length<2)throw new Error("Expected at least two ports in portsWithPosition.");let Ma,Ra;const Ia=Sa[0].position,La=Sa[0].port;if("path"in this.props){if(this.props.path.length!==2)throw new Error("Invalid 'path': Must contain exactly two elements.");[Ma,Ra]=this.props.path}else{if(!("from"in this.props&&"to"in this.props))throw new Error("Missing 'from' or 'to' properties in props.");Ma=this.props.from,Ra=this.props.to}if(!La.source_port_id)throw new Error(`Missing source_port_id for the 'from' port (${Ma}).`);const Fa=Sa[1].position,ka=Sa[1].port;if(!ka.source_port_id)throw new Error(`Missing source_port_id for the 'to' port (${Ra}).`);const el=J.schematic_net_label.list().find(Tl=>Tl.source_net_id===La.source_port_id),tl=J.schematic_net_label.list().find(Tl=>Tl.source_net_id===ka.source_port_id),[rl,il]=ba.map(({port:Tl})=>Tl),sl=((gl=rl.parent)==null?void 0:gl.config.shouldRenderAsSchematicBox)?`${(_l=rl==null?void 0:rl.parent)==null?void 0:_l.props.name}_${rl==null?void 0:rl.props.name}`:`${(vl=il==null?void 0:il.parent)==null?void 0:vl.props.name}_${il==null?void 0:il.props.name}`,ll=this.props.schDisplayLabel??sl;if(el&&el.text!==ll&&(el.text=`${ll} / ${el.text}`),tl&&(tl==null?void 0:tl.text)!==ll&&(tl.text=`${ll} / ${tl.text}`),!el&&!tl&&(ll!=null&&ll.toLocaleLowerCase().includes("gnd")||ll!=null&&ll.toLocaleLowerCase().includes("ground"))){createDownwardNetLabelGroundSymbol({fromPort:La,toPort:ka,fromAnchorPos:Ia,toAnchorPos:Fa,schDisplayLabel:this.props.schDisplayLabel,source_trace_id:this.source_trace_id},{db:J});return}tl||J.schematic_net_label.insert({text:this.props.schDisplayLabel??sl,source_net_id:ka.source_port_id,anchor_position:Fa,center:Fa,anchor_side:getEnteringEdgeFromDirection(ka.facingDirection)??"bottom"}),el||J.schematic_net_label.insert({text:this.props.schDisplayLabel??sl,source_net_id:La.source_port_id,anchor_position:Ia,center:Ia,anchor_side:getEnteringEdgeFromDirection(La.facingDirection)??"bottom"})}_isSymbolToChipConnection(){const{allPortsFound:J,ports:la}=this._findConnectedPorts();if(!J||la.length!==2)return!1;const[xa,Aa]=la;if(!(xa!=null&&xa.parent)||!(Aa!=null&&Aa.parent))return!1;const ba=xa.parent.config.shouldRenderAsSchematicBox,Sa=Aa.parent.config.shouldRenderAsSchematicBox;return ba&&!Sa||!ba&&Sa}_isSymbolToSymbolConnection(){const{allPortsFound:J,ports:la}=this._findConnectedPorts();if(!J||la.length!==2)return!1;const[xa,Aa]=la;if(!(xa!=null&&xa.parent)||!(Aa!=null&&Aa.parent))return!1;const ba=!xa.parent.config.shouldRenderAsSchematicBox,Sa=!Aa.parent.config.shouldRenderAsSchematicBox;return ba&&Sa}_isChipToChipConnection(){const{allPortsFound:J,ports:la}=this._findConnectedPorts();if(!J||la.length!==2)return!1;const[xa,Aa]=la;if(!(xa!=null&&xa.parent)||!(Aa!=null&&Aa.parent))return!1;const ba=xa.parent.config.shouldRenderAsSchematicBox,Sa=Aa.parent.config.shouldRenderAsSchematicBox;return ba&&Sa}doInitialSchematicTraceRender(){var ql;if((ql=this.root)!=null&&ql.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la,parent:xa}=this;if(!xa)throw new Error("Trace has no parent");const{allPortsFound:Aa,portsWithSelectors:ba}=this._findConnectedPorts(),{netsWithSelectors:Sa}=this._findConnectedNets();if(!Aa)return;if(this.props.schDisplayLabel&&("from"in this.props&&"to"in this.props||"path"in this.props)){this._doInitialSchematicTraceRenderWithDisplayLabel();return}const Ma={name:this.source_trace_id,pointsToConnect:[]},Ra=getSchematicObstaclesForTrace(this),Ia=ba.map(({port:rc})=>({port:rc,position:rc._getGlobalSchematicPositionAfterLayout(),schematic_port_id:rc.schematic_port_id??void 0,facingDirection:rc.facingDirection}));if(Ia.length===1&&Sa.length===1){const rc=Sa[0].net,{port:sc,position:Kl}=Ia[0];J.schematic_net_label.insert({text:rc._parsedProps.name,source_net_id:rc.source_net_id,anchor_position:Kl,center:Kl,anchor_side:getEnteringEdgeFromDirection(sc.facingDirection)??"bottom"});return}if(Ia.length<2)return;Ma.pointsToConnect=Ia.map(({position:rc})=>({...rc,layer:"top"}));const Fa=computeObstacleBounds(Ra),ka=2,el={minTraceWidth:.1,obstacles:Ra,connections:[Ma],bounds:{minX:Fa.minX-ka,maxX:Fa.maxX+ka,minY:Fa.minY-ka,maxY:Fa.maxY+ka},layerCount:1};let tl=MultilayerIjump,rl=!1;this.getSubcircuit().props._schDirectLineRoutingEnabled&&(tl=DirectLineRouter,rl=!0);let nl=new tl({input:el,MAX_ITERATIONS:100,OBSTACLE_MARGIN:.1,isRemovePathLoopsEnabled:!0,isShortenPathWithShortcutsEnabled:!0,marginsWithCosts:[{margin:1,enterCost:0,travelCostFactor:1},{margin:.3,enterCost:0,travelCostFactor:1},{margin:.2,enterCost:0,travelCostFactor:2},{margin:.1,enterCost:0,travelCostFactor:3}]}).solveAndMapToTraces();if(nl.length===0){if(this._isSymbolToChipConnection()||this._isSymbolToSymbolConnection()||this._isChipToChipConnection()){this._doInitialSchematicTraceRenderWithDisplayLabel();return}nl=new DirectLineRouter({input:el}).solveAndMapToTraces(),rl=!0}const[{route:sl}]=nl;let ll=[];for(let rc=0;rc<sl.length-1;rc++)ll.push({from:sl[rc],to:sl[rc+1]});const dl=this.source_trace_id;let gl=[];if(!rl){pushEdgesOfSchematicTraceToPreventOverlap({edges:ll,db:J,source_trace_id:dl});const rc=getOtherSchematicTraces({db:J,source_trace_id:dl,differentNetOnly:!0}).flatMap(sc=>sc.edges);ll=createSchematicTraceCrossingSegments({edges:ll,otherEdges:rc}),gl=createSchematicTraceJunctions({edges:ll,db:J,source_trace_id:this.source_trace_id})}const _l=ll[ll.length-1],vl=Ia[Ia.length-1],Tl=getDominantDirection(_l);ll.push(...getStubEdges({lastEdge:_l,lastEdgePort:vl,lastDominantDirection:Tl}));const Ll=ll[0],Il=Ia[0],Fl=getDominantDirection(Ll);if(ll.unshift(...getStubEdges({firstEdge:Ll,firstEdgePort:Il,firstDominantDirection:Fl})),!this.source_trace_id)throw new Error("Missing source_trace_id for schematic trace insertion.");if(this.getSubcircuit()._parsedProps.schTraceAutoLabelEnabled&&countComplexElements(gl,ll)>=5&&(this._isSymbolToChipConnection()||this._isSymbolToSymbolConnection()||this._isChipToChipConnection())){this._doInitialSchematicTraceRenderWithDisplayLabel();return}const Ol=J.schematic_trace.insert({source_trace_id:this.source_trace_id,edges:ll,junctions:gl});this.schematic_trace_id=Ol.schematic_trace_id}},Capacitor=class extends NormalComponent{get config(){return{componentName:"Capacitor",schematicSymbolName:this.props.symbolName??"capacitor",zodProps:capacitorProps,sourceFtype:FTYPE.simple_capacitor}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${formatSiUnit(this._parsedProps.capacitance)}F`}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.decouplingFor,this.props.decouplingTo])}doInitialCreateTracesFromProps(){this.props.decouplingFor&&this.props.decouplingTo&&(this.add(new Trace2({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.decouplingFor})),this.add(new Trace2({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.decouplingTo})))}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({ftype:"simple_capacitor",name:J.name,manufacturer_part_number:J.manufacturerPartNumber??J.mfn,supplier_part_numbers:J.supplierPartNumbers,capacitance:J.capacitance,max_decoupling_trace_length:J.maxDecouplingTraceLength,display_capacitance:this._getSchematicSymbolDisplayValue()});this.source_component_id=la.source_component_id}},Chip=class extends NormalComponent{constructor(){super(...arguments);jp(this,"schematicBoxDimensions",null)}get config(){return{componentName:"Chip",zodProps:chipProps,shouldRenderAsSchematicBox:!0}}doInitialSchematicComponentRender(){const{_parsedProps:J}=this;(J==null?void 0:J.noSchematicRepresentation)!==!0&&super.doInitialSchematicComponentRender()}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:la}=this,xa=J.source_component.insert({ftype:"simple_chip",name:la.name,manufacturer_part_number:la.manufacturerPartNumber,supplier_part_numbers:la.supplierPartNumbers});this.source_component_id=xa.source_component_id}doInitialPcbComponentRender(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=J.pcb_component.insert({center:{x:la.pcbX??0,y:la.pcbY??0},width:2,height:3,layer:la.layer??"top",rotation:la.pcbRotation??0,source_component_id:this.source_component_id});this.pcb_component_id=xa.pcb_component_id}},Diode=class extends NormalComponent{constructor(){super(...arguments);jp(this,"pos",this.portMap.pin1);jp(this,"anode",this.portMap.pin1);jp(this,"neg",this.portMap.pin2);jp(this,"cathode",this.portMap.pin2)}get config(){return{schematicSymbolName:this.props.symbolName??"diode",componentName:"Diode",zodProps:diodeProps,sourceFtype:"simple_diode"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}},Jumper=class extends NormalComponent{constructor(){super(...arguments);jp(this,"schematicDimensions",null)}get config(){return{componentName:"Jumper",zodProps:jumperProps,shouldRenderAsSchematicBox:!0}}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:la}=this,xa=J.source_component.insert({ftype:"simple_chip",name:la.name,manufacturer_part_number:la.manufacturerPartNumber,supplier_part_numbers:la.supplierPartNumbers});this.source_component_id=xa.source_component_id}doInitialPcbComponentRender(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=J.pcb_component.insert({center:{x:la.pcbX??0,y:la.pcbY??0},width:2,height:3,layer:la.layer??"top",rotation:la.pcbRotation??0,source_component_id:this.source_component_id});this.pcb_component_id=xa.pcb_component_id}},Led=class extends NormalComponent{constructor(){super(...arguments);jp(this,"pos",this.portMap.pin1);jp(this,"anode",this.portMap.pin1);jp(this,"neg",this.portMap.pin2);jp(this,"cathode",this.portMap.pin2)}get config(){return{componentName:"Led",schematicSymbolName:this.props.symbolName??"led",zodProps:ledProps,sourceFtype:"simple_diode"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}},PowerSource=class extends NormalComponent{constructor(){super(...arguments);jp(this,"pos",this.portMap.pin1);jp(this,"positive",this.portMap.pin1);jp(this,"neg",this.portMap.pin2);jp(this,"negative",this.portMap.pin2)}get config(){return{schematicSymbolName:this.props.symbolName??"power_factor_meter_horz",componentName:"PowerSource",zodProps:powerSourceProps,sourceFtype:"simple_power_source"}}initPorts(){this.add(new Port({name:"pin1",pinNumber:1,aliases:["positive","pos"]})),this.add(new Port({name:"pin2",pinNumber:2,aliases:["negative","neg"]}))}},Resistor=class extends NormalComponent{get config(){return{componentName:"Resistor",schematicSymbolName:this.props.symbolName??"boxresistor",zodProps:resistorProps,sourceFtype:"simple_resistor"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${formatSiUnit(this._parsedProps.resistance)}Ω`}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.pullupFor,this.props.pullupTo])}doInitialCreateTracesFromProps(){this.props.pullupFor&&this.props.pullupTo&&(this.add(new Trace2({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pullupFor})),this.add(new Trace2({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pullupTo})))}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({ftype:"simple_resistor",name:J.name,manufacturer_part_number:J.manufacturerPartNumber??J.mfn,supplier_part_numbers:J.supplierPartNumbers,resistance:J.resistance,display_resistance:this._getSchematicSymbolDisplayValue()});this.source_component_id=la.source_component_id}},edgeSpecifiers=["leftedge","rightedge","topedge","bottomedge","center"],Constraint2=class extends PrimitiveComponent{get config(){return{componentName:"Constraint",zodProps:constraintProps}}constructor(ua){if(super(ua),("xdist"in ua||"ydist"in ua)&&!("edgeToEdge"in ua)&&!("centerToCenter"in ua))throw new Error(`edgeToEdge, centerToCenter must be set for xDist or yDist for ${this}`);if("for"in ua&&ua.for.length<2)throw new Error(`"for" must have at least two selectors for ${this}`)}_getAllReferencedComponents(){const ua=[],J=this.getPrimitiveContainer();function la(xa){const Aa=xa.split(" ").pop(),ba=edgeSpecifiers.includes(Aa)?Aa:void 0,Sa=ba?xa.replace(` ${ba}`,""):xa,Ma=J.selectOne(Sa,{pcbPrimitive:!0});Ma&&ua.push({selector:xa,component:Ma,componentSelector:Sa,edge:ba})}for(const xa of["left","right","top","bottom"])xa in this._parsedProps&&la(this._parsedProps[xa]);if("for"in this._parsedProps)for(const xa of this._parsedProps.for)la(xa);return{componentsWithSelectors:ua}}},FabricationNotePath=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"fabrication_note_path_id",null)}get config(){return{componentName:"FabricationNotePath",zodProps:fabricationNotePathProps}}doInitialPcbPrimitiveRender(){var Ma,Ra;if((Ma=this.root)!=null&&Ma.pcbDisabled)return;const{db:J}=this.root,la=this.getSubcircuit(),{_parsedProps:xa}=this,Aa=xa.layer??"top";if(Aa!=="top"&&Aa!=="bottom")throw new Error(`Invalid layer "${Aa}" for SilkscreenPath. Must be "top" or "bottom".`);const ba=this._computePcbGlobalTransformBeforeLayout(),Sa=J.pcb_fabrication_note_path.insert({pcb_component_id:(Ra=this.parent)==null?void 0:Ra.pcb_component_id,layer:Aa,color:xa.color,route:xa.route.map(Ia=>{const La=applyToPoint(ba,{x:Ia.x,y:Ia.y});return{...Ia,x:La.x,y:La.y}}),stroke_width:xa.strokeWidth??.1,subcircuit_id:(la==null?void 0:la.subcircuit_id)??void 0});this.fabrication_note_path_id=Sa.pcb_fabrication_note_path_id}},FabricationNoteText=class extends PrimitiveComponent{get config(){return{componentName:"FabricationNoteText",zodProps:fabricationNoteTextProps}}doInitialPcbPrimitiveRender(){var Aa,ba;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:ua}=this.root,{_parsedProps:J}=this,la=this.getPrimitiveContainer(),xa=this.getSubcircuit();ua.pcb_fabrication_note_text.insert({anchor_alignment:J.anchorAlignment,anchor_position:{x:J.pcbX??0,y:J.pcbY??0},font:J.font??"tscircuit2024",font_size:J.fontSize??1,layer:"top",color:J.color,text:J.text??"",pcb_component_id:la.pcb_component_id,subcircuit_id:(xa==null?void 0:xa.subcircuit_id)??void 0,pcb_group_id:((ba=this.getGroup())==null?void 0:ba.pcb_group_id)??void 0})}},Subcircuit=class extends Group$2{constructor(ua){super({...ua,subcircuit:!0})}},NetAlias=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"source_net_alias_id")}get config(){return{componentName:"NetAlias",zodProps:netAliasProps}}doInitialSchematicComponentRender(){var ba;if((ba=this.root)!=null&&ba.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa={x:la.schX??0,y:la.schY??0},Aa=J.schematic_net_label.insert({text:la.net,source_net_id:la.net,anchor_position:xa,center:xa,anchor_side:"bottom"});this.source_net_alias_id=Aa.source_net_id}},SilkscreenCircle=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_silkscreen_circle_id",null)}get config(){return{componentName:"SilkscreenCircle",zodProps:silkscreenCircleProps}}doInitialPcbPrimitiveRender(){var Sa,Ma,Ra;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=la.layer??"top";if(xa!=="top"&&xa!=="bottom")throw new Error(`Invalid layer "${xa}" for SilkscreenCircle. Must be "top" or "bottom".`);this._computePcbGlobalTransformBeforeLayout();const Aa=this.getSubcircuit(),ba=J.pcb_silkscreen_circle.insert({pcb_component_id:(Ma=this.parent)==null?void 0:Ma.pcb_component_id,layer:xa,center:{x:la.pcbX??0,y:la.pcbY??0},radius:la.radius,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((Ra=this.getGroup())==null?void 0:Ra.pcb_group_id)??void 0});this.pcb_silkscreen_circle_id=ba.pcb_silkscreen_circle_id}},SilkscreenRect=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_silkscreen_rect_id",null)}get config(){return{componentName:"SilkscreenRect",zodProps:silkscreenRectProps}}doInitialPcbPrimitiveRender(){var Sa,Ma,Ra;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=la.layer??"top";if(xa!=="top"&&xa!=="bottom")throw new Error(`Invalid layer "${xa}" for SilkscreenRect. Must be "top" or "bottom".`);const Aa=this.getSubcircuit(),ba=J.pcb_silkscreen_rect.insert({pcb_component_id:(Ma=this.parent)==null?void 0:Ma.pcb_component_id,layer:xa,center:{x:la.pcbX??0,y:la.pcbY??0},width:la.width,height:la.height,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((Ra=this==null?void 0:this.getGroup())==null?void 0:Ra.pcb_group_id)??void 0});this.pcb_silkscreen_rect_id=ba.pcb_silkscreen_rect_id}},SilkscreenText=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenText",zodProps:silkscreenTextProps}}doInitialPcbPrimitiveRender(){var Ma,Ra;if((Ma=this.root)!=null&&Ma.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getPrimitiveContainer(),Aa=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer:ba}=this._getPcbPrimitiveFlippedHelpers(),Sa=this.getSubcircuit();J.pcb_silkscreen_text.insert({anchor_alignment:la.anchorAlignment,anchor_position:{x:Aa.x,y:Aa.y},font:la.font??"tscircuit2024",font_size:la.fontSize??1,layer:ba(la.layer??"top"),text:la.text??"",ccw_rotation:la.pcbRotation,pcb_component_id:xa.pcb_component_id,subcircuit_id:(Sa==null?void 0:Sa.subcircuit_id)??void 0,pcb_group_id:((Ra=this.getGroup())==null?void 0:Ra.pcb_group_id)??void 0})}getPcbSize(){const{_parsedProps:J}=this,la=J.fontSize??1,Aa=(J.text??"").length*la,ba=la;return{width:Aa*la,height:ba*la}}},SilkscreenLine=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_silkscreen_line_id",null)}get config(){return{componentName:"SilkscreenLine",zodProps:silkscreenLineProps}}doInitialPcbPrimitiveRender(){var Sa,Ma,Ra;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=la.layer??"top";if(xa!=="top"&&xa!=="bottom")throw new Error(`Invalid layer "${xa}" for SilkscreenLine. Must be "top" or "bottom".`);const Aa=this.getSubcircuit(),ba=J.pcb_silkscreen_line.insert({pcb_component_id:(Ma=this.parent)==null?void 0:Ma.pcb_component_id,layer:xa,x1:la.x1,y1:la.y1,x2:la.x2,y2:la.y2,stroke_width:la.strokeWidth??.1,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((Ra=Aa==null?void 0:Aa.getGroup())==null?void 0:Ra.pcb_group_id)??void 0});this.pcb_silkscreen_line_id=ba.pcb_silkscreen_line_id}},Via=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_via_id",null);jp(this,"matchedPort",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Via",zodProps:viaProps}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:J}=this;return{width:J.outerDiameter,height:J.outerDiameter}}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_via.get(this.pcb_via_id),xa=this.getPcbSize();return{center:{x:la.x,y:la.y},bounds:{left:la.x-xa.width/2,top:la.y-xa.height/2,right:la.x+xa.width/2,bottom:la.y+xa.height/2},width:xa.width,height:xa.height}}_setPositionFromLayout(J){const{db:la}=this.root;la.pcb_via.update(this.pcb_via_id,{x:J.x,y:J.y})}doInitialPcbPrimitiveRender(){var Sa,Ma;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getGlobalPcbPositionBeforeLayout(),Aa=this.getSubcircuit(),ba=J.pcb_via.insert({x:xa.x,y:xa.y,hole_diameter:la.holeDiameter,outer_diameter:la.outerDiameter,layers:["bottom","top"],from_layer:la.fromLayer||"bottom",to_layer:la.toLayer||"top",subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((Ma=this.getGroup())==null?void 0:Ma.pcb_group_id)??void 0});this.pcb_via_id=ba.pcb_via_id}},Battery=class extends NormalComponent{get config(){return{componentName:"Battery",schematicSymbolName:this.props.symbolName??"battery",zodProps:batteryProps,sourceFtype:"simple_power_source"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({name:J.name,ftype:"simple_power_source",capacity:J.capacity,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=la.source_component_id}},PinHeader=class extends NormalComponent{get config(){return{componentName:"PinHeader",zodProps:pinHeaderProps,shouldRenderAsSchematicBox:!0}}_getImpliedFootprintString(){var Aa;const ua=this._parsedProps.pinCount??((Aa=this._parsedProps.pinLabels)==null?void 0:Aa.length)??0,J=this._parsedProps.holeDiameter,la=this._parsedProps.platedDiameter,xa=this._parsedProps.pitch;return ua>0&&xa?!J&&!la?`pinrow${ua}_p${xa}`:`pinrow${ua}_p${xa}_id${J}_od${la}`:null}initPorts(){var J;const ua=this._parsedProps.pinCount??((J=this._parsedProps.pinLabels)==null?void 0:J.length)??1;for(let la=1;la<=ua;la++)this.add(new Port({name:`pin${la}`,pinNumber:la,aliases:[]}))}_getSchematicPortArrangement(){const ua=this._parsedProps.pinCount??1,J=this._parsedProps.facingDirection??"right";return{leftSize:J==="left"?ua:0,rightSize:J==="right"?ua:0}}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({ftype:"simple_pin_header",name:J.name,supplier_part_numbers:J.supplierPartNumbers,pin_count:J.pinCount,gender:J.gender});this.source_component_id=la.source_component_id}};function getResonatorSymbolName(ua){switch(ua){case"two_ground_pins":return"crystal_4pin";case"ground_pin":return"resonator";case"no_ground":return"crystal";default:return"crystal"}}var Resonator=class extends NormalComponent{get config(){return{componentName:"Resonator",schematicSymbolName:this.props.symbolName??getResonatorSymbolName(this.props.pinVariant),zodProps:resonatorProps,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({ftype:"simple_resonator",name:J.name,frequency:J.frequency,load_capacitance:J.loadCapacitance,supplier_part_numbers:J.supplierPartNumbers,pin_variant:J.pinVariant||"no_ground"});this.source_component_id=la.source_component_id}},Inductor=class extends NormalComponent{get config(){return{componentName:"Inductor",schematicSymbolName:this.props.symbolName??"inductor",zodProps:inductorProps,sourceFtype:FTYPE.simple_inductor}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({name:J.name,ftype:FTYPE.simple_inductor,inductance:J.inductance,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=la.source_component_id}},Potentiometer=class extends NormalComponent{get config(){return{schematicSymbolName:this.props.symbolName??"potentiometer2",componentName:"Potentiometer",zodProps:potentiometerProps,sourceFtype:"simple_potentiometer"}}initPorts(){super.initPorts({additionalAliases:{pin1:["pos","left"],pin2:["neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${formatSiUnit(this._parsedProps.maxResistance)}Ω`}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({name:J.name,ftype:"simple_potentiometer",max_resistance:J.maxResistance});this.source_component_id=la.source_component_id}},PushButton=class extends NormalComponent{get config(){return{componentName:"PushButton",schematicSymbolName:this.props.symbolName??"push_button_normally_open_momentary",zodProps:pushButtonProps,sourceFtype:FTYPE.simple_push_button}}initPorts(){super.initPorts({additionalAliases:{pin1:["side1"],pin3:["side2"]}})}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({name:J.name,ftype:FTYPE.simple_push_button,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=la.source_component_id}},Crystal=class extends NormalComponent{get config(){return{schematicSymbolName:this.props.symbolName??"crystal",componentName:"Crystal",zodProps:crystalProps,sourceFtype:"simple_crystal"}}initPorts(){super.initPorts({additionalAliases:{pin1:["pos","left"],pin2:["neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${formatSiUnit(this._parsedProps.frequency)}Hz`}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({name:J.name,ftype:"simple_crystal",frequency:J.frequency,load_capacitance:J.loadCapacitance});this.source_component_id=la.source_component_id}},Transistor=class extends NormalComponent{get config(){return{componentName:"Transistor",schematicSymbolName:this.props.transistorType==="npn"?"npn_bipolar_transistor":"pnp_bipolar_transistor",zodProps:transistorProps,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({ftype:"simple_transistor",name:J.name,transistor_type:J.transistorType});this.source_component_id=la.source_component_id}},Mosfet=class extends NormalComponent{get config(){const ua=this.props.mosfetMode==="depletion"?"d":"e";return{componentName:"Mosfet",schematicSymbolName:`${this.props.channelType}_channel_${ua}_mosfet_transistor`,zodProps:mosfetProps,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:ua}=this.root,{_parsedProps:J}=this,la=ua.source_component.insert({ftype:"simple_mosfet",name:J.name,mosfet_mode:J.mosfetMode,channel_type:J.channelType});this.source_component_id=la.source_component_id}},RootCircuit=class{constructor(){jp(this,"firstChild",null);jp(this,"children");jp(this,"db");jp(this,"root",null);jp(this,"isRoot",!0);jp(this,"schematicDisabled",!1);jp(this,"pcbDisabled",!1);jp(this,"pcbRoutingDisabled",!1);jp(this,"name");jp(this,"_hasRenderedAtleastOnce",!1);jp(this,"_eventListeners",{});this.children=[],this.db=su_default$2([]),this.root=this}add(ua){let J;reactExports.isValidElement(ua)?J=createInstanceFromReactElement(ua):J=ua,this.children.push(J)}_getBoard(){return this.children.find(ua=>ua.componentName==="Board")}_guessRootComponent(){if(!this.firstChild){if(this.children.length===1){this.firstChild=this.children[0];return}if(this.children.length===0)throw new Error("Not able to guess root component: RootCircuit has no children (use circuit.add(...))");if(this.children.length>0){const ua=this.children.find(J=>J.componentName==="Board")??null;if(ua){this.firstChild=ua;return}}throw new Error("Not able to guess root component: RootCircuit has multiple children and no board")}}render(){this.firstChild||this._guessRootComponent();const{firstChild:ua,db:J}=this;if(!ua)throw new Error("RootCircuit has no root component");ua.parent=this,ua.runRenderCycle(),this._hasRenderedAtleastOnce=!0}async renderUntilSettled(){for(this.render();this._hasIncompleteAsyncEffects();)await new Promise(ua=>setTimeout(ua,100)),this.render()}_hasIncompleteAsyncEffects(){return this.children.some(ua=>ua._hasIncompleteAsyncEffects()?!0:ua.children.some(J=>J._hasIncompleteAsyncEffects()))}getSoup(){return this._hasRenderedAtleastOnce||this.render(),this.db.toArray()}getCircuitJson(){return this.getSoup()}toJson(){return this.getSoup()}async getSvg(ua){return(await Promise.resolve().then(()=>index$1).catch(la=>{throw new Error(`To use project.getSvg, you must install the "circuit-to-svg" package.
|
|
7541
7541
|
|
|
7542
7542
|
"${la.message}"`)})).convertCircuitJsonToPcbSvg(this.getCircuitJson())}async preview(ua){throw new Error("project.preview is not yet implemented")}computeSchematicGlobalTransform(){return identity$3()}_computePcbGlobalTransformBeforeLayout(){return identity$3()}selectAll(ua){var J;return this._guessRootComponent(),((J=this.firstChild)==null?void 0:J.selectAll(ua))??[]}selectOne(ua,J){var la;return this._guessRootComponent(),((la=this.firstChild)==null?void 0:la.selectOne(ua,J))??null}emit(ua,...J){if(this._eventListeners[ua])for(const la of this._eventListeners[ua])la(...J)}on(ua,J){this._eventListeners[ua]||(this._eventListeners[ua]=[]),this._eventListeners[ua].push(J)}getClientOrigin(){return typeof window<"u"?window.location.origin:typeof self<"u"?self.origin:""}},Project=RootCircuit,Circuit=RootCircuit,useRenderedCircuit=ua=>{const[J,la]=React.useState(!0),[xa,Aa]=React.useState(null),[ba,Sa]=React.useState(),[Ma,Ra]=React.useState();return React.useEffect(()=>{la(!0),Aa(null),ua&&setTimeout(()=>{try{const Ia=new RootCircuit;Ia.add(ua),Sa(Ia),Ra(Ia.toJson())}catch(Ia){Aa(Ia)}la(!1)},1)},[ua]),{isLoading:J,error:xa,circuit:ba,circuitJson:Ma}},createUseComponent=(ua,J)=>(la,xa)=>{const Aa=[];Array.isArray(J)?Aa.push(...J.flat()):typeof J=="object"&&Aa.push(...Object.values(J).flat(),...Object.keys(J));const ba=Sa=>{if(Sa!=null&&Sa.name&&Sa.name!==la)throw new Error(`Component name mismatch. Hook name: ${la}, Component prop name: ${Sa.name}`);const Ma={...xa,...Sa,name:la},Ra=[];for(const Ia of Aa)if(Ma[Ia]){const La=`.${la} > .${Ia}`,Fa=Ma[Ia];Ra.push({from:La,to:Fa}),delete Ma[Ia]}return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(ua,{...Ma}),Ra.map((Ia,La)=>jsxRuntimeExports.jsx("trace",{...Ia},La))]})};for(const Sa of Aa)ba[Sa]=`.${la} > .${Sa}`;return ba},useCapacitor=createUseComponent(ua=>jsxRuntimeExports.jsx("capacitor",{...ua}),capacitorPins),useChip=ua=>createUseComponent(J=>jsxRuntimeExports.jsx("chip",{pinLabels:ua,...J}),ua),useDiode=createUseComponent(ua=>jsxRuntimeExports.jsx("diode",{...ua}),diodePins),useLed=createUseComponent(ua=>jsxRuntimeExports.jsx("led",{...ua}),ledPins),useResistor=createUseComponent(ua=>jsxRuntimeExports.jsx("resistor",{...ua}),resistorPins),applyEditEventsToManualEditsFile=({circuitJson:ua,editEvents:J,manualEditsFile:la})=>{var Aa;const xa={...la,schematic_placements:[...la.schematic_placements??[]]};for(const ba of J)if(ba.edit_event_type==="edit_schematic_component_location"){const{schematic_component_id:Sa,new_center:Ma}=ba,Ra=su_default$2(ua).schematic_component.get(Sa);if(!Ra)continue;const Ia=su_default$2(ua).source_component.get(Ra.source_component_id);if(!Ia)continue;const La=(Aa=xa.schematic_placements)==null?void 0:Aa.findIndex(ka=>ka.selector===Ia.name),Fa={selector:Ia.name,center:Ma,relative_to:"group_center"};La>=0?xa.schematic_placements[La]=Fa:xa.schematic_placements.push(Fa)}return xa},getSimpleRouteJsonFromCircuitJson=({circuitJson:ua,minTraceWidth:J=.1})=>{const la=su_default$2(ua),xa=getFullConnectivityMapFromCircuitJson$1(ua),Aa=getObstaclesFromSoup([...la.pcb_component.list(),...la.pcb_smtpad.list(),...la.pcb_plated_hole.list()],xa),ba=Aa.flatMap(Ra=>[{x:Ra.center.x-Ra.width/2,y:Ra.center.y-Ra.height/2},{x:Ra.center.x+Ra.width/2,y:Ra.center.y+Ra.height/2}]),Sa={minX:Math.min(...ba.map(Ra=>Ra.x))-1,maxX:Math.max(...ba.map(Ra=>Ra.x))+1,minY:Math.min(...ba.map(Ra=>Ra.y))-1,maxY:Math.max(...ba.map(Ra=>Ra.y))+1},Ma=la.source_trace.list().map(Ra=>{const Ia=Ra.connected_source_port_ids.map(La=>{const Fa=la.source_port.get(La),ka=la.pcb_port.getWhere({source_port_id:La});return{...Fa,...ka}});return Ia.length<2?null:{name:xa.getNetConnectedToId(Ra.source_trace_id)??Ra.source_trace_id??"",source_trace_id:Ra.source_trace_id,pointsToConnect:Ia.map(La=>{var Fa;return{x:La.x,y:La.y,layer:((Fa=La.layers)==null?void 0:Fa[0])??"top"}})}}).filter(Ra=>Ra!==null);return{bounds:Sa,obstacles:Aa,connections:Ma,layerCount:2,minTraceWidth:J}},getPhaseTimingsFromRenderEvents$1=ua=>{const J={};if(!ua)return J;for(const xa of orderedRenderPhases)J[xa]=0;const la=new Map;for(const xa of ua){const[,,Aa,ba]=xa.type.split(":");if(ba==="start"){la.set(`${Aa}:${xa.renderId}`,xa);continue}if(ba==="end"){const Sa=la.get(`${Aa}:${xa.renderId}`);if(Sa){const Ma=xa.createdAt-Sa.createdAt;J[Aa]=(J[Aa]||0)+Ma}}}return J};extendCatalogue(components_exports),extendCatalogue({Bug:Chip});const dist$6=Object.freeze(Object.defineProperty({__proto__:null,Battery,Board,Capacitor,Chip,Circuit,Constraint:Constraint2,Crystal,Diode,FabricationNotePath,FabricationNoteText,Footprint,Group:Group$2,Hole,Inductor,Jumper,Keepout,Led,Mosfet,Net,NetAlias,NormalComponent,PinHeader,PlatedHole,Port,Potentiometer,PowerSource,PrimitiveComponent,Project,PushButton,Renderable,Resistor,Resonator,RootCircuit,SilkscreenCircle,SilkscreenLine,SilkscreenPath,SilkscreenRect,SilkscreenText,SmtPad,Subcircuit,Trace:Trace2,TraceHint,Transistor,Via,applyEditEventsToManualEditsFile,createElement:reactExports.createElement,createUseComponent,getPhaseTimingsFromRenderEvents:getPhaseTimingsFromRenderEvents$1,getSimpleRouteJsonFromCircuitJson,orderedRenderPhases,useCapacitor,useChip,useDiode,useLed,useRenderedCircuit,useResistor},Symbol.toStringTag,{value:"Module"})),require$$2=getAugmentedNamespace(dist$6);var flatten_1$1,hasRequiredFlatten$1;function requireFlatten$1(){if(hasRequiredFlatten$1)return flatten_1$1;hasRequiredFlatten$1=1;const ua=J=>J.reduce((la,xa)=>Array.isArray(xa)?la.concat(ua(xa)):la.concat(xa),[]);return flatten_1$1=ua,flatten_1$1}var padArrayToLength_1,hasRequiredPadArrayToLength;function requirePadArrayToLength(){return hasRequiredPadArrayToLength||(hasRequiredPadArrayToLength=1,padArrayToLength_1=(J,la,xa)=>{for(J=J.slice();J.length<xa;)J.push(la);return J}),padArrayToLength_1}var min_1$1,hasRequiredMin$1;function requireMin$1(){return hasRequiredMin$1||(hasRequiredMin$1=1,min_1$1=(J,la,xa)=>(J[0]=Math.min(la[0],xa[0]),J[1]=Math.min(la[1],xa[1]),J[2]=Math.min(la[2],xa[2]),J)),min_1$1}var max_1$1,hasRequiredMax$1;function requireMax$1(){return hasRequiredMax$1||(hasRequiredMax$1=1,max_1$1=(J,la,xa)=>(J[0]=Math.max(la[0],xa[0]),J[1]=Math.max(la[1],xa[1]),J[2]=Math.max(la[2],xa[2]),J)),max_1$1}var abs_1$1,hasRequiredAbs$1;function requireAbs$1(){return hasRequiredAbs$1||(hasRequiredAbs$1=1,abs_1$1=(J,la)=>(J[0]=Math.abs(la[0]),J[1]=Math.abs(la[1]),J)),abs_1$1}var add_1$2,hasRequiredAdd$2;function requireAdd$2(){return hasRequiredAdd$2||(hasRequiredAdd$2=1,add_1$2=(J,la,xa)=>(J[0]=la[0]+xa[0],J[1]=la[1]+xa[1],J)),add_1$2}var angleRadians_1,hasRequiredAngleRadians;function requireAngleRadians(){return hasRequiredAngleRadians||(hasRequiredAngleRadians=1,angleRadians_1=J=>Math.atan2(J[1],J[0])),angleRadians_1}var angle,hasRequiredAngle$1;function requireAngle$1(){return hasRequiredAngle$1||(hasRequiredAngle$1=1,angle=requireAngleRadians()),angle}var angleDegrees_1,hasRequiredAngleDegrees;function requireAngleDegrees(){if(hasRequiredAngleDegrees)return angleDegrees_1;hasRequiredAngleDegrees=1;const ua=requireAngleRadians();return angleDegrees_1=la=>ua(la)*57.29577951308232,angleDegrees_1}var create_1$c,hasRequiredCreate$c;function requireCreate$c(){return hasRequiredCreate$c||(hasRequiredCreate$c=1,create_1$c=()=>[0,0]),create_1$c}var clone_1$a,hasRequiredClone$a;function requireClone$a(){if(hasRequiredClone$a)return clone_1$a;hasRequiredClone$a=1;const ua=requireCreate$c();return clone_1$a=la=>{const xa=ua();return xa[0]=la[0],xa[1]=la[1],xa},clone_1$a}var copy_1$5,hasRequiredCopy$5;function requireCopy$5(){return hasRequiredCopy$5||(hasRequiredCopy$5=1,copy_1$5=(J,la)=>(J[0]=la[0],J[1]=la[1],J)),copy_1$5}var cross_1$1,hasRequiredCross$1;function requireCross$1(){return hasRequiredCross$1||(hasRequiredCross$1=1,cross_1$1=(J,la,xa)=>(J[0]=0,J[1]=0,J[2]=la[0]*xa[1]-la[1]*xa[0],J)),cross_1$1}var distance_1$1,hasRequiredDistance$1;function requireDistance$1(){return hasRequiredDistance$1||(hasRequiredDistance$1=1,distance_1$1=(J,la)=>{const xa=la[0]-J[0],Aa=la[1]-J[1];return Math.sqrt(xa*xa+Aa*Aa)}),distance_1$1}var divide_1$1,hasRequiredDivide$1;function requireDivide$1(){return hasRequiredDivide$1||(hasRequiredDivide$1=1,divide_1$1=(J,la,xa)=>(J[0]=la[0]/xa[0],J[1]=la[1]/xa[1],J)),divide_1$1}var dot_1$2,hasRequiredDot$2;function requireDot$2(){return hasRequiredDot$2||(hasRequiredDot$2=1,dot_1$2=(J,la)=>J[0]*la[0]+J[1]*la[1]),dot_1$2}var equals_1$7,hasRequiredEquals$7;function requireEquals$7(){return hasRequiredEquals$7||(hasRequiredEquals$7=1,equals_1$7=(J,la)=>J[0]===la[0]&&J[1]===la[1]),equals_1$7}var constants$1,hasRequiredConstants$1;function requireConstants$1(){if(hasRequiredConstants$1)return constants$1;hasRequiredConstants$1=1;const ua=1e5,J=1e-5,la=1e-13,xa=Math.PI*2;return constants$1={EPS:J,NEPS:la,TAU:xa,spatialResolution:ua},constants$1}var trigonometry,hasRequiredTrigonometry;function requireTrigonometry(){if(hasRequiredTrigonometry)return trigonometry;hasRequiredTrigonometry=1;const{NEPS:ua}=requireConstants$1(),J=Aa=>Math.abs(Aa)<ua?0:Aa;return trigonometry={sin:Aa=>J(Math.sin(Aa)),cos:Aa=>J(Math.cos(Aa))},trigonometry}var fromAngleRadians_1,hasRequiredFromAngleRadians;function requireFromAngleRadians(){if(hasRequiredFromAngleRadians)return fromAngleRadians_1;hasRequiredFromAngleRadians=1;const{sin:ua,cos:J}=requireTrigonometry();return fromAngleRadians_1=(xa,Aa)=>(xa[0]=J(Aa),xa[1]=ua(Aa),xa),fromAngleRadians_1}var fromAngleDegrees_1,hasRequiredFromAngleDegrees;function requireFromAngleDegrees(){if(hasRequiredFromAngleDegrees)return fromAngleDegrees_1;hasRequiredFromAngleDegrees=1;const ua=requireFromAngleRadians();return fromAngleDegrees_1=(la,xa)=>ua(la,xa*.017453292519943295),fromAngleDegrees_1}var fromScalar_1$2,hasRequiredFromScalar$2;function requireFromScalar$2(){return hasRequiredFromScalar$2||(hasRequiredFromScalar$2=1,fromScalar_1$2=(J,la)=>(J[0]=la,J[1]=la,J)),fromScalar_1$2}var fromValues_1$4,hasRequiredFromValues$4;function requireFromValues$4(){if(hasRequiredFromValues$4)return fromValues_1$4;hasRequiredFromValues$4=1;const ua=requireCreate$c();return fromValues_1$4=(la,xa)=>{const Aa=ua();return Aa[0]=la,Aa[1]=xa,Aa},fromValues_1$4}var length_1$2,hasRequiredLength$2;function requireLength$2(){return hasRequiredLength$2||(hasRequiredLength$2=1,length_1$2=J=>Math.sqrt(J[0]*J[0]+J[1]*J[1])),length_1$2}var lerp_1$1,hasRequiredLerp$1;function requireLerp$1(){return hasRequiredLerp$1||(hasRequiredLerp$1=1,lerp_1$1=(J,la,xa,Aa)=>{const ba=la[0],Sa=la[1];return J[0]=ba+Aa*(xa[0]-ba),J[1]=Sa+Aa*(xa[1]-Sa),J}),lerp_1$1}var max_1,hasRequiredMax;function requireMax(){return hasRequiredMax||(hasRequiredMax=1,max_1=(J,la,xa)=>(J[0]=Math.max(la[0],xa[0]),J[1]=Math.max(la[1],xa[1]),J)),max_1}var min_1,hasRequiredMin;function requireMin(){return hasRequiredMin||(hasRequiredMin=1,min_1=(J,la,xa)=>(J[0]=Math.min(la[0],xa[0]),J[1]=Math.min(la[1],xa[1]),J)),min_1}var multiply_1$2,hasRequiredMultiply$2;function requireMultiply$2(){return hasRequiredMultiply$2||(hasRequiredMultiply$2=1,multiply_1$2=(J,la,xa)=>(J[0]=la[0]*xa[0],J[1]=la[1]*xa[1],J)),multiply_1$2}var negate_1$1,hasRequiredNegate$1;function requireNegate$1(){return hasRequiredNegate$1||(hasRequiredNegate$1=1,negate_1$1=(J,la)=>(J[0]=-la[0],J[1]=-la[1],J)),negate_1$1}var rotate_1$2,hasRequiredRotate$2;function requireRotate$2(){return hasRequiredRotate$2||(hasRequiredRotate$2=1,rotate_1$2=(J,la,xa,Aa)=>{const ba=la[0]-xa[0],Sa=la[1]-xa[1],Ma=Math.cos(Aa),Ra=Math.sin(Aa);return J[0]=ba*Ma-Sa*Ra+xa[0],J[1]=ba*Ra+Sa*Ma+xa[1],J}),rotate_1$2}var normal_1,hasRequiredNormal;function requireNormal(){if(hasRequiredNormal)return normal_1;hasRequiredNormal=1;const{TAU:ua}=requireConstants$1(),J=requireCreate$c(),la=requireRotate$2();return normal_1=(Aa,ba)=>la(Aa,ba,J(),ua/4),normal_1}var normalize_1$1,hasRequiredNormalize$1;function requireNormalize$1(){return hasRequiredNormalize$1||(hasRequiredNormalize$1=1,normalize_1$1=(J,la)=>{const xa=la[0],Aa=la[1];let ba=xa*xa+Aa*Aa;return ba>0&&(ba=1/Math.sqrt(ba)),J[0]=xa*ba,J[1]=Aa*ba,J}),normalize_1$1}var scale_1$3,hasRequiredScale$3;function requireScale$3(){return hasRequiredScale$3||(hasRequiredScale$3=1,scale_1$3=(J,la,xa)=>(J[0]=la[0]*xa,J[1]=la[1]*xa,J)),scale_1$3}var snap_1$2,hasRequiredSnap$2;function requireSnap$2(){return hasRequiredSnap$2||(hasRequiredSnap$2=1,snap_1$2=(J,la,xa)=>(J[0]=Math.round(la[0]/xa)*xa+0,J[1]=Math.round(la[1]/xa)*xa+0,J)),snap_1$2}var squaredDistance_1$1,hasRequiredSquaredDistance$1;function requireSquaredDistance$1(){return hasRequiredSquaredDistance$1||(hasRequiredSquaredDistance$1=1,squaredDistance_1$1=(J,la)=>{const xa=la[0]-J[0],Aa=la[1]-J[1];return xa*xa+Aa*Aa}),squaredDistance_1$1}var squaredLength_1$1,hasRequiredSquaredLength$1;function requireSquaredLength$1(){return hasRequiredSquaredLength$1||(hasRequiredSquaredLength$1=1,squaredLength_1$1=J=>{const la=J[0],xa=J[1];return la*la+xa*xa}),squaredLength_1$1}var subtract_1$3,hasRequiredSubtract$3;function requireSubtract$3(){return hasRequiredSubtract$3||(hasRequiredSubtract$3=1,subtract_1$3=(J,la,xa)=>(J[0]=la[0]-xa[0],J[1]=la[1]-xa[1],J)),subtract_1$3}var toString_1$a,hasRequiredToString$a;function requireToString$a(){return hasRequiredToString$a||(hasRequiredToString$a=1,toString_1$a=J=>`[${J[0].toFixed(7)}, ${J[1].toFixed(7)}]`),toString_1$a}var transform_1$b,hasRequiredTransform$b;function requireTransform$b(){return hasRequiredTransform$b||(hasRequiredTransform$b=1,transform_1$b=(J,la,xa)=>{const Aa=la[0],ba=la[1];return J[0]=xa[0]*Aa+xa[4]*ba+xa[12],J[1]=xa[1]*Aa+xa[5]*ba+xa[13],J}),transform_1$b}var vec2$2,hasRequiredVec2;function requireVec2(){return hasRequiredVec2||(hasRequiredVec2=1,vec2$2={abs:requireAbs$1(),add:requireAdd$2(),angle:requireAngle$1(),angleDegrees:requireAngleDegrees(),angleRadians:requireAngleRadians(),clone:requireClone$a(),copy:requireCopy$5(),create:requireCreate$c(),cross:requireCross$1(),distance:requireDistance$1(),divide:requireDivide$1(),dot:requireDot$2(),equals:requireEquals$7(),fromAngleDegrees:requireFromAngleDegrees(),fromAngleRadians:requireFromAngleRadians(),fromScalar:requireFromScalar$2(),fromValues:requireFromValues$4(),length:requireLength$2(),lerp:requireLerp$1(),max:requireMax(),min:requireMin(),multiply:requireMultiply$2(),negate:requireNegate$1(),normal:requireNormal(),normalize:requireNormalize$1(),rotate:requireRotate$2(),scale:requireScale$3(),snap:requireSnap$2(),squaredDistance:requireSquaredDistance$1(),squaredLength:requireSquaredLength$1(),subtract:requireSubtract$3(),toString:requireToString$a(),transform:requireTransform$b()}),vec2$2}var abs_1,hasRequiredAbs;function requireAbs(){return hasRequiredAbs||(hasRequiredAbs=1,abs_1=(J,la)=>(J[0]=Math.abs(la[0]),J[1]=Math.abs(la[1]),J[2]=Math.abs(la[2]),J)),abs_1}var add_1$1,hasRequiredAdd$1;function requireAdd$1(){return hasRequiredAdd$1||(hasRequiredAdd$1=1,add_1$1=(J,la,xa)=>(J[0]=la[0]+xa[0],J[1]=la[1]+xa[1],J[2]=la[2]+xa[2],J)),add_1$1}var dot_1$1,hasRequiredDot$1;function requireDot$1(){return hasRequiredDot$1||(hasRequiredDot$1=1,dot_1$1=(J,la)=>J[0]*la[0]+J[1]*la[1]+J[2]*la[2]),dot_1$1}var angle_1,hasRequiredAngle;function requireAngle(){if(hasRequiredAngle)return angle_1;hasRequiredAngle=1;const ua=requireDot$1();return angle_1=(la,xa)=>{const Aa=la[0],ba=la[1],Sa=la[2],Ma=xa[0],Ra=xa[1],Ia=xa[2],La=Math.sqrt(Aa*Aa+ba*ba+Sa*Sa),Fa=Math.sqrt(Ma*Ma+Ra*Ra+Ia*Ia),ka=La*Fa,el=ka&&ua(la,xa)/ka;return Math.acos(Math.min(Math.max(el,-1),1))},angle_1}var create_1$b,hasRequiredCreate$b;function requireCreate$b(){return hasRequiredCreate$b||(hasRequiredCreate$b=1,create_1$b=()=>[0,0,0]),create_1$b}var clone_1$9,hasRequiredClone$9;function requireClone$9(){if(hasRequiredClone$9)return clone_1$9;hasRequiredClone$9=1;const ua=requireCreate$b();return clone_1$9=la=>{const xa=ua();return xa[0]=la[0],xa[1]=la[1],xa[2]=la[2],xa},clone_1$9}var copy_1$4,hasRequiredCopy$4;function requireCopy$4(){return hasRequiredCopy$4||(hasRequiredCopy$4=1,copy_1$4=(J,la)=>(J[0]=la[0],J[1]=la[1],J[2]=la[2],J)),copy_1$4}var cross_1,hasRequiredCross;function requireCross(){return hasRequiredCross||(hasRequiredCross=1,cross_1=(J,la,xa)=>{const Aa=la[0],ba=la[1],Sa=la[2],Ma=xa[0],Ra=xa[1],Ia=xa[2];return J[0]=ba*Ia-Sa*Ra,J[1]=Sa*Ma-Aa*Ia,J[2]=Aa*Ra-ba*Ma,J}),cross_1}var distance_1,hasRequiredDistance;function requireDistance(){return hasRequiredDistance||(hasRequiredDistance=1,distance_1=(J,la)=>{const xa=la[0]-J[0],Aa=la[1]-J[1],ba=la[2]-J[2];return Math.sqrt(xa*xa+Aa*Aa+ba*ba)}),distance_1}var divide_1,hasRequiredDivide;function requireDivide(){return hasRequiredDivide||(hasRequiredDivide=1,divide_1=(J,la,xa)=>(J[0]=la[0]/xa[0],J[1]=la[1]/xa[1],J[2]=la[2]/xa[2],J)),divide_1}var equals_1$6,hasRequiredEquals$6;function requireEquals$6(){return hasRequiredEquals$6||(hasRequiredEquals$6=1,equals_1$6=(J,la)=>J[0]===la[0]&&J[1]===la[1]&&J[2]===la[2]),equals_1$6}var fromScalar_1$1,hasRequiredFromScalar$1;function requireFromScalar$1(){return hasRequiredFromScalar$1||(hasRequiredFromScalar$1=1,fromScalar_1$1=(J,la)=>(J[0]=la,J[1]=la,J[2]=la,J)),fromScalar_1$1}var fromValues_1$3,hasRequiredFromValues$3;function requireFromValues$3(){if(hasRequiredFromValues$3)return fromValues_1$3;hasRequiredFromValues$3=1;const ua=requireCreate$b();return fromValues_1$3=(la,xa,Aa)=>{const ba=ua();return ba[0]=la,ba[1]=xa,ba[2]=Aa,ba},fromValues_1$3}var fromVec2,hasRequiredFromVec2;function requireFromVec2(){return hasRequiredFromVec2||(hasRequiredFromVec2=1,fromVec2=(J,la,xa=0)=>(J[0]=la[0],J[1]=la[1],J[2]=xa,J)),fromVec2}var length_1$1,hasRequiredLength$1;function requireLength$1(){return hasRequiredLength$1||(hasRequiredLength$1=1,length_1$1=J=>{const la=J[0],xa=J[1],Aa=J[2];return Math.sqrt(la*la+xa*xa+Aa*Aa)}),length_1$1}var lerp_1,hasRequiredLerp;function requireLerp(){return hasRequiredLerp||(hasRequiredLerp=1,lerp_1=(J,la,xa,Aa)=>(J[0]=la[0]+Aa*(xa[0]-la[0]),J[1]=la[1]+Aa*(xa[1]-la[1]),J[2]=la[2]+Aa*(xa[2]-la[2]),J)),lerp_1}var multiply_1$1,hasRequiredMultiply$1;function requireMultiply$1(){return hasRequiredMultiply$1||(hasRequiredMultiply$1=1,multiply_1$1=(J,la,xa)=>(J[0]=la[0]*xa[0],J[1]=la[1]*xa[1],J[2]=la[2]*xa[2],J)),multiply_1$1}var negate_1,hasRequiredNegate;function requireNegate(){return hasRequiredNegate||(hasRequiredNegate=1,negate_1=(J,la)=>(J[0]=-la[0],J[1]=-la[1],J[2]=-la[2],J)),negate_1}var normalize_1,hasRequiredNormalize;function requireNormalize(){return hasRequiredNormalize||(hasRequiredNormalize=1,normalize_1=(J,la)=>{const xa=la[0],Aa=la[1],ba=la[2];let Sa=xa*xa+Aa*Aa+ba*ba;return Sa>0&&(Sa=1/Math.sqrt(Sa)),J[0]=xa*Sa,J[1]=Aa*Sa,J[2]=ba*Sa,J}),normalize_1}var orthogonal_1,hasRequiredOrthogonal;function requireOrthogonal(){if(hasRequiredOrthogonal)return orthogonal_1;hasRequiredOrthogonal=1;const ua=requireAbs(),J=requireCreate$b(),la=requireCross();return orthogonal_1=(Aa,ba)=>{const Sa=ua(J(),ba),Ma=0+(Sa[0]<Sa[1]&&Sa[0]<Sa[2]),Ra=0+(Sa[1]<=Sa[0]&&Sa[1]<Sa[2]),Ia=0+(Sa[2]<=Sa[0]&&Sa[2]<=Sa[1]);return la(Aa,ba,[Ma,Ra,Ia])},orthogonal_1}var rotateX_1$1,hasRequiredRotateX$1;function requireRotateX$1(){return hasRequiredRotateX$1||(hasRequiredRotateX$1=1,rotateX_1$1=(J,la,xa,Aa)=>{const ba=[],Sa=[];return ba[0]=la[0]-xa[0],ba[1]=la[1]-xa[1],ba[2]=la[2]-xa[2],Sa[0]=ba[0],Sa[1]=ba[1]*Math.cos(Aa)-ba[2]*Math.sin(Aa),Sa[2]=ba[1]*Math.sin(Aa)+ba[2]*Math.cos(Aa),J[0]=Sa[0]+xa[0],J[1]=Sa[1]+xa[1],J[2]=Sa[2]+xa[2],J}),rotateX_1$1}var rotateY_1$1,hasRequiredRotateY$1;function requireRotateY$1(){return hasRequiredRotateY$1||(hasRequiredRotateY$1=1,rotateY_1$1=(J,la,xa,Aa)=>{const ba=[],Sa=[];return ba[0]=la[0]-xa[0],ba[1]=la[1]-xa[1],ba[2]=la[2]-xa[2],Sa[0]=ba[2]*Math.sin(Aa)+ba[0]*Math.cos(Aa),Sa[1]=ba[1],Sa[2]=ba[2]*Math.cos(Aa)-ba[0]*Math.sin(Aa),J[0]=Sa[0]+xa[0],J[1]=Sa[1]+xa[1],J[2]=Sa[2]+xa[2],J}),rotateY_1$1}var rotateZ_1$1,hasRequiredRotateZ$1;function requireRotateZ$1(){return hasRequiredRotateZ$1||(hasRequiredRotateZ$1=1,rotateZ_1$1=(J,la,xa,Aa)=>{const ba=[],Sa=[];return ba[0]=la[0]-xa[0],ba[1]=la[1]-xa[1],Sa[0]=ba[0]*Math.cos(Aa)-ba[1]*Math.sin(Aa),Sa[1]=ba[0]*Math.sin(Aa)+ba[1]*Math.cos(Aa),J[0]=Sa[0]+xa[0],J[1]=Sa[1]+xa[1],J[2]=la[2],J}),rotateZ_1$1}var scale_1$2,hasRequiredScale$2;function requireScale$2(){return hasRequiredScale$2||(hasRequiredScale$2=1,scale_1$2=(J,la,xa)=>(J[0]=la[0]*xa,J[1]=la[1]*xa,J[2]=la[2]*xa,J)),scale_1$2}var snap_1$1,hasRequiredSnap$1;function requireSnap$1(){return hasRequiredSnap$1||(hasRequiredSnap$1=1,snap_1$1=(J,la,xa)=>(J[0]=Math.round(la[0]/xa)*xa+0,J[1]=Math.round(la[1]/xa)*xa+0,J[2]=Math.round(la[2]/xa)*xa+0,J)),snap_1$1}var squaredDistance_1,hasRequiredSquaredDistance;function requireSquaredDistance(){return hasRequiredSquaredDistance||(hasRequiredSquaredDistance=1,squaredDistance_1=(J,la)=>{const xa=la[0]-J[0],Aa=la[1]-J[1],ba=la[2]-J[2];return xa*xa+Aa*Aa+ba*ba}),squaredDistance_1}var squaredLength_1,hasRequiredSquaredLength;function requireSquaredLength(){return hasRequiredSquaredLength||(hasRequiredSquaredLength=1,squaredLength_1=J=>{const la=J[0],xa=J[1],Aa=J[2];return la*la+xa*xa+Aa*Aa}),squaredLength_1}var subtract_1$2,hasRequiredSubtract$2;function requireSubtract$2(){return hasRequiredSubtract$2||(hasRequiredSubtract$2=1,subtract_1$2=(J,la,xa)=>(J[0]=la[0]-xa[0],J[1]=la[1]-xa[1],J[2]=la[2]-xa[2],J)),subtract_1$2}var toString_1$9,hasRequiredToString$9;function requireToString$9(){return hasRequiredToString$9||(hasRequiredToString$9=1,toString_1$9=J=>`[${J[0].toFixed(7)}, ${J[1].toFixed(7)}, ${J[2].toFixed(7)}]`),toString_1$9}var transform_1$a,hasRequiredTransform$a;function requireTransform$a(){return hasRequiredTransform$a||(hasRequiredTransform$a=1,transform_1$a=(J,la,xa)=>{const Aa=la[0],ba=la[1],Sa=la[2];let Ma=xa[3]*Aa+xa[7]*ba+xa[11]*Sa+xa[15];return Ma=Ma||1,J[0]=(xa[0]*Aa+xa[4]*ba+xa[8]*Sa+xa[12])/Ma,J[1]=(xa[1]*Aa+xa[5]*ba+xa[9]*Sa+xa[13])/Ma,J[2]=(xa[2]*Aa+xa[6]*ba+xa[10]*Sa+xa[14])/Ma,J}),transform_1$a}var vec3,hasRequiredVec3;function requireVec3(){return hasRequiredVec3||(hasRequiredVec3=1,vec3={abs:requireAbs(),add:requireAdd$1(),angle:requireAngle(),clone:requireClone$9(),copy:requireCopy$4(),create:requireCreate$b(),cross:requireCross(),distance:requireDistance(),divide:requireDivide(),dot:requireDot$1(),equals:requireEquals$6(),fromScalar:requireFromScalar$1(),fromValues:requireFromValues$3(),fromVec2:requireFromVec2(),length:requireLength$1(),lerp:requireLerp(),max:requireMax$1(),min:requireMin$1(),multiply:requireMultiply$1(),negate:requireNegate(),normalize:requireNormalize(),orthogonal:requireOrthogonal(),rotateX:requireRotateX$1(),rotateY:requireRotateY$1(),rotateZ:requireRotateZ$1(),scale:requireScale$2(),snap:requireSnap$1(),squaredDistance:requireSquaredDistance(),squaredLength:requireSquaredLength(),subtract:requireSubtract$2(),toString:requireToString$9(),transform:requireTransform$a()}),vec3}var clone_1$8,hasRequiredClone$8;function requireClone$8(){return hasRequiredClone$8||(hasRequiredClone$8=1,clone_1$8=J=>Object.assign({},J)),clone_1$8}var add_1,hasRequiredAdd;function requireAdd(){return hasRequiredAdd||(hasRequiredAdd=1,add_1=(J,la,xa)=>(J[0]=la[0]+xa[0],J[1]=la[1]+xa[1],J[2]=la[2]+xa[2],J[3]=la[3]+xa[3],J[4]=la[4]+xa[4],J[5]=la[5]+xa[5],J[6]=la[6]+xa[6],J[7]=la[7]+xa[7],J[8]=la[8]+xa[8],J[9]=la[9]+xa[9],J[10]=la[10]+xa[10],J[11]=la[11]+xa[11],J[12]=la[12]+xa[12],J[13]=la[13]+xa[13],J[14]=la[14]+xa[14],J[15]=la[15]+xa[15],J)),add_1}var create_1$a,hasRequiredCreate$a;function requireCreate$a(){return hasRequiredCreate$a||(hasRequiredCreate$a=1,create_1$a=()=>[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),create_1$a}var clone_1$7,hasRequiredClone$7;function requireClone$7(){if(hasRequiredClone$7)return clone_1$7;hasRequiredClone$7=1;const ua=requireCreate$a();return clone_1$7=la=>{const xa=ua();return xa[0]=la[0],xa[1]=la[1],xa[2]=la[2],xa[3]=la[3],xa[4]=la[4],xa[5]=la[5],xa[6]=la[6],xa[7]=la[7],xa[8]=la[8],xa[9]=la[9],xa[10]=la[10],xa[11]=la[11],xa[12]=la[12],xa[13]=la[13],xa[14]=la[14],xa[15]=la[15],xa},clone_1$7}var copy_1$3,hasRequiredCopy$3;function requireCopy$3(){return hasRequiredCopy$3||(hasRequiredCopy$3=1,copy_1$3=(J,la)=>(J[0]=la[0],J[1]=la[1],J[2]=la[2],J[3]=la[3],J[4]=la[4],J[5]=la[5],J[6]=la[6],J[7]=la[7],J[8]=la[8],J[9]=la[9],J[10]=la[10],J[11]=la[11],J[12]=la[12],J[13]=la[13],J[14]=la[14],J[15]=la[15],J)),copy_1$3}var invert_1$2,hasRequiredInvert$2;function requireInvert$2(){return hasRequiredInvert$2||(hasRequiredInvert$2=1,invert_1$2=(J,la)=>{const xa=la[0],Aa=la[1],ba=la[2],Sa=la[3],Ma=la[4],Ra=la[5],Ia=la[6],La=la[7],Fa=la[8],ka=la[9],el=la[10],tl=la[11],rl=la[12],il=la[13],nl=la[14],sl=la[15],ll=xa*Ra-Aa*Ma,dl=xa*Ia-ba*Ma,gl=xa*La-Sa*Ma,_l=Aa*Ia-ba*Ra,vl=Aa*La-Sa*Ra,Tl=ba*La-Sa*Ia,Ll=Fa*il-ka*rl,Il=Fa*nl-el*rl,Fl=Fa*sl-tl*rl,Ol=ka*nl-el*il,ql=ka*sl-tl*il,rc=el*sl-tl*nl;let sc=ll*rc-dl*ql+gl*Ol+_l*Fl-vl*Il+Tl*Ll;return sc?(sc=1/sc,J[0]=(Ra*rc-Ia*ql+La*Ol)*sc,J[1]=(ba*ql-Aa*rc-Sa*Ol)*sc,J[2]=(il*Tl-nl*vl+sl*_l)*sc,J[3]=(el*vl-ka*Tl-tl*_l)*sc,J[4]=(Ia*Fl-Ma*rc-La*Il)*sc,J[5]=(xa*rc-ba*Fl+Sa*Il)*sc,J[6]=(nl*gl-rl*Tl-sl*dl)*sc,J[7]=(Fa*Tl-el*gl+tl*dl)*sc,J[8]=(Ma*ql-Ra*Fl+La*Ll)*sc,J[9]=(Aa*Fl-xa*ql-Sa*Ll)*sc,J[10]=(rl*vl-il*gl+sl*ll)*sc,J[11]=(ka*gl-Fa*vl-tl*ll)*sc,J[12]=(Ra*Il-Ma*Ol-Ia*Ll)*sc,J[13]=(xa*Ol-Aa*Il+ba*Ll)*sc,J[14]=(il*dl-rl*_l-nl*ll)*sc,J[15]=(Fa*_l-ka*dl+el*ll)*sc,J):null}),invert_1$2}var equals_1$5,hasRequiredEquals$5;function requireEquals$5(){return hasRequiredEquals$5||(hasRequiredEquals$5=1,equals_1$5=(J,la)=>J[0]===la[0]&&J[1]===la[1]&&J[2]===la[2]&&J[3]===la[3]&&J[4]===la[4]&&J[5]===la[5]&&J[6]===la[6]&&J[7]===la[7]&&J[8]===la[8]&&J[9]===la[9]&&J[10]===la[10]&&J[11]===la[11]&&J[12]===la[12]&&J[13]===la[13]&&J[14]===la[14]&&J[15]===la[15]),equals_1$5}var identity_1,hasRequiredIdentity;function requireIdentity(){return hasRequiredIdentity||(hasRequiredIdentity=1,identity_1=J=>(J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J)),identity_1}var fromRotation_1,hasRequiredFromRotation;function requireFromRotation(){if(hasRequiredFromRotation)return fromRotation_1;hasRequiredFromRotation=1;const{EPS:ua}=requireConstants$1(),{sin:J,cos:la}=requireTrigonometry(),xa=requireIdentity();return fromRotation_1=(ba,Sa,Ma)=>{let[Ra,Ia,La]=Ma;const Fa=Ra*Ra+Ia*Ia+La*La;if(Math.abs(Fa)<ua)return xa(ba);const ka=1/Math.sqrt(Fa);Ra*=ka,Ia*=ka,La*=ka;const el=J(Sa),tl=la(Sa),rl=1-tl;return ba[0]=Ra*Ra*rl+tl,ba[1]=Ia*Ra*rl+La*el,ba[2]=La*Ra*rl-Ia*el,ba[3]=0,ba[4]=Ra*Ia*rl-La*el,ba[5]=Ia*Ia*rl+tl,ba[6]=La*Ia*rl+Ra*el,ba[7]=0,ba[8]=Ra*La*rl+Ia*el,ba[9]=Ia*La*rl-Ra*el,ba[10]=La*La*rl+tl,ba[11]=0,ba[12]=0,ba[13]=0,ba[14]=0,ba[15]=1,ba},fromRotation_1}var fromScaling_1,hasRequiredFromScaling;function requireFromScaling(){return hasRequiredFromScaling||(hasRequiredFromScaling=1,fromScaling_1=(J,la)=>(J[0]=la[0],J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=la[1],J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=la[2],J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J)),fromScaling_1}var fromTaitBryanRotation_1,hasRequiredFromTaitBryanRotation;function requireFromTaitBryanRotation(){if(hasRequiredFromTaitBryanRotation)return fromTaitBryanRotation_1;hasRequiredFromTaitBryanRotation=1;const{sin:ua,cos:J}=requireTrigonometry();return fromTaitBryanRotation_1=(xa,Aa,ba,Sa)=>{const Ma=ua(Aa),Ra=J(Aa),Ia=ua(ba),La=J(ba),Fa=ua(Sa),ka=J(Sa);return xa[0]=La*Ra,xa[1]=La*Ma,xa[2]=-Ia,xa[3]=0,xa[4]=Fa*Ia*Ra-ka*Ma,xa[5]=ka*Ra+Fa*Ia*Ma,xa[6]=Fa*La,xa[7]=0,xa[8]=Fa*Ma+ka*Ia*Ra,xa[9]=ka*Ia*Ma-Fa*Ra,xa[10]=ka*La,xa[11]=0,xa[12]=0,xa[13]=0,xa[14]=0,xa[15]=1,xa},fromTaitBryanRotation_1}var fromTranslation_1,hasRequiredFromTranslation;function requireFromTranslation(){return hasRequiredFromTranslation||(hasRequiredFromTranslation=1,fromTranslation_1=(J,la)=>(J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=la[0],J[13]=la[1],J[14]=la[2],J[15]=1,J)),fromTranslation_1}var fromValues_1$2,hasRequiredFromValues$2;function requireFromValues$2(){if(hasRequiredFromValues$2)return fromValues_1$2;hasRequiredFromValues$2=1;const ua=requireCreate$a();return fromValues_1$2=(la,xa,Aa,ba,Sa,Ma,Ra,Ia,La,Fa,ka,el,tl,rl,il,nl)=>{const sl=ua();return sl[0]=la,sl[1]=xa,sl[2]=Aa,sl[3]=ba,sl[4]=Sa,sl[5]=Ma,sl[6]=Ra,sl[7]=Ia,sl[8]=La,sl[9]=Fa,sl[10]=ka,sl[11]=el,sl[12]=tl,sl[13]=rl,sl[14]=il,sl[15]=nl,sl},fromValues_1$2}var fromVectorRotation_1,hasRequiredFromVectorRotation;function requireFromVectorRotation(){if(hasRequiredFromVectorRotation)return fromVectorRotation_1;hasRequiredFromVectorRotation=1;const ua=requireVec3(),J=requireFromRotation();return fromVectorRotation_1=(xa,Aa,ba)=>{const Sa=ua.normalize(ua.create(),Aa),Ma=ua.normalize(ua.create(),ba),Ra=ua.cross(ua.create(),Ma,Sa),Ia=ua.dot(Ma,Sa);if(Ia===-1)return J(xa,Math.PI,ua.orthogonal(Ra,Sa));const La=1/(1+Ia);return xa[0]=Ra[0]*Ra[0]*La+Ia,xa[1]=Ra[1]*Ra[0]*La-Ra[2],xa[2]=Ra[2]*Ra[0]*La+Ra[1],xa[3]=0,xa[4]=Ra[0]*Ra[1]*La+Ra[2],xa[5]=Ra[1]*Ra[1]*La+Ia,xa[6]=Ra[2]*Ra[1]*La-Ra[0],xa[7]=0,xa[8]=Ra[0]*Ra[2]*La-Ra[1],xa[9]=Ra[1]*Ra[2]*La+Ra[0],xa[10]=Ra[2]*Ra[2]*La+Ia,xa[11]=0,xa[12]=0,xa[13]=0,xa[14]=0,xa[15]=1,xa},fromVectorRotation_1}var fromXRotation_1,hasRequiredFromXRotation;function requireFromXRotation(){if(hasRequiredFromXRotation)return fromXRotation_1;hasRequiredFromXRotation=1;const{sin:ua,cos:J}=requireTrigonometry();return fromXRotation_1=(xa,Aa)=>{const ba=ua(Aa),Sa=J(Aa);return xa[0]=1,xa[1]=0,xa[2]=0,xa[3]=0,xa[4]=0,xa[5]=Sa,xa[6]=ba,xa[7]=0,xa[8]=0,xa[9]=-ba,xa[10]=Sa,xa[11]=0,xa[12]=0,xa[13]=0,xa[14]=0,xa[15]=1,xa},fromXRotation_1}var fromYRotation_1,hasRequiredFromYRotation;function requireFromYRotation(){if(hasRequiredFromYRotation)return fromYRotation_1;hasRequiredFromYRotation=1;const{sin:ua,cos:J}=requireTrigonometry();return fromYRotation_1=(xa,Aa)=>{const ba=ua(Aa),Sa=J(Aa);return xa[0]=Sa,xa[1]=0,xa[2]=-ba,xa[3]=0,xa[4]=0,xa[5]=1,xa[6]=0,xa[7]=0,xa[8]=ba,xa[9]=0,xa[10]=Sa,xa[11]=0,xa[12]=0,xa[13]=0,xa[14]=0,xa[15]=1,xa},fromYRotation_1}var fromZRotation_1,hasRequiredFromZRotation;function requireFromZRotation(){if(hasRequiredFromZRotation)return fromZRotation_1;hasRequiredFromZRotation=1;const{sin:ua,cos:J}=requireTrigonometry();return fromZRotation_1=(xa,Aa)=>{const ba=ua(Aa),Sa=J(Aa);return xa[0]=Sa,xa[1]=ba,xa[2]=0,xa[3]=0,xa[4]=-ba,xa[5]=Sa,xa[6]=0,xa[7]=0,xa[8]=0,xa[9]=0,xa[10]=1,xa[11]=0,xa[12]=0,xa[13]=0,xa[14]=0,xa[15]=1,xa},fromZRotation_1}var isIdentity_1,hasRequiredIsIdentity;function requireIsIdentity(){return hasRequiredIsIdentity||(hasRequiredIsIdentity=1,isIdentity_1=J=>J[0]===1&&J[1]===0&&J[2]===0&&J[3]===0&&J[4]===0&&J[5]===1&&J[6]===0&&J[7]===0&&J[8]===0&&J[9]===0&&J[10]===1&&J[11]===0&&J[12]===0&&J[13]===0&&J[14]===0&&J[15]===1),isIdentity_1}var isOnlyTransformScale_1,hasRequiredIsOnlyTransformScale;function requireIsOnlyTransformScale(){if(hasRequiredIsOnlyTransformScale)return isOnlyTransformScale_1;hasRequiredIsOnlyTransformScale=1;const ua=la=>J(la[1])&&J(la[2])&&J(la[3])&&J(la[4])&&J(la[6])&&J(la[7])&&J(la[8])&&J(la[9])&&J(la[11])&&la[15]===1,J=la=>Math.abs(la)<Number.EPSILON;return isOnlyTransformScale_1=ua,isOnlyTransformScale_1}var isMirroring_1,hasRequiredIsMirroring;function requireIsMirroring(){return hasRequiredIsMirroring||(hasRequiredIsMirroring=1,isMirroring_1=J=>{const la=J[4]*J[9]-J[8]*J[5],xa=J[8]*J[1]-J[0]*J[9],Aa=J[0]*J[5]-J[4]*J[1];return la*J[2]+xa*J[6]+Aa*J[10]<0}),isMirroring_1}var mirrorByPlane_1,hasRequiredMirrorByPlane;function requireMirrorByPlane(){return hasRequiredMirrorByPlane||(hasRequiredMirrorByPlane=1,mirrorByPlane_1=(J,la)=>{const[xa,Aa,ba,Sa]=la;return J[0]=1-2*xa*xa,J[1]=-2*Aa*xa,J[2]=-2*ba*xa,J[3]=0,J[4]=-2*xa*Aa,J[5]=1-2*Aa*Aa,J[6]=-2*ba*Aa,J[7]=0,J[8]=-2*xa*ba,J[9]=-2*Aa*ba,J[10]=1-2*ba*ba,J[11]=0,J[12]=2*xa*Sa,J[13]=2*Aa*Sa,J[14]=2*ba*Sa,J[15]=1,J}),mirrorByPlane_1}var multiply_1,hasRequiredMultiply;function requireMultiply(){return hasRequiredMultiply||(hasRequiredMultiply=1,multiply_1=(J,la,xa)=>{const Aa=la[0],ba=la[1],Sa=la[2],Ma=la[3],Ra=la[4],Ia=la[5],La=la[6],Fa=la[7],ka=la[8],el=la[9],tl=la[10],rl=la[11],il=la[12],nl=la[13],sl=la[14],ll=la[15];let dl=xa[0],gl=xa[1],_l=xa[2],vl=xa[3];return J[0]=dl*Aa+gl*Ra+_l*ka+vl*il,J[1]=dl*ba+gl*Ia+_l*el+vl*nl,J[2]=dl*Sa+gl*La+_l*tl+vl*sl,J[3]=dl*Ma+gl*Fa+_l*rl+vl*ll,dl=xa[4],gl=xa[5],_l=xa[6],vl=xa[7],J[4]=dl*Aa+gl*Ra+_l*ka+vl*il,J[5]=dl*ba+gl*Ia+_l*el+vl*nl,J[6]=dl*Sa+gl*La+_l*tl+vl*sl,J[7]=dl*Ma+gl*Fa+_l*rl+vl*ll,dl=xa[8],gl=xa[9],_l=xa[10],vl=xa[11],J[8]=dl*Aa+gl*Ra+_l*ka+vl*il,J[9]=dl*ba+gl*Ia+_l*el+vl*nl,J[10]=dl*Sa+gl*La+_l*tl+vl*sl,J[11]=dl*Ma+gl*Fa+_l*rl+vl*ll,dl=xa[12],gl=xa[13],_l=xa[14],vl=xa[15],J[12]=dl*Aa+gl*Ra+_l*ka+vl*il,J[13]=dl*ba+gl*Ia+_l*el+vl*nl,J[14]=dl*Sa+gl*La+_l*tl+vl*sl,J[15]=dl*Ma+gl*Fa+_l*rl+vl*ll,J}),multiply_1}var rotate_1$1,hasRequiredRotate$1;function requireRotate$1(){if(hasRequiredRotate$1)return rotate_1$1;hasRequiredRotate$1=1;const{EPS:ua}=requireConstants$1(),{sin:J,cos:la}=requireTrigonometry(),xa=requireCopy$3();return rotate_1$1=(ba,Sa,Ma,Ra)=>{let[Ia,La,Fa]=Ra;const ka=Ia*Ia+La*La+Fa*Fa;if(Math.abs(ka)<ua)return xa(ba,Sa);const el=1/Math.sqrt(ka);Ia*=el,La*=el,Fa*=el;const tl=J(Ma),rl=la(Ma),il=1-rl,nl=Sa[0],sl=Sa[1],ll=Sa[2],dl=Sa[3],gl=Sa[4],_l=Sa[5],vl=Sa[6],Tl=Sa[7],Ll=Sa[8],Il=Sa[9],Fl=Sa[10],Ol=Sa[11],ql=Ia*Ia*il+rl,rc=La*Ia*il+Fa*tl,sc=Fa*Ia*il-La*tl,Kl=Ia*La*il-Fa*tl,Gl=La*La*il+rl,kl=Fa*La*il+Ia*tl,Wl=Ia*Fa*il+La*tl,tc=La*Fa*il-Ia*tl,Zl=Fa*Fa*il+rl;return ba[0]=nl*ql+gl*rc+Ll*sc,ba[1]=sl*ql+_l*rc+Il*sc,ba[2]=ll*ql+vl*rc+Fl*sc,ba[3]=dl*ql+Tl*rc+Ol*sc,ba[4]=nl*Kl+gl*Gl+Ll*kl,ba[5]=sl*Kl+_l*Gl+Il*kl,ba[6]=ll*Kl+vl*Gl+Fl*kl,ba[7]=dl*Kl+Tl*Gl+Ol*kl,ba[8]=nl*Wl+gl*tc+Ll*Zl,ba[9]=sl*Wl+_l*tc+Il*Zl,ba[10]=ll*Wl+vl*tc+Fl*Zl,ba[11]=dl*Wl+Tl*tc+Ol*Zl,Sa!==ba&&(ba[12]=Sa[12],ba[13]=Sa[13],ba[14]=Sa[14],ba[15]=Sa[15]),ba},rotate_1$1}var rotateX_1,hasRequiredRotateX;function requireRotateX(){if(hasRequiredRotateX)return rotateX_1;hasRequiredRotateX=1;const{sin:ua,cos:J}=requireTrigonometry();return rotateX_1=(xa,Aa,ba)=>{const Sa=ua(ba),Ma=J(ba),Ra=Aa[4],Ia=Aa[5],La=Aa[6],Fa=Aa[7],ka=Aa[8],el=Aa[9],tl=Aa[10],rl=Aa[11];return Aa!==xa&&(xa[0]=Aa[0],xa[1]=Aa[1],xa[2]=Aa[2],xa[3]=Aa[3],xa[12]=Aa[12],xa[13]=Aa[13],xa[14]=Aa[14],xa[15]=Aa[15]),xa[4]=Ra*Ma+ka*Sa,xa[5]=Ia*Ma+el*Sa,xa[6]=La*Ma+tl*Sa,xa[7]=Fa*Ma+rl*Sa,xa[8]=ka*Ma-Ra*Sa,xa[9]=el*Ma-Ia*Sa,xa[10]=tl*Ma-La*Sa,xa[11]=rl*Ma-Fa*Sa,xa},rotateX_1}var rotateY_1,hasRequiredRotateY;function requireRotateY(){if(hasRequiredRotateY)return rotateY_1;hasRequiredRotateY=1;const{sin:ua,cos:J}=requireTrigonometry();return rotateY_1=(xa,Aa,ba)=>{const Sa=ua(ba),Ma=J(ba),Ra=Aa[0],Ia=Aa[1],La=Aa[2],Fa=Aa[3],ka=Aa[8],el=Aa[9],tl=Aa[10],rl=Aa[11];return Aa!==xa&&(xa[4]=Aa[4],xa[5]=Aa[5],xa[6]=Aa[6],xa[7]=Aa[7],xa[12]=Aa[12],xa[13]=Aa[13],xa[14]=Aa[14],xa[15]=Aa[15]),xa[0]=Ra*Ma-ka*Sa,xa[1]=Ia*Ma-el*Sa,xa[2]=La*Ma-tl*Sa,xa[3]=Fa*Ma-rl*Sa,xa[8]=Ra*Sa+ka*Ma,xa[9]=Ia*Sa+el*Ma,xa[10]=La*Sa+tl*Ma,xa[11]=Fa*Sa+rl*Ma,xa},rotateY_1}var rotateZ_1,hasRequiredRotateZ;function requireRotateZ(){if(hasRequiredRotateZ)return rotateZ_1;hasRequiredRotateZ=1;const{sin:ua,cos:J}=requireTrigonometry();return rotateZ_1=(xa,Aa,ba)=>{const Sa=ua(ba),Ma=J(ba),Ra=Aa[0],Ia=Aa[1],La=Aa[2],Fa=Aa[3],ka=Aa[4],el=Aa[5],tl=Aa[6],rl=Aa[7];return Aa!==xa&&(xa[8]=Aa[8],xa[9]=Aa[9],xa[10]=Aa[10],xa[11]=Aa[11],xa[12]=Aa[12],xa[13]=Aa[13],xa[14]=Aa[14],xa[15]=Aa[15]),xa[0]=Ra*Ma+ka*Sa,xa[1]=Ia*Ma+el*Sa,xa[2]=La*Ma+tl*Sa,xa[3]=Fa*Ma+rl*Sa,xa[4]=ka*Ma-Ra*Sa,xa[5]=el*Ma-Ia*Sa,xa[6]=tl*Ma-La*Sa,xa[7]=rl*Ma-Fa*Sa,xa},rotateZ_1}var scale_1$1,hasRequiredScale$1;function requireScale$1(){return hasRequiredScale$1||(hasRequiredScale$1=1,scale_1$1=(J,la,xa)=>{const Aa=xa[0],ba=xa[1],Sa=xa[2];return J[0]=la[0]*Aa,J[1]=la[1]*Aa,J[2]=la[2]*Aa,J[3]=la[3]*Aa,J[4]=la[4]*ba,J[5]=la[5]*ba,J[6]=la[6]*ba,J[7]=la[7]*ba,J[8]=la[8]*Sa,J[9]=la[9]*Sa,J[10]=la[10]*Sa,J[11]=la[11]*Sa,J[12]=la[12],J[13]=la[13],J[14]=la[14],J[15]=la[15],J}),scale_1$1}var subtract_1$1,hasRequiredSubtract$1;function requireSubtract$1(){return hasRequiredSubtract$1||(hasRequiredSubtract$1=1,subtract_1$1=(J,la,xa)=>(J[0]=la[0]-xa[0],J[1]=la[1]-xa[1],J[2]=la[2]-xa[2],J[3]=la[3]-xa[3],J[4]=la[4]-xa[4],J[5]=la[5]-xa[5],J[6]=la[6]-xa[6],J[7]=la[7]-xa[7],J[8]=la[8]-xa[8],J[9]=la[9]-xa[9],J[10]=la[10]-xa[10],J[11]=la[11]-xa[11],J[12]=la[12]-xa[12],J[13]=la[13]-xa[13],J[14]=la[14]-xa[14],J[15]=la[15]-xa[15],J)),subtract_1$1}var toString_1$8,hasRequiredToString$8;function requireToString$8(){return hasRequiredToString$8||(hasRequiredToString$8=1,toString_1$8=J=>J.map(la=>la.toFixed(7)).toString()),toString_1$8}var translate_1$1,hasRequiredTranslate$1;function requireTranslate$1(){return hasRequiredTranslate$1||(hasRequiredTranslate$1=1,translate_1$1=(J,la,xa)=>{const Aa=xa[0],ba=xa[1],Sa=xa[2];let Ma,Ra,Ia,La,Fa,ka,el,tl,rl,il,nl,sl;return la===J?(J[12]=la[0]*Aa+la[4]*ba+la[8]*Sa+la[12],J[13]=la[1]*Aa+la[5]*ba+la[9]*Sa+la[13],J[14]=la[2]*Aa+la[6]*ba+la[10]*Sa+la[14],J[15]=la[3]*Aa+la[7]*ba+la[11]*Sa+la[15]):(Ma=la[0],Ra=la[1],Ia=la[2],La=la[3],Fa=la[4],ka=la[5],el=la[6],tl=la[7],rl=la[8],il=la[9],nl=la[10],sl=la[11],J[0]=Ma,J[1]=Ra,J[2]=Ia,J[3]=La,J[4]=Fa,J[5]=ka,J[6]=el,J[7]=tl,J[8]=rl,J[9]=il,J[10]=nl,J[11]=sl,J[12]=Ma*Aa+Fa*ba+rl*Sa+la[12],J[13]=Ra*Aa+ka*ba+il*Sa+la[13],J[14]=Ia*Aa+el*ba+nl*Sa+la[14],J[15]=La*Aa+tl*ba+sl*Sa+la[15]),J}),translate_1$1}var mat4,hasRequiredMat4;function requireMat4(){return hasRequiredMat4||(hasRequiredMat4=1,mat4={add:requireAdd(),clone:requireClone$7(),copy:requireCopy$3(),create:requireCreate$a(),invert:requireInvert$2(),equals:requireEquals$5(),fromRotation:requireFromRotation(),fromScaling:requireFromScaling(),fromTaitBryanRotation:requireFromTaitBryanRotation(),fromTranslation:requireFromTranslation(),fromValues:requireFromValues$2(),fromVectorRotation:requireFromVectorRotation(),fromXRotation:requireFromXRotation(),fromYRotation:requireFromYRotation(),fromZRotation:requireFromZRotation(),identity:requireIdentity(),isIdentity:requireIsIdentity(),isOnlyTransformScale:requireIsOnlyTransformScale(),isMirroring:requireIsMirroring(),mirrorByPlane:requireMirrorByPlane(),multiply:requireMultiply(),rotate:requireRotate$1(),rotateX:requireRotateX(),rotateY:requireRotateY(),rotateZ:requireRotateZ(),scale:requireScale$1(),subtract:requireSubtract$1(),toString:requireToString$8(),translate:requireTranslate$1()}),mat4}var create_1$9,hasRequiredCreate$9;function requireCreate$9(){if(hasRequiredCreate$9)return create_1$9;hasRequiredCreate$9=1;const ua=requireMat4();return create_1$9=la=>(la===void 0&&(la=[]),{sides:la,transforms:ua.create()}),create_1$9}var fromPoints_1$7,hasRequiredFromPoints$7;function requireFromPoints$7(){if(hasRequiredFromPoints$7)return fromPoints_1$7;hasRequiredFromPoints$7=1;const ua=requireVec2(),J=requireCreate$9();return fromPoints_1$7=xa=>{if(!Array.isArray(xa))throw new Error("the given points must be an array");let Aa=xa.length;if(Aa<3)throw new Error("the given points must define a closed geometry with three or more points");ua.equals(xa[0],xa[Aa-1])&&--Aa;const ba=[];let Sa=xa[Aa-1];for(let Ma=0;Ma<Aa;Ma++){const Ra=xa[Ma];ba.push([ua.clone(Sa),ua.clone(Ra)]),Sa=Ra}return J(ba)},fromPoints_1$7}var fromCompactBinary_1$2,hasRequiredFromCompactBinary$2;function requireFromCompactBinary$2(){if(hasRequiredFromCompactBinary$2)return fromCompactBinary_1$2;hasRequiredFromCompactBinary$2=1;const ua=requireMat4(),J=requireVec2(),la=requireCreate$9();return fromCompactBinary_1$2=Aa=>{if(Aa[0]!==0)throw new Error("invalid compact binary data");const ba=la();ba.transforms=ua.clone(Aa.slice(1,17));for(let Sa=21;Sa<Aa.length;Sa+=4){const Ma=J.fromValues(Aa[Sa+0],Aa[Sa+1]),Ra=J.fromValues(Aa[Sa+2],Aa[Sa+3]);ba.sides.push([Ma,Ra])}return Aa[17]>=0&&(ba.color=[Aa[17],Aa[18],Aa[19],Aa[20]]),ba},fromCompactBinary_1$2}var isA_1$4,hasRequiredIsA$4;function requireIsA$4(){return hasRequiredIsA$4||(hasRequiredIsA$4=1,isA_1$4=J=>!!(J&&typeof J=="object"&&"sides"in J&&"transforms"in J&&Array.isArray(J.sides)&&"length"in J.transforms)),isA_1$4}var applyTransforms_1$2,hasRequiredApplyTransforms$2;function requireApplyTransforms$2(){if(hasRequiredApplyTransforms$2)return applyTransforms_1$2;hasRequiredApplyTransforms$2=1;const ua=requireMat4(),J=requireVec2();return applyTransforms_1$2=xa=>(ua.isIdentity(xa.transforms)||(xa.sides=xa.sides.map(Aa=>{const ba=J.transform(J.create(),Aa[0],xa.transforms),Sa=J.transform(J.create(),Aa[1],xa.transforms);return[ba,Sa]}),xa.transforms=ua.create()),xa),applyTransforms_1$2}var toSides_1,hasRequiredToSides;function requireToSides(){if(hasRequiredToSides)return toSides_1;hasRequiredToSides=1;const ua=requireApplyTransforms$2();return toSides_1=la=>ua(la).sides,toSides_1}var reverse_1$4,hasRequiredReverse$4;function requireReverse$4(){if(hasRequiredReverse$4)return reverse_1$4;hasRequiredReverse$4=1;const ua=requireCreate$9(),J=requireToSides();return reverse_1$4=xa=>{const ba=J(xa).map(Sa=>[Sa[1],Sa[0]]);return ba.reverse(),ua(ba)},reverse_1$4}var toOutlines_1,hasRequiredToOutlines;function requireToOutlines(){if(hasRequiredToOutlines)return toOutlines_1;hasRequiredToOutlines=1;const ua=requireVec2(),J=requireToSides(),la=Sa=>{const Ma=new Map,Ra=Ia=>{const La=Ia.toString();return Ma.has(La)?Ma.get(La):(Ma.set(La,Ia),Ia)};return Sa.map(Ia=>Ia.map(Ra))},xa=Sa=>{const Ma=new Map;return la(Sa).forEach(Ia=>{Ma.has(Ia[0])?Ma.get(Ia[0]).push(Ia):Ma.set(Ia[0],[Ia])}),Ma},Aa=Sa=>{const Ma=xa(J(Sa)),Ra=[];for(;;){let Ia;for(const[ka,el]of Ma){if(Ia=el.shift(),!Ia){Ma.delete(ka);continue}break}if(Ia===void 0)break;const La=[],Fa=Ia[0];for(;;){La.push(Ia[0]);const ka=Ia[1];if(ka===Fa)break;const el=Ma.get(ka);if(!el)throw new Error(`geometry is not closed at vertex ${ka}`);const tl=ba(Ia,el);el.length===0&&Ma.delete(ka),Ia=tl}La.length>0&&La.push(La.shift()),Ra.push(La)}return Ma.clear(),Ra},ba=(Sa,Ma)=>{if(Ma.length===1)return Ma.pop();const Ra=ua.create(),Ia=ua.angleDegrees(ua.subtract(Ra,Sa[1],Sa[0]));let La,Fa;Ma.forEach((el,tl)=>{let il=ua.angleDegrees(ua.subtract(Ra,el[1],el[0]))-Ia;il<-180&&(il+=360),il>=180&&(il-=360),(Fa===void 0||il>La)&&(Fa=tl,La=il)});const ka=Ma[Fa];return Ma.splice(Fa,1),ka};return toOutlines_1=Aa,toOutlines_1}var toPoints_1$3,hasRequiredToPoints$3;function requireToPoints$3(){if(hasRequiredToPoints$3)return toPoints_1$3;hasRequiredToPoints$3=1;const ua=requireToSides();return toPoints_1$3=la=>{const Aa=ua(la).map(ba=>ba[0]);return Aa.length>0&&Aa.push(Aa.shift()),Aa},toPoints_1$3}var toString_1$7,hasRequiredToString$7;function requireToString$7(){if(hasRequiredToString$7)return toString_1$7;hasRequiredToString$7=1;const ua=requireVec2(),J=requireToSides();return toString_1$7=xa=>{const Aa=J(xa);let ba="geom2 ("+Aa.length+` sides):
|
|
@@ -22434,7 +22434,7 @@ void main() {
|
|
|
22434
22434
|
* Copyright 2010-2024 Three.js Authors
|
|
22435
22435
|
* SPDX-License-Identifier: MIT
|
|
22436
22436
|
*)
|
|
22437
|
-
*/const dist$2=Object.freeze(Object.defineProperty({__proto__:null,A0402,A0603,A0805,BGA,ChipBody,ExtrudedPads,FootprintPad,FootprintPlatedHole,Footprinter3d,PinRow,QFN,QFP,SOD123,SOT233P,SOT563,SOT723,SmdChipLead,Tssop},Symbol.toStringTag,{value:"Module"})),require$$19=getAugmentedNamespace(dist$2);var dist$1,hasRequiredDist$1;function requireDist$1(){if(hasRequiredDist$1)return dist$1;hasRequiredDist$1=1;var ua=Object.create,J=Object.defineProperty,la=Object.getOwnPropertyDescriptor,xa=Object.getOwnPropertyNames,Aa=Object.getPrototypeOf,ba=Object.prototype.hasOwnProperty,Sa=(Rc,Gc)=>{for(var Iu in Gc)J(Rc,Iu,{get:Gc[Iu],enumerable:!0})},Ma=(Rc,Gc,Iu,Xu)=>{if(Gc&&typeof Gc=="object"||typeof Gc=="function")for(let _0 of xa(Gc))!ba.call(Rc,_0)&&_0!==Iu&&J(Rc,_0,{get:()=>Gc[_0],enumerable:!(Xu=la(Gc,_0))||Xu.enumerable});return Rc},Ra=(Rc,Gc,Iu)=>(Iu=Rc!=null?ua(Aa(Rc)):{},Ma(!Rc||!Rc.__esModule?J(Iu,"default",{value:Rc,enumerable:!0}):Iu,Rc)),Ia=Rc=>Ma(J({},"__esModule",{value:!0}),Rc),La={};Sa(La,{CadViewer:()=>qh,useExportGltfUrl:()=>tl,useSaveGltfAs:()=>el}),dist$1=Ia(La);var Fa=requireThreeStdlib(),ka=requireReact();function el(Rc={}){const Gc=rl(Rc),Iu=(0,ka.useMemo)(()=>document.createElement("a"),[]),Xu=async G0=>{const wd=G0??Rc.filename??"";Rc.binary==null&&(Rc.binary=wd.endsWith(".glb"));const _d=await Gc(_0);Iu.download=wd,Iu.href=_d,Iu.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(_d)};(0,ka.useEffect)(()=>()=>{Iu.remove(),_0=null},[]);let _0;return[(0,ka.useCallback)(G0=>{_0=G0},[]),Xu]}function tl(Rc={}){const Gc=rl(Rc),[Iu,Xu]=(0,ka.useState)(),[_0,B0]=(0,ka.useState)(),G0=(0,ka.useCallback)(wd=>Gc(wd).then(Xu).catch(B0),[]);return(0,ka.useEffect)(()=>()=>URL.revokeObjectURL(Iu),[Iu]),[G0,Iu,_0]}function rl(Rc={}){const Gc=(0,ka.useMemo)(()=>new Fa.GLTFExporter,[]);return Iu=>{const{promise:Xu,resolve:_0,reject:B0}=Promise.withResolvers();return Gc.parse(Iu,G0=>{const wd=Rc.binary?"gltf-binary":"gltf+json",_d=new Blob([G0 instanceof ArrayBuffer?G0:JSON.stringify(G0)],{type:`model/${wd}`});_0(URL.createObjectURL(_d))},B0,Rc),Xu}}var il=require$$2,nl=requireReact(),sl=(Rc,Gc)=>(0,nl.useMemo)(()=>{if(!Rc)return;const Iu=new il.Circuit;return Iu.add(Rc),Iu.render(),Iu.getCircuitJson()},[Rc]),ll=requireDist$5(),dl=requireReact(),gl=requireDist$5(),_l=requireTransforms(),vl=requirePrimitives(),Tl=requireColors(),Ll=requireBooleans(),Il=requirePrimitives(),Fl=requireColors(),Ol=requireBooleans(),ql=.01,rc={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},sc=(Rc,Gc)=>{if(Rc.shape||(Rc.shape="circle"),Rc.shape==="circle")return(0,Fl.colorize)(rc.copper,(0,Ol.subtract)((0,Ol.union)((0,Il.cylinder)({center:[Rc.x,Rc.y,0],radius:Rc.hole_diameter/2,height:1.2}),(0,Il.cylinder)({center:[Rc.x,Rc.y,1.2/2],radius:Rc.outer_diameter/2,height:ql}),(0,Il.cylinder)({center:[Rc.x,Rc.y,-1.2/2],radius:Rc.outer_diameter/2,height:ql})),(0,Il.cylinder)({center:[Rc.x,Rc.y,0],radius:Rc.hole_diameter/2-ql,height:1.5})));if(Rc.shape==="pill"){const Iu=Rc.hole_height>Rc.hole_width,Xu=Iu?Rc.hole_height:Rc.hole_width,_0=Iu?Rc.hole_width:Rc.hole_height,B0=Iu?Rc.outer_width||Xu+.2:Rc.outer_height||_0+.2,G0=_0/2,wd=Math.abs(Xu-_0),_d=(0,Il.cuboid)({center:Iu?[Rc.x,Rc.y,0]:[Rc.x,Rc.y,0],size:Iu?[_0,wd,1.2]:[wd,_0,1.2]}),Cd=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,0]:[Rc.x-wd/2,Rc.y,0],radius:G0,height:1.2}),Jd=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,0]:[Rc.x+wd/2,Rc.y,0],radius:G0,height:1.2}),pf=(0,Il.cuboid)({center:Iu?[Rc.x,Rc.y,1.2/2]:[Rc.x,Rc.y,1.2/2],size:Iu?[B0,wd,ql]:[wd,B0,ql]}),nd=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,1.2/2]:[Rc.x-wd/2,Rc.y,1.2/2],radius:B0/2,height:ql}),Su=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,1.2/2]:[Rc.x+wd/2,Rc.y,1.2/2],radius:B0/2,height:ql}),Ju=(0,Il.cuboid)({center:Iu?[Rc.x,Rc.y,-1.2/2]:[Rc.x,Rc.y,-1.2/2],size:Iu?[B0,wd,ql]:[wd,B0,ql]}),y0=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,-1.2/2]:[Rc.x-wd/2,Rc.y,-1.2/2],radius:B0/2,height:ql}),j0=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,-1.2/2]:[Rc.x+wd/2,Rc.y,-1.2/2],radius:B0/2,height:ql});return(0,Fl.colorize)(rc.copper,(0,Ol.subtract)((0,Ol.union)(_d,Cd,Jd,pf,nd,Su,Ju,y0,j0),(0,Ol.union)((0,Il.cuboid)({center:[Rc.x,Rc.y,0],size:Iu?[_0-ql,wd,1.5]:[wd,_0-ql,1.5]}),(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,0]:[Rc.x-wd/2,Rc.y,0],radius:G0-ql,height:1.5}),(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,0]:[Rc.x+wd/2,Rc.y,0],radius:G0-ql,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${Rc.shape}`)},Kl=requireExtrusions(),Gl=requireExpansions(),kl=requireExtrusions(),Wl=requirePrimitives(),tc=requireTransforms(),Zl=Rc=>{let Gc=0;for(let Xu=0;Xu<Rc.length;Xu++){const _0=(Xu+1)%Rc.length;Gc+=Rc[Xu][0]*Rc[_0][1],Gc-=Rc[_0][0]*Rc[Xu][1]}return Gc/2<=0},ac=(Rc,Gc=1.2)=>{let Iu=Rc.map(B0=>[B0.x,B0.y]);Zl(Iu)&&(Iu=Iu.reverse());const Xu=(0,Wl.polygon)({points:Iu});let _0=(0,kl.extrudeLinear)({height:Gc},Xu);return _0=(0,tc.translate)([0,0,-Gc/2],_0),_0},Cc=requireText();function _c(Rc){var _d,Cd,Jd,pf;const Gc=(0,Cc.vectorText)({height:Rc.font_size,input:Rc.text});Gc.forEach(nd=>{nd.length===29?(Gc.splice(Gc.indexOf(nd),1,nd.slice(0,15)),Gc.splice(Gc.indexOf(nd),0,nd.slice(14,29))):nd.length===17&&(Gc.splice(Gc.indexOf(nd),1,nd.slice(0,10)),Gc.splice(Gc.indexOf(nd),0,nd.slice(9,17)))});const Iu=Gc.flatMap(nd=>nd),Xu={minX:Math.min(...Iu.map(nd=>nd[0])),maxX:Math.max(...Iu.map(nd=>nd[0])),minY:Math.min(...Iu.map(nd=>nd[1])),maxY:Math.max(...Iu.map(nd=>nd[1]))},_0=(Xu.minX+Xu.maxX)/2,B0=(Xu.minY+Xu.maxY)/2;let G0=-_0,wd=-B0;return(_d=Rc.anchor_alignment)!=null&&_d.includes("right")?G0=-Xu.maxX:(Cd=Rc.anchor_alignment)!=null&&Cd.includes("left")&&(G0=-Xu.minX),(Jd=Rc.anchor_alignment)!=null&&Jd.includes("top")?wd=-Xu.maxY:(pf=Rc.anchor_alignment)!=null&&pf.includes("bottom")&&(wd=-Xu.minY),{textOutlines:Gc,xOffset:G0,yOffset:wd}}var Dc=Rc=>{const Gc=(0,gl.su)(Rc).pcb_board.list()[0];if(!Gc)throw new Error("No pcb_board found");const Iu=(0,gl.su)(Rc).pcb_plated_hole.list(),Xu=(0,gl.su)(Rc).pcb_hole.list(),_0=(0,gl.su)(Rc).pcb_smtpad.list(),B0=(0,gl.su)(Rc).pcb_trace.list(),G0=(0,gl.su)(Rc).pcb_via.list(),wd=(0,gl.su)(Rc).pcb_silkscreen_text.list();let _d;Gc.outline&&Gc.outline.length>0?_d=ac(Gc.outline,1.2):_d=(0,vl.cuboid)({size:[Gc.width,Gc.height,1.2]});const Cd=[],Jd=[],pf=[],nd=Ju=>{if(Ju.shape==="circle"){const y0=(0,vl.cylinder)({center:[Ju.x,Ju.y,0],radius:Ju.hole_diameter/2+ql});_d=(0,Ll.subtract)(_d,y0);const j0=sc(Ju);Cd.push(j0)}else if(Ju.shape==="pill"){const y0=Ju.hole_height>Ju.hole_width,j0=y0?Ju.hole_height:Ju.hole_width,hd=y0?Ju.hole_width:Ju.hole_height,qd=hd/2,df=Math.abs(j0-hd),Ad=(0,Ll.union)((0,vl.cuboid)({center:[Ju.x,Ju.y,0],size:y0?[hd,df,1.5]:[df,hd,1.5]}),(0,vl.cylinder)({center:y0?[Ju.x,Ju.y-df/2,0]:[Ju.x-df/2,Ju.y,0],radius:qd,height:1.5}),(0,vl.cylinder)({center:y0?[Ju.x,Ju.y+df/2,0]:[Ju.x+df/2,Ju.y,0],radius:qd,height:1.5}));_d=(0,Ll.subtract)(_d,Ad);const q0=sc(Ju);Cd.push(q0)}};for(const Ju of Iu)nd(Ju);for(const Ju of Xu)if(Ju.hole_shape==="round"||Ju.hole_shape==="circle"){const y0=(0,vl.cylinder)({center:[Ju.x,Ju.y,0],radius:Ju.hole_diameter/2+ql});_d=(0,Ll.subtract)(_d,y0)}for(const Ju of _0){const y0=Ju.layer==="bottom"?-1:1;if(Ju.shape==="rect"){const j0=(0,Tl.colorize)(rc.copper,(0,vl.cuboid)({center:[Ju.x,Ju.y,y0*1.2/2+y0*ql],size:[Ju.width,Ju.height,ql]}));Jd.push(j0)}else if(Ju.shape==="circle"){const j0=(0,Tl.colorize)(rc.copper,(0,vl.cylinder)({center:[Ju.x,Ju.y,y0*1.2/2+y0*ql],radius:Ju.radius,height:ql}));Jd.push(j0)}}for(const{route:Ju}of B0){if(Ju.length<2)continue;const y0=[];let j0=[Ju[0]],hd=Ju[0].route_type==="wire"?Ju[0].layer:"top";for(let qd=1;qd<Ju.length;qd++){const df=Ju[qd];df.route_type==="via"?(y0.push(j0),j0=[df]):df.route_type==="wire"&&df.layer!==hd?(y0.push(j0),hd=df.layer,j0=[df]):j0.push(df)}y0.push(j0);for(const qd of y0){if(qd.length<2)continue;const df=(0,vl.line)(qd.map(Gd=>[Gd.x,Gd.y])),Ad=qd[0].route_type==="via"?qd[0].to_layer==="top"?1:-1:qd[0].layer==="top"?1:-1;let q0=(0,_l.translate)([0,0,Ad*1.2/2],(0,Kl.extrudeLinear)({height:ql*Ad},(0,Gl.expand)({delta:.1,corners:"edge"},df)));const Bd=G0.map(Gd=>(0,vl.cylinder)({center:[Gd.x,Gd.y,0],radius:Gd.outer_diameter/2,height:5})),af=Iu.filter(Gd=>Gd.shape==="circle").map(Gd=>(0,vl.cylinder)({center:[Gd.x,Gd.y,0],radius:Gd.outer_diameter/2,height:5}));q0=(0,Ll.subtract)(q0,...Bd,...af),q0=(0,Tl.colorize)(rc.fr4GreenSolderWithMask,q0),pf.push(q0)}}for(const Ju of G0)nd({x:Ju.x,y:Ju.y,hole_diameter:Ju.hole_diameter,outer_diameter:Ju.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const Su=[];for(const Ju of wd){const{textOutlines:y0,xOffset:j0,yOffset:hd}=_c(Ju);for(let qd of y0){const df=qd.map(bf=>[bf[0]+j0+Ju.anchor_position.x,bf[1]+hd+Ju.anchor_position.y]),Ad=(0,vl.line)(df),q0=Ju.font_size||.25,Bd=Math.min(Math.max(.01,q0*.1),q0*.2),af=(0,Gl.expand)({delta:Bd,corners:"round"},Ad);let Gd=(0,_l.translate)([0,0,.6],(0,Kl.extrudeLinear)({height:.012},af));Gd=(0,Tl.colorize)([256,256,256],Gd),Su.push(Gd)}}return _d=(0,Tl.colorize)(rc.fr4Green,_d),[_d,...Cd,...Jd,...pf,...Su]},Uc=requireReact(),Oc=Ra(requireStlSerializer());function jc(Rc){return new Promise((Gc,Iu)=>{const Xu=new FileReader;Xu.onload=()=>{Gc(Xu.result)},Xu.onerror=Iu,Xu.readAsDataURL(Rc)})}var Bc=Rc=>{const[Gc,Iu]=(0,Uc.useState)([]),[Xu,_0]=(0,Uc.useState)(!0);return(0,Uc.useEffect)(()=>{if(!Rc)return;(async()=>{_0(!0);const wd=(Array.isArray(Rc)?Rc:[Rc]).map(async _d=>{const Cd=Oc.default.serialize({binary:!0},[_d]),Jd=new Blob(Cd);return{stlUrl:await jc(Jd),color:_d.color}});try{const _d=await Promise.all(wd);Iu(_d)}catch(_d){console.error("Error generating STLs:",_d),Iu([])}finally{_0(!1)}})()},[Rc]),{stls:Gc,loading:Xu}},vc=require$$12,Mc=requireReact(),kc=requireThreeStdlib(),Jc=requireJsxRuntime();function fu({stlUrl:Rc,mtlUrl:Gc,color:Iu,opacity:Xu=1}){const _0=(0,vc.useLoader)(kc.STLLoader,Rc),B0=(0,Mc.useRef)();return(0,Jc.jsxs)("mesh",{ref:B0,children:[(0,Jc.jsx)("primitive",{object:_0,attach:"geometry"}),(0,Jc.jsx)("meshStandardMaterial",{color:Iu,transparent:Xu!==1,opacity:Xu})]})}var hu=require$$14,wu=require$$12,pu={name:"@tscircuit/3d-viewer",version:"0.0.103",main:"./dist/index.js",files:["dist"],scripts:{start:"bun run storybook","dev:old":"bunx --bun vite",build:"tsup ./src/index.tsx --dts --sourcemap",prepublish:"npm run build",preview:"vite preview",storybook:"storybook dev -p 6006","build-storybook":"storybook build","vercel-build":"bun run build-storybook",format:"biome format . --write","format:check":"biome format ."},dependencies:{"@jscad/modeling":"^2.12.2","@jscad/regl-renderer":"^2.6.9","@jscad/stl-serializer":"^2.1.17","@react-three/drei":"^9.115.0","@react-three/fiber":"^8.16.8","@tscircuit/core":"^0.0.277","@tscircuit/props":"^0.0.130","@tscircuit/react-fiber":"^1.1.29","@tscircuit/soup":"^0.0.69","@tscircuit/soup-util":"^0.0.26","@types/three":"^0.165.0","jscad-electronics":"^0.0.23","jscad-fiber":"^0.0.76","jscad-planner":"^0.0.11",react:"^18.3.1","react-dom":"^18.3.1","react-use-gesture":"^9.1.3",three:"^0.165.0","three-stdlib":"^2.30.3"},devDependencies:{"@biomejs/biome":"^1.8.3","@chromatic-com/storybook":"^1.5.0","@storybook/addon-essentials":"^8.4.7","@storybook/addon-interactions":"^8.4.7","@storybook/addon-links":"^8.4.7","@storybook/addon-onboarding":"^8.4.7","@storybook/blocks":"^8.4.7","@storybook/builder-vite":"^8.4.7","@storybook/react":"^8.4.7","@storybook/react-vite":"^8.4.7","@storybook/test":"^8.4.7","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.4","circuit-json":"^0.0.116","circuit-to-svg":"^0.0.91",storybook:"^8.4.7","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.7.2",vite:"^5.4.11","vite-tsconfig-paths":"^4.3.2"}},Eu=require$$14,Tu=require$$12,mu=requireReact(),gu=Ra(requireThree()),Gu=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new gu.Euler(0,0,0));function Ou(Rc,Gc){const Iu=new gu.Quaternion().setFromEuler(new gu.Euler(Rc.x,Rc.y,Rc.z)),Xu=new gu.Vector3(0,0,1);return Xu.applyQuaternion(Iu),Xu.multiplyScalar(Gc)}var x0=({})=>{const Rc=(0,mu.useRef)();return(0,mu.useRef)({lastRotation:new gu.Euler}),(0,Tu.useFrame)((Gc,Iu)=>{if(!Rc.current)return;const Xu=window.TSCI_MAIN_CAMERA_ROTATION,_0=Ou(Xu,2);Gc.camera.position.copy(_0),Gc.camera.lookAt(0,0,0)}),(0,Gu.jsxs)("mesh",{ref:Rc,rotation:[Math.PI/2,0,0],children:[(0,Gu.jsx)("boxGeometry",{args:[1,1,1]}),(0,Gu.jsx)("meshStandardMaterial",{color:"white"}),(0,Gu.jsx)(Eu.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,Gu.jsx)(Eu.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,Gu.jsx)(Eu.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,Gu.jsx)(Eu.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,Gu.jsx)(Eu.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,Gu.jsx)(Eu.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,Gu.jsx)("lineSegments",{args:[new gu.EdgesGeometry(new gu.BoxGeometry(1,1,1))],material:new gu.LineBasicMaterial({color:0,linewidth:2})})]})},I0=requireReact(),k0=require$$14,ku=requireJsxRuntime(),Du=()=>((0,wu.useFrame)(({camera:Rc})=>{window.TSCI_MAIN_CAMERA_ROTATION=Rc.rotation}),(0,ku.jsx)(ku.Fragment,{})),f0=(0,I0.forwardRef)(({children:Rc,hoveredComponent:Gc},Iu)=>(0,ku.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,ku.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,ku.jsxs)(wu.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,ku.jsx)("ambientLight",{intensity:Math.PI/2}),(0,ku.jsx)(x0,{})]})}),(0,ku.jsxs)(wu.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,ku.jsx)(Du,{}),(0,ku.jsx)(hu.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,ku.jsx)("ambientLight",{intensity:Math.PI/2}),(0,ku.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,ku.jsx)(hu.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,ku.jsx)("object3D",{ref:Iu,children:Rc}),Gc&&(0,ku.jsx)(k0.Html,{position:Gc.mousePosition,style:{fontFamily:"sans-serif",transform:"translate3d(50%, 50%, 0)",backgroundColor:"white",padding:"5px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none"},children:Gc.name})]}),(0,ku.jsxs)("div",{style:{position:"absolute",right:24,bottom:24,fontFamily:"sans-serif",color:"white",WebkitTextStroke:"0.5px rgba(0, 0, 0, 0.5)",fontSize:11},children:["@",pu.version]})]})),Ru=requireReact(),Wc=Ra(requireThree()),bu=requireJsxRuntime(),Mu=Rc=>(0,bu.jsx)("group",{...Rc}),vu=({children:Rc,isHovered:Gc,onHover:Iu,position:Xu})=>{const _0=(0,Ru.useRef)(null),B0=(0,Ru.useCallback)(wd=>{wd.stopPropagation();try{const _d=wd.point||(wd.intersections&&wd.intersections.length>0?wd.intersections[0].point:null)||(Xu?new Wc.Vector3(...Xu):null);_d?(_0.current=_d,Iu({mousePosition:[_d.x,_d.y,_d.z]})):Iu({})}catch(_d){console.warn("Hover event error:",_d),Iu({})}},[Xu]),G0=(0,Ru.useCallback)(wd=>{wd.stopPropagation(),_0.current=null,Iu(null)},[Iu]);return(0,bu.jsx)(Mu,{onPointerEnter:B0,onPointerMove:B0,onPointerLeave:G0,children:Rc})},n0=vu,Yu=requireReact(),u0=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function ou(Rc){const[Gc,Iu]=(0,Yu.useState)(null);return(0,Yu.useEffect)(()=>{if(!Rc)return;const Xu=window.TSCIRCUIT_OBJ_LOADER_CACHE;let _0=!1;async function B0(){var wd;try{const Cd=await(await fetch(Rc)).text(),Jd=(wd=Cd.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:wd.join(`
|
|
22437
|
+
*/const dist$2=Object.freeze(Object.defineProperty({__proto__:null,A0402,A0603,A0805,BGA,ChipBody,ExtrudedPads,FootprintPad,FootprintPlatedHole,Footprinter3d,PinRow,QFN,QFP,SOD123,SOT233P,SOT563,SOT723,SmdChipLead,Tssop},Symbol.toStringTag,{value:"Module"})),require$$19=getAugmentedNamespace(dist$2);var dist$1,hasRequiredDist$1;function requireDist$1(){if(hasRequiredDist$1)return dist$1;hasRequiredDist$1=1;var ua=Object.create,J=Object.defineProperty,la=Object.getOwnPropertyDescriptor,xa=Object.getOwnPropertyNames,Aa=Object.getPrototypeOf,ba=Object.prototype.hasOwnProperty,Sa=(Rc,Gc)=>{for(var Iu in Gc)J(Rc,Iu,{get:Gc[Iu],enumerable:!0})},Ma=(Rc,Gc,Iu,Xu)=>{if(Gc&&typeof Gc=="object"||typeof Gc=="function")for(let _0 of xa(Gc))!ba.call(Rc,_0)&&_0!==Iu&&J(Rc,_0,{get:()=>Gc[_0],enumerable:!(Xu=la(Gc,_0))||Xu.enumerable});return Rc},Ra=(Rc,Gc,Iu)=>(Iu=Rc!=null?ua(Aa(Rc)):{},Ma(!Rc||!Rc.__esModule?J(Iu,"default",{value:Rc,enumerable:!0}):Iu,Rc)),Ia=Rc=>Ma(J({},"__esModule",{value:!0}),Rc),La={};Sa(La,{CadViewer:()=>qh,useExportGltfUrl:()=>tl,useSaveGltfAs:()=>el}),dist$1=Ia(La);var Fa=requireThreeStdlib(),ka=requireReact();function el(Rc={}){const Gc=rl(Rc),Iu=(0,ka.useMemo)(()=>document.createElement("a"),[]),Xu=async G0=>{const wd=G0??Rc.filename??"";Rc.binary==null&&(Rc.binary=wd.endsWith(".glb"));const _d=await Gc(_0);Iu.download=wd,Iu.href=_d,Iu.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(_d)};(0,ka.useEffect)(()=>()=>{Iu.remove(),_0=null},[]);let _0;return[(0,ka.useCallback)(G0=>{_0=G0},[]),Xu]}function tl(Rc={}){const Gc=rl(Rc),[Iu,Xu]=(0,ka.useState)(),[_0,B0]=(0,ka.useState)(),G0=(0,ka.useCallback)(wd=>Gc(wd).then(Xu).catch(B0),[]);return(0,ka.useEffect)(()=>()=>URL.revokeObjectURL(Iu),[Iu]),[G0,Iu,_0]}function rl(Rc={}){const Gc=(0,ka.useMemo)(()=>new Fa.GLTFExporter,[]);return Iu=>{const{promise:Xu,resolve:_0,reject:B0}=Promise.withResolvers();return Gc.parse(Iu,G0=>{const wd=Rc.binary?"gltf-binary":"gltf+json",_d=new Blob([G0 instanceof ArrayBuffer?G0:JSON.stringify(G0)],{type:`model/${wd}`});_0(URL.createObjectURL(_d))},B0,Rc),Xu}}var il=require$$2,nl=requireReact(),sl=(Rc,Gc)=>(0,nl.useMemo)(()=>{if(!Rc)return;const Iu=new il.Circuit;return Iu.add(Rc),Iu.render(),Iu.getCircuitJson()},[Rc]),ll=requireDist$5(),dl=requireReact(),gl=requireDist$5(),_l=requireTransforms(),vl=requirePrimitives(),Tl=requireColors(),Ll=requireBooleans(),Il=requirePrimitives(),Fl=requireColors(),Ol=requireBooleans(),ql=.01,rc={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},sc=(Rc,Gc)=>{if(Rc.shape||(Rc.shape="circle"),Rc.shape==="circle")return(0,Fl.colorize)(rc.copper,(0,Ol.subtract)((0,Ol.union)((0,Il.cylinder)({center:[Rc.x,Rc.y,0],radius:Rc.hole_diameter/2,height:1.2}),(0,Il.cylinder)({center:[Rc.x,Rc.y,1.2/2],radius:Rc.outer_diameter/2,height:ql}),(0,Il.cylinder)({center:[Rc.x,Rc.y,-1.2/2],radius:Rc.outer_diameter/2,height:ql})),(0,Il.cylinder)({center:[Rc.x,Rc.y,0],radius:Rc.hole_diameter/2-ql,height:1.5})));if(Rc.shape==="pill"){const Iu=Rc.hole_height>Rc.hole_width,Xu=Iu?Rc.hole_height:Rc.hole_width,_0=Iu?Rc.hole_width:Rc.hole_height,B0=Iu?Rc.outer_width||Xu+.2:Rc.outer_height||_0+.2,G0=_0/2,wd=Math.abs(Xu-_0),_d=(0,Il.cuboid)({center:Iu?[Rc.x,Rc.y,0]:[Rc.x,Rc.y,0],size:Iu?[_0,wd,1.2]:[wd,_0,1.2]}),Cd=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,0]:[Rc.x-wd/2,Rc.y,0],radius:G0,height:1.2}),Jd=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,0]:[Rc.x+wd/2,Rc.y,0],radius:G0,height:1.2}),pf=(0,Il.cuboid)({center:Iu?[Rc.x,Rc.y,1.2/2]:[Rc.x,Rc.y,1.2/2],size:Iu?[B0,wd,ql]:[wd,B0,ql]}),nd=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,1.2/2]:[Rc.x-wd/2,Rc.y,1.2/2],radius:B0/2,height:ql}),Su=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,1.2/2]:[Rc.x+wd/2,Rc.y,1.2/2],radius:B0/2,height:ql}),Ju=(0,Il.cuboid)({center:Iu?[Rc.x,Rc.y,-1.2/2]:[Rc.x,Rc.y,-1.2/2],size:Iu?[B0,wd,ql]:[wd,B0,ql]}),y0=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,-1.2/2]:[Rc.x-wd/2,Rc.y,-1.2/2],radius:B0/2,height:ql}),j0=(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,-1.2/2]:[Rc.x+wd/2,Rc.y,-1.2/2],radius:B0/2,height:ql});return(0,Fl.colorize)(rc.copper,(0,Ol.subtract)((0,Ol.union)(_d,Cd,Jd,pf,nd,Su,Ju,y0,j0),(0,Ol.union)((0,Il.cuboid)({center:[Rc.x,Rc.y,0],size:Iu?[_0-ql,wd,1.5]:[wd,_0-ql,1.5]}),(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y-wd/2,0]:[Rc.x-wd/2,Rc.y,0],radius:G0-ql,height:1.5}),(0,Il.cylinder)({center:Iu?[Rc.x,Rc.y+wd/2,0]:[Rc.x+wd/2,Rc.y,0],radius:G0-ql,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${Rc.shape}`)},Kl=requireExtrusions(),Gl=requireExpansions(),kl=requireExtrusions(),Wl=requirePrimitives(),tc=requireTransforms(),Zl=Rc=>{let Gc=0;for(let Xu=0;Xu<Rc.length;Xu++){const _0=(Xu+1)%Rc.length;Gc+=Rc[Xu][0]*Rc[_0][1],Gc-=Rc[_0][0]*Rc[Xu][1]}return Gc/2<=0},ac=(Rc,Gc=1.2)=>{let Iu=Rc.map(B0=>[B0.x,B0.y]);Zl(Iu)&&(Iu=Iu.reverse());const Xu=(0,Wl.polygon)({points:Iu});let _0=(0,kl.extrudeLinear)({height:Gc},Xu);return _0=(0,tc.translate)([0,0,-Gc/2],_0),_0},Cc=requireText();function _c(Rc){var _d,Cd,Jd,pf;const Gc=(0,Cc.vectorText)({height:Rc.font_size,input:Rc.text});Gc.forEach(nd=>{nd.length===29?(Gc.splice(Gc.indexOf(nd),1,nd.slice(0,15)),Gc.splice(Gc.indexOf(nd),0,nd.slice(14,29))):nd.length===17&&(Gc.splice(Gc.indexOf(nd),1,nd.slice(0,10)),Gc.splice(Gc.indexOf(nd),0,nd.slice(9,17)))});const Iu=Gc.flatMap(nd=>nd),Xu={minX:Math.min(...Iu.map(nd=>nd[0])),maxX:Math.max(...Iu.map(nd=>nd[0])),minY:Math.min(...Iu.map(nd=>nd[1])),maxY:Math.max(...Iu.map(nd=>nd[1]))},_0=(Xu.minX+Xu.maxX)/2,B0=(Xu.minY+Xu.maxY)/2;let G0=-_0,wd=-B0;return(_d=Rc.anchor_alignment)!=null&&_d.includes("right")?G0=-Xu.maxX:(Cd=Rc.anchor_alignment)!=null&&Cd.includes("left")&&(G0=-Xu.minX),(Jd=Rc.anchor_alignment)!=null&&Jd.includes("top")?wd=-Xu.maxY:(pf=Rc.anchor_alignment)!=null&&pf.includes("bottom")&&(wd=-Xu.minY),{textOutlines:Gc,xOffset:G0,yOffset:wd}}var Dc=Rc=>{const Gc=(0,gl.su)(Rc).pcb_board.list()[0];if(!Gc)throw new Error("No pcb_board found");const Iu=(0,gl.su)(Rc).pcb_plated_hole.list(),Xu=(0,gl.su)(Rc).pcb_hole.list(),_0=(0,gl.su)(Rc).pcb_smtpad.list(),B0=(0,gl.su)(Rc).pcb_trace.list(),G0=(0,gl.su)(Rc).pcb_via.list(),wd=(0,gl.su)(Rc).pcb_silkscreen_text.list();let _d;Gc.outline&&Gc.outline.length>0?_d=ac(Gc.outline,1.2):_d=(0,vl.cuboid)({size:[Gc.width,Gc.height,1.2]});const Cd=[],Jd=[],pf=[],nd=Ju=>{if(Ju.shape==="circle"){const y0=(0,vl.cylinder)({center:[Ju.x,Ju.y,0],radius:Ju.hole_diameter/2+ql});_d=(0,Ll.subtract)(_d,y0);const j0=sc(Ju);Cd.push(j0)}else if(Ju.shape==="pill"){const y0=Ju.hole_height>Ju.hole_width,j0=y0?Ju.hole_height:Ju.hole_width,hd=y0?Ju.hole_width:Ju.hole_height,qd=hd/2,df=Math.abs(j0-hd),Ad=(0,Ll.union)((0,vl.cuboid)({center:[Ju.x,Ju.y,0],size:y0?[hd,df,1.5]:[df,hd,1.5]}),(0,vl.cylinder)({center:y0?[Ju.x,Ju.y-df/2,0]:[Ju.x-df/2,Ju.y,0],radius:qd,height:1.5}),(0,vl.cylinder)({center:y0?[Ju.x,Ju.y+df/2,0]:[Ju.x+df/2,Ju.y,0],radius:qd,height:1.5}));_d=(0,Ll.subtract)(_d,Ad);const q0=sc(Ju);Cd.push(q0)}};for(const Ju of Iu)nd(Ju);for(const Ju of Xu)if(Ju.hole_shape==="round"||Ju.hole_shape==="circle"){const y0=(0,vl.cylinder)({center:[Ju.x,Ju.y,0],radius:Ju.hole_diameter/2+ql});_d=(0,Ll.subtract)(_d,y0)}for(const Ju of _0){const y0=Ju.layer==="bottom"?-1:1;if(Ju.shape==="rect"){const j0=(0,Tl.colorize)(rc.copper,(0,vl.cuboid)({center:[Ju.x,Ju.y,y0*1.2/2+y0*ql],size:[Ju.width,Ju.height,ql]}));Jd.push(j0)}else if(Ju.shape==="circle"){const j0=(0,Tl.colorize)(rc.copper,(0,vl.cylinder)({center:[Ju.x,Ju.y,y0*1.2/2+y0*ql],radius:Ju.radius,height:ql}));Jd.push(j0)}}for(const{route:Ju}of B0){if(Ju.length<2)continue;const y0=[];let j0=[Ju[0]],hd=Ju[0].route_type==="wire"?Ju[0].layer:"top";for(let qd=1;qd<Ju.length;qd++){const df=Ju[qd];df.route_type==="via"?(y0.push(j0),j0=[df]):df.route_type==="wire"&&df.layer!==hd?(y0.push(j0),hd=df.layer,j0=[df]):j0.push(df)}y0.push(j0);for(const qd of y0){if(qd.length<2)continue;const df=(0,vl.line)(qd.map(Gd=>[Gd.x,Gd.y])),Ad=qd[0].route_type==="via"?qd[0].to_layer==="top"?1:-1:qd[0].layer==="top"?1:-1;let q0=(0,_l.translate)([0,0,Ad*1.2/2],(0,Kl.extrudeLinear)({height:ql*Ad},(0,Gl.expand)({delta:.1,corners:"edge"},df)));const Bd=G0.map(Gd=>(0,vl.cylinder)({center:[Gd.x,Gd.y,0],radius:Gd.outer_diameter/2,height:5})),af=Iu.filter(Gd=>Gd.shape==="circle").map(Gd=>(0,vl.cylinder)({center:[Gd.x,Gd.y,0],radius:Gd.outer_diameter/2,height:5}));q0=(0,Ll.subtract)(q0,...Bd,...af),q0=(0,Tl.colorize)(rc.fr4GreenSolderWithMask,q0),pf.push(q0)}}for(const Ju of G0)nd({x:Ju.x,y:Ju.y,hole_diameter:Ju.hole_diameter,outer_diameter:Ju.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const Su=[];for(const Ju of wd){const{textOutlines:y0,xOffset:j0,yOffset:hd}=_c(Ju);for(let qd of y0){const df=qd.map(bf=>[bf[0]+j0+Ju.anchor_position.x,bf[1]+hd+Ju.anchor_position.y]),Ad=(0,vl.line)(df),q0=Ju.font_size||.25,Bd=Math.min(Math.max(.01,q0*.1),q0*.2),af=(0,Gl.expand)({delta:Bd,corners:"round"},Ad);let Gd=(0,_l.translate)([0,0,.6],(0,Kl.extrudeLinear)({height:.012},af));Gd=(0,Tl.colorize)([256,256,256],Gd),Su.push(Gd)}}return _d=(0,Tl.colorize)(rc.fr4Green,_d),[_d,...Cd,...Jd,...pf,...Su]},Uc=requireReact(),Oc=Ra(requireStlSerializer());function jc(Rc){return new Promise((Gc,Iu)=>{const Xu=new FileReader;Xu.onload=()=>{Gc(Xu.result)},Xu.onerror=Iu,Xu.readAsDataURL(Rc)})}var Bc=Rc=>{const[Gc,Iu]=(0,Uc.useState)([]),[Xu,_0]=(0,Uc.useState)(!0);return(0,Uc.useEffect)(()=>{if(!Rc)return;(async()=>{_0(!0);const wd=(Array.isArray(Rc)?Rc:[Rc]).map(async _d=>{const Cd=Oc.default.serialize({binary:!0},[_d]),Jd=new Blob(Cd);return{stlUrl:await jc(Jd),color:_d.color}});try{const _d=await Promise.all(wd);Iu(_d)}catch(_d){console.error("Error generating STLs:",_d),Iu([])}finally{_0(!1)}})()},[Rc]),{stls:Gc,loading:Xu}},vc=require$$12,Mc=requireReact(),kc=requireThreeStdlib(),Jc=requireJsxRuntime();function fu({stlUrl:Rc,mtlUrl:Gc,color:Iu,opacity:Xu=1}){const _0=(0,vc.useLoader)(kc.STLLoader,Rc),B0=(0,Mc.useRef)();return(0,Jc.jsxs)("mesh",{ref:B0,children:[(0,Jc.jsx)("primitive",{object:_0,attach:"geometry"}),(0,Jc.jsx)("meshStandardMaterial",{color:Iu,transparent:Xu!==1,opacity:Xu})]})}var hu=require$$14,wu=require$$12,pu={name:"@tscircuit/3d-viewer",version:"0.0.104",main:"./dist/index.js",files:["dist"],scripts:{start:"bun run storybook","dev:old":"bunx --bun vite",build:"tsup ./src/index.tsx --dts --sourcemap",prepublish:"npm run build",preview:"vite preview",storybook:"storybook dev -p 6006","build-storybook":"storybook build","vercel-build":"bun run build-storybook",format:"biome format . --write","format:check":"biome format ."},dependencies:{"@jscad/modeling":"^2.12.2","@jscad/regl-renderer":"^2.6.9","@jscad/stl-serializer":"^2.1.17","@react-three/drei":"^9.115.0","@react-three/fiber":"^8.16.8","@tscircuit/core":"^0.0.278","@tscircuit/props":"^0.0.130","@tscircuit/react-fiber":"^1.1.29","@tscircuit/soup":"^0.0.69","@tscircuit/soup-util":"^0.0.26","@types/three":"^0.165.0","jscad-electronics":"^0.0.23","jscad-fiber":"^0.0.76","jscad-planner":"^0.0.11",react:"^18.3.1","react-dom":"^18.3.1","react-use-gesture":"^9.1.3",three:"^0.165.0","three-stdlib":"^2.30.3"},devDependencies:{"@biomejs/biome":"^1.8.3","@chromatic-com/storybook":"^1.5.0","@storybook/addon-essentials":"^8.4.7","@storybook/addon-interactions":"^8.4.7","@storybook/addon-links":"^8.4.7","@storybook/addon-onboarding":"^8.4.7","@storybook/blocks":"^8.4.7","@storybook/builder-vite":"^8.4.7","@storybook/react":"^8.4.7","@storybook/react-vite":"^8.4.7","@storybook/test":"^8.4.7","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.4","circuit-json":"^0.0.116","circuit-to-svg":"^0.0.91",storybook:"^8.4.7","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.7.2",vite:"^5.4.11","vite-tsconfig-paths":"^4.3.2"}},Eu=require$$14,Tu=require$$12,mu=requireReact(),gu=Ra(requireThree()),Gu=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new gu.Euler(0,0,0));function Ou(Rc,Gc){const Iu=new gu.Quaternion().setFromEuler(new gu.Euler(Rc.x,Rc.y,Rc.z)),Xu=new gu.Vector3(0,0,1);return Xu.applyQuaternion(Iu),Xu.multiplyScalar(Gc)}var x0=({})=>{const Rc=(0,mu.useRef)();return(0,mu.useRef)({lastRotation:new gu.Euler}),(0,Tu.useFrame)((Gc,Iu)=>{if(!Rc.current)return;const Xu=window.TSCI_MAIN_CAMERA_ROTATION,_0=Ou(Xu,2);Gc.camera.position.copy(_0),Gc.camera.lookAt(0,0,0)}),(0,Gu.jsxs)("mesh",{ref:Rc,rotation:[Math.PI/2,0,0],children:[(0,Gu.jsx)("boxGeometry",{args:[1,1,1]}),(0,Gu.jsx)("meshStandardMaterial",{color:"white"}),(0,Gu.jsx)(Eu.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,Gu.jsx)(Eu.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,Gu.jsx)(Eu.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,Gu.jsx)(Eu.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,Gu.jsx)(Eu.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,Gu.jsx)(Eu.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,Gu.jsx)("lineSegments",{args:[new gu.EdgesGeometry(new gu.BoxGeometry(1,1,1))],material:new gu.LineBasicMaterial({color:0,linewidth:2})})]})},I0=requireReact(),k0=require$$14,ku=requireJsxRuntime(),Du=()=>((0,wu.useFrame)(({camera:Rc})=>{window.TSCI_MAIN_CAMERA_ROTATION=Rc.rotation}),(0,ku.jsx)(ku.Fragment,{})),f0=(0,I0.forwardRef)(({children:Rc,hoveredComponent:Gc},Iu)=>(0,ku.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,ku.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,ku.jsxs)(wu.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,ku.jsx)("ambientLight",{intensity:Math.PI/2}),(0,ku.jsx)(x0,{})]})}),(0,ku.jsxs)(wu.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,ku.jsx)(Du,{}),(0,ku.jsx)(hu.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,ku.jsx)("ambientLight",{intensity:Math.PI/2}),(0,ku.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,ku.jsx)(hu.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,ku.jsx)("object3D",{ref:Iu,children:Rc}),Gc&&(0,ku.jsx)(k0.Html,{position:Gc.mousePosition,style:{fontFamily:"sans-serif",transform:"translate3d(50%, 50%, 0)",backgroundColor:"white",padding:"5px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none"},children:Gc.name})]}),(0,ku.jsxs)("div",{style:{position:"absolute",right:24,bottom:24,fontFamily:"sans-serif",color:"white",WebkitTextStroke:"0.5px rgba(0, 0, 0, 0.5)",fontSize:11},children:["@",pu.version]})]})),Ru=requireReact(),Wc=Ra(requireThree()),bu=requireJsxRuntime(),Mu=Rc=>(0,bu.jsx)("group",{...Rc}),vu=({children:Rc,isHovered:Gc,onHover:Iu,position:Xu})=>{const _0=(0,Ru.useRef)(null),B0=(0,Ru.useCallback)(wd=>{wd.stopPropagation();try{const _d=wd.point||(wd.intersections&&wd.intersections.length>0?wd.intersections[0].point:null)||(Xu?new Wc.Vector3(...Xu):null);_d?(_0.current=_d,Iu({mousePosition:[_d.x,_d.y,_d.z]})):Iu({})}catch(_d){console.warn("Hover event error:",_d),Iu({})}},[Xu]),G0=(0,Ru.useCallback)(wd=>{wd.stopPropagation(),_0.current=null,Iu(null)},[Iu]);return(0,bu.jsx)(Mu,{onPointerEnter:B0,onPointerMove:B0,onPointerLeave:G0,children:Rc})},n0=vu,Yu=requireReact(),u0=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function ou(Rc){const[Gc,Iu]=(0,Yu.useState)(null);return(0,Yu.useEffect)(()=>{if(!Rc)return;const Xu=window.TSCIRCUIT_OBJ_LOADER_CACHE;let _0=!1;async function B0(){var wd;try{const Cd=await(await fetch(Rc)).text(),Jd=(wd=Cd.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:wd.join(`
|
|
22438
22438
|
`).replace(/d 0\./g,"d 1."),pf=Cd.replace(/newmtl[\s\S]*?endmtl/g,""),nd=new u0.MTLLoader;nd.setMaterialOptions({invertTrProperty:!0});const Su=nd.parse(Jd.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),Ju=new u0.OBJLoader;return Ju.setMaterials(Su),Ju.parse(pf)}catch(_d){return _d}}function G0(){if(Xu.has(Rc)){const _d=Xu.get(Rc);return _d.result?Promise.resolve(_d.result.clone()):_d.promise.then(Cd=>Cd.clone())}const wd=B0().then(_d=>(_d instanceof Error||Xu.set(Rc,{...Xu.get(Rc),result:_d}),_d));return Xu.set(Rc,{promise:wd,result:null}),wd}return G0().then(wd=>{_0||Iu(wd)}).catch(wd=>{console.error(wd)}),()=>{_0=!0}},[Rc]),Gc}var t0=requireJsxRuntime();function a0({url:Rc,position:Gc,rotation:Iu,onHover:Xu,isHovered:_0}){const B0=ou(Rc);return B0?B0 instanceof Error?(0,t0.jsx)(n0,{isHovered:_0,onHover:Xu,children:(0,t0.jsxs)("mesh",{position:Gc,children:[(0,t0.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,t0.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.5}),(0,t0.jsx)("meshBasicMaterial",{color:"red"})]})}):(0,t0.jsx)(n0,{isHovered:_0,onHover:Xu,children:(0,t0.jsx)("primitive",{rotation:Iu,position:Gc,object:B0})}):(0,t0.jsx)(n0,{isHovered:_0,onHover:Xu,children:(0,t0.jsxs)("mesh",{position:Gc,children:[(0,t0.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,t0.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})})}var $0=requireDist$4(),yd=Ra(requireSrc$1()),Dd=requireDist$3(),gf=Ra(requireThree()),Rd=requireReact(),Pf=requireJsxRuntime(),Q0=({jscadPlan:Rc,positionOffset:Gc,rotationOffset:Iu,onHover:Xu,isHovered:_0})=>{const{threeGeom:B0,material:G0}=(0,Rd.useMemo)(()=>{const wd=(0,$0.executeJscadOperations)(yd.default,Rc),_d=(0,Dd.convertCSGToThreeGeom)(wd),Cd=new gf.MeshStandardMaterial({vertexColors:!0,side:gf.DoubleSide});return{threeGeom:_d,material:Cd}},[Rc]);return(0,Rd.useMemo)(()=>{if(_0){const wd=new gf.Color(G0.color.getHex());G0.emissive.copy(wd),G0.emissive.setRGB(0,0,1),G0.emissiveIntensity=.2}else G0.emissiveIntensity=0},[_0,G0]),B0?(0,Pf.jsx)(n0,{isHovered:_0,onHover:Xu,position:Gc,children:(0,Pf.jsx)("mesh",{geometry:B0,material:G0,position:Gc,rotation:Iu})}):null},ff=require$$19,Ef=requireDist$3(),Bf=requireDist$4(),zf=requireReact(),Ff=requireJsxRuntime(),{createJSCADRoot:ld}=(0,Ef.createJSCADRenderer)(Bf.jscadPlanner),nf=({positionOffset:Rc,footprint:Gc,rotationOffset:Iu,onHover:Xu,isHovered:_0})=>{const B0=(0,zf.useMemo)(()=>{if(!Gc)return null;const G0=[];return ld(G0).render((0,Ff.jsx)(ff.Footprinter3d,{footprint:Gc})),G0},[Gc]);return B0?(0,Ff.jsx)(Ff.Fragment,{children:B0.map((G0,wd)=>(0,Ff.jsx)(Q0,{positionOffset:Rc,rotationOffset:Iu,jscadPlan:G0,onHover:Xu,isHovered:_0},wd))}):null},lf=(...Rc)=>Rc,uf=requireJsxRuntime(),Mf=({cad_component:Rc,onHover:Gc=()=>{},isHovered:Iu=!1})=>{const Xu=Rc.model_obj_url??Rc.model_stl_url,_0=Rc.rotation?lf(Rc.rotation.x*Math.PI/180,Rc.rotation.y*Math.PI/180,Rc.rotation.z*Math.PI/180):void 0;if(Xu)return(0,uf.jsx)(a0,{url:Xu,position:Rc.position?[Rc.position.x,Rc.position.y,Rc.position.z]:void 0,rotation:_0,onHover:Gc,isHovered:Iu},Rc.cad_component_id);if(Rc.model_jscad)return(0,uf.jsx)(Q0,{jscadPlan:Rc.model_jscad,rotationOffset:_0,onHover:Gc,isHovered:Iu},Rc.cad_component_id);if(Rc.footprinter_string)return(0,uf.jsx)(nf,{positionOffset:Rc.position?[Rc.position.x,Rc.position.y,Rc.position.z]:void 0,rotationOffset:_0,footprint:Rc.footprinter_string,onHover:Gc,isHovered:Iu})},Qh=Ra(requireReact()),P0=class extends Qh.default.Component{constructor(Rc){super(Rc),this.state={hasError:!1,error:null}}static getDerivedStateFromError(Rc){return{hasError:!0,error:Rc}}render(){return this.state.hasError&&this.state.error?this.props.fallback({error:this.state.error}):this.props.children}},$u=require$$14,A0=requireJsxRuntime(),Vu=({error:Rc,cad_component:Gc})=>{let Iu=[0,0,0];return Gc!=null&&Gc.position&&(Iu=[Gc.position.x,Gc.position.y,Gc.position.z],Iu=Iu.map(Xu=>Number.isNaN(Xu)?0:Xu)),(0,A0.jsxs)("group",{position:Iu,children:[(0,A0.jsxs)("mesh",{renderOrder:-99999,rotation:[Math.PI/4,Math.PI/4,0],ref:Xu=>{Xu&&(Xu.renderOrder=999999)},children:[(0,A0.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,A0.jsx)("meshStandardMaterial",{depthTest:!1,transparent:!0,color:"red",opacity:.5})]}),(0,A0.jsxs)($u.Text,{scale:[.1,.1,.1],color:"red",anchorX:"center",anchorY:"middle",depthOffset:-99999,children:[Rc.toString().slice(0,50),"..."]})]})},z0=requireJsxRuntime(),qh=(0,dl.forwardRef)(({soup:Rc,children:Gc},Iu)=>{const[Xu,_0]=(0,dl.useState)(null);if(Rc??(Rc=sl(Gc)),!Rc)return null;const B0=(0,dl.useMemo)(()=>Rc.some(Cd=>Cd.type==="pcb_board")?Dc(Rc):null,[Rc]),{stls:G0,loading:wd}=Bc(B0),_d=(0,ll.su)(Rc).cad_component.list();return(0,z0.jsxs)(f0,{ref:Iu,hoveredComponent:Xu,children:[G0.map(({stlUrl:Cd,color:Jd},pf)=>(0,z0.jsx)(fu,{stlUrl:Cd,color:Jd,opacity:pf===0?.95:1},Cd)),_d.map(Cd=>(0,z0.jsx)(P0,{fallback:({error:Jd})=>(0,z0.jsx)(Vu,{cad_component:Cd,error:Jd}),children:(0,z0.jsx)(Mf,{onHover:Jd=>{var nd;if(Jd||_0(null),!Jd.mousePosition)return;const pf=(nd=(0,ll.su)(Rc).source_component.getUsing({source_component_id:Cd.source_component_id}))==null?void 0:nd.name;_0({cad_component_id:Cd.cad_component_id,name:pf??"<unknown>",mousePosition:Jd.mousePosition})},cad_component:Cd,isHovered:(Xu==null?void 0:Xu.cad_component_id)===Cd.cad_component_id},Cd.cad_component_id)},Cd.cad_component_id))]})});return dist$1}var distExports$1=requireDist$1();const c$1=ua=>typeof ua=="number"&&!isNaN(ua),d$1=ua=>typeof ua=="string",u$1=ua=>typeof ua=="function",p$1=ua=>d$1(ua)||u$1(ua)?ua:null,m$1=ua=>reactExports.isValidElement(ua)||d$1(ua)||u$1(ua)||c$1(ua);function f$1(ua,J,la){la===void 0&&(la=300);const{scrollHeight:xa,style:Aa}=ua;requestAnimationFrame(()=>{Aa.minHeight="initial",Aa.height=xa+"px",Aa.transition=`all ${la}ms`,requestAnimationFrame(()=>{Aa.height="0",Aa.padding="0",Aa.margin="0",setTimeout(J,la)})})}function g$1(ua){let{enter:J,exit:la,appendPosition:xa=!1,collapse:Aa=!0,collapseDuration:ba=300}=ua;return function(Sa){let{children:Ma,position:Ra,preventExitTransition:Ia,done:La,nodeRef:Fa,isIn:ka,playToast:el}=Sa;const tl=xa?`${J}--${Ra}`:J,rl=xa?`${la}--${Ra}`:la,il=reactExports.useRef(0);return reactExports.useLayoutEffect(()=>{const nl=Fa.current,sl=tl.split(" "),ll=dl=>{dl.target===Fa.current&&(el(),nl.removeEventListener("animationend",ll),nl.removeEventListener("animationcancel",ll),il.current===0&&dl.type!=="animationcancel"&&nl.classList.remove(...sl))};nl.classList.add(...sl),nl.addEventListener("animationend",ll),nl.addEventListener("animationcancel",ll)},[]),reactExports.useEffect(()=>{const nl=Fa.current,sl=()=>{nl.removeEventListener("animationend",sl),Aa?f$1(nl,La,ba):La()};ka||(Ia?sl():(il.current=1,nl.className+=` ${rl}`,nl.addEventListener("animationend",sl)))},[ka]),React.createElement(React.Fragment,null,Ma)}}function y$1(ua,J){return ua!=null?{content:ua.content,containerId:ua.props.containerId,id:ua.props.toastId,theme:ua.props.theme,type:ua.props.type,data:ua.props.data||{},isLoading:ua.props.isLoading,icon:ua.props.icon,status:J}:{}}const v$1=new Map;let h$1=[];const T$1=new Set,E$1=ua=>T$1.forEach(J=>J(ua)),b$1=()=>v$1.size>0;function I$1(ua,J){var la;if(J)return!((la=v$1.get(J))==null||!la.isToastActive(ua));let xa=!1;return v$1.forEach(Aa=>{Aa.isToastActive(ua)&&(xa=!0)}),xa}function _$1(ua,J){m$1(ua)&&(b$1()||h$1.push({content:ua,options:J}),v$1.forEach(la=>{la.buildToast(ua,J)}))}function C$1(ua,J){v$1.forEach(la=>{J!=null&&J!=null&&J.containerId?(J==null?void 0:J.containerId)===la.id&&la.toggle(ua,J==null?void 0:J.id):la.toggle(ua,J==null?void 0:J.id)})}function L$1(ua){const{subscribe:J,getSnapshot:la,setProps:xa}=reactExports.useRef(function(ba){const Sa=ba.containerId||1;return{subscribe(Ma){const Ra=function(La,Fa,ka){let el=1,tl=0,rl=[],il=[],nl=[],sl=Fa;const ll=new Map,dl=new Set,gl=()=>{nl=Array.from(ll.values()),dl.forEach(Tl=>Tl())},_l=Tl=>{il=Tl==null?[]:il.filter(Ll=>Ll!==Tl),gl()},vl=Tl=>{const{toastId:Ll,onOpen:Il,updateId:Fl,children:Ol}=Tl.props,ql=Fl==null;Tl.staleId&&ll.delete(Tl.staleId),ll.set(Ll,Tl),il=[...il,Tl.props.toastId].filter(rc=>rc!==Tl.staleId),gl(),ka(y$1(Tl,ql?"added":"updated")),ql&&u$1(Il)&&Il(reactExports.isValidElement(Ol)&&Ol.props)};return{id:La,props:sl,observe:Tl=>(dl.add(Tl),()=>dl.delete(Tl)),toggle:(Tl,Ll)=>{ll.forEach(Il=>{Ll!=null&&Ll!==Il.props.toastId||u$1(Il.toggle)&&Il.toggle(Tl)})},removeToast:_l,toasts:ll,clearQueue:()=>{tl-=rl.length,rl=[]},buildToast:(Tl,Ll)=>{if((ac=>{let{containerId:Cc,toastId:_c,updateId:Dc}=ac;const Uc=Cc?Cc!==La:La!==1,Oc=ll.has(_c)&&Dc==null;return Uc||Oc})(Ll))return;const{toastId:Il,updateId:Fl,data:Ol,staleId:ql,delay:rc}=Ll,sc=()=>{_l(Il)},Kl=Fl==null;Kl&&tl++;const Gl={...sl,style:sl.toastStyle,key:el++,...Object.fromEntries(Object.entries(Ll).filter(ac=>{let[Cc,_c]=ac;return _c!=null})),toastId:Il,updateId:Fl,data:Ol,closeToast:sc,isIn:!1,className:p$1(Ll.className||sl.toastClassName),bodyClassName:p$1(Ll.bodyClassName||sl.bodyClassName),progressClassName:p$1(Ll.progressClassName||sl.progressClassName),autoClose:!Ll.isLoading&&(kl=Ll.autoClose,Wl=sl.autoClose,kl===!1||c$1(kl)&&kl>0?kl:Wl),deleteToast(){const ac=ll.get(Il),{onClose:Cc,children:_c}=ac.props;u$1(Cc)&&Cc(reactExports.isValidElement(_c)&&_c.props),ka(y$1(ac,"removed")),ll.delete(Il),tl--,tl<0&&(tl=0),rl.length>0?vl(rl.shift()):gl()}};var kl,Wl;Gl.closeButton=sl.closeButton,Ll.closeButton===!1||m$1(Ll.closeButton)?Gl.closeButton=Ll.closeButton:Ll.closeButton===!0&&(Gl.closeButton=!m$1(sl.closeButton)||sl.closeButton);let tc=Tl;reactExports.isValidElement(Tl)&&!d$1(Tl.type)?tc=reactExports.cloneElement(Tl,{closeToast:sc,toastProps:Gl,data:Ol}):u$1(Tl)&&(tc=Tl({closeToast:sc,toastProps:Gl,data:Ol}));const Zl={content:tc,props:Gl,staleId:ql};sl.limit&&sl.limit>0&&tl>sl.limit&&Kl?rl.push(Zl):c$1(rc)?setTimeout(()=>{vl(Zl)},rc):vl(Zl)},setProps(Tl){sl=Tl},setToggle:(Tl,Ll)=>{ll.get(Tl).toggle=Ll},isToastActive:Tl=>il.some(Ll=>Ll===Tl),getSnapshot:()=>nl}}(Sa,ba,E$1);v$1.set(Sa,Ra);const Ia=Ra.observe(Ma);return h$1.forEach(La=>_$1(La.content,La.options)),h$1=[],()=>{Ia(),v$1.delete(Sa)}},setProps(Ma){var Ra;(Ra=v$1.get(Sa))==null||Ra.setProps(Ma)},getSnapshot(){var Ma;return(Ma=v$1.get(Sa))==null?void 0:Ma.getSnapshot()}}}(ua)).current;xa(ua);const Aa=reactExports.useSyncExternalStore(J,la,la);return{getToastToRender:function(ba){if(!Aa)return[];const Sa=new Map;return ua.newestOnTop&&Aa.reverse(),Aa.forEach(Ma=>{const{position:Ra}=Ma.props;Sa.has(Ra)||Sa.set(Ra,[]),Sa.get(Ra).push(Ma)}),Array.from(Sa,Ma=>ba(Ma[0],Ma[1]))},isToastActive:I$1,count:Aa==null?void 0:Aa.length}}function N$1(ua){const[J,la]=reactExports.useState(!1),[xa,Aa]=reactExports.useState(!1),ba=reactExports.useRef(null),Sa=reactExports.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:Ma,pauseOnHover:Ra,closeToast:Ia,onClick:La,closeOnClick:Fa}=ua;var ka,el;function tl(){la(!0)}function rl(){la(!1)}function il(ll){const dl=ba.current;Sa.canDrag&&dl&&(Sa.didMove=!0,J&&rl(),Sa.delta=ua.draggableDirection==="x"?ll.clientX-Sa.start:ll.clientY-Sa.start,Sa.start!==ll.clientX&&(Sa.canCloseOnClick=!1),dl.style.transform=`translate3d(${ua.draggableDirection==="x"?`${Sa.delta}px, var(--y)`:`0, calc(${Sa.delta}px + var(--y))`},0)`,dl.style.opacity=""+(1-Math.abs(Sa.delta/Sa.removalDistance)))}function nl(){document.removeEventListener("pointermove",il),document.removeEventListener("pointerup",nl);const ll=ba.current;if(Sa.canDrag&&Sa.didMove&&ll){if(Sa.canDrag=!1,Math.abs(Sa.delta)>Sa.removalDistance)return Aa(!0),ua.closeToast(),void ua.collapseAll();ll.style.transition="transform 0.2s, opacity 0.2s",ll.style.removeProperty("transform"),ll.style.removeProperty("opacity")}}(el=v$1.get((ka={id:ua.toastId,containerId:ua.containerId,fn:la}).containerId||1))==null||el.setToggle(ka.id,ka.fn),reactExports.useEffect(()=>{if(ua.pauseOnFocusLoss)return document.hasFocus()||rl(),window.addEventListener("focus",tl),window.addEventListener("blur",rl),()=>{window.removeEventListener("focus",tl),window.removeEventListener("blur",rl)}},[ua.pauseOnFocusLoss]);const sl={onPointerDown:function(ll){if(ua.draggable===!0||ua.draggable===ll.pointerType){Sa.didMove=!1,document.addEventListener("pointermove",il),document.addEventListener("pointerup",nl);const dl=ba.current;Sa.canCloseOnClick=!0,Sa.canDrag=!0,dl.style.transition="none",ua.draggableDirection==="x"?(Sa.start=ll.clientX,Sa.removalDistance=dl.offsetWidth*(ua.draggablePercent/100)):(Sa.start=ll.clientY,Sa.removalDistance=dl.offsetHeight*(ua.draggablePercent===80?1.5*ua.draggablePercent:ua.draggablePercent)/100)}},onPointerUp:function(ll){const{top:dl,bottom:gl,left:_l,right:vl}=ba.current.getBoundingClientRect();ll.nativeEvent.type!=="touchend"&&ua.pauseOnHover&&ll.clientX>=_l&&ll.clientX<=vl&&ll.clientY>=dl&&ll.clientY<=gl?rl():tl()}};return Ma&&Ra&&(sl.onMouseEnter=rl,ua.stacked||(sl.onMouseLeave=tl)),Fa&&(sl.onClick=ll=>{La&&La(ll),Sa.canCloseOnClick&&Ia()}),{playToast:tl,pauseToast:rl,isRunning:J,preventExitTransition:xa,toastRef:ba,eventHandlers:sl}}function $$1(ua){let{delay:J,isRunning:la,closeToast:xa,type:Aa="default",hide:ba,className:Sa,style:Ma,controlledProgress:Ra,progress:Ia,rtl:La,isIn:Fa,theme:ka}=ua;const el=ba||Ra&&Ia===0,tl={...Ma,animationDuration:`${J}ms`,animationPlayState:la?"running":"paused"};Ra&&(tl.transform=`scaleX(${Ia})`);const rl=clsx("Toastify__progress-bar",Ra?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${ka}`,`Toastify__progress-bar--${Aa}`,{"Toastify__progress-bar--rtl":La}),il=u$1(Sa)?Sa({rtl:La,type:Aa,defaultClassName:rl}):clsx(rl,Sa),nl={[Ra&&Ia>=1?"onTransitionEnd":"onAnimationEnd"]:Ra&&Ia<1?null:()=>{Fa&&xa()}};return React.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":el},React.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${ka} Toastify__progress-bar--${Aa}`}),React.createElement("div",{role:"progressbar","aria-hidden":el?"true":"false","aria-label":"notification timer",className:il,style:tl,...nl}))}let w$1=1;const k$1=()=>""+w$1++;function P$1(ua){return ua&&(d$1(ua.toastId)||c$1(ua.toastId))?ua.toastId:k$1()}function M$1(ua,J){return _$1(ua,J),J.toastId}function x$1(ua,J){return{...J,type:J&&J.type||ua,toastId:P$1(J)}}function A$1(ua){return(J,la)=>M$1(J,x$1(ua,la))}function B$1(ua,J){return M$1(ua,x$1("default",J))}B$1.loading=(ua,J)=>M$1(ua,x$1("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...J})),B$1.promise=function(ua,J,la){let xa,{pending:Aa,error:ba,success:Sa}=J;Aa&&(xa=d$1(Aa)?B$1.loading(Aa,la):B$1.loading(Aa.render,{...la,...Aa}));const Ma={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},Ra=(La,Fa,ka)=>{if(Fa==null)return void B$1.dismiss(xa);const el={type:La,...Ma,...la,data:ka},tl=d$1(Fa)?{render:Fa}:Fa;return xa?B$1.update(xa,{...el,...tl}):B$1(tl.render,{...el,...tl}),ka},Ia=u$1(ua)?ua():ua;return Ia.then(La=>Ra("success",Sa,La)).catch(La=>Ra("error",ba,La)),Ia},B$1.success=A$1("success"),B$1.info=A$1("info"),B$1.error=A$1("error"),B$1.warning=A$1("warning"),B$1.warn=B$1.warning,B$1.dark=(ua,J)=>M$1(ua,x$1("default",{theme:"dark",...J})),B$1.dismiss=function(ua){(function(J){var la;if(b$1()){if(J==null||d$1(la=J)||c$1(la))v$1.forEach(xa=>{xa.removeToast(J)});else if(J&&("containerId"in J||"id"in J)){const xa=v$1.get(J.containerId);xa?xa.removeToast(J.id):v$1.forEach(Aa=>{Aa.removeToast(J.id)})}}else h$1=h$1.filter(xa=>J!=null&&xa.options.toastId!==J)})(ua)},B$1.clearWaitingQueue=function(ua){ua===void 0&&(ua={}),v$1.forEach(J=>{!J.props.limit||ua.containerId&&J.id!==ua.containerId||J.clearQueue()})},B$1.isActive=I$1,B$1.update=function(ua,J){J===void 0&&(J={});const la=((xa,Aa)=>{var ba;let{containerId:Sa}=Aa;return(ba=v$1.get(Sa||1))==null?void 0:ba.toasts.get(xa)})(ua,J);if(la){const{props:xa,content:Aa}=la,ba={delay:100,...xa,...J,toastId:J.toastId||ua,updateId:k$1()};ba.toastId!==ua&&(ba.staleId=ua);const Sa=ba.render||Aa;delete ba.render,M$1(Sa,ba)}},B$1.done=ua=>{B$1.update(ua,{progress:1})},B$1.onChange=function(ua){return T$1.add(ua),()=>{T$1.delete(ua)}},B$1.play=ua=>C$1(!0,ua),B$1.pause=ua=>C$1(!1,ua);const O$1=typeof window<"u"?reactExports.useLayoutEffect:reactExports.useEffect,D$1=ua=>{let{theme:J,type:la,isLoading:xa,...Aa}=ua;return React.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:J==="colored"?"currentColor":`var(--toastify-icon-color-${la})`,...Aa})},z$2={info:function(ua){return React.createElement(D$1,{...ua},React.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))},warning:function(ua){return React.createElement(D$1,{...ua},React.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))},success:function(ua){return React.createElement(D$1,{...ua},React.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))},error:function(ua){return React.createElement(D$1,{...ua},React.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))},spinner:function(){return React.createElement("div",{className:"Toastify__spinner"})}},R$1=ua=>{const{isRunning:J,preventExitTransition:la,toastRef:xa,eventHandlers:Aa,playToast:ba}=N$1(ua),{closeButton:Sa,children:Ma,autoClose:Ra,onClick:Ia,type:La,hideProgressBar:Fa,closeToast:ka,transition:el,position:tl,className:rl,style:il,bodyClassName:nl,bodyStyle:sl,progressClassName:ll,progressStyle:dl,updateId:gl,role:_l,progress:vl,rtl:Tl,toastId:Ll,deleteToast:Il,isIn:Fl,isLoading:Ol,closeOnClick:ql,theme:rc}=ua,sc=clsx("Toastify__toast",`Toastify__toast-theme--${rc}`,`Toastify__toast--${La}`,{"Toastify__toast--rtl":Tl},{"Toastify__toast--close-on-click":ql}),Kl=u$1(rl)?rl({rtl:Tl,position:tl,type:La,defaultClassName:sc}):clsx(sc,rl),Gl=function(Zl){let{theme:ac,type:Cc,isLoading:_c,icon:Dc}=Zl,Uc=null;const Oc={theme:ac,type:Cc};return Dc===!1||(u$1(Dc)?Uc=Dc({...Oc,isLoading:_c}):reactExports.isValidElement(Dc)?Uc=reactExports.cloneElement(Dc,Oc):_c?Uc=z$2.spinner():(jc=>jc in z$2)(Cc)&&(Uc=z$2[Cc](Oc))),Uc}(ua),kl=!!vl||!Ra,Wl={closeToast:ka,type:La,theme:rc};let tc=null;return Sa===!1||(tc=u$1(Sa)?Sa(Wl):reactExports.isValidElement(Sa)?reactExports.cloneElement(Sa,Wl):function(Zl){let{closeToast:ac,theme:Cc,ariaLabel:_c="close"}=Zl;return React.createElement("button",{className:`Toastify__close-button Toastify__close-button--${Cc}`,type:"button",onClick:Dc=>{Dc.stopPropagation(),ac(Dc)},"aria-label":_c},React.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},React.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))}(Wl)),React.createElement(el,{isIn:Fl,done:Il,position:tl,preventExitTransition:la,nodeRef:xa,playToast:ba},React.createElement("div",{id:Ll,onClick:Ia,"data-in":Fl,className:Kl,...Aa,style:il,ref:xa},React.createElement("div",{...Fl&&{role:_l},className:u$1(nl)?nl({type:La}):clsx("Toastify__toast-body",nl),style:sl},Gl!=null&&React.createElement("div",{className:clsx("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!Ol})},Gl),React.createElement("div",null,Ma)),tc,React.createElement($$1,{...gl&&!kl?{key:`pb-${gl}`}:{},rtl:Tl,theme:rc,delay:Ra,isRunning:J,isIn:Fl,closeToast:ka,hide:Fa,type:La,style:dl,className:ll,controlledProgress:kl,progress:vl||0})))},S$1=function(ua,J){return J===void 0&&(J=!1),{enter:`Toastify--animate Toastify__${ua}-enter`,exit:`Toastify--animate Toastify__${ua}-exit`,appendPosition:J}},H$1=g$1(S$1("bounce",!0));g$1(S$1("slide",!0)),g$1(S$1("zoom")),g$1(S$1("flip"));const q$1={position:"top-right",transition:H$1,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};function Q$1(ua){let J={...q$1,...ua};const la=ua.stacked,[xa,Aa]=reactExports.useState(!0),ba=reactExports.useRef(null),{getToastToRender:Sa,isToastActive:Ma,count:Ra}=L$1(J),{className:Ia,style:La,rtl:Fa,containerId:ka}=J;function el(rl){const il=clsx("Toastify__toast-container",`Toastify__toast-container--${rl}`,{"Toastify__toast-container--rtl":Fa});return u$1(Ia)?Ia({position:rl,rtl:Fa,defaultClassName:il}):clsx(il,p$1(Ia))}function tl(){la&&(Aa(!0),B$1.play())}return O$1(()=>{if(la){var rl;const il=ba.current.querySelectorAll('[data-in="true"]'),nl=12,sl=(rl=J.position)==null?void 0:rl.includes("top");let ll=0,dl=0;Array.from(il).reverse().forEach((gl,_l)=>{const vl=gl;vl.classList.add("Toastify__toast--stacked"),_l>0&&(vl.dataset.collapsed=`${xa}`),vl.dataset.pos||(vl.dataset.pos=sl?"top":"bot");const Tl=ll*(xa?.2:1)+(xa?0:nl*_l);vl.style.setProperty("--y",`${sl?Tl:-1*Tl}px`),vl.style.setProperty("--g",`${nl}`),vl.style.setProperty("--s",""+(1-(xa?dl:0))),ll+=vl.offsetHeight,dl+=.025})}},[xa,Ra,la]),React.createElement("div",{ref:ba,className:"Toastify",id:ka,onMouseEnter:()=>{la&&(Aa(!1),B$1.pause())},onMouseLeave:tl},Sa((rl,il)=>{const nl=il.length?{...La}:{...La,pointerEvents:"none"};return React.createElement("div",{className:el(rl),style:nl,key:`container-${rl}`},il.map(sl=>{let{content:ll,props:dl}=sl;return React.createElement(R$1,{...dl,stacked:la,collapseAll:tl,isIn:Ma(dl.toastId,dl.containerId),style:dl.style,key:`toast-${dl.key}`},ll)}))}))}function injectStyle(){var ua=':root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74c3c;--toastify-color-transparent:hsla(0,0%,100%,.7);--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-toast-width:320px;--toastify-toast-offset:16px;--toastify-toast-top:max(var(--toastify-toast-offset),env(safe-area-inset-top));--toastify-toast-right:max(var(--toastify-toast-offset),env(safe-area-inset-right));--toastify-toast-left:max(var(--toastify-toast-offset),env(safe-area-inset-left));--toastify-toast-bottom:max(var(--toastify-toast-offset),env(safe-area-inset-bottom));--toastify-toast-background:#fff;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error);--toastify-color-progress-bgo:0.2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translateZ(var(--toastify-z-index));position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translateX(-50%)}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right)}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right)}@media only screen and (max-width:480px){.Toastify__toast-container{width:100vw;padding:0;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translateX(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:auto}}.Toastify__toast{--y:0;position:relative;-ms-touch-action:none;touch-action:none;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);cursor:default;direction:ltr;z-index:0;overflow:hidden}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__close-button,.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{margin:auto 0;-ms-flex:1 1 auto;flex:1 1 auto;padding:6px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Toastify__toast-body>div:last-child{word-break:break-word;-ms-flex:1;flex:1}.Toastify__toast-icon{-webkit-margin-end:10px;margin-inline-end:10px;width:20px;-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width:480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;-ms-flex-item-align:start;align-self:flex-start;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:auto;transform-origin:right;border-bottom-left-radius:0;border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp{position:absolute;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}',J=document.createElement("style");J.innerText=ua,document.head.appendChild(J)}var SuperGrid_1,hasRequiredSuperGrid;function requireSuperGrid(){if(hasRequiredSuperGrid)return SuperGrid_1;hasRequiredSuperGrid=1;var ua=Object.defineProperty,J=Object.getOwnPropertyDescriptor,la=Object.getOwnPropertyNames,xa=Object.prototype.hasOwnProperty,Aa=(il,nl)=>{for(var sl in nl)ua(il,sl,{get:nl[sl],enumerable:!0})},ba=(il,nl,sl,ll)=>{if(nl&&typeof nl=="object"||typeof nl=="function")for(let dl of la(nl))!xa.call(il,dl)&&dl!==sl&&ua(il,dl,{get:()=>nl[dl],enumerable:!(ll=J(nl,dl))||ll.enumerable});return il},Sa=il=>ba(ua({},"__esModule",{value:!0}),il),Ma={};Aa(Ma,{SuperGrid:()=>rl,toMMSI:()=>tl,toMeterSI:()=>el}),SuperGrid_1=Sa(Ma);var Ra=requireReact(),Ia=require$$0,La=requireJsxRuntime(),Fa=(il,nl,sl)=>{const ll=[];if(nl<il)for(let dl=il;dl>=nl;dl-=Math.abs(sl))ll.push(dl);else for(let dl=il;dl<=nl;dl+=Math.abs(sl))ll.push(dl);return ll};function ka(il,nl){return{x:Math.round(nl.x/il)*il,y:Math.round(nl.y/il)*il}}function el(il,nl=1){return il<0?"-"+el(-il):il<1e-6?"0m":il>1e3?Math.floor(il/1e3)+"km":il>1&&nl>1?Math.round(il)+"m":il>1&&nl<=1?il.toFixed(Math.ceil(-Math.log10(nl)))+"m":il<1&&nl>=1/1e3?Math.round(il*1e3)+"mm":il<1&&nl<1/1e3?(il*1e3).toFixed(Math.ceil(-Math.log10(nl*1e3)))+"mm":""}function tl(il,nl=1){return el(il/1e3,nl/1e3)}var rl=il=>{var nl;const sl=(0,Ra.useRef)(null),[ll,dl]=(0,Ra.useState)({x:0,y:0}),{majorColor:gl="rgba(0,0,0,0.2)",minorColor:_l="rgba(0,0,0,0.1)",textColor:vl=(nl=il.majorColor)!=null?nl:"rgba(0,0,0,0.5)",width:Tl,height:Ll,screenSpaceCellSize:Il=200,stringifyCoord:Fl=(sc,Kl,Gl)=>`${el(sc,Gl)}, ${el(Kl,Gl)}`}=il,Ol=Math.ceil(Tl/Il)+2,ql=Math.ceil(Ll/Il)+2;(0,Ra.useEffect)(()=>{if(!sl.current)return;const sc=sl.current.getContext("2d");if(!sc)return;const Kl=Il/10**Math.floor(Math.log10(il.transform.a)),Gl=il.transform.d<0?-1:1,Wl=Il/10**Math.log10(il.transform.a)/Kl;function tc(vc,Mc,kc){const Jc=vc;let fu,hu,wu;for(fu=Mc.x;fu<=kc.x;fu+=Jc)hu=(0,Ia.applyToPoint)(il.transform,{x:fu,y:Mc.y}),wu=(0,Ia.applyToPoint)(il.transform,{x:fu,y:kc.y}),sc.beginPath(),sc.moveTo(hu.x,hu.y),sc.lineTo(wu.x,wu.y),sc.stroke();const pu=Fa(Mc.y,kc.y,Jc*Gl);for(const Eu of pu)hu=(0,Ia.applyToPoint)(il.transform,{x:Mc.x,y:Eu}),wu=(0,Ia.applyToPoint)(il.transform,{x:kc.x,y:Eu}),sc.beginPath(),sc.moveTo(hu.x,hu.y),sc.lineTo(wu.x,wu.y),sc.stroke()}function Zl(vc,Mc,kc){const Jc=vc;let fu;for(fu=Mc.x;fu<=kc.x;fu+=Jc)for(const hu of Fa(Mc.y,kc.y,Jc*Gl)){const wu=(0,Ia.applyToPoint)(il.transform,{x:fu,y:hu});sc.fillStyle=vl,sc.font="12px sans-serif",sc.fillText(Fl(fu,hu,vc),wu.x+2,wu.y-2)}}sc.clearRect(0,0,Tl,Ll);const ac=(0,Ia.applyToPoint)((0,Ia.inverse)(il.transform),{x:0,y:0}),Cc={x:Math.floor((ac.x-Kl)/Kl)*Kl,y:Math.floor((ac.y-Kl)/Kl+(Gl==-1?2:0))*Kl},_c={x:Cc.x+Kl*Ol,y:Cc.y+Kl*ql*Gl},Uc=Kl*5,Oc={x:Math.floor((ac.x-Uc)/Uc)*Uc,y:Math.floor((ac.y-Uc)/Uc+(Gl==-1?2:0))*Uc},jc={x:Oc.x+Uc*Ol,y:Oc.y+Uc*ql*Gl};sc.globalAlpha=1,sc.strokeStyle=gl,tc(Kl,Cc,_c),Zl(Uc,Oc,jc),sc.globalAlpha=1-Wl,tc(Uc/10,Oc,jc),sc.globalAlpha=1-Wl,sc.strokeStyle=_l,tc(Kl/10,Cc,_c),sc.globalAlpha=Math.max(((1-Wl)*10-5)/5,0),Zl(Uc/10,Oc,jc),sc.globalAlpha=1;const Bc=(0,Ia.applyToPoint)(il.transform,ll);sc.font="12px sans-serif",sc.fillStyle=vl,sc.fillText(Fl(ll.x,ll.y,Kl),Bc.x+2,Bc.y-2),sc.strokeStyle=gl,sc.strokeRect(Bc.x-5,Bc.y-5,10,10)},[sl,il.transform,ll,Tl,Ll]);const rc=sc=>{if(!sl.current)return;const Kl=Il/10/10**Math.floor(Math.log10(il.transform.a)),Gl=sl.current.getBoundingClientRect(),kl=(0,Ia.applyToPoint)((0,Ia.inverse)(il.transform),{x:sc.clientX-Gl.left,y:sc.clientY-Gl.top}),Wl=ka(Kl,kl);dl(Wl)};return(0,La.jsx)("canvas",{onMouseUp:sc=>{sc.button===1&&rc(sc)},onDoubleClick:rc,ref:sl,width:il.width,height:il.height})};return SuperGrid_1}var SuperGridExports=requireSuperGrid(),colorExports=requireColor();const color=getDefaultExportFromCjs$1(colorExports);function pointToSegmentDistance(ua,J,la){const xa=(la.x-J.x)**2+(la.y-J.y)**2;if(xa===0)return distance$1(ua,J);let Aa=((ua.x-J.x)*(la.x-J.x)+(ua.y-J.y)*(la.y-J.y))/xa;Aa=Math.max(0,Math.min(1,Aa));const ba={x:J.x+Aa*(la.x-J.x),y:J.y+Aa*(la.y-J.y)};return distance$1(ua,ba)}function distance$1(ua,J){const la=ua.x-J.x,xa=ua.y-J.y;return Math.sqrt(la*la+xa*xa)}var isDevelopment$1=!1;function sheetForTag(ua){if(ua.sheet)return ua.sheet;for(var J=0;J<document.styleSheets.length;J++)if(document.styleSheets[J].ownerNode===ua)return document.styleSheets[J]}function createStyleElement(ua){var J=document.createElement("style");return J.setAttribute("data-emotion",ua.key),ua.nonce!==void 0&&J.setAttribute("nonce",ua.nonce),J.appendChild(document.createTextNode("")),J.setAttribute("data-s",""),J}var StyleSheet=function(){function ua(la){var xa=this;this._insertTag=function(Aa){var ba;xa.tags.length===0?xa.insertionPoint?ba=xa.insertionPoint.nextSibling:xa.prepend?ba=xa.container.firstChild:ba=xa.before:ba=xa.tags[xa.tags.length-1].nextSibling,xa.container.insertBefore(Aa,ba),xa.tags.push(Aa)},this.isSpeedy=la.speedy===void 0?!isDevelopment$1:la.speedy,this.tags=[],this.ctr=0,this.nonce=la.nonce,this.key=la.key,this.container=la.container,this.prepend=la.prepend,this.insertionPoint=la.insertionPoint,this.before=null}var J=ua.prototype;return J.hydrate=function(xa){xa.forEach(this._insertTag)},J.insert=function(xa){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(createStyleElement(this));var Aa=this.tags[this.tags.length-1];if(this.isSpeedy){var ba=sheetForTag(Aa);try{ba.insertRule(xa,ba.cssRules.length)}catch{}}else Aa.appendChild(document.createTextNode(xa));this.ctr++},J.flush=function(){this.tags.forEach(function(xa){var Aa;return(Aa=xa.parentNode)==null?void 0:Aa.removeChild(xa)}),this.tags=[],this.ctr=0},ua}(),MS="-ms-",MOZ="-moz-",WEBKIT="-webkit-",COMMENT="comm",RULESET="rule",DECLARATION="decl",IMPORT="@import",KEYFRAMES="@keyframes",LAYER="@layer",abs=Math.abs,from=String.fromCharCode,assign=Object.assign;function hash(ua,J){return charat(ua,0)^45?(((J<<2^charat(ua,0))<<2^charat(ua,1))<<2^charat(ua,2))<<2^charat(ua,3):0}function trim(ua){return ua.trim()}function match(ua,J){return(ua=J.exec(ua))?ua[0]:ua}function replace(ua,J,la){return ua.replace(J,la)}function indexof(ua,J){return ua.indexOf(J)}function charat(ua,J){return ua.charCodeAt(J)|0}function substr(ua,J,la){return ua.slice(J,la)}function strlen(ua){return ua.length}function sizeof$1(ua){return ua.length}function append(ua,J){return J.push(ua),ua}function combine(ua,J){return ua.map(J).join("")}var line=1,column=1,length=0,position$1=0,character=0,characters="";function node(ua,J,la,xa,Aa,ba,Sa){return{value:ua,root:J,parent:la,type:xa,props:Aa,children:ba,line,column,length:Sa,return:""}}function copy(ua,J){return assign(node("",null,null,"",null,null,0),ua,{length:-ua.length},J)}function char(){return character}function prev(){return character=position$1>0?charat(characters,--position$1):0,column--,character===10&&(column=1,line--),character}function next(){return character=position$1<length?charat(characters,position$1++):0,column++,character===10&&(column=1,line++),character}function peek(){return charat(characters,position$1)}function caret(){return position$1}function slice(ua,J){return substr(characters,ua,J)}function token(ua){switch(ua){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(ua){return line=column=1,length=strlen(characters=ua),position$1=0,[]}function dealloc(ua){return characters="",ua}function delimit(ua){return trim(slice(position$1-1,delimiter(ua===91?ua+2:ua===40?ua+1:ua)))}function whitespace(ua){for(;(character=peek())&&character<33;)next();return token(ua)>2||token(character)>3?"":" "}function escaping(ua,J){for(;--J&&next()&&!(character<48||character>102||character>57&&character<65||character>70&&character<97););return slice(ua,caret()+(J<6&&peek()==32&&next()==32))}function delimiter(ua){for(;next();)switch(character){case ua:return position$1;case 34:case 39:ua!==34&&ua!==39&&delimiter(character);break;case 40:ua===41&&delimiter(ua);break;case 92:next();break}return position$1}function commenter(ua,J){for(;next()&&ua+character!==57;)if(ua+character===84&&peek()===47)break;return"/*"+slice(J,position$1-1)+"*"+from(ua===47?ua:next())}function identifier(ua){for(;!token(peek());)next();return slice(ua,position$1)}function compile(ua){return dealloc(parse$1("",null,null,null,[""],ua=alloc(ua),0,[0],ua))}function parse$1(ua,J,la,xa,Aa,ba,Sa,Ma,Ra){for(var Ia=0,La=0,Fa=Sa,ka=0,el=0,tl=0,rl=1,il=1,nl=1,sl=0,ll="",dl=Aa,gl=ba,_l=xa,vl=ll;il;)switch(tl=sl,sl=next()){case 40:if(tl!=108&&charat(vl,Fa-1)==58){indexof(vl+=replace(delimit(sl),"&","&\f"),"&\f")!=-1&&(nl=-1);break}case 34:case 39:case 91:vl+=delimit(sl);break;case 9:case 10:case 13:case 32:vl+=whitespace(tl);break;case 92:vl+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),J,la),Ra);break;default:vl+="/"}break;case 123*rl:Ma[Ia++]=strlen(vl)*nl;case 125*rl:case 59:case 0:switch(sl){case 0:case 125:il=0;case 59+La:nl==-1&&(vl=replace(vl,/\f/g,"")),el>0&&strlen(vl)-Fa&&append(el>32?declaration(vl+";",xa,la,Fa-1):declaration(replace(vl," ","")+";",xa,la,Fa-2),Ra);break;case 59:vl+=";";default:if(append(_l=ruleset(vl,J,la,Ia,La,Aa,Ma,ll,dl=[],gl=[],Fa),ba),sl===123)if(La===0)parse$1(vl,J,_l,_l,dl,ba,Fa,Ma,gl);else switch(ka===99&&charat(vl,3)===110?100:ka){case 100:case 108:case 109:case 115:parse$1(ua,_l,_l,xa&&append(ruleset(ua,_l,_l,0,0,Aa,Ma,ll,Aa,dl=[],Fa),gl),Aa,gl,Fa,Ma,xa?dl:gl);break;default:parse$1(vl,_l,_l,_l,[""],gl,0,Ma,gl)}}Ia=La=el=0,rl=nl=1,ll=vl="",Fa=Sa;break;case 58:Fa=1+strlen(vl),el=tl;default:if(rl<1){if(sl==123)--rl;else if(sl==125&&rl++==0&&prev()==125)continue}switch(vl+=from(sl),sl*rl){case 38:nl=La>0?1:(vl+="\f",-1);break;case 44:Ma[Ia++]=(strlen(vl)-1)*nl,nl=1;break;case 64:peek()===45&&(vl+=delimit(next())),ka=peek(),La=Fa=strlen(ll=vl+=identifier(caret())),sl++;break;case 45:tl===45&&strlen(vl)==2&&(rl=0)}}return ba}function ruleset(ua,J,la,xa,Aa,ba,Sa,Ma,Ra,Ia,La){for(var Fa=Aa-1,ka=Aa===0?ba:[""],el=sizeof$1(ka),tl=0,rl=0,il=0;tl<xa;++tl)for(var nl=0,sl=substr(ua,Fa+1,Fa=abs(rl=Sa[tl])),ll=ua;nl<el;++nl)(ll=trim(rl>0?ka[nl]+" "+sl:replace(sl,/&\f/g,ka[nl])))&&(Ra[il++]=ll);return node(ua,J,la,Aa===0?RULESET:Ma,Ra,Ia,La)}function comment(ua,J,la){return node(ua,J,la,COMMENT,from(char()),substr(ua,2,-2),0)}function declaration(ua,J,la,xa){return node(ua,J,la,DECLARATION,substr(ua,0,xa),substr(ua,xa+1,-1),xa)}function serialize(ua,J){for(var la="",xa=sizeof$1(ua),Aa=0;Aa<xa;Aa++)la+=J(ua[Aa],Aa,ua,J)||"";return la}function stringify$1(ua,J,la,xa){switch(ua.type){case LAYER:if(ua.children.length)break;case IMPORT:case DECLARATION:return ua.return=ua.return||ua.value;case COMMENT:return"";case KEYFRAMES:return ua.return=ua.value+"{"+serialize(ua.children,xa)+"}";case RULESET:ua.value=ua.props.join(",")}return strlen(la=serialize(ua.children,xa))?ua.return=ua.value+"{"+la+"}":""}function middleware(ua){var J=sizeof$1(ua);return function(la,xa,Aa,ba){for(var Sa="",Ma=0;Ma<J;Ma++)Sa+=ua[Ma](la,xa,Aa,ba)||"";return Sa}}function rulesheet(ua){return function(J){J.root||(J=J.return)&&ua(J)}}function memoize(ua){var J=Object.create(null);return function(la){return J[la]===void 0&&(J[la]=ua(la)),J[la]}}var identifierWithPointTracking=function ua(J,la,xa){for(var Aa=0,ba=0;Aa=ba,ba=peek(),Aa===38&&ba===12&&(la[xa]=1),!token(ba);)next();return slice(J,position$1)},toRules=function ua(J,la){var xa=-1,Aa=44;do switch(token(Aa)){case 0:Aa===38&&peek()===12&&(la[xa]=1),J[xa]+=identifierWithPointTracking(position$1-1,la,xa);break;case 2:J[xa]+=delimit(Aa);break;case 4:if(Aa===44){J[++xa]=peek()===58?"&\f":"",la[xa]=J[xa].length;break}default:J[xa]+=from(Aa)}while(Aa=next());return J},getRules=function ua(J,la){return dealloc(toRules(alloc(J),la))},fixedElements=new WeakMap,compat=function ua(J){if(!(J.type!=="rule"||!J.parent||J.length<1)){for(var la=J.value,xa=J.parent,Aa=J.column===xa.column&&J.line===xa.line;xa.type!=="rule";)if(xa=xa.parent,!xa)return;if(!(J.props.length===1&&la.charCodeAt(0)!==58&&!fixedElements.get(xa))&&!Aa){fixedElements.set(J,!0);for(var ba=[],Sa=getRules(la,ba),Ma=xa.props,Ra=0,Ia=0;Ra<Sa.length;Ra++)for(var La=0;La<Ma.length;La++,Ia++)J.props[Ia]=ba[Ra]?Sa[Ra].replace(/&\f/g,Ma[La]):Ma[La]+" "+Sa[Ra]}}},removeLabel=function ua(J){if(J.type==="decl"){var la=J.value;la.charCodeAt(0)===108&&la.charCodeAt(2)===98&&(J.return="",J.value="")}};function prefix(ua,J){switch(hash(ua,J)){case 5103:return WEBKIT+"print-"+ua+ua;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return WEBKIT+ua+ua;case 5349:case 4246:case 4810:case 6968:case 2756:return WEBKIT+ua+MOZ+ua+MS+ua+ua;case 6828:case 4268:return WEBKIT+ua+MS+ua+ua;case 6165:return WEBKIT+ua+MS+"flex-"+ua+ua;case 5187:return WEBKIT+ua+replace(ua,/(\w+).+(:[^]+)/,WEBKIT+"box-$1$2"+MS+"flex-$1$2")+ua;case 5443:return WEBKIT+ua+MS+"flex-item-"+replace(ua,/flex-|-self/,"")+ua;case 4675:return WEBKIT+ua+MS+"flex-line-pack"+replace(ua,/align-content|flex-|-self/,"")+ua;case 5548:return WEBKIT+ua+MS+replace(ua,"shrink","negative")+ua;case 5292:return WEBKIT+ua+MS+replace(ua,"basis","preferred-size")+ua;case 6060:return WEBKIT+"box-"+replace(ua,"-grow","")+WEBKIT+ua+MS+replace(ua,"grow","positive")+ua;case 4554:return WEBKIT+replace(ua,/([^-])(transform)/g,"$1"+WEBKIT+"$2")+ua;case 6187:return replace(replace(replace(ua,/(zoom-|grab)/,WEBKIT+"$1"),/(image-set)/,WEBKIT+"$1"),ua,"")+ua;case 5495:case 3959:return replace(ua,/(image-set\([^]*)/,WEBKIT+"$1$`$1");case 4968:return replace(replace(ua,/(.+:)(flex-)?(.*)/,WEBKIT+"box-pack:$3"+MS+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+WEBKIT+ua+ua;case 4095:case 3583:case 4068:case 2532:return replace(ua,/(.+)-inline(.+)/,WEBKIT+"$1$2")+ua;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(ua)-1-J>6)switch(charat(ua,J+1)){case 109:if(charat(ua,J+4)!==45)break;case 102:return replace(ua,/(.+:)(.+)-([^]+)/,"$1"+WEBKIT+"$2-$3$1"+MOZ+(charat(ua,J+3)==108?"$3":"$2-$3"))+ua;case 115:return~indexof(ua,"stretch")?prefix(replace(ua,"stretch","fill-available"),J)+ua:ua}break;case 4949:if(charat(ua,J+1)!==115)break;case 6444:switch(charat(ua,strlen(ua)-3-(~indexof(ua,"!important")&&10))){case 107:return replace(ua,":",":"+WEBKIT)+ua;case 101:return replace(ua,/(.+:)([^;!]+)(;|!.+)?/,"$1"+WEBKIT+(charat(ua,14)===45?"inline-":"")+"box$3$1"+WEBKIT+"$2$3$1"+MS+"$2box$3")+ua}break;case 5936:switch(charat(ua,J+11)){case 114:return WEBKIT+ua+MS+replace(ua,/[svh]\w+-[tblr]{2}/,"tb")+ua;case 108:return WEBKIT+ua+MS+replace(ua,/[svh]\w+-[tblr]{2}/,"tb-rl")+ua;case 45:return WEBKIT+ua+MS+replace(ua,/[svh]\w+-[tblr]{2}/,"lr")+ua}return WEBKIT+ua+MS+ua+ua}return ua}var prefixer=function ua(J,la,xa,Aa){if(J.length>-1&&!J.return)switch(J.type){case DECLARATION:J.return=prefix(J.value,J.length);break;case KEYFRAMES:return serialize([copy(J,{value:replace(J.value,"@","@"+WEBKIT)})],Aa);case RULESET:if(J.length)return combine(J.props,function(ba){switch(match(ba,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(J,{props:[replace(ba,/:(read-\w+)/,":"+MOZ+"$1")]})],Aa);case"::placeholder":return serialize([copy(J,{props:[replace(ba,/:(plac\w+)/,":"+WEBKIT+"input-$1")]}),copy(J,{props:[replace(ba,/:(plac\w+)/,":"+MOZ+"$1")]}),copy(J,{props:[replace(ba,/:(plac\w+)/,MS+"input-$1")]})],Aa)}return""})}},defaultStylisPlugins=[prefixer],createCache=function ua(J){var la=J.key;if(la==="css"){var xa=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(xa,function(rl){var il=rl.getAttribute("data-emotion");il.indexOf(" ")!==-1&&(document.head.appendChild(rl),rl.setAttribute("data-s",""))})}var Aa=J.stylisPlugins||defaultStylisPlugins,ba={},Sa,Ma=[];Sa=J.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+la+' "]'),function(rl){for(var il=rl.getAttribute("data-emotion").split(" "),nl=1;nl<il.length;nl++)ba[il[nl]]=!0;Ma.push(rl)});var Ra,Ia=[compat,removeLabel];{var La,Fa=[stringify$1,rulesheet(function(rl){La.insert(rl)})],ka=middleware(Ia.concat(Aa,Fa)),el=function(il){return serialize(compile(il),ka)};Ra=function(il,nl,sl,ll){La=sl,el(il?il+"{"+nl.styles+"}":nl.styles),ll&&(tl.inserted[nl.name]=!0)}}var tl={key:la,sheet:new StyleSheet({key:la,container:Sa,nonce:J.nonce,speedy:J.speedy,prepend:J.prepend,insertionPoint:J.insertionPoint}),nonce:J.nonce,inserted:ba,registered:{},insert:Ra};return tl.sheet.hydrate(Ma),tl};function murmur2(ua){for(var J=0,la,xa=0,Aa=ua.length;Aa>=4;++xa,Aa-=4)la=ua.charCodeAt(xa)&255|(ua.charCodeAt(++xa)&255)<<8|(ua.charCodeAt(++xa)&255)<<16|(ua.charCodeAt(++xa)&255)<<24,la=(la&65535)*1540483477+((la>>>16)*59797<<16),la^=la>>>24,J=(la&65535)*1540483477+((la>>>16)*59797<<16)^(J&65535)*1540483477+((J>>>16)*59797<<16);switch(Aa){case 3:J^=(ua.charCodeAt(xa+2)&255)<<16;case 2:J^=(ua.charCodeAt(xa+1)&255)<<8;case 1:J^=ua.charCodeAt(xa)&255,J=(J&65535)*1540483477+((J>>>16)*59797<<16)}return J^=J>>>13,J=(J&65535)*1540483477+((J>>>16)*59797<<16),((J^J>>>15)>>>0).toString(36)}var unitlessKeys={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},isDevelopment=!1,hyphenateRegex=/[A-Z]|^ms/g,animationRegex=/_EMO_([^_]+?)_([^]*?)_EMO_/g,isCustomProperty=function ua(J){return J.charCodeAt(1)===45},isProcessableValue=function ua(J){return J!=null&&typeof J!="boolean"},processStyleName=memoize(function(ua){return isCustomProperty(ua)?ua:ua.replace(hyphenateRegex,"-$&").toLowerCase()}),processStyleValue=function ua(J,la){switch(J){case"animation":case"animationName":if(typeof la=="string")return la.replace(animationRegex,function(xa,Aa,ba){return cursor={name:Aa,styles:ba,next:cursor},Aa})}return unitlessKeys[J]!==1&&!isCustomProperty(J)&&typeof la=="number"&&la!==0?la+"px":la},noComponentSelectorMessage="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function handleInterpolation(ua,J,la){if(la==null)return"";var xa=la;if(xa.__emotion_styles!==void 0)return xa;switch(typeof la){case"boolean":return"";case"object":{var Aa=la;if(Aa.anim===1)return cursor={name:Aa.name,styles:Aa.styles,next:cursor},Aa.name;var ba=la;if(ba.styles!==void 0){var Sa=ba.next;if(Sa!==void 0)for(;Sa!==void 0;)cursor={name:Sa.name,styles:Sa.styles,next:cursor},Sa=Sa.next;var Ma=ba.styles+";";return Ma}return createStringFromObject(ua,J,la)}}var Ra=la;if(J==null)return Ra;var Ia=J[Ra];return Ia!==void 0?Ia:Ra}function createStringFromObject(ua,J,la){var xa="";if(Array.isArray(la))for(var Aa=0;Aa<la.length;Aa++)xa+=handleInterpolation(ua,J,la[Aa])+";";else for(var ba in la){var Sa=la[ba];if(typeof Sa!="object"){var Ma=Sa;J!=null&&J[Ma]!==void 0?xa+=ba+"{"+J[Ma]+"}":isProcessableValue(Ma)&&(xa+=processStyleName(ba)+":"+processStyleValue(ba,Ma)+";")}else{if(ba==="NO_COMPONENT_SELECTOR"&&isDevelopment)throw new Error(noComponentSelectorMessage);if(Array.isArray(Sa)&&typeof Sa[0]=="string"&&(J==null||J[Sa[0]]===void 0))for(var Ra=0;Ra<Sa.length;Ra++)isProcessableValue(Sa[Ra])&&(xa+=processStyleName(ba)+":"+processStyleValue(ba,Sa[Ra])+";");else{var Ia=handleInterpolation(ua,J,Sa);switch(ba){case"animation":case"animationName":{xa+=processStyleName(ba)+":"+Ia+";";break}default:xa+=ba+"{"+Ia+"}"}}}}return xa}var labelPattern=/label:\s*([^\s;{]+)\s*(;|$)/g,cursor;function serializeStyles(ua,J,la){if(ua.length===1&&typeof ua[0]=="object"&&ua[0]!==null&&ua[0].styles!==void 0)return ua[0];var xa=!0,Aa="";cursor=void 0;var ba=ua[0];if(ba==null||ba.raw===void 0)xa=!1,Aa+=handleInterpolation(la,J,ba);else{var Sa=ba;Aa+=Sa[0]}for(var Ma=1;Ma<ua.length;Ma++)if(Aa+=handleInterpolation(la,J,ua[Ma]),xa){var Ra=ba;Aa+=Ra[Ma]}labelPattern.lastIndex=0;for(var Ia="",La;(La=labelPattern.exec(Aa))!==null;)Ia+="-"+La[1];var Fa=murmur2(Aa)+Ia;return{name:Fa,styles:Aa,next:cursor}}function getRegisteredStyles(ua,J,la){var xa="";return la.split(" ").forEach(function(Aa){ua[Aa]!==void 0?J.push(ua[Aa]+";"):Aa&&(xa+=Aa+" ")}),xa}var registerStyles=function ua(J,la,xa){var Aa=J.key+"-"+la.name;J.registered[Aa]===void 0&&(J.registered[Aa]=la.styles)},insertStyles=function ua(J,la,xa){registerStyles(J,la);var Aa=J.key+"-"+la.name;if(J.inserted[la.name]===void 0){var ba=la;do J.insert(la===ba?"."+Aa:"",ba,J.sheet,!0),ba=ba.next;while(ba!==void 0)}};function insertWithoutScoping(ua,J){if(ua.inserted[J.name]===void 0)return ua.insert("",J,ua.sheet,!0)}function merge(ua,J,la){var xa=[],Aa=getRegisteredStyles(ua,xa,la);return xa.length<2?la:Aa+J(xa)}var createEmotion=function ua(J){var la=createCache(J);la.sheet.speedy=function(Ma){this.isSpeedy=Ma},la.compat=!0;var xa=function(){for(var Ra=arguments.length,Ia=new Array(Ra),La=0;La<Ra;La++)Ia[La]=arguments[La];var Fa=serializeStyles(Ia,la.registered,void 0);return insertStyles(la,Fa),la.key+"-"+Fa.name},Aa=function(){for(var Ra=arguments.length,Ia=new Array(Ra),La=0;La<Ra;La++)Ia[La]=arguments[La];var Fa=serializeStyles(Ia,la.registered),ka="animation-"+Fa.name;return insertWithoutScoping(la,{name:Fa.name,styles:"@keyframes "+ka+"{"+Fa.styles+"}"}),ka},ba=function(){for(var Ra=arguments.length,Ia=new Array(Ra),La=0;La<Ra;La++)Ia[La]=arguments[La];var Fa=serializeStyles(Ia,la.registered);insertWithoutScoping(la,Fa)},Sa=function(){for(var Ra=arguments.length,Ia=new Array(Ra),La=0;La<Ra;La++)Ia[La]=arguments[La];return merge(la.registered,xa,classnames(Ia))};return{css:xa,cx:Sa,injectGlobal:ba,keyframes:Aa,hydrate:function(Ra){Ra.forEach(function(Ia){la.inserted[Ia]=!0})},flush:function(){la.registered={},la.inserted={},la.sheet.flush()},sheet:la.sheet,cache:la,getRegisteredStyles:getRegisteredStyles.bind(null,la.registered),merge:merge.bind(null,la.registered,xa)}},classnames=function ua(J){for(var la="",xa=0;xa<J.length;xa++){var Aa=J[xa];if(Aa!=null){var ba=void 0;switch(typeof Aa){case"boolean":break;case"object":{if(Array.isArray(Aa))ba=ua(Aa);else{ba="";for(var Sa in Aa)Aa[Sa]&&Sa&&(ba&&(ba+=" "),ba+=Sa)}break}default:ba=Aa}ba&&(la&&(la+=" "),la+=ba)}}return la},_createEmotion=createEmotion({key:"css"}),css=_createEmotion.css;function findConnectedNetworks(ua){const J=new Map;let la=0;function xa(Aa){for(const[,Sa]of J)if(Sa.has(Aa))return Sa;const ba=new Set;return J.set(`connectivity_net${la++}`,ba),ba}for(const Aa of ua){let ba=null;for(const Sa of Aa){if(!ba)ba=xa(Sa);else if(!ba.has(Sa)){const Ma=xa(Sa);if(Ma!==ba){for(const Ra of Ma)ba.add(Ra);J.delete(Array.from(J.entries()).find(([,Ra])=>Ra===Ma)[0])}}ba.add(Sa)}}return Object.fromEntries(Array.from(J.entries()).map(([Aa,ba])=>[Aa,Array.from(ba)]))}var ConnectivityMap=class{constructor(ua){jp(this,"netMap");jp(this,"idToNetMap");this.netMap=ua,this.idToNetMap={};for(const[J,la]of Object.entries(ua))for(const xa of la)this.idToNetMap[xa]=J}addConnections(ua){for(const J of ua){const la=new Set;for(const Aa of J){const ba=this.idToNetMap[Aa];ba&&la.add(ba)}let xa;if(la.size===0)xa=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[xa]=[];else if(la.size===1)xa=la.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{xa=la.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const Aa of la)if(Aa!==xa){this.netMap[xa].push(...this.netMap[Aa]),this.netMap[Aa]=this.netMap[xa];for(const ba of this.netMap[xa])this.idToNetMap[ba]=xa}}for(const Aa of J)this.netMap[xa].includes(Aa)||this.netMap[xa].push(Aa),this.idToNetMap[Aa]=xa}}getIdsConnectedToNet(ua){return this.netMap[ua]||[]}getNetConnectedToId(ua){return this.idToNetMap[ua]}areIdsConnected(ua,J){const la=this.getNetConnectedToId(ua),xa=this.getNetConnectedToId(J);return la===xa||xa===ua||xa===ua}areAllIdsConnected(ua){const J=this.getNetConnectedToId(ua[0]);for(const la of ua){const xa=this.getNetConnectedToId(la);if(xa===void 0||xa!==J)return!1}return!0}},getFullConnectivityMapFromCircuitJson=ua=>{const J=[];for(const xa of ua)if(xa.type==="source_trace")J.push([xa.source_trace_id,...xa.connected_source_port_ids??[],...xa.connected_source_net_ids??[]].filter(Boolean));else if(xa.type==="pcb_port"){const{pcb_port_id:Aa,source_port_id:ba}=xa;ba&&Aa&&J.push([ba,Aa])}else if(xa.type==="pcb_smtpad"){const{pcb_smtpad_id:Aa,pcb_port_id:ba}=xa;ba&&Aa&&J.push([Aa,ba])}else if(xa.type==="pcb_plated_hole"){const{pcb_plated_hole_id:Aa,pcb_port_id:ba}=xa;ba&&Aa&&J.push([Aa,ba])}else if(xa.type==="pcb_trace"){const{pcb_trace_id:Aa,source_trace_id:ba}=xa;ba&&Aa&&J.push([Aa,ba])}const la=findConnectedNetworks(J);return new ConnectivityMap(la)},__defProp=Object.defineProperty,__export=(ua,J)=>{for(var la in J)__defProp(ua,la,{get:J[la],enumerable:!0})},dist_exports={};__export(dist_exports,{all_layers:()=>all_layers,any_circuit_element:()=>any_circuit_element,any_soup_element:()=>any_soup_element,any_source_component:()=>any_source_component,battery_capacity:()=>battery_capacity,cad_component:()=>cad_component,capacitance:()=>capacitance,current:()=>current,distance:()=>distance,frequency:()=>frequency,getZodPrefixedIdWithDefault:()=>getZodPrefixedIdWithDefault,inductance:()=>inductance,layer_ref:()=>layer_ref,layer_string:()=>layer_string,length:()=>length2,pcb_board:()=>pcb_board,pcb_component:()=>pcb_component,pcb_fabrication_note_path:()=>pcb_fabrication_note_path,pcb_fabrication_note_text:()=>pcb_fabrication_note_text,pcb_group:()=>pcb_group,pcb_hole:()=>pcb_hole,pcb_hole_circle_or_square_shape:()=>pcb_hole_circle_or_square_shape,pcb_hole_oval_shape:()=>pcb_hole_oval_shape,pcb_keepout:()=>pcb_keepout,pcb_manual_edit_conflict_error:()=>pcb_manual_edit_conflict_error,pcb_missing_footprint_error:()=>pcb_missing_footprint_error,pcb_placement_error:()=>pcb_placement_error,pcb_plated_hole:()=>pcb_plated_hole,pcb_port:()=>pcb_port,pcb_port_not_matched_error:()=>pcb_port_not_matched_error,pcb_route_hint:()=>pcb_route_hint,pcb_route_hints:()=>pcb_route_hints,pcb_silkscreen_circle:()=>pcb_silkscreen_circle,pcb_silkscreen_line:()=>pcb_silkscreen_line,pcb_silkscreen_oval:()=>pcb_silkscreen_oval,pcb_silkscreen_path:()=>pcb_silkscreen_path,pcb_silkscreen_rect:()=>pcb_silkscreen_rect,pcb_silkscreen_text:()=>pcb_silkscreen_text,pcb_smtpad:()=>pcb_smtpad,pcb_solder_paste:()=>pcb_solder_paste,pcb_text:()=>pcb_text,pcb_trace:()=>pcb_trace,pcb_trace_error:()=>pcb_trace_error,pcb_trace_hint:()=>pcb_trace_hint,pcb_trace_route_point:()=>pcb_trace_route_point,pcb_trace_route_point_via:()=>pcb_trace_route_point_via,pcb_trace_route_point_wire:()=>pcb_trace_route_point_wire,pcb_via:()=>pcb_via,point:()=>point,point3:()=>point3,port_arrangement:()=>port_arrangement,position:()=>position,position3:()=>position3,resistance:()=>resistance,rotation:()=>rotation,route_hint_point:()=>route_hint_point,schematic_box:()=>schematic_box,schematic_component:()=>schematic_component,schematic_component_port_arrangement_by_sides:()=>schematic_component_port_arrangement_by_sides,schematic_component_port_arrangement_by_size:()=>schematic_component_port_arrangement_by_size,schematic_debug_line:()=>schematic_debug_line,schematic_debug_object:()=>schematic_debug_object,schematic_debug_object_base:()=>schematic_debug_object_base,schematic_debug_point:()=>schematic_debug_point,schematic_debug_rect:()=>schematic_debug_rect,schematic_error:()=>schematic_error,schematic_line:()=>schematic_line,schematic_net_label:()=>schematic_net_label,schematic_path:()=>schematic_path,schematic_pin_styles:()=>schematic_pin_styles,schematic_port:()=>schematic_port,schematic_text:()=>schematic_text,schematic_trace:()=>schematic_trace,schematic_voltage_probe:()=>schematic_voltage_probe,size:()=>size$3,source_component_base:()=>source_component_base,source_group:()=>source_group,source_led:()=>source_led,source_net:()=>source_net,source_port:()=>source_port,source_simple_battery:()=>source_simple_battery,source_simple_bug:()=>source_simple_bug,source_simple_capacitor:()=>source_simple_capacitor,source_simple_chip:()=>source_simple_chip,source_simple_crystal:()=>source_simple_crystal,source_simple_diode:()=>source_simple_diode,source_simple_ground:()=>source_simple_ground,source_simple_inductor:()=>source_simple_inductor,source_simple_mosfet:()=>source_simple_mosfet,source_simple_pin_header:()=>source_simple_pin_header,source_simple_potentiometer:()=>source_simple_potentiometer,source_simple_power_source:()=>source_simple_power_source,source_simple_push_button:()=>source_simple_push_button,source_simple_resistor:()=>source_simple_resistor,source_simple_resonator:()=>source_simple_resonator,source_simple_transistor:()=>source_simple_transistor,source_trace:()=>source_trace,supplier_name:()=>supplier_name,time:()=>time,visible_layer:()=>visible_layer,voltage:()=>voltage});var util;(function(ua){ua.assertEqual=Aa=>Aa;function J(Aa){}ua.assertIs=J;function la(Aa){throw new Error}ua.assertNever=la,ua.arrayToEnum=Aa=>{const ba={};for(const Sa of Aa)ba[Sa]=Sa;return ba},ua.getValidEnumValues=Aa=>{const ba=ua.objectKeys(Aa).filter(Ma=>typeof Aa[Aa[Ma]]!="number"),Sa={};for(const Ma of ba)Sa[Ma]=Aa[Ma];return ua.objectValues(Sa)},ua.objectValues=Aa=>ua.objectKeys(Aa).map(function(ba){return Aa[ba]}),ua.objectKeys=typeof Object.keys=="function"?Aa=>Object.keys(Aa):Aa=>{const ba=[];for(const Sa in Aa)Object.prototype.hasOwnProperty.call(Aa,Sa)&&ba.push(Sa);return ba},ua.find=(Aa,ba)=>{for(const Sa of Aa)if(ba(Sa))return Sa},ua.isInteger=typeof Number.isInteger=="function"?Aa=>Number.isInteger(Aa):Aa=>typeof Aa=="number"&&isFinite(Aa)&&Math.floor(Aa)===Aa;function xa(Aa,ba=" | "){return Aa.map(Sa=>typeof Sa=="string"?`'${Sa}'`:Sa).join(ba)}ua.joinValues=xa,ua.jsonStringifyReplacer=(Aa,ba)=>typeof ba=="bigint"?ba.toString():ba})(util||(util={}));var objectUtil;(function(ua){ua.mergeShapes=(J,la)=>({...J,...la})})(objectUtil||(objectUtil={}));var ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType=ua=>{switch(typeof ua){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return isNaN(ua)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":return Array.isArray(ua)?ZodParsedType.array:ua===null?ZodParsedType.null:ua.then&&typeof ua.then=="function"&&ua.catch&&typeof ua.catch=="function"?ZodParsedType.promise:typeof Map<"u"&&ua instanceof Map?ZodParsedType.map:typeof Set<"u"&&ua instanceof Set?ZodParsedType.set:typeof Date<"u"&&ua instanceof Date?ZodParsedType.date:ZodParsedType.object;default:return ZodParsedType.unknown}},ZodIssueCode=util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),quotelessJson=ua=>JSON.stringify(ua,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError=class zw extends Error{get errors(){return this.issues}constructor(J){super(),this.issues=[],this.addIssue=xa=>{this.issues=[...this.issues,xa]},this.addIssues=(xa=[])=>{this.issues=[...this.issues,...xa]};const la=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,la):this.__proto__=la,this.name="ZodError",this.issues=J}format(J){const la=J||function(ba){return ba.message},xa={_errors:[]},Aa=ba=>{for(const Sa of ba.issues)if(Sa.code==="invalid_union")Sa.unionErrors.map(Aa);else if(Sa.code==="invalid_return_type")Aa(Sa.returnTypeError);else if(Sa.code==="invalid_arguments")Aa(Sa.argumentsError);else if(Sa.path.length===0)xa._errors.push(la(Sa));else{let Ma=xa,Ra=0;for(;Ra<Sa.path.length;){const Ia=Sa.path[Ra];Ra===Sa.path.length-1?(Ma[Ia]=Ma[Ia]||{_errors:[]},Ma[Ia]._errors.push(la(Sa))):Ma[Ia]=Ma[Ia]||{_errors:[]},Ma=Ma[Ia],Ra++}}};return Aa(this),xa}static assert(J){if(!(J instanceof zw))throw new Error(`Not a ZodError: ${J}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(J=la=>la.message){const la={},xa=[];for(const Aa of this.issues)Aa.path.length>0?(la[Aa.path[0]]=la[Aa.path[0]]||[],la[Aa.path[0]].push(J(Aa))):xa.push(J(Aa));return{formErrors:xa,fieldErrors:la}}get formErrors(){return this.flatten()}};ZodError.create=ua=>new ZodError(ua);var errorMap=(ua,J)=>{let la;switch(ua.code){case ZodIssueCode.invalid_type:ua.received===ZodParsedType.undefined?la="Required":la=`Expected ${ua.expected}, received ${ua.received}`;break;case ZodIssueCode.invalid_literal:la=`Invalid literal value, expected ${JSON.stringify(ua.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:la=`Unrecognized key(s) in object: ${util.joinValues(ua.keys,", ")}`;break;case ZodIssueCode.invalid_union:la="Invalid input";break;case ZodIssueCode.invalid_union_discriminator:la=`Invalid discriminator value. Expected ${util.joinValues(ua.options)}`;break;case ZodIssueCode.invalid_enum_value:la=`Invalid enum value. Expected ${util.joinValues(ua.options)}, received '${ua.received}'`;break;case ZodIssueCode.invalid_arguments:la="Invalid function arguments";break;case ZodIssueCode.invalid_return_type:la="Invalid function return type";break;case ZodIssueCode.invalid_date:la="Invalid date";break;case ZodIssueCode.invalid_string:typeof ua.validation=="object"?"includes"in ua.validation?(la=`Invalid input: must include "${ua.validation.includes}"`,typeof ua.validation.position=="number"&&(la=`${la} at one or more positions greater than or equal to ${ua.validation.position}`)):"startsWith"in ua.validation?la=`Invalid input: must start with "${ua.validation.startsWith}"`:"endsWith"in ua.validation?la=`Invalid input: must end with "${ua.validation.endsWith}"`:util.assertNever(ua.validation):ua.validation!=="regex"?la=`Invalid ${ua.validation}`:la="Invalid";break;case ZodIssueCode.too_small:ua.type==="array"?la=`Array must contain ${ua.exact?"exactly":ua.inclusive?"at least":"more than"} ${ua.minimum} element(s)`:ua.type==="string"?la=`String must contain ${ua.exact?"exactly":ua.inclusive?"at least":"over"} ${ua.minimum} character(s)`:ua.type==="number"?la=`Number must be ${ua.exact?"exactly equal to ":ua.inclusive?"greater than or equal to ":"greater than "}${ua.minimum}`:ua.type==="date"?la=`Date must be ${ua.exact?"exactly equal to ":ua.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(ua.minimum))}`:la="Invalid input";break;case ZodIssueCode.too_big:ua.type==="array"?la=`Array must contain ${ua.exact?"exactly":ua.inclusive?"at most":"less than"} ${ua.maximum} element(s)`:ua.type==="string"?la=`String must contain ${ua.exact?"exactly":ua.inclusive?"at most":"under"} ${ua.maximum} character(s)`:ua.type==="number"?la=`Number must be ${ua.exact?"exactly":ua.inclusive?"less than or equal to":"less than"} ${ua.maximum}`:ua.type==="bigint"?la=`BigInt must be ${ua.exact?"exactly":ua.inclusive?"less than or equal to":"less than"} ${ua.maximum}`:ua.type==="date"?la=`Date must be ${ua.exact?"exactly":ua.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(ua.maximum))}`:la="Invalid input";break;case ZodIssueCode.custom:la="Invalid input";break;case ZodIssueCode.invalid_intersection_types:la="Intersection results could not be merged";break;case ZodIssueCode.not_multiple_of:la=`Number must be a multiple of ${ua.multipleOf}`;break;case ZodIssueCode.not_finite:la="Number must be finite";break;default:la=J.defaultError,util.assertNever(ua)}return{message:la}},overrideErrorMap=errorMap;function setErrorMap(ua){overrideErrorMap=ua}function getErrorMap(){return overrideErrorMap}var makeIssue=ua=>{const{data:J,path:la,errorMaps:xa,issueData:Aa}=ua,ba=[...la,...Aa.path||[]],Sa={...Aa,path:ba};if(Aa.message!==void 0)return{...Aa,path:ba,message:Aa.message};let Ma="";const Ra=xa.filter(Ia=>!!Ia).slice().reverse();for(const Ia of Ra)Ma=Ia(Sa,{data:J,defaultError:Ma}).message;return{...Aa,path:ba,message:Ma}},EMPTY_PATH=[];function addIssueToContext(ua,J){const la=getErrorMap(),xa=makeIssue({issueData:J,data:ua.data,path:ua.path,errorMaps:[ua.common.contextualErrorMap,ua.schemaErrorMap,la,la===errorMap?void 0:errorMap].filter(Aa=>!!Aa)});ua.common.issues.push(xa)}var ParseStatus=class $w{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(J,la){const xa=[];for(const Aa of la){if(Aa.status==="aborted")return INVALID;Aa.status==="dirty"&&J.dirty(),xa.push(Aa.value)}return{status:J.value,value:xa}}static async mergeObjectAsync(J,la){const xa=[];for(const Aa of la){const ba=await Aa.key,Sa=await Aa.value;xa.push({key:ba,value:Sa})}return $w.mergeObjectSync(J,xa)}static mergeObjectSync(J,la){const xa={};for(const Aa of la){const{key:ba,value:Sa}=Aa;if(ba.status==="aborted"||Sa.status==="aborted")return INVALID;ba.status==="dirty"&&J.dirty(),Sa.status==="dirty"&&J.dirty(),ba.value!=="__proto__"&&(typeof Sa.value<"u"||Aa.alwaysSet)&&(xa[ba.value]=Sa.value)}return{status:J.value,value:xa}}},INVALID=Object.freeze({status:"aborted"}),DIRTY=ua=>({status:"dirty",value:ua}),OK=ua=>({status:"valid",value:ua}),isAborted=ua=>ua.status==="aborted",isDirty=ua=>ua.status==="dirty",isValid=ua=>ua.status==="valid",isAsync=ua=>typeof Promise<"u"&&ua instanceof Promise;function __classPrivateFieldGet(ua,J,la,xa){if(typeof J=="function"?ua!==J||!xa:!J.has(ua))throw new TypeError("Cannot read private member from an object whose class did not declare it");return J.get(ua)}function __classPrivateFieldSet(ua,J,la,xa,Aa){if(typeof J=="function"?ua!==J||!Aa:!J.has(ua))throw new TypeError("Cannot write private member to an object whose class did not declare it");return J.set(ua,la),la}var errorUtil;(function(ua){ua.errToObj=J=>typeof J=="string"?{message:J}:J||{},ua.toString=J=>typeof J=="string"?J:J==null?void 0:J.message})(errorUtil||(errorUtil={}));var _ZodEnum_cache,_ZodNativeEnum_cache,ParseInputLazyPath=class{constructor(ua,J,la,xa){this._cachedPath=[],this.parent=ua,this.data=J,this._path=la,this._key=xa}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},handleResult=(ua,J)=>{if(isValid(J))return{success:!0,data:J.value};if(!ua.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const la=new ZodError(ua.common.issues);return this._error=la,this._error}}};function processCreateParams(ua){if(!ua)return{};const{errorMap:J,invalid_type_error:la,required_error:xa,description:Aa}=ua;if(J&&(la||xa))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return J?{errorMap:J,description:Aa}:{errorMap:(Sa,Ma)=>{var Ra,Ia;const{message:La}=ua;return Sa.code==="invalid_enum_value"?{message:La??Ma.defaultError}:typeof Ma.data>"u"?{message:(Ra=La??xa)!==null&&Ra!==void 0?Ra:Ma.defaultError}:Sa.code!=="invalid_type"?{message:Ma.defaultError}:{message:(Ia=La??la)!==null&&Ia!==void 0?Ia:Ma.defaultError}},description:Aa}}var ZodType=class{get description(){return this._def.description}_getType(ua){return getParsedType(ua.data)}_getOrReturnCtx(ua,J){return J||{common:ua.parent.common,data:ua.data,parsedType:getParsedType(ua.data),schemaErrorMap:this._def.errorMap,path:ua.path,parent:ua.parent}}_processInputParams(ua){return{status:new ParseStatus,ctx:{common:ua.parent.common,data:ua.data,parsedType:getParsedType(ua.data),schemaErrorMap:this._def.errorMap,path:ua.path,parent:ua.parent}}}_parseSync(ua){const J=this._parse(ua);if(isAsync(J))throw new Error("Synchronous parse encountered promise.");return J}_parseAsync(ua){const J=this._parse(ua);return Promise.resolve(J)}parse(ua,J){const la=this.safeParse(ua,J);if(la.success)return la.data;throw la.error}safeParse(ua,J){var la;const xa={common:{issues:[],async:(la=J==null?void 0:J.async)!==null&&la!==void 0?la:!1,contextualErrorMap:J==null?void 0:J.errorMap},path:(J==null?void 0:J.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:ua,parsedType:getParsedType(ua)},Aa=this._parseSync({data:ua,path:xa.path,parent:xa});return handleResult(xa,Aa)}"~validate"(ua){var J,la;const xa={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:ua,parsedType:getParsedType(ua)};if(!this["~standard"].async)try{const Aa=this._parseSync({data:ua,path:[],parent:xa});return isValid(Aa)?{value:Aa.value}:{issues:xa.common.issues}}catch(Aa){!((la=(J=Aa==null?void 0:Aa.message)===null||J===void 0?void 0:J.toLowerCase())===null||la===void 0)&&la.includes("encountered")&&(this["~standard"].async=!0),xa.common={issues:[],async:!0}}return this._parseAsync({data:ua,path:[],parent:xa}).then(Aa=>isValid(Aa)?{value:Aa.value}:{issues:xa.common.issues})}async parseAsync(ua,J){const la=await this.safeParseAsync(ua,J);if(la.success)return la.data;throw la.error}async safeParseAsync(ua,J){const la={common:{issues:[],contextualErrorMap:J==null?void 0:J.errorMap,async:!0},path:(J==null?void 0:J.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:ua,parsedType:getParsedType(ua)},xa=this._parse({data:ua,path:la.path,parent:la}),Aa=await(isAsync(xa)?xa:Promise.resolve(xa));return handleResult(la,Aa)}refine(ua,J){const la=xa=>typeof J=="string"||typeof J>"u"?{message:J}:typeof J=="function"?J(xa):J;return this._refinement((xa,Aa)=>{const ba=ua(xa),Sa=()=>Aa.addIssue({code:ZodIssueCode.custom,...la(xa)});return typeof Promise<"u"&&ba instanceof Promise?ba.then(Ma=>Ma?!0:(Sa(),!1)):ba?!0:(Sa(),!1)})}refinement(ua,J){return this._refinement((la,xa)=>ua(la)?!0:(xa.addIssue(typeof J=="function"?J(la,xa):J),!1))}_refinement(ua){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement:ua}})}superRefine(ua){return this._refinement(ua)}constructor(ua){this.spa=this.safeParseAsync,this._def=ua,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:J=>this["~validate"](J)}}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this)}promise(){return ZodPromise.create(this,this._def)}or(ua){return ZodUnion.create([this,ua],this._def)}and(ua){return ZodIntersection.create(this,ua,this._def)}transform(ua){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:ua}})}default(ua){const J=typeof ua=="function"?ua:()=>ua;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:J,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(ua){const J=typeof ua=="function"?ua:()=>ua;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:J,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(ua){const J=this.constructor;return new J({...this._def,description:ua})}pipe(ua){return ZodPipeline.create(this,ua)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},cuidRegex=/^c[^\s-]{8,}$/i,cuid2Regex=/^[0-9a-z]+$/,ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/i,uuidRegex=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,nanoidRegex=/^[a-z0-9_-]{21}$/i,jwtRegex=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,durationRegex=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",emojiRegex,ipv4Regex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4CidrRegex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6Regex=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ipv6CidrRegex=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64urlRegex=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,dateRegexSource="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(ua){let J="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return ua.precision?J=`${J}\\.\\d{${ua.precision}}`:ua.precision==null&&(J=`${J}(\\.\\d+)?`),J}function timeRegex(ua){return new RegExp(`^${timeRegexSource(ua)}$`)}function datetimeRegex(ua){let J=`${dateRegexSource}T${timeRegexSource(ua)}`;const la=[];return la.push(ua.local?"Z?":"Z"),ua.offset&&la.push("([+-]\\d{2}:?\\d{2})"),J=`${J}(${la.join("|")})`,new RegExp(`^${J}$`)}function isValidIP(ua,J){return!!((J==="v4"||!J)&&ipv4Regex.test(ua)||(J==="v6"||!J)&&ipv6Regex.test(ua))}function isValidJWT(ua,J){if(!jwtRegex.test(ua))return!1;try{const[la]=ua.split("."),xa=la.replace(/-/g,"+").replace(/_/g,"/").padEnd(la.length+(4-la.length%4)%4,"="),Aa=JSON.parse(atob(xa));return!(typeof Aa!="object"||Aa===null||!Aa.typ||!Aa.alg||J&&Aa.alg!==J)}catch{return!1}}function isValidCidr(ua,J){return!!((J==="v4"||!J)&&ipv4CidrRegex.test(ua)||(J==="v6"||!J)&&ipv6CidrRegex.test(ua))}var ZodString=class sE extends ZodType{_parse(J){if(this._def.coerce&&(J.data=String(J.data)),this._getType(J)!==ZodParsedType.string){const ba=this._getOrReturnCtx(J);return addIssueToContext(ba,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ba.parsedType}),INVALID}const xa=new ParseStatus;let Aa;for(const ba of this._def.checks)if(ba.kind==="min")J.data.length<ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.too_small,minimum:ba.value,type:"string",inclusive:!0,exact:!1,message:ba.message}),xa.dirty());else if(ba.kind==="max")J.data.length>ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.too_big,maximum:ba.value,type:"string",inclusive:!0,exact:!1,message:ba.message}),xa.dirty());else if(ba.kind==="length"){const Sa=J.data.length>ba.value,Ma=J.data.length<ba.value;(Sa||Ma)&&(Aa=this._getOrReturnCtx(J,Aa),Sa?addIssueToContext(Aa,{code:ZodIssueCode.too_big,maximum:ba.value,type:"string",inclusive:!0,exact:!0,message:ba.message}):Ma&&addIssueToContext(Aa,{code:ZodIssueCode.too_small,minimum:ba.value,type:"string",inclusive:!0,exact:!0,message:ba.message}),xa.dirty())}else if(ba.kind==="email")emailRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"email",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="emoji")emojiRegex||(emojiRegex=new RegExp(_emojiRegex,"u")),emojiRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"emoji",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="uuid")uuidRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"uuid",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="nanoid")nanoidRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"nanoid",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="cuid")cuidRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"cuid",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="cuid2")cuid2Regex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"cuid2",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="ulid")ulidRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"ulid",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty());else if(ba.kind==="url")try{new URL(J.data)}catch{Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"url",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty()}else ba.kind==="regex"?(ba.regex.lastIndex=0,ba.regex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"regex",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty())):ba.kind==="trim"?J.data=J.data.trim():ba.kind==="includes"?J.data.includes(ba.value,ba.position)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.invalid_string,validation:{includes:ba.value,position:ba.position},message:ba.message}),xa.dirty()):ba.kind==="toLowerCase"?J.data=J.data.toLowerCase():ba.kind==="toUpperCase"?J.data=J.data.toUpperCase():ba.kind==="startsWith"?J.data.startsWith(ba.value)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.invalid_string,validation:{startsWith:ba.value},message:ba.message}),xa.dirty()):ba.kind==="endsWith"?J.data.endsWith(ba.value)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.invalid_string,validation:{endsWith:ba.value},message:ba.message}),xa.dirty()):ba.kind==="datetime"?datetimeRegex(ba).test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.invalid_string,validation:"datetime",message:ba.message}),xa.dirty()):ba.kind==="date"?dateRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.invalid_string,validation:"date",message:ba.message}),xa.dirty()):ba.kind==="time"?timeRegex(ba).test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.invalid_string,validation:"time",message:ba.message}),xa.dirty()):ba.kind==="duration"?durationRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"duration",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="ip"?isValidIP(J.data,ba.version)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"ip",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="jwt"?isValidJWT(J.data,ba.alg)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"jwt",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="cidr"?isValidCidr(J.data,ba.version)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"cidr",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="base64"?base64Regex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"base64",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty()):ba.kind==="base64url"?base64urlRegex.test(J.data)||(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{validation:"base64url",code:ZodIssueCode.invalid_string,message:ba.message}),xa.dirty()):util.assertNever(ba);return{status:xa.value,value:J.data}}_regex(J,la,xa){return this.refinement(Aa=>J.test(Aa),{validation:la,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(xa)})}_addCheck(J){return new sE({...this._def,checks:[...this._def.checks,J]})}email(J){return this._addCheck({kind:"email",...errorUtil.errToObj(J)})}url(J){return this._addCheck({kind:"url",...errorUtil.errToObj(J)})}emoji(J){return this._addCheck({kind:"emoji",...errorUtil.errToObj(J)})}uuid(J){return this._addCheck({kind:"uuid",...errorUtil.errToObj(J)})}nanoid(J){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(J)})}cuid(J){return this._addCheck({kind:"cuid",...errorUtil.errToObj(J)})}cuid2(J){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(J)})}ulid(J){return this._addCheck({kind:"ulid",...errorUtil.errToObj(J)})}base64(J){return this._addCheck({kind:"base64",...errorUtil.errToObj(J)})}base64url(J){return this._addCheck({kind:"base64url",...errorUtil.errToObj(J)})}jwt(J){return this._addCheck({kind:"jwt",...errorUtil.errToObj(J)})}ip(J){return this._addCheck({kind:"ip",...errorUtil.errToObj(J)})}cidr(J){return this._addCheck({kind:"cidr",...errorUtil.errToObj(J)})}datetime(J){var la,xa;return typeof J=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:J}):this._addCheck({kind:"datetime",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,offset:(la=J==null?void 0:J.offset)!==null&&la!==void 0?la:!1,local:(xa=J==null?void 0:J.local)!==null&&xa!==void 0?xa:!1,...errorUtil.errToObj(J==null?void 0:J.message)})}date(J){return this._addCheck({kind:"date",message:J})}time(J){return typeof J=="string"?this._addCheck({kind:"time",precision:null,message:J}):this._addCheck({kind:"time",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,...errorUtil.errToObj(J==null?void 0:J.message)})}duration(J){return this._addCheck({kind:"duration",...errorUtil.errToObj(J)})}regex(J,la){return this._addCheck({kind:"regex",regex:J,...errorUtil.errToObj(la)})}includes(J,la){return this._addCheck({kind:"includes",value:J,position:la==null?void 0:la.position,...errorUtil.errToObj(la==null?void 0:la.message)})}startsWith(J,la){return this._addCheck({kind:"startsWith",value:J,...errorUtil.errToObj(la)})}endsWith(J,la){return this._addCheck({kind:"endsWith",value:J,...errorUtil.errToObj(la)})}min(J,la){return this._addCheck({kind:"min",value:J,...errorUtil.errToObj(la)})}max(J,la){return this._addCheck({kind:"max",value:J,...errorUtil.errToObj(la)})}length(J,la){return this._addCheck({kind:"length",value:J,...errorUtil.errToObj(la)})}nonempty(J){return this.min(1,errorUtil.errToObj(J))}trim(){return new sE({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new sE({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new sE({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(J=>J.kind==="datetime")}get isDate(){return!!this._def.checks.find(J=>J.kind==="date")}get isTime(){return!!this._def.checks.find(J=>J.kind==="time")}get isDuration(){return!!this._def.checks.find(J=>J.kind==="duration")}get isEmail(){return!!this._def.checks.find(J=>J.kind==="email")}get isURL(){return!!this._def.checks.find(J=>J.kind==="url")}get isEmoji(){return!!this._def.checks.find(J=>J.kind==="emoji")}get isUUID(){return!!this._def.checks.find(J=>J.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(J=>J.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(J=>J.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(J=>J.kind==="cuid2")}get isULID(){return!!this._def.checks.find(J=>J.kind==="ulid")}get isIP(){return!!this._def.checks.find(J=>J.kind==="ip")}get isCIDR(){return!!this._def.checks.find(J=>J.kind==="cidr")}get isBase64(){return!!this._def.checks.find(J=>J.kind==="base64")}get isBase64url(){return!!this._def.checks.find(J=>J.kind==="base64url")}get minLength(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxLength(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}};ZodString.create=ua=>{var J;return new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:(J=ua==null?void 0:ua.coerce)!==null&&J!==void 0?J:!1,...processCreateParams(ua)})};function floatSafeRemainder(ua,J){const la=(ua.toString().split(".")[1]||"").length,xa=(J.toString().split(".")[1]||"").length,Aa=la>xa?la:xa,ba=parseInt(ua.toFixed(Aa).replace(".","")),Sa=parseInt(J.toFixed(Aa).replace(".",""));return ba%Sa/Math.pow(10,Aa)}var ZodNumber=class jT extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(J){if(this._def.coerce&&(J.data=Number(J.data)),this._getType(J)!==ZodParsedType.number){const ba=this._getOrReturnCtx(J);return addIssueToContext(ba,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ba.parsedType}),INVALID}let xa;const Aa=new ParseStatus;for(const ba of this._def.checks)ba.kind==="int"?util.isInteger(J.data)||(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:ba.message}),Aa.dirty()):ba.kind==="min"?(ba.inclusive?J.data<ba.value:J.data<=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.too_small,minimum:ba.value,type:"number",inclusive:ba.inclusive,exact:!1,message:ba.message}),Aa.dirty()):ba.kind==="max"?(ba.inclusive?J.data>ba.value:J.data>=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.too_big,maximum:ba.value,type:"number",inclusive:ba.inclusive,exact:!1,message:ba.message}),Aa.dirty()):ba.kind==="multipleOf"?floatSafeRemainder(J.data,ba.value)!==0&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.not_multiple_of,multipleOf:ba.value,message:ba.message}),Aa.dirty()):ba.kind==="finite"?Number.isFinite(J.data)||(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.not_finite,message:ba.message}),Aa.dirty()):util.assertNever(ba);return{status:Aa.value,value:J.data}}gte(J,la){return this.setLimit("min",J,!0,errorUtil.toString(la))}gt(J,la){return this.setLimit("min",J,!1,errorUtil.toString(la))}lte(J,la){return this.setLimit("max",J,!0,errorUtil.toString(la))}lt(J,la){return this.setLimit("max",J,!1,errorUtil.toString(la))}setLimit(J,la,xa,Aa){return new jT({...this._def,checks:[...this._def.checks,{kind:J,value:la,inclusive:xa,message:errorUtil.toString(Aa)}]})}_addCheck(J){return new jT({...this._def,checks:[...this._def.checks,J]})}int(J){return this._addCheck({kind:"int",message:errorUtil.toString(J)})}positive(J){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil.toString(J)})}negative(J){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil.toString(J)})}multipleOf(J,la){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil.toString(la)})}finite(J){return this._addCheck({kind:"finite",message:errorUtil.toString(J)})}safe(J){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(J)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(J)})}get minValue(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxValue(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}get isInt(){return!!this._def.checks.find(J=>J.kind==="int"||J.kind==="multipleOf"&&util.isInteger(J.value))}get isFinite(){let J=null,la=null;for(const xa of this._def.checks){if(xa.kind==="finite"||xa.kind==="int"||xa.kind==="multipleOf")return!0;xa.kind==="min"?(la===null||xa.value>la)&&(la=xa.value):xa.kind==="max"&&(J===null||xa.value<J)&&(J=xa.value)}return Number.isFinite(la)&&Number.isFinite(J)}};ZodNumber.create=ua=>new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:(ua==null?void 0:ua.coerce)||!1,...processCreateParams(ua)});var ZodBigInt=class QT extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(J){if(this._def.coerce)try{J.data=BigInt(J.data)}catch{return this._getInvalidInput(J)}if(this._getType(J)!==ZodParsedType.bigint)return this._getInvalidInput(J);let xa;const Aa=new ParseStatus;for(const ba of this._def.checks)ba.kind==="min"?(ba.inclusive?J.data<ba.value:J.data<=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.too_small,type:"bigint",minimum:ba.value,inclusive:ba.inclusive,message:ba.message}),Aa.dirty()):ba.kind==="max"?(ba.inclusive?J.data>ba.value:J.data>=ba.value)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.too_big,type:"bigint",maximum:ba.value,inclusive:ba.inclusive,message:ba.message}),Aa.dirty()):ba.kind==="multipleOf"?J.data%ba.value!==BigInt(0)&&(xa=this._getOrReturnCtx(J,xa),addIssueToContext(xa,{code:ZodIssueCode.not_multiple_of,multipleOf:ba.value,message:ba.message}),Aa.dirty()):util.assertNever(ba);return{status:Aa.value,value:J.data}}_getInvalidInput(J){const la=this._getOrReturnCtx(J);return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:la.parsedType}),INVALID}gte(J,la){return this.setLimit("min",J,!0,errorUtil.toString(la))}gt(J,la){return this.setLimit("min",J,!1,errorUtil.toString(la))}lte(J,la){return this.setLimit("max",J,!0,errorUtil.toString(la))}lt(J,la){return this.setLimit("max",J,!1,errorUtil.toString(la))}setLimit(J,la,xa,Aa){return new QT({...this._def,checks:[...this._def.checks,{kind:J,value:la,inclusive:xa,message:errorUtil.toString(Aa)}]})}_addCheck(J){return new QT({...this._def,checks:[...this._def.checks,J]})}positive(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil.toString(J)})}negative(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil.toString(J)})}multipleOf(J,la){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil.toString(la)})}get minValue(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J}get maxValue(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J}};ZodBigInt.create=ua=>{var J;return new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:(J=ua==null?void 0:ua.coerce)!==null&&J!==void 0?J:!1,...processCreateParams(ua)})};var ZodBoolean=class extends ZodType{_parse(ua){if(this._def.coerce&&(ua.data=!!ua.data),this._getType(ua)!==ZodParsedType.boolean){const la=this._getOrReturnCtx(ua);return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:la.parsedType}),INVALID}return OK(ua.data)}};ZodBoolean.create=ua=>new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:(ua==null?void 0:ua.coerce)||!1,...processCreateParams(ua)});var ZodDate=class Vw extends ZodType{_parse(J){if(this._def.coerce&&(J.data=new Date(J.data)),this._getType(J)!==ZodParsedType.date){const ba=this._getOrReturnCtx(J);return addIssueToContext(ba,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ba.parsedType}),INVALID}if(isNaN(J.data.getTime())){const ba=this._getOrReturnCtx(J);return addIssueToContext(ba,{code:ZodIssueCode.invalid_date}),INVALID}const xa=new ParseStatus;let Aa;for(const ba of this._def.checks)ba.kind==="min"?J.data.getTime()<ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.too_small,message:ba.message,inclusive:!0,exact:!1,minimum:ba.value,type:"date"}),xa.dirty()):ba.kind==="max"?J.data.getTime()>ba.value&&(Aa=this._getOrReturnCtx(J,Aa),addIssueToContext(Aa,{code:ZodIssueCode.too_big,message:ba.message,inclusive:!0,exact:!1,maximum:ba.value,type:"date"}),xa.dirty()):util.assertNever(ba);return{status:xa.value,value:new Date(J.data.getTime())}}_addCheck(J){return new Vw({...this._def,checks:[...this._def.checks,J]})}min(J,la){return this._addCheck({kind:"min",value:J.getTime(),message:errorUtil.toString(la)})}max(J,la){return this._addCheck({kind:"max",value:J.getTime(),message:errorUtil.toString(la)})}get minDate(){let J=null;for(const la of this._def.checks)la.kind==="min"&&(J===null||la.value>J)&&(J=la.value);return J!=null?new Date(J):null}get maxDate(){let J=null;for(const la of this._def.checks)la.kind==="max"&&(J===null||la.value<J)&&(J=la.value);return J!=null?new Date(J):null}};ZodDate.create=ua=>new ZodDate({checks:[],coerce:(ua==null?void 0:ua.coerce)||!1,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(ua)});var ZodSymbol=class extends ZodType{_parse(ua){if(this._getType(ua)!==ZodParsedType.symbol){const la=this._getOrReturnCtx(ua);return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:la.parsedType}),INVALID}return OK(ua.data)}};ZodSymbol.create=ua=>new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(ua)});var ZodUndefined=class extends ZodType{_parse(ua){if(this._getType(ua)!==ZodParsedType.undefined){const la=this._getOrReturnCtx(ua);return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:la.parsedType}),INVALID}return OK(ua.data)}};ZodUndefined.create=ua=>new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(ua)});var ZodNull=class extends ZodType{_parse(ua){if(this._getType(ua)!==ZodParsedType.null){const la=this._getOrReturnCtx(ua);return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:la.parsedType}),INVALID}return OK(ua.data)}};ZodNull.create=ua=>new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(ua)});var ZodAny=class extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(ua){return OK(ua.data)}};ZodAny.create=ua=>new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(ua)});var ZodUnknown=class extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(ua){return OK(ua.data)}};ZodUnknown.create=ua=>new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(ua)});var ZodNever=class extends ZodType{_parse(ua){const J=this._getOrReturnCtx(ua);return addIssueToContext(J,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:J.parsedType}),INVALID}};ZodNever.create=ua=>new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(ua)});var ZodVoid=class extends ZodType{_parse(ua){if(this._getType(ua)!==ZodParsedType.undefined){const la=this._getOrReturnCtx(ua);return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:la.parsedType}),INVALID}return OK(ua.data)}};ZodVoid.create=ua=>new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(ua)});var ZodArray=class UE extends ZodType{_parse(J){const{ctx:la,status:xa}=this._processInputParams(J),Aa=this._def;if(la.parsedType!==ZodParsedType.array)return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:la.parsedType}),INVALID;if(Aa.exactLength!==null){const Sa=la.data.length>Aa.exactLength.value,Ma=la.data.length<Aa.exactLength.value;(Sa||Ma)&&(addIssueToContext(la,{code:Sa?ZodIssueCode.too_big:ZodIssueCode.too_small,minimum:Ma?Aa.exactLength.value:void 0,maximum:Sa?Aa.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:Aa.exactLength.message}),xa.dirty())}if(Aa.minLength!==null&&la.data.length<Aa.minLength.value&&(addIssueToContext(la,{code:ZodIssueCode.too_small,minimum:Aa.minLength.value,type:"array",inclusive:!0,exact:!1,message:Aa.minLength.message}),xa.dirty()),Aa.maxLength!==null&&la.data.length>Aa.maxLength.value&&(addIssueToContext(la,{code:ZodIssueCode.too_big,maximum:Aa.maxLength.value,type:"array",inclusive:!0,exact:!1,message:Aa.maxLength.message}),xa.dirty()),la.common.async)return Promise.all([...la.data].map((Sa,Ma)=>Aa.type._parseAsync(new ParseInputLazyPath(la,Sa,la.path,Ma)))).then(Sa=>ParseStatus.mergeArray(xa,Sa));const ba=[...la.data].map((Sa,Ma)=>Aa.type._parseSync(new ParseInputLazyPath(la,Sa,la.path,Ma)));return ParseStatus.mergeArray(xa,ba)}get element(){return this._def.type}min(J,la){return new UE({...this._def,minLength:{value:J,message:errorUtil.toString(la)}})}max(J,la){return new UE({...this._def,maxLength:{value:J,message:errorUtil.toString(la)}})}length(J,la){return new UE({...this._def,exactLength:{value:J,message:errorUtil.toString(la)}})}nonempty(J){return this.min(1,J)}};ZodArray.create=(ua,J)=>new ZodArray({type:ua,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(J)});function deepPartialify(ua){if(ua instanceof ZodObject){const J={};for(const la in ua.shape){const xa=ua.shape[la];J[la]=ZodOptional.create(deepPartialify(xa))}return new ZodObject({...ua._def,shape:()=>J})}else return ua instanceof ZodArray?new ZodArray({...ua._def,type:deepPartialify(ua.element)}):ua instanceof ZodOptional?ZodOptional.create(deepPartialify(ua.unwrap())):ua instanceof ZodNullable?ZodNullable.create(deepPartialify(ua.unwrap())):ua instanceof ZodTuple?ZodTuple.create(ua.items.map(J=>deepPartialify(J))):ua}var ZodObject=class r7 extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const J=this._def.shape(),la=util.objectKeys(J);return this._cached={shape:J,keys:la}}_parse(J){if(this._getType(J)!==ZodParsedType.object){const Ia=this._getOrReturnCtx(J);return addIssueToContext(Ia,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:Ia.parsedType}),INVALID}const{status:xa,ctx:Aa}=this._processInputParams(J),{shape:ba,keys:Sa}=this._getCached(),Ma=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip"))for(const Ia in Aa.data)Sa.includes(Ia)||Ma.push(Ia);const Ra=[];for(const Ia of Sa){const La=ba[Ia],Fa=Aa.data[Ia];Ra.push({key:{status:"valid",value:Ia},value:La._parse(new ParseInputLazyPath(Aa,Fa,Aa.path,Ia)),alwaysSet:Ia in Aa.data})}if(this._def.catchall instanceof ZodNever){const Ia=this._def.unknownKeys;if(Ia==="passthrough")for(const La of Ma)Ra.push({key:{status:"valid",value:La},value:{status:"valid",value:Aa.data[La]}});else if(Ia==="strict")Ma.length>0&&(addIssueToContext(Aa,{code:ZodIssueCode.unrecognized_keys,keys:Ma}),xa.dirty());else if(Ia!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const Ia=this._def.catchall;for(const La of Ma){const Fa=Aa.data[La];Ra.push({key:{status:"valid",value:La},value:Ia._parse(new ParseInputLazyPath(Aa,Fa,Aa.path,La)),alwaysSet:La in Aa.data})}}return Aa.common.async?Promise.resolve().then(async()=>{const Ia=[];for(const La of Ra){const Fa=await La.key,ka=await La.value;Ia.push({key:Fa,value:ka,alwaysSet:La.alwaysSet})}return Ia}).then(Ia=>ParseStatus.mergeObjectSync(xa,Ia)):ParseStatus.mergeObjectSync(xa,Ra)}get shape(){return this._def.shape()}strict(J){return errorUtil.errToObj,new r7({...this._def,unknownKeys:"strict",...J!==void 0?{errorMap:(la,xa)=>{var Aa,ba,Sa,Ma;const Ra=(Sa=(ba=(Aa=this._def).errorMap)===null||ba===void 0?void 0:ba.call(Aa,la,xa).message)!==null&&Sa!==void 0?Sa:xa.defaultError;return la.code==="unrecognized_keys"?{message:(Ma=errorUtil.errToObj(J).message)!==null&&Ma!==void 0?Ma:Ra}:{message:Ra}}}:{}})}strip(){return new r7({...this._def,unknownKeys:"strip"})}passthrough(){return new r7({...this._def,unknownKeys:"passthrough"})}extend(J){return new r7({...this._def,shape:()=>({...this._def.shape(),...J})})}merge(J){return new r7({unknownKeys:J._def.unknownKeys,catchall:J._def.catchall,shape:()=>({...this._def.shape(),...J._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject})}setKey(J,la){return this.augment({[J]:la})}catchall(J){return new r7({...this._def,catchall:J})}pick(J){const la={};return util.objectKeys(J).forEach(xa=>{J[xa]&&this.shape[xa]&&(la[xa]=this.shape[xa])}),new r7({...this._def,shape:()=>la})}omit(J){const la={};return util.objectKeys(this.shape).forEach(xa=>{J[xa]||(la[xa]=this.shape[xa])}),new r7({...this._def,shape:()=>la})}deepPartial(){return deepPartialify(this)}partial(J){const la={};return util.objectKeys(this.shape).forEach(xa=>{const Aa=this.shape[xa];J&&!J[xa]?la[xa]=Aa:la[xa]=Aa.optional()}),new r7({...this._def,shape:()=>la})}required(J){const la={};return util.objectKeys(this.shape).forEach(xa=>{if(J&&!J[xa])la[xa]=this.shape[xa];else{let ba=this.shape[xa];for(;ba instanceof ZodOptional;)ba=ba._def.innerType;la[xa]=ba}}),new r7({...this._def,shape:()=>la})}keyof(){return createZodEnum(util.objectKeys(this.shape))}};ZodObject.create=(ua,J)=>new ZodObject({shape:()=>ua,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(J)}),ZodObject.strictCreate=(ua,J)=>new ZodObject({shape:()=>ua,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(J)}),ZodObject.lazycreate=(ua,J)=>new ZodObject({shape:ua,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(J)});var ZodUnion=class extends ZodType{_parse(ua){const{ctx:J}=this._processInputParams(ua),la=this._def.options;function xa(Aa){for(const Sa of Aa)if(Sa.result.status==="valid")return Sa.result;for(const Sa of Aa)if(Sa.result.status==="dirty")return J.common.issues.push(...Sa.ctx.common.issues),Sa.result;const ba=Aa.map(Sa=>new ZodError(Sa.ctx.common.issues));return addIssueToContext(J,{code:ZodIssueCode.invalid_union,unionErrors:ba}),INVALID}if(J.common.async)return Promise.all(la.map(async Aa=>{const ba={...J,common:{...J.common,issues:[]},parent:null};return{result:await Aa._parseAsync({data:J.data,path:J.path,parent:ba}),ctx:ba}})).then(xa);{let Aa;const ba=[];for(const Ma of la){const Ra={...J,common:{...J.common,issues:[]},parent:null},Ia=Ma._parseSync({data:J.data,path:J.path,parent:Ra});if(Ia.status==="valid")return Ia;Ia.status==="dirty"&&!Aa&&(Aa={result:Ia,ctx:Ra}),Ra.common.issues.length&&ba.push(Ra.common.issues)}if(Aa)return J.common.issues.push(...Aa.ctx.common.issues),Aa.result;const Sa=ba.map(Ma=>new ZodError(Ma));return addIssueToContext(J,{code:ZodIssueCode.invalid_union,unionErrors:Sa}),INVALID}}get options(){return this._def.options}};ZodUnion.create=(ua,J)=>new ZodUnion({options:ua,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(J)});var getDiscriminator=ua=>ua instanceof ZodLazy?getDiscriminator(ua.schema):ua instanceof ZodEffects?getDiscriminator(ua.innerType()):ua instanceof ZodLiteral?[ua.value]:ua instanceof ZodEnum?ua.options:ua instanceof ZodNativeEnum?util.objectValues(ua.enum):ua instanceof ZodDefault?getDiscriminator(ua._def.innerType):ua instanceof ZodUndefined?[void 0]:ua instanceof ZodNull?[null]:ua instanceof ZodOptional?[void 0,...getDiscriminator(ua.unwrap())]:ua instanceof ZodNullable?[null,...getDiscriminator(ua.unwrap())]:ua instanceof ZodBranded||ua instanceof ZodReadonly?getDiscriminator(ua.unwrap()):ua instanceof ZodCatch?getDiscriminator(ua._def.innerType):[],ZodDiscriminatedUnion=class Gw extends ZodType{_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType.object)return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:la.parsedType}),INVALID;const xa=this.discriminator,Aa=la.data[xa],ba=this.optionsMap.get(Aa);return ba?la.common.async?ba._parseAsync({data:la.data,path:la.path,parent:la}):ba._parseSync({data:la.data,path:la.path,parent:la}):(addIssueToContext(la,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[xa]}),INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(J,la,xa){const Aa=new Map;for(const ba of la){const Sa=getDiscriminator(ba.shape[J]);if(!Sa.length)throw new Error(`A discriminator value for key \`${J}\` could not be extracted from all schema options`);for(const Ma of Sa){if(Aa.has(Ma))throw new Error(`Discriminator property ${String(J)} has duplicate value ${String(Ma)}`);Aa.set(Ma,ba)}}return new Gw({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator:J,options:la,optionsMap:Aa,...processCreateParams(xa)})}};function mergeValues(ua,J){const la=getParsedType(ua),xa=getParsedType(J);if(ua===J)return{valid:!0,data:ua};if(la===ZodParsedType.object&&xa===ZodParsedType.object){const Aa=util.objectKeys(J),ba=util.objectKeys(ua).filter(Ma=>Aa.indexOf(Ma)!==-1),Sa={...ua,...J};for(const Ma of ba){const Ra=mergeValues(ua[Ma],J[Ma]);if(!Ra.valid)return{valid:!1};Sa[Ma]=Ra.data}return{valid:!0,data:Sa}}else if(la===ZodParsedType.array&&xa===ZodParsedType.array){if(ua.length!==J.length)return{valid:!1};const Aa=[];for(let ba=0;ba<ua.length;ba++){const Sa=ua[ba],Ma=J[ba],Ra=mergeValues(Sa,Ma);if(!Ra.valid)return{valid:!1};Aa.push(Ra.data)}return{valid:!0,data:Aa}}else return la===ZodParsedType.date&&xa===ZodParsedType.date&&+ua==+J?{valid:!0,data:ua}:{valid:!1}}var ZodIntersection=class extends ZodType{_parse(ua){const{status:J,ctx:la}=this._processInputParams(ua),xa=(Aa,ba)=>{if(isAborted(Aa)||isAborted(ba))return INVALID;const Sa=mergeValues(Aa.value,ba.value);return Sa.valid?((isDirty(Aa)||isDirty(ba))&&J.dirty(),{status:J.value,value:Sa.data}):(addIssueToContext(la,{code:ZodIssueCode.invalid_intersection_types}),INVALID)};return la.common.async?Promise.all([this._def.left._parseAsync({data:la.data,path:la.path,parent:la}),this._def.right._parseAsync({data:la.data,path:la.path,parent:la})]).then(([Aa,ba])=>xa(Aa,ba)):xa(this._def.left._parseSync({data:la.data,path:la.path,parent:la}),this._def.right._parseSync({data:la.data,path:la.path,parent:la}))}};ZodIntersection.create=(ua,J,la)=>new ZodIntersection({left:ua,right:J,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(la)});var ZodTuple=class Hw extends ZodType{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType.array)return addIssueToContext(xa,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:xa.parsedType}),INVALID;if(xa.data.length<this._def.items.length)return addIssueToContext(xa,{code:ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID;!this._def.rest&&xa.data.length>this._def.items.length&&(addIssueToContext(xa,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),la.dirty());const ba=[...xa.data].map((Sa,Ma)=>{const Ra=this._def.items[Ma]||this._def.rest;return Ra?Ra._parse(new ParseInputLazyPath(xa,Sa,xa.path,Ma)):null}).filter(Sa=>!!Sa);return xa.common.async?Promise.all(ba).then(Sa=>ParseStatus.mergeArray(la,Sa)):ParseStatus.mergeArray(la,ba)}get items(){return this._def.items}rest(J){return new Hw({...this._def,rest:J})}};ZodTuple.create=(ua,J)=>{if(!Array.isArray(ua))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple({items:ua,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(J)})};var ZodRecord=class WT extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType.object)return addIssueToContext(xa,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:xa.parsedType}),INVALID;const Aa=[],ba=this._def.keyType,Sa=this._def.valueType;for(const Ma in xa.data)Aa.push({key:ba._parse(new ParseInputLazyPath(xa,Ma,xa.path,Ma)),value:Sa._parse(new ParseInputLazyPath(xa,xa.data[Ma],xa.path,Ma)),alwaysSet:Ma in xa.data});return xa.common.async?ParseStatus.mergeObjectAsync(la,Aa):ParseStatus.mergeObjectSync(la,Aa)}get element(){return this._def.valueType}static create(J,la,xa){return la instanceof ZodType?new WT({keyType:J,valueType:la,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(xa)}):new WT({keyType:ZodString.create(),valueType:J,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(la)})}},ZodMap=class extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(ua){const{status:J,ctx:la}=this._processInputParams(ua);if(la.parsedType!==ZodParsedType.map)return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:la.parsedType}),INVALID;const xa=this._def.keyType,Aa=this._def.valueType,ba=[...la.data.entries()].map(([Sa,Ma],Ra)=>({key:xa._parse(new ParseInputLazyPath(la,Sa,la.path,[Ra,"key"])),value:Aa._parse(new ParseInputLazyPath(la,Ma,la.path,[Ra,"value"]))}));if(la.common.async){const Sa=new Map;return Promise.resolve().then(async()=>{for(const Ma of ba){const Ra=await Ma.key,Ia=await Ma.value;if(Ra.status==="aborted"||Ia.status==="aborted")return INVALID;(Ra.status==="dirty"||Ia.status==="dirty")&&J.dirty(),Sa.set(Ra.value,Ia.value)}return{status:J.value,value:Sa}})}else{const Sa=new Map;for(const Ma of ba){const Ra=Ma.key,Ia=Ma.value;if(Ra.status==="aborted"||Ia.status==="aborted")return INVALID;(Ra.status==="dirty"||Ia.status==="dirty")&&J.dirty(),Sa.set(Ra.value,Ia.value)}return{status:J.value,value:Sa}}}};ZodMap.create=(ua,J,la)=>new ZodMap({valueType:J,keyType:ua,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(la)});var ZodSet=class XT extends ZodType{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.parsedType!==ZodParsedType.set)return addIssueToContext(xa,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:xa.parsedType}),INVALID;const Aa=this._def;Aa.minSize!==null&&xa.data.size<Aa.minSize.value&&(addIssueToContext(xa,{code:ZodIssueCode.too_small,minimum:Aa.minSize.value,type:"set",inclusive:!0,exact:!1,message:Aa.minSize.message}),la.dirty()),Aa.maxSize!==null&&xa.data.size>Aa.maxSize.value&&(addIssueToContext(xa,{code:ZodIssueCode.too_big,maximum:Aa.maxSize.value,type:"set",inclusive:!0,exact:!1,message:Aa.maxSize.message}),la.dirty());const ba=this._def.valueType;function Sa(Ra){const Ia=new Set;for(const La of Ra){if(La.status==="aborted")return INVALID;La.status==="dirty"&&la.dirty(),Ia.add(La.value)}return{status:la.value,value:Ia}}const Ma=[...xa.data.values()].map((Ra,Ia)=>ba._parse(new ParseInputLazyPath(xa,Ra,xa.path,Ia)));return xa.common.async?Promise.all(Ma).then(Ra=>Sa(Ra)):Sa(Ma)}min(J,la){return new XT({...this._def,minSize:{value:J,message:errorUtil.toString(la)}})}max(J,la){return new XT({...this._def,maxSize:{value:J,message:errorUtil.toString(la)}})}size(J,la){return this.min(J,la).max(J,la)}nonempty(J){return this.min(1,J)}};ZodSet.create=(ua,J)=>new ZodSet({valueType:ua,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(J)});var ZodFunction=class kE extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(J){const{ctx:la}=this._processInputParams(J);if(la.parsedType!==ZodParsedType.function)return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:la.parsedType}),INVALID;function xa(Ma,Ra){return makeIssue({data:Ma,path:la.path,errorMaps:[la.common.contextualErrorMap,la.schemaErrorMap,getErrorMap(),errorMap].filter(Ia=>!!Ia),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:Ra}})}function Aa(Ma,Ra){return makeIssue({data:Ma,path:la.path,errorMaps:[la.common.contextualErrorMap,la.schemaErrorMap,getErrorMap(),errorMap].filter(Ia=>!!Ia),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:Ra}})}const ba={errorMap:la.common.contextualErrorMap},Sa=la.data;if(this._def.returns instanceof ZodPromise){const Ma=this;return OK(async function(...Ra){const Ia=new ZodError([]),La=await Ma._def.args.parseAsync(Ra,ba).catch(el=>{throw Ia.addIssue(xa(Ra,el)),Ia}),Fa=await Reflect.apply(Sa,this,La);return await Ma._def.returns._def.type.parseAsync(Fa,ba).catch(el=>{throw Ia.addIssue(Aa(Fa,el)),Ia})})}else{const Ma=this;return OK(function(...Ra){const Ia=Ma._def.args.safeParse(Ra,ba);if(!Ia.success)throw new ZodError([xa(Ra,Ia.error)]);const La=Reflect.apply(Sa,this,Ia.data),Fa=Ma._def.returns.safeParse(La,ba);if(!Fa.success)throw new ZodError([Aa(La,Fa.error)]);return Fa.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...J){return new kE({...this._def,args:ZodTuple.create(J).rest(ZodUnknown.create())})}returns(J){return new kE({...this._def,returns:J})}implement(J){return this.parse(J)}strictImplement(J){return this.parse(J)}static create(J,la,xa){return new kE({args:J||ZodTuple.create([]).rest(ZodUnknown.create()),returns:la||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(xa)})}},ZodLazy=class extends ZodType{get schema(){return this._def.getter()}_parse(ua){const{ctx:J}=this._processInputParams(ua);return this._def.getter()._parse({data:J.data,path:J.path,parent:J})}};ZodLazy.create=(ua,J)=>new ZodLazy({getter:ua,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(J)});var ZodLiteral=class extends ZodType{_parse(ua){if(ua.data!==this._def.value){const J=this._getOrReturnCtx(ua);return addIssueToContext(J,{received:J.data,code:ZodIssueCode.invalid_literal,expected:this._def.value}),INVALID}return{status:"valid",value:ua.data}}get value(){return this._def.value}};ZodLiteral.create=(ua,J)=>new ZodLiteral({value:ua,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(J)});function createZodEnum(ua,J){return new ZodEnum({values:ua,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(J)})}var ZodEnum=class YT extends ZodType{constructor(){super(...arguments),_ZodEnum_cache.set(this,void 0)}_parse(J){if(typeof J.data!="string"){const la=this._getOrReturnCtx(J),xa=this._def.values;return addIssueToContext(la,{expected:util.joinValues(xa),received:la.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(__classPrivateFieldGet(this,_ZodEnum_cache)||__classPrivateFieldSet(this,_ZodEnum_cache,new Set(this._def.values)),!__classPrivateFieldGet(this,_ZodEnum_cache).has(J.data)){const la=this._getOrReturnCtx(J),xa=this._def.values;return addIssueToContext(la,{received:la.data,code:ZodIssueCode.invalid_enum_value,options:xa}),INVALID}return OK(J.data)}get options(){return this._def.values}get enum(){const J={};for(const la of this._def.values)J[la]=la;return J}get Values(){const J={};for(const la of this._def.values)J[la]=la;return J}get Enum(){const J={};for(const la of this._def.values)J[la]=la;return J}extract(J,la=this._def){return YT.create(J,{...this._def,...la})}exclude(J,la=this._def){return YT.create(this.options.filter(xa=>!J.includes(xa)),{...this._def,...la})}};_ZodEnum_cache=new WeakMap,ZodEnum.create=createZodEnum;var ZodNativeEnum=class extends ZodType{constructor(){super(...arguments),_ZodNativeEnum_cache.set(this,void 0)}_parse(ua){const J=util.getValidEnumValues(this._def.values),la=this._getOrReturnCtx(ua);if(la.parsedType!==ZodParsedType.string&&la.parsedType!==ZodParsedType.number){const xa=util.objectValues(J);return addIssueToContext(la,{expected:util.joinValues(xa),received:la.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(__classPrivateFieldGet(this,_ZodNativeEnum_cache)||__classPrivateFieldSet(this,_ZodNativeEnum_cache,new Set(util.getValidEnumValues(this._def.values))),!__classPrivateFieldGet(this,_ZodNativeEnum_cache).has(ua.data)){const xa=util.objectValues(J);return addIssueToContext(la,{received:la.data,code:ZodIssueCode.invalid_enum_value,options:xa}),INVALID}return OK(ua.data)}get enum(){return this._def.values}};_ZodNativeEnum_cache=new WeakMap,ZodNativeEnum.create=(ua,J)=>new ZodNativeEnum({values:ua,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(J)});var ZodPromise=class extends ZodType{unwrap(){return this._def.type}_parse(ua){const{ctx:J}=this._processInputParams(ua);if(J.parsedType!==ZodParsedType.promise&&J.common.async===!1)return addIssueToContext(J,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:J.parsedType}),INVALID;const la=J.parsedType===ZodParsedType.promise?J.data:Promise.resolve(J.data);return OK(la.then(xa=>this._def.type.parseAsync(xa,{path:J.path,errorMap:J.common.contextualErrorMap})))}};ZodPromise.create=(ua,J)=>new ZodPromise({type:ua,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(J)});var ZodEffects=class extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(ua){const{status:J,ctx:la}=this._processInputParams(ua),xa=this._def.effect||null,Aa={addIssue:ba=>{addIssueToContext(la,ba),ba.fatal?J.abort():J.dirty()},get path(){return la.path}};if(Aa.addIssue=Aa.addIssue.bind(Aa),xa.type==="preprocess"){const ba=xa.transform(la.data,Aa);if(la.common.async)return Promise.resolve(ba).then(async Sa=>{if(J.value==="aborted")return INVALID;const Ma=await this._def.schema._parseAsync({data:Sa,path:la.path,parent:la});return Ma.status==="aborted"?INVALID:Ma.status==="dirty"||J.value==="dirty"?DIRTY(Ma.value):Ma});{if(J.value==="aborted")return INVALID;const Sa=this._def.schema._parseSync({data:ba,path:la.path,parent:la});return Sa.status==="aborted"?INVALID:Sa.status==="dirty"||J.value==="dirty"?DIRTY(Sa.value):Sa}}if(xa.type==="refinement"){const ba=Sa=>{const Ma=xa.refinement(Sa,Aa);if(la.common.async)return Promise.resolve(Ma);if(Ma instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return Sa};if(la.common.async===!1){const Sa=this._def.schema._parseSync({data:la.data,path:la.path,parent:la});return Sa.status==="aborted"?INVALID:(Sa.status==="dirty"&&J.dirty(),ba(Sa.value),{status:J.value,value:Sa.value})}else return this._def.schema._parseAsync({data:la.data,path:la.path,parent:la}).then(Sa=>Sa.status==="aborted"?INVALID:(Sa.status==="dirty"&&J.dirty(),ba(Sa.value).then(()=>({status:J.value,value:Sa.value}))))}if(xa.type==="transform")if(la.common.async===!1){const ba=this._def.schema._parseSync({data:la.data,path:la.path,parent:la});if(!isValid(ba))return ba;const Sa=xa.transform(ba.value,Aa);if(Sa instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:J.value,value:Sa}}else return this._def.schema._parseAsync({data:la.data,path:la.path,parent:la}).then(ba=>isValid(ba)?Promise.resolve(xa.transform(ba.value,Aa)).then(Sa=>({status:J.value,value:Sa})):ba);util.assertNever(xa)}};ZodEffects.create=(ua,J,la)=>new ZodEffects({schema:ua,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:J,...processCreateParams(la)}),ZodEffects.createWithPreprocess=(ua,J,la)=>new ZodEffects({schema:J,effect:{type:"preprocess",transform:ua},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(la)});var ZodOptional=class extends ZodType{_parse(ua){return this._getType(ua)===ZodParsedType.undefined?OK(void 0):this._def.innerType._parse(ua)}unwrap(){return this._def.innerType}};ZodOptional.create=(ua,J)=>new ZodOptional({innerType:ua,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(J)});var ZodNullable=class extends ZodType{_parse(ua){return this._getType(ua)===ZodParsedType.null?OK(null):this._def.innerType._parse(ua)}unwrap(){return this._def.innerType}};ZodNullable.create=(ua,J)=>new ZodNullable({innerType:ua,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(J)});var ZodDefault=class extends ZodType{_parse(ua){const{ctx:J}=this._processInputParams(ua);let la=J.data;return J.parsedType===ZodParsedType.undefined&&(la=this._def.defaultValue()),this._def.innerType._parse({data:la,path:J.path,parent:J})}removeDefault(){return this._def.innerType}};ZodDefault.create=(ua,J)=>new ZodDefault({innerType:ua,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof J.default=="function"?J.default:()=>J.default,...processCreateParams(J)});var ZodCatch=class extends ZodType{_parse(ua){const{ctx:J}=this._processInputParams(ua),la={...J,common:{...J.common,issues:[]}},xa=this._def.innerType._parse({data:la.data,path:la.path,parent:{...la}});return isAsync(xa)?xa.then(Aa=>({status:"valid",value:Aa.status==="valid"?Aa.value:this._def.catchValue({get error(){return new ZodError(la.common.issues)},input:la.data})})):{status:"valid",value:xa.status==="valid"?xa.value:this._def.catchValue({get error(){return new ZodError(la.common.issues)},input:la.data})}}removeCatch(){return this._def.innerType}};ZodCatch.create=(ua,J)=>new ZodCatch({innerType:ua,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof J.catch=="function"?J.catch:()=>J.catch,...processCreateParams(J)});var ZodNaN=class extends ZodType{_parse(ua){if(this._getType(ua)!==ZodParsedType.nan){const la=this._getOrReturnCtx(ua);return addIssueToContext(la,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:la.parsedType}),INVALID}return{status:"valid",value:ua.data}}};ZodNaN.create=ua=>new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(ua)});var BRAND=Symbol("zod_brand"),ZodBranded=class extends ZodType{_parse(ua){const{ctx:J}=this._processInputParams(ua),la=J.data;return this._def.type._parse({data:la,path:J.path,parent:J})}unwrap(){return this._def.type}},ZodPipeline=class qw extends ZodType{_parse(J){const{status:la,ctx:xa}=this._processInputParams(J);if(xa.common.async)return(async()=>{const ba=await this._def.in._parseAsync({data:xa.data,path:xa.path,parent:xa});return ba.status==="aborted"?INVALID:ba.status==="dirty"?(la.dirty(),DIRTY(ba.value)):this._def.out._parseAsync({data:ba.value,path:xa.path,parent:xa})})();{const Aa=this._def.in._parseSync({data:xa.data,path:xa.path,parent:xa});return Aa.status==="aborted"?INVALID:Aa.status==="dirty"?(la.dirty(),{status:"dirty",value:Aa.value}):this._def.out._parseSync({data:Aa.value,path:xa.path,parent:xa})}}static create(J,la){return new qw({in:J,out:la,typeName:ZodFirstPartyTypeKind.ZodPipeline})}},ZodReadonly=class extends ZodType{_parse(ua){const J=this._def.innerType._parse(ua),la=xa=>(isValid(xa)&&(xa.value=Object.freeze(xa.value)),xa);return isAsync(J)?J.then(xa=>la(xa)):la(J)}unwrap(){return this._def.innerType}};ZodReadonly.create=(ua,J)=>new ZodReadonly({innerType:ua,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(J)});function custom(ua,J={},la){return ua?ZodAny.create().superRefine((xa,Aa)=>{var ba,Sa;if(!ua(xa)){const Ma=typeof J=="function"?J(xa):typeof J=="string"?{message:J}:J,Ra=(Sa=(ba=Ma.fatal)!==null&&ba!==void 0?ba:la)!==null&&Sa!==void 0?Sa:!0,Ia=typeof Ma=="string"?{message:Ma}:Ma;Aa.addIssue({code:"custom",...Ia,fatal:Ra})}}):ZodAny.create()}var late={object:ZodObject.lazycreate},ZodFirstPartyTypeKind;(function(ua){ua.ZodString="ZodString",ua.ZodNumber="ZodNumber",ua.ZodNaN="ZodNaN",ua.ZodBigInt="ZodBigInt",ua.ZodBoolean="ZodBoolean",ua.ZodDate="ZodDate",ua.ZodSymbol="ZodSymbol",ua.ZodUndefined="ZodUndefined",ua.ZodNull="ZodNull",ua.ZodAny="ZodAny",ua.ZodUnknown="ZodUnknown",ua.ZodNever="ZodNever",ua.ZodVoid="ZodVoid",ua.ZodArray="ZodArray",ua.ZodObject="ZodObject",ua.ZodUnion="ZodUnion",ua.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ua.ZodIntersection="ZodIntersection",ua.ZodTuple="ZodTuple",ua.ZodRecord="ZodRecord",ua.ZodMap="ZodMap",ua.ZodSet="ZodSet",ua.ZodFunction="ZodFunction",ua.ZodLazy="ZodLazy",ua.ZodLiteral="ZodLiteral",ua.ZodEnum="ZodEnum",ua.ZodEffects="ZodEffects",ua.ZodNativeEnum="ZodNativeEnum",ua.ZodOptional="ZodOptional",ua.ZodNullable="ZodNullable",ua.ZodDefault="ZodDefault",ua.ZodCatch="ZodCatch",ua.ZodPromise="ZodPromise",ua.ZodBranded="ZodBranded",ua.ZodPipeline="ZodPipeline",ua.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));var instanceOfType=(ua,J={message:`Input not instance of ${ua.name}`})=>custom(la=>la instanceof ua,J),stringType=ZodString.create,numberType=ZodNumber.create,nanType=ZodNaN.create,bigIntType=ZodBigInt.create,booleanType=ZodBoolean.create,dateType=ZodDate.create,symbolType=ZodSymbol.create,undefinedType=ZodUndefined.create,nullType=ZodNull.create,anyType=ZodAny.create,unknownType=ZodUnknown.create,neverType=ZodNever.create,voidType=ZodVoid.create,arrayType=ZodArray.create,objectType=ZodObject.create,strictObjectType=ZodObject.strictCreate,unionType=ZodUnion.create,discriminatedUnionType=ZodDiscriminatedUnion.create,intersectionType=ZodIntersection.create,tupleType=ZodTuple.create,recordType=ZodRecord.create,mapType=ZodMap.create,setType=ZodSet.create,functionType=ZodFunction.create,lazyType=ZodLazy.create,literalType=ZodLiteral.create,enumType=ZodEnum.create,nativeEnumType=ZodNativeEnum.create,promiseType=ZodPromise.create,effectsType=ZodEffects.create,optionalType=ZodOptional.create,nullableType=ZodNullable.create,preprocessType=ZodEffects.createWithPreprocess,pipelineType=ZodPipeline.create,ostring=()=>stringType().optional(),onumber=()=>numberType().optional(),oboolean=()=>booleanType().optional(),coerce={string:ua=>ZodString.create({...ua,coerce:!0}),number:ua=>ZodNumber.create({...ua,coerce:!0}),boolean:ua=>ZodBoolean.create({...ua,coerce:!0}),bigint:ua=>ZodBigInt.create({...ua,coerce:!0}),date:ua=>ZodDate.create({...ua,coerce:!0})},NEVER=INVALID,z$1=Object.freeze({__proto__:null,defaultErrorMap:errorMap,setErrorMap,getErrorMap,makeIssue,EMPTY_PATH,addIssueToContext,ParseStatus,INVALID,DIRTY,OK,isAborted,isDirty,isValid,isAsync,get util(){return util},get objectUtil(){return objectUtil},ZodParsedType,getParsedType,ZodType,datetimeRegex,ZodString,ZodNumber,ZodBigInt,ZodBoolean,ZodDate,ZodSymbol,ZodUndefined,ZodNull,ZodAny,ZodUnknown,ZodNever,ZodVoid,ZodArray,ZodObject,ZodUnion,ZodDiscriminatedUnion,ZodIntersection,ZodTuple,ZodRecord,ZodMap,ZodSet,ZodFunction,ZodLazy,ZodLiteral,ZodEnum,ZodNativeEnum,ZodPromise,ZodEffects,ZodTransformer:ZodEffects,ZodOptional,ZodNullable,ZodDefault,ZodCatch,ZodNaN,BRAND,ZodBranded,ZodPipeline,ZodReadonly,custom,Schema:ZodType,ZodSchema:ZodType,late,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind},coerce,any:anyType,array:arrayType,bigint:bigIntType,boolean:booleanType,date:dateType,discriminatedUnion:discriminatedUnionType,effect:effectsType,enum:enumType,function:functionType,instanceof:instanceOfType,intersection:intersectionType,lazy:lazyType,literal:literalType,map:mapType,nan:nanType,nativeEnum:nativeEnumType,never:neverType,null:nullType,nullable:nullableType,number:numberType,object:objectType,oboolean,onumber,optional:optionalType,ostring,pipeline:pipelineType,preprocess:preprocessType,promise:promiseType,record:recordType,set:setType,strictObject:strictObjectType,string:stringType,symbol:symbolType,transformer:effectsType,tuple:tupleType,undefined:undefinedType,union:unionType,unknown:unknownType,void:voidType,NEVER,ZodIssueCode,quotelessJson,ZodError}),urlAlphabet="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",nanoid=(ua=21)=>{let J="",la=crypto.getRandomValues(new Uint8Array(ua|=0));for(;ua--;)J+=urlAlphabet[la[ua]&63];return J},unitMappings={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},unitMappingAndVariantSuffixes=new Set;for(const[ua,J]of Object.entries(unitMappings)){unitMappingAndVariantSuffixes.add(ua);for(const la of Object.keys(J.variants))unitMappingAndVariantSuffixes.add(la)}function getBaseTscircuitUnit(ua){for(const[J,la]of Object.entries(unitMappings))if(ua in la.variants)return{baseUnit:la.baseUnit,conversionFactor:la.variants[ua]};return{baseUnit:ua,conversionFactor:1}}var si_prefix_multiplier={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},parseAndConvertSiUnit=ua=>{var Ma;if(typeof ua>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof ua=="string"&&ua.match(/^[\d\.]+$/))return{value:Number.parseFloat(ua),parsedUnit:null,unitOfValue:null};if(typeof ua=="number")return{value:ua,parsedUnit:null,unitOfValue:null};if(typeof ua=="object"&&"x"in ua&&"y"in ua){const{parsedUnit:Ra,unitOfValue:Ia}=parseAndConvertSiUnit(ua.x);return{parsedUnit:Ra,unitOfValue:Ia,value:{x:parseAndConvertSiUnit(ua.x).value,y:parseAndConvertSiUnit(ua.y).value}}}const la=(Ma=ua.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:Ma[0];if(!la)throw new Error(`Could not determine unit: "${ua}"`);const xa=la.split("").reverse().join(""),Aa=ua.slice(0,-xa.length);if(xa in si_prefix_multiplier&&!unitMappingAndVariantSuffixes.has(xa)){const Ra=si_prefix_multiplier[xa];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(Aa)*Ra}}const{baseUnit:ba,conversionFactor:Sa}=getBaseTscircuitUnit(xa);return{parsedUnit:xa,unitOfValue:ba,value:Sa*Number.parseFloat(Aa)}},resistance=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),capacitance=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),inductance=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),voltage=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),length2=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),frequency=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),distance=length2,current=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),time=z$1.string().or(z$1.number()).transform(ua=>parseAndConvertSiUnit(ua).value),rotation=z$1.string().or(z$1.number()).transform(ua=>typeof ua=="number"?ua:ua.endsWith("deg")?Number.parseFloat(ua.split("deg")[0]):ua.endsWith("rad")?Number.parseFloat(ua.split("rad")[0])*180/Math.PI:Number.parseFloat(ua)),battery_capacity=z$1.number().or(z$1.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),point=z$1.object({x:distance,y:distance}),position=point,point3=z$1.object({x:distance,y:distance,z:distance}),position3=point3,size$3=z$1.object({width:z$1.number(),height:z$1.number()}),getZodPrefixedIdWithDefault=ua=>z$1.string().optional().default(()=>`${ua}_${nanoid(10)}`),supplier_name=z$1.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base=z$1.object({type:z$1.literal("source_component"),ftype:z$1.string().optional(),source_component_id:z$1.string(),name:z$1.string(),manufacturer_part_number:z$1.string().optional(),supplier_part_numbers:z$1.record(supplier_name,z$1.array(z$1.string())).optional(),display_value:z$1.string().optional()}),source_simple_capacitor=source_component_base.extend({ftype:z$1.literal("simple_capacitor"),capacitance,display_capacitance:z$1.string().optional(),max_decoupling_trace_length:distance.optional()}),source_simple_resistor=source_component_base.extend({ftype:z$1.literal("simple_resistor"),resistance,display_resistance:z$1.string().optional()}),source_simple_diode=source_component_base.extend({ftype:z$1.literal("simple_diode")}),source_simple_ground=source_component_base.extend({ftype:z$1.literal("simple_ground")}),source_simple_bug=source_component_base.extend({ftype:z$1.literal("simple_bug")}).describe("@deprecated"),source_simple_chip=source_component_base.extend({ftype:z$1.literal("simple_chip")}),source_led=source_simple_diode.extend({ftype:z$1.literal("led")}),source_simple_power_source=source_component_base.extend({ftype:z$1.literal("simple_power_source"),voltage}),source_simple_battery=source_component_base.extend({ftype:z$1.literal("simple_battery"),capacity:battery_capacity}),source_simple_inductor=source_component_base.extend({ftype:z$1.literal("simple_inductor"),inductance}),source_simple_push_button=source_component_base.extend({ftype:z$1.literal("simple_push_button")}),source_simple_potentiometer=source_component_base.extend({ftype:z$1.literal("simple_potentiometer"),max_resistance:resistance}),source_simple_crystal=source_component_base.extend({ftype:z$1.literal("simple_crystal"),frequency:z$1.number().describe("Frequency in Hz"),load_capacitance:z$1.number().optional().describe("Load capacitance in pF")}),source_simple_pin_header=source_component_base.extend({ftype:z$1.literal("simple_pin_header"),pin_count:z$1.number(),gender:z$1.enum(["male","female"]).optional().default("male")}),source_simple_resonator=source_component_base.extend({ftype:z$1.literal("simple_resonator"),load_capacitance:capacitance,equivalent_series_resistance:resistance.optional(),frequency}),source_simple_transistor=source_component_base.extend({ftype:z$1.literal("simple_transistor"),transistor_type:z$1.enum(["npn","pnp"])}),source_simple_mosfet=source_component_base.extend({ftype:z$1.literal("simple_mosfet"),channel_type:z$1.enum(["n","p"]),mosfet_mode:z$1.enum(["enhancement","depletion"])}),any_source_component=z$1.union([source_simple_resistor,source_simple_capacitor,source_simple_diode,source_simple_ground,source_simple_chip,source_simple_bug,source_led,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_push_button,source_simple_potentiometer,source_simple_crystal,source_simple_pin_header,source_simple_resonator,source_simple_transistor,source_simple_mosfet]),source_port=z$1.object({type:z$1.literal("source_port"),pin_number:z$1.number().optional(),port_hints:z$1.array(z$1.string()).optional(),name:z$1.string(),source_port_id:z$1.string(),source_component_id:z$1.string()}),source_trace=z$1.object({type:z$1.literal("source_trace"),source_trace_id:z$1.string(),connected_source_port_ids:z$1.array(z$1.string()),connected_source_net_ids:z$1.array(z$1.string()),subcircuit_connectivity_map_key:z$1.string().optional(),max_length:z$1.number().optional(),display_name:z$1.string().optional()}),source_group=z$1.object({type:z$1.literal("source_group"),source_group_id:z$1.string(),name:z$1.string().optional()}),source_net=z$1.object({type:z$1.literal("source_net"),source_net_id:z$1.string(),name:z$1.string(),member_source_group_ids:z$1.array(z$1.string()),is_power:z$1.boolean().optional(),is_ground:z$1.boolean().optional(),is_digital_signal:z$1.boolean().optional(),is_analog_signal:z$1.boolean().optional(),trace_width:z$1.number().optional()}),schematic_box=z$1.object({type:z$1.literal("schematic_box"),schematic_component_id:z$1.string(),width:distance,height:distance,x:distance,y:distance}).describe("Draws a box on the schematic"),schematic_path=z$1.object({type:z$1.literal("schematic_path"),schematic_component_id:z$1.string(),fill_color:z$1.enum(["red","blue"]).optional(),is_filled:z$1.boolean().optional(),points:z$1.array(point)}),schematic_pin_styles=z$1.record(z$1.object({left_margin:length2.optional(),right_margin:length2.optional(),top_margin:length2.optional(),bottom_margin:length2.optional()})),schematic_component_port_arrangement_by_size=z$1.object({left_size:z$1.number(),right_size:z$1.number(),top_size:z$1.number().optional(),bottom_size:z$1.number().optional()}),schematic_component_port_arrangement_by_sides=z$1.object({left_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["left-to-right","right-to-left"]).optional()}).optional()}),port_arrangement=z$1.union([schematic_component_port_arrangement_by_size,schematic_component_port_arrangement_by_sides]),schematic_component=z$1.object({type:z$1.literal("schematic_component"),rotation:rotation.default(0),size:size$3,center:point,source_component_id:z$1.string(),schematic_component_id:z$1.string(),pin_spacing:length2.optional(),pin_styles:schematic_pin_styles.optional(),box_width:length2.optional(),symbol_name:z$1.string().optional(),port_arrangement:port_arrangement.optional(),port_labels:z$1.record(z$1.string()).optional(),symbol_display_value:z$1.string().optional()}),schematic_line=z$1.object({type:z$1.literal("schematic_line"),schematic_component_id:z$1.string(),x1:distance,x2:distance,y1:distance,y2:distance}),schematic_trace=z$1.object({type:z$1.literal("schematic_trace"),schematic_trace_id:z$1.string(),source_trace_id:z$1.string(),junctions:z$1.array(z$1.object({x:z$1.number(),y:z$1.number()})),edges:z$1.array(z$1.object({from:z$1.object({x:z$1.number(),y:z$1.number()}),to:z$1.object({x:z$1.number(),y:z$1.number()}),is_crossing:z$1.boolean().optional(),from_schematic_port_id:z$1.string().optional(),to_schematic_port_id:z$1.string().optional()}))}),schematic_text=z$1.object({type:z$1.literal("schematic_text"),schematic_component_id:z$1.string(),schematic_text_id:z$1.string(),text:z$1.string(),position:z$1.object({x:distance,y:distance}),rotation:z$1.number().default(0),anchor:z$1.enum(["center","left","right","top","bottom"]).default("center"),color:z$1.string().default("#000000")}),schematic_port=z$1.object({type:z$1.literal("schematic_port"),schematic_port_id:z$1.string(),source_port_id:z$1.string(),schematic_component_id:z$1.string().optional(),center:point,facing_direction:z$1.enum(["up","down","left","right"]).optional(),distance_from_component_edge:z$1.number().optional(),side_of_component:z$1.enum(["top","bottom","left","right"]).optional(),true_ccw_index:z$1.number().optional(),pin_number:z$1.number().optional(),display_pin_label:z$1.string().optional()}).describe("Defines a port on a schematic component"),schematic_net_label=z$1.object({type:z$1.literal("schematic_net_label"),source_net_id:z$1.string(),center:point,anchor_position:point.optional(),anchor_side:z$1.enum(["top","bottom","left","right"]),text:z$1.string(),symbol_name:z$1.string().optional()}),schematic_error=z$1.object({type:z$1.literal("schematic_error"),schematic_error_id:z$1.string(),error_type:z$1.literal("schematic_port_not_found"),message:z$1.string()}).describe("Defines a schematic error on the schematic"),schematic_debug_object_base=z$1.object({type:z$1.literal("schematic_debug_object"),label:z$1.string().optional()}),schematic_debug_rect=schematic_debug_object_base.extend({shape:z$1.literal("rect"),center:point,size:size$3}),schematic_debug_line=schematic_debug_object_base.extend({shape:z$1.literal("line"),start:point,end:point}),schematic_debug_point=schematic_debug_object_base.extend({shape:z$1.literal("point"),center:point}),schematic_debug_object=z$1.discriminatedUnion("shape",[schematic_debug_rect,schematic_debug_line,schematic_debug_point]),schematic_voltage_probe=z$1.object({type:z$1.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$1.string(),position:point,schematic_trace_id:z$1.string(),voltage:voltage.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string=z$1.enum(all_layers),layer_ref=layer_string.or(z$1.object({name:layer_string})).transform(ua=>typeof ua=="string"?ua:ua.name),visible_layer=z$1.enum(["top","bottom"]),pcb_route_hint=z$1.object({x:distance,y:distance,via:z$1.boolean().optional(),via_to_layer:layer_ref.optional()}),pcb_route_hints=z$1.array(pcb_route_hint),route_hint_point=z$1.object({x:distance,y:distance,via:z$1.boolean().optional(),to_layer:layer_ref.optional(),trace_width:distance.optional()}),pcb_component=z$1.object({type:z$1.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault("pcb_component"),source_component_id:z$1.string(),center:point,layer:layer_ref,rotation,width:length2,height:length2}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),hole_shape:z$1.enum(["circle","square"]),hole_diameter:z$1.number(),x:distance,y:distance}),pcb_hole_circle_or_square_shape=pcb_hole_circle_or_square.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),hole_shape:z$1.literal("oval"),hole_width:z$1.number(),hole_height:z$1.number(),x:distance,y:distance}),pcb_hole_oval_shape=pcb_hole_oval.describe("Defines an oval hole on the PCB"),pcb_hole=pcb_hole_circle_or_square.or(pcb_hole_oval),pcb_plated_hole_circle=z$1.object({type:z$1.literal("pcb_plated_hole"),shape:z$1.literal("circle"),outer_diameter:z$1.number(),hole_diameter:z$1.number(),x:distance,y:distance,layers:z$1.array(layer_ref),port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole")}),pcb_plated_hole_oval=z$1.object({type:z$1.literal("pcb_plated_hole"),shape:z$1.enum(["oval","pill"]),outer_width:z$1.number(),outer_height:z$1.number(),hole_width:z$1.number(),hole_height:z$1.number(),x:distance,y:distance,layers:z$1.array(layer_ref),port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole")}),pcb_circular_hole_with_rect_pad=z$1.object({type:z$1.literal("pcb_plated_hole"),shape:z$1.literal("circular_hole_with_rect_pad"),hole_shape:z$1.literal("circle"),pad_shape:z$1.literal("rect"),hole_diameter:z$1.number(),rect_pad_width:z$1.number(),rect_pad_height:z$1.number(),x:distance,y:distance,layers:z$1.array(layer_ref),port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole")}),pcb_plated_hole=z$1.union([pcb_plated_hole_circle,pcb_plated_hole_oval,pcb_circular_hole_with_rect_pad]),pcb_port=z$1.object({type:z$1.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault("pcb_port"),source_port_id:z$1.string(),pcb_component_id:z$1.string(),x:distance,y:distance,layers:z$1.array(layer_ref)}).describe("Defines a port on the PCB"),pcb_smtpad_circle=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),x:distance,y:distance,radius:z$1.number(),layer:layer_ref,port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional()}),pcb_smtpad_rect=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),x:distance,y:distance,width:z$1.number(),height:z$1.number(),layer:layer_ref,port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional()}),pcb_smtpad_rotated_rect=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),x:distance,y:distance,width:z$1.number(),height:z$1.number(),ccw_rotation:rotation,layer:layer_ref,port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional()}),pcb_smtpad=z$1.union([pcb_smtpad_circle,pcb_smtpad_rect,pcb_smtpad_rotated_rect]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),x:distance,y:distance,radius:z$1.number(),layer:layer_ref,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste_rect=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),x:distance,y:distance,width:z$1.number(),height:z$1.number(),layer:layer_ref,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste=z$1.union([pcb_solder_paste_circle,pcb_solder_paste_rect]).describe("Defines solderpaste on the PCB"),pcb_text=z$1.object({type:z$1.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault("pcb_text"),text:z$1.string(),center:point,layer:layer_ref,width:length2,height:length2,lines:z$1.number(),align:z$1.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire=z$1.object({route_type:z$1.literal("wire"),x:distance,y:distance,width:distance,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref}),pcb_trace_route_point_via=z$1.object({route_type:z$1.literal("via"),x:distance,y:distance,from_layer:z$1.string(),to_layer:z$1.string()}),pcb_trace_route_point=z$1.union([pcb_trace_route_point_wire,pcb_trace_route_point_via]),pcb_trace=z$1.object({type:z$1.literal("pcb_trace"),source_trace_id:z$1.string().optional(),pcb_component_id:z$1.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault("pcb_trace"),route_thickness_mode:z$1.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:z$1.number().optional(),should_round_corners:z$1.boolean().optional(),trace_length:z$1.number().optional(),route:z$1.array(z$1.union([z$1.object({route_type:z$1.literal("wire"),x:distance,y:distance,width:distance,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref}),z$1.object({route_type:z$1.literal("via"),x:distance,y:distance,from_layer:z$1.string(),to_layer:z$1.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error=z$1.object({type:z$1.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault("pcb_trace_error"),error_type:z$1.literal("pcb_trace_error"),message:z$1.string(),center:point.optional(),pcb_trace_id:z$1.string(),source_trace_id:z$1.string(),pcb_component_ids:z$1.array(z$1.string()),pcb_port_ids:z$1.array(z$1.string())}).describe("Defines a trace error on the PCB"),pcb_port_not_matched_error=z$1.object({type:z$1.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),message:z$1.string(),pcb_component_ids:z$1.array(z$1.string())}).describe("Defines a trace error on the PCB where a port is not matched"),pcb_via=z$1.object({type:z$1.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault("pcb_via"),x:distance,y:distance,outer_diameter:distance.default("0.6mm"),hole_diameter:distance.default("0.25mm"),from_layer:layer_ref.optional(),to_layer:layer_ref.optional(),layers:z$1.array(layer_ref),pcb_trace_id:z$1.string().optional()}).describe("Defines a via on the PCB"),pcb_board=z$1.object({type:z$1.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault("pcb_board"),width:length2,height:length2,center:point,thickness:length2.optional().default(1.4),num_layers:z$1.number().optional().default(4),outline:z$1.array(point).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error=z$1.object({type:z$1.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault("pcb_placement_error"),message:z$1.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint=z$1.object({type:z$1.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault("pcb_trace_hint"),pcb_port_id:z$1.string(),pcb_component_id:z$1.string(),route:z$1.array(route_hint_point)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line=z$1.object({type:z$1.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault("pcb_silkscreen_line"),pcb_component_id:z$1.string(),stroke_width:distance.default("0.1mm"),x1:distance,y1:distance,x2:distance,y2:distance,layer:visible_layer}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path=z$1.object({type:z$1.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault("pcb_silkscreen_path"),pcb_component_id:z$1.string(),layer:visible_layer,route:z$1.array(point),stroke_width:length2}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text=z$1.object({type:z$1.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault("pcb_silkscreen_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("0.2mm"),pcb_component_id:z$1.string(),text:z$1.string(),ccw_rotation:z$1.number().optional(),layer:layer_ref,is_mirrored:z$1.boolean().default(!1).optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),pcb_silkscreen_rect=z$1.object({type:z$1.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault("pcb_silkscreen_rect"),pcb_component_id:z$1.string(),center:point,width:length2,height:length2,layer:layer_ref}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle=z$1.object({type:z$1.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault("pcb_silkscreen_circle"),pcb_component_id:z$1.string(),center:point,radius:length2,layer:visible_layer}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval=z$1.object({type:z$1.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault("pcb_silkscreen_oval"),pcb_component_id:z$1.string(),center:point,radius_x:distance,radius_y:distance,layer:visible_layer}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text=z$1.object({type:z$1.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("1mm"),pcb_component_id:z$1.string(),text:z$1.string(),layer:visible_layer,anchor_position:point.default({x:0,y:0}),anchor_alignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:z$1.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),pcb_fabrication_note_path=z$1.object({type:z$1.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_path"),pcb_component_id:z$1.string(),layer:layer_ref,route:z$1.array(point),stroke_width:length2,color:z$1.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout=z$1.object({type:z$1.literal("pcb_keepout"),shape:z$1.literal("rect"),center:point,width:distance,height:distance,pcb_keepout_id:z$1.string(),layers:z$1.array(z$1.string()),description:z$1.string().optional()}).or(z$1.object({type:z$1.literal("pcb_keepout"),shape:z$1.literal("circle"),center:point,radius:distance,pcb_keepout_id:z$1.string(),layers:z$1.array(z$1.string()),description:z$1.string().optional()})),pcb_missing_footprint_error=z$1.object({type:z$1.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault("pcb_missing_footprint_error"),error_type:z$1.literal("pcb_missing_footprint_error"),source_component_id:z$1.string(),message:z$1.string()}).describe("Defines a missing footprint error on the PCB"),pcb_manual_edit_conflict_error=z$1.object({type:z$1.literal("pcb_manual_edit_conflict_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_manual_edit_conflict_error"),message:z$1.string(),pcb_component_id:z$1.string(),source_component_id:z$1.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),pcb_group=z$1.object({type:z$1.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault("pcb_group"),width:length2,height:length2,center:point,pcb_component_ids:z$1.array(z$1.string()),name:z$1.string().optional(),description:z$1.string().optional()}).describe("Defines a group of components on the PCB"),cad_component=z$1.object({type:z$1.literal("cad_component"),cad_component_id:z$1.string(),pcb_component_id:z$1.string(),source_component_id:z$1.string(),position:point3,rotation:point3.optional(),size:point3.optional(),layer:layer_ref.optional(),footprinter_string:z$1.string().optional(),model_obj_url:z$1.string().optional(),model_stl_url:z$1.string().optional(),model_3mf_url:z$1.string().optional(),model_jscad:z$1.any().optional()}).describe("Defines a component on the PCB"),any_circuit_element=z$1.union([source_trace,source_port,any_source_component,source_led,source_net,source_group,source_simple_bug,source_simple_chip,source_simple_capacitor,source_simple_diode,source_simple_resistor,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_pin_header,source_simple_resonator,source_simple_transistor,source_simple_mosfet,source_simple_potentiometer,source_simple_push_button,pcb_component,pcb_hole,pcb_missing_footprint_error,pcb_manual_edit_conflict_error,pcb_plated_hole,pcb_keepout,pcb_port,pcb_text,pcb_trace,pcb_via,pcb_smtpad,pcb_solder_paste,pcb_board,pcb_group,pcb_trace_hint,pcb_silkscreen_line,pcb_silkscreen_path,pcb_silkscreen_text,pcb_silkscreen_rect,pcb_silkscreen_circle,pcb_silkscreen_oval,pcb_trace_error,pcb_placement_error,pcb_port_not_matched_error,pcb_fabrication_note_path,pcb_fabrication_note_text,schematic_box,schematic_text,schematic_line,schematic_component,schematic_port,schematic_trace,schematic_path,schematic_error,schematic_net_label,schematic_debug_object,schematic_voltage_probe,cad_component]),any_soup_element=any_circuit_element,su$1=(ua,J={})=>{let la=ua._internal_store;if(!la){la={counts:{}},ua._internal_store=la;for(const Aa of ua){const ba=Aa.type,Sa=Aa[`${ba}_id`];if(!Sa)continue;const Ma=Number.parseInt(Sa.split("_").pop());Number.isNaN(Ma)||(la.counts[ba]=Math.max(la.counts[ba]??0,Ma))}}return new Proxy({},{get:(Aa,ba)=>ba==="toArray"?()=>ua:{get:Sa=>ua.find(Ma=>Ma.type===ba&&Ma[`${ba}_id`]===Sa),getUsing:Sa=>{const Ma=Object.keys(Sa);if(Ma.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Ra=Ma[0],Ia=Ra.replace("_id",""),La=ua.find(Fa=>Fa.type===Ia&&Fa[Ra]===Sa[Ra]);return La?ua.find(Fa=>Fa.type===ba&&Fa[`${ba}_id`]===La[`${ba}_id`]):null},getWhere:Sa=>{const Ma=Object.keys(Sa);return ua.find(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},list:Sa=>{const Ma=Sa?Object.keys(Sa):[];return ua.filter(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},insert:Sa=>{var Ia;(Ia=la.counts)[ba]??(Ia[ba]=-1),la.counts[ba]++;const Ma=la.counts[ba],Ra={type:ba,[`${ba}_id`]:`${ba}_${Ma}`,...Sa};return J.validateInserts&&(dist_exports[ba]??any_soup_element).parse(Ra),ua.push(Ra),Ra},delete:Sa=>{const Ma=ua.find(Ra=>Ra[`${ba}_id`]===Sa);Ma&&ua.splice(ua.indexOf(Ma),1)},update:(Sa,Ma)=>{const Ra=ua.find(Ia=>Ia.type===ba&&Ia[`${ba}_id`]===Sa);if(Ra)return Object.assign(Ra,Ma),Ra},select:Sa=>{if(ba==="source_component")return ua.find(Ma=>Ma.type==="source_component"&&Ma.name===Sa.replace(/\./g,""));if(ba==="pcb_port"||ba==="source_port"||ba==="schematic_port"){const[Ma,Ra]=Sa.replace(/\./g,"").split(/[\s\>]+/),Ia=ua.find(Fa=>Fa.type==="source_component"&&Fa.name===Ma);if(!Ia)return null;const La=ua.find(Fa=>Fa.type==="source_port"&&Fa.source_component_id===Ia.source_component_id&&(Fa.name===Ra||(Fa.port_hints??[]).includes(Ra)));if(!La)return null;if(ba==="source_port")return La;if(ba==="pcb_port")return ua.find(Fa=>Fa.type==="pcb_port"&&Fa.source_port_id===La.source_port_id);if(ba==="schematic_port")return ua.find(Fa=>Fa.type==="schematic_port"&&Fa.source_port_id===La.source_port_id)}}}})};su$1.unparsed=su$1;var su_default$1=su$1,transformPCBElement=(ua,J)=>{if(ua.type==="pcb_plated_hole"||ua.type==="pcb_hole"||ua.type==="pcb_via"||ua.type==="pcb_smtpad"||ua.type==="pcb_port"){const{x:la,y:xa}=applyToPoint(J,{x:ua.x,y:ua.y});ua.x=la,ua.y=xa}else if(ua.type==="pcb_keepout"||ua.type==="pcb_board")ua.center=applyToPoint(J,ua.center);else if(ua.type==="pcb_silkscreen_text"||ua.type==="pcb_fabrication_note_text")ua.anchor_position=applyToPoint(J,ua.anchor_position);else if(ua.type==="pcb_silkscreen_circle"||ua.type==="pcb_silkscreen_rect"||ua.type==="pcb_component")ua.center=applyToPoint(J,ua.center);else if(ua.type==="pcb_silkscreen_path"||ua.type==="pcb_trace"||ua.type==="pcb_fabrication_note_path")ua.route=ua.route.map(la=>{const xa=applyToPoint(J,la);return la.x=xa.x,la.y=xa.y,la});else if(ua.type==="pcb_silkscreen_line"){const la={x:ua.x1,y:ua.y1},xa={x:ua.x2,y:ua.y2},Aa=applyToPoint(J,la),ba=applyToPoint(J,xa);ua.x1=Aa.x,ua.y1=Aa.y,ua.x2=ba.x,ua.y2=ba.y}else if(ua.type==="cad_component"){const la=applyToPoint(J,{x:ua.position.x,y:ua.position.y});ua.position.x=la.x,ua.position.y=la.y}return ua};function stringHash(ua){let J=0;if(ua.length==0)return J;for(var la=0;la<ua.length;la++){var xa=ua.charCodeAt(la);J=(J<<5)-J+xa,J=J&J}return Math.abs(J)}var nice_color_palettes=[["#69d2e7","#a7dbd8","#e0e4cc","#f38630","#fa6900"],["#fe4365","#fc9d9a","#f9cdad","#c8c8a9","#83af9b"],["#ecd078","#d95b43","#c02942","#542437","#53777a"],["#556270","#4ecdc4","#c7f464","#ff6b6b","#c44d58"],["#774f38","#e08e79","#f1d4af","#ece5ce","#c5e0dc"],["#e8ddcb","#cdb380","#036564","#033649","#031634"],["#490a3d","#bd1550","#e97f02","#f8ca00","#8a9b0f"],["#594f4f","#547980","#45ada8","#9de0ad","#e5fcc2"],["#00a0b0","#6a4a3c","#cc333f","#eb6841","#edc951"],["#e94e77","#d68189","#c6a49a","#c6e5d9","#f4ead5"],["#3fb8af","#7fc7af","#dad8a7","#ff9e9d","#ff3d7f"],["#d9ceb2","#948c75","#d5ded9","#7a6a53","#99b2b7"],["#ffffff","#cbe86b","#f2e9e1","#1c140d","#cbe86b"],["#efffcd","#dce9be","#555152","#2e2633","#99173c"],["#343838","#005f6b","#008c9e","#00b4cc","#00dffc"],["#413e4a","#73626e","#b38184","#f0b49e","#f7e4be"],["#ff4e50","#fc913a","#f9d423","#ede574","#e1f5c4"],["#99b898","#fecea8","#ff847c","#e84a5f","#2a363b"],["#655643","#80bca3","#f6f7bd","#e6ac27","#bf4d28"],["#00a8c6","#40c0cb","#f9f2e7","#aee239","#8fbe00"],["#351330","#424254","#64908a","#e8caa4","#cc2a41"],["#554236","#f77825","#d3ce3d","#f1efa5","#60b99a"],["#5d4157","#838689","#a8caba","#cad7b2","#ebe3aa"],["#8c2318","#5e8c6a","#88a65e","#bfb35a","#f2c45a"],["#fad089","#ff9c5b","#f5634a","#ed303c","#3b8183"],["#ff4242","#f4fad2","#d4ee5e","#e1edb9","#f0f2eb"],["#f8b195","#f67280","#c06c84","#6c5b7b","#355c7d"],["#d1e751","#ffffff","#000000","#4dbce9","#26ade4"],["#1b676b","#519548","#88c425","#bef202","#eafde6"],["#5e412f","#fcebb6","#78c0a8","#f07818","#f0a830"],["#bcbdac","#cfbe27","#f27435","#f02475","#3b2d38"],["#452632","#91204d","#e4844a","#e8bf56","#e2f7ce"],["#eee6ab","#c5bc8e","#696758","#45484b","#36393b"],["#f0d8a8","#3d1c00","#86b8b1","#f2d694","#fa2a00"],["#2a044a","#0b2e59","#0d6759","#7ab317","#a0c55f"],["#f04155","#ff823a","#f2f26f","#fff7bd","#95cfb7"],["#b9d7d9","#668284","#2a2829","#493736","#7b3b3b"],["#bbbb88","#ccc68d","#eedd99","#eec290","#eeaa88"],["#b3cc57","#ecf081","#ffbe40","#ef746f","#ab3e5b"],["#a3a948","#edb92e","#f85931","#ce1836","#009989"],["#300030","#480048","#601848","#c04848","#f07241"],["#67917a","#170409","#b8af03","#ccbf82","#e33258"],["#aab3ab","#c4cbb7","#ebefc9","#eee0b7","#e8caaf"],["#e8d5b7","#0e2430","#fc3a51","#f5b349","#e8d5b9"],["#ab526b","#bca297","#c5ceae","#f0e2a4","#f4ebc3"],["#607848","#789048","#c0d860","#f0f0d8","#604848"],["#b6d8c0","#c8d9bf","#dadabd","#ecdbbc","#fedcba"],["#a8e6ce","#dcedc2","#ffd3b5","#ffaaa6","#ff8c94"],["#3e4147","#fffedf","#dfba69","#5a2e2e","#2a2c31"],["#fc354c","#29221f","#13747d","#0abfbc","#fcf7c5"],["#cc0c39","#e6781e","#c8cf02","#f8fcc1","#1693a7"],["#1c2130","#028f76","#b3e099","#ffeaad","#d14334"],["#a7c5bd","#e5ddcb","#eb7b59","#cf4647","#524656"],["#dad6ca","#1bb0ce","#4f8699","#6a5e72","#563444"],["#5c323e","#a82743","#e15e32","#c0d23e","#e5f04c"],["#edebe6","#d6e1c7","#94c7b6","#403b33","#d3643b"],["#fdf1cc","#c6d6b8","#987f69","#e3ad40","#fcd036"],["#230f2b","#f21d41","#ebebbc","#bce3c5","#82b3ae"],["#b9d3b0","#81bda4","#b28774","#f88f79","#f6aa93"],["#3a111c","#574951","#83988e","#bcdea5","#e6f9bc"],["#5e3929","#cd8c52","#b7d1a3","#dee8be","#fcf7d3"],["#1c0113","#6b0103","#a30006","#c21a01","#f03c02"],["#000000","#9f111b","#b11623","#292c37","#cccccc"],["#382f32","#ffeaf2","#fcd9e5","#fbc5d8","#f1396d"],["#e3dfba","#c8d6bf","#93ccc6","#6cbdb5","#1a1f1e"],["#f6f6f6","#e8e8e8","#333333","#990100","#b90504"],["#1b325f","#9cc4e4","#e9f2f9","#3a89c9","#f26c4f"],["#a1dbb2","#fee5ad","#faca66","#f7a541","#f45d4c"],["#c1b398","#605951","#fbeec2","#61a6ab","#accec0"],["#5e9fa3","#dcd1b4","#fab87f","#f87e7b","#b05574"],["#951f2b","#f5f4d7","#e0dfb1","#a5a36c","#535233"],["#8dccad","#988864","#fea6a2","#f9d6ac","#ffe9af"],["#2d2d29","#215a6d","#3ca2a2","#92c7a3","#dfece6"],["#413d3d","#040004","#c8ff00","#fa023c","#4b000f"],["#eff3cd","#b2d5ba","#61ada0","#248f8d","#605063"],["#ffefd3","#fffee4","#d0ecea","#9fd6d2","#8b7a5e"],["#cfffdd","#b4dec1","#5c5863","#a85163","#ff1f4c"],["#9dc9ac","#fffec7","#f56218","#ff9d2e","#919167"],["#4e395d","#827085","#8ebe94","#ccfc8e","#dc5b3e"],["#a8a7a7","#cc527a","#e8175d","#474747","#363636"],["#f8edd1","#d88a8a","#474843","#9d9d93","#c5cfc6"],["#046d8b","#309292","#2fb8ac","#93a42a","#ecbe13"],["#f38a8a","#55443d","#a0cab5","#cde9ca","#f1edd0"],["#a70267","#f10c49","#fb6b41","#f6d86b","#339194"],["#ff003c","#ff8a00","#fabe28","#88c100","#00c176"],["#ffedbf","#f7803c","#f54828","#2e0d23","#f8e4c1"],["#4e4d4a","#353432","#94ba65","#2790b0","#2b4e72"],["#0ca5b0","#4e3f30","#fefeeb","#f8f4e4","#a5b3aa"],["#4d3b3b","#de6262","#ffb88c","#ffd0b3","#f5e0d3"],["#fffbb7","#a6f6af","#66b6ab","#5b7c8d","#4f2958"],["#edf6ee","#d1c089","#b3204d","#412e28","#151101"],["#9d7e79","#ccac95","#9a947c","#748b83","#5b756c"],["#fcfef5","#e9ffe1","#cdcfb7","#d6e6c3","#fafbe3"],["#9cddc8","#bfd8ad","#ddd9ab","#f7af63","#633d2e"],["#30261c","#403831","#36544f","#1f5f61","#0b8185"],["#aaff00","#ffaa00","#ff00aa","#aa00ff","#00aaff"],["#d1313d","#e5625c","#f9bf76","#8eb2c5","#615375"],["#ffe181","#eee9e5","#fad3b2","#ffba7f","#ff9c97"],["#73c8a9","#dee1b6","#e1b866","#bd5532","#373b44"],["#805841","#dcf7f3","#fffcdd","#ffd8d8","#f5a2a2"]],getDebugLayoutObject=ua=>{var Ma,Ra,Ia;let{x:J,y:la,width:xa,height:Aa}={...ua,...ua.size,...ua.center,...ua.position};ua.x1!==void 0&&ua.x2!==void 0&&ua.y1!==void 0&&ua.y2!==void 0&&(J=(ua.x1+ua.x2)/2,la=(ua.y1+ua.y2)/2,xa=Math.abs(ua.x1-ua.x2),Aa=Math.abs(ua.y1-ua.y2));const ba=ua.text||ua.name||((Ma=ua.source)==null?void 0:Ma.text)||((Ra=ua.source)==null?void 0:Ra.name)||"?",Sa=ua;return J===void 0||la===void 0?null:(xa===void 0&&"outer_diameter"in ua&&(xa=ua.outer_diameter,Aa=ua.outer_diameter),(xa===void 0||Aa===void 0)&&(xa=.1,Aa=.1),{x:J,y:la,width:xa,height:Aa,title:ba,content:Sa,bg_color:((Ia=nice_color_palettes[stringHash(ua.type||ba)%nice_color_palettes.length])==null?void 0:Ia[4])??"#f00"})},isTruthy=ua=>!!ua,findBoundsAndCenter=ua=>{const J=ua.filter(Ia=>Ia.type.startsWith("pcb_")).concat(ua.filter(Ia=>Ia.type==="pcb_trace").flatMap(Ia=>Ia.route)).map(Ia=>getDebugLayoutObject(Ia)).filter(isTruthy);if(J.length===0)return{center:{x:0,y:0},width:0,height:0};let la=J[0].x-J[0].width/2,xa=J[0].x+J[0].width/2,Aa=J[0].y-J[0].height/2,ba=J[0].y+J[0].height/2;for(const Ia of J.slice(1))la=Math.min(la,Ia.x-Ia.width/2),xa=Math.max(xa,Ia.x+Ia.width/2),Aa=Math.min(Aa,Ia.y-Ia.height/2),ba=Math.max(ba,Ia.y+Ia.height/2);const Sa=xa-la,Ma=ba-Aa;return{center:{x:la+Sa/2,y:Aa+Ma/2},width:Sa,height:Ma}},createStore=(ua={})=>createStore$1(J=>({selected_layer:"top",pcb_viewer_id:`pcb_viewer_${Math.random().toString().slice(2,10)}`,in_edit_mode:!1,in_move_footprint_mode:!1,in_draw_trace_mode:!1,is_moving_component:!1,is_drawing_trace:!1,is_mouse_over_container:!1,is_showing_multiple_traces_length:!1,is_showing_rats_nest:!1,...ua,selectLayer:la=>J({selected_layer:la}),setEditMode:la=>J({in_edit_mode:la!=="off",in_move_footprint_mode:la==="move_footprint",in_draw_trace_mode:la==="draw_trace",is_moving_component:!1,is_drawing_trace:!1}),setIsShowingRatsNest:la=>J({is_showing_rats_nest:la}),setIsMovingComponent:la=>J({is_moving_component:la}),setIsDrawingTrace:la=>J({is_drawing_trace:la}),setIsMouseOverContainer:la=>J({is_mouse_over_container:la}),setIsShowingMultipleTracesLength:la=>J({is_showing_multiple_traces_length:la})})),useGlobalStore=ua=>{const J=reactExports.useContext(StoreContext);return useStore(J,ua)},StoreContext=reactExports.createContext(null),ContextProviders=({children:ua,initialState:J})=>{const la=reactExports.useMemo(()=>createStore(J),[]);return jsxRuntimeExports.jsx(StoreContext.Provider,{value:la,children:ua})},applyTraceHintEditEvent=(ua,J)=>{if(ua.find(xa=>xa.type==="pcb_trace_hint"&&xa.pcb_trace_hint_id===J.pcb_trace_hint_id))ua=ua.map(xa=>xa.pcb_trace_hint_id===J.pcb_trace_hint_id?{...xa,route:J.route}:xa);else{const xa=su_default$1(ua).pcb_port.get(J.pcb_port_id);ua=ua.filter(Aa=>!(Aa.type==="pcb_trace_hint"&&Aa.pcb_port_id===J.pcb_port_id)).concat([{type:"pcb_trace_hint",pcb_trace_hint_id:J.pcb_trace_hint_id,route:J.route,pcb_port_id:J.pcb_port_id,pcb_component_id:xa==null?void 0:xa.pcb_component_id}])}return ua},applyEditEvents=(ua,J)=>{ua=JSON.parse(JSON.stringify(ua));for(const la of J)if(la.pcb_edit_event_type==="edit_component_location"){const xa=translate(la.new_center.x-la.original_center.x,la.new_center.y-la.original_center.y);ua=ua.map(Aa=>Aa.pcb_component_id!==la.pcb_component_id?Aa:transformPCBElement(Aa,xa))}else la.pcb_edit_event_type==="edit_trace_hint"&&(ua=applyTraceHintEditEvent(ua,la));return ua},useToast=()=>{const ua=useGlobalStore(la=>la.pcb_viewer_id),J=(la,xa)=>B$1(la,{containerId:ua,...xa});return J.error=(la,xa)=>B$1.error(la,{containerId:ua,...xa}),J.promise=B$1.promise,J},ToastContainer=()=>{reactExports.useEffect(()=>{injectStyle()},[]);const ua=useGlobalStore(J=>J.pcb_viewer_id);return jsxRuntimeExports.jsx(Q$1,{position:"top-center",containerId:ua})},noop=function(){},isBrowser=typeof window<"u",useIsomorphicLayoutEffect$1=isBrowser?reactExports.useLayoutEffect:reactExports.useEffect,useIsomorphicLayoutEffect_default=useIsomorphicLayoutEffect$1,defaultState={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};function useMeasure(){var ua=reactExports.useState(null),J=ua[0],la=ua[1],xa=reactExports.useState(defaultState),Aa=xa[0],ba=xa[1],Sa=reactExports.useMemo(function(){return new window.ResizeObserver(function(Ma){if(Ma[0]){var Ra=Ma[0].contentRect,Ia=Ra.x,La=Ra.y,Fa=Ra.width,ka=Ra.height,el=Ra.top,tl=Ra.left,rl=Ra.bottom,il=Ra.right;ba({x:Ia,y:La,width:Fa,height:ka,top:el,left:tl,bottom:rl,right:il})}})},[]);return useIsomorphicLayoutEffect_default(function(){if(J)return Sa.observe(J),function(){Sa.disconnect()}},[J]),[la,Aa]}var useMeasure_default=isBrowser&&typeof window.ResizeObserver<"u"?useMeasure:function(){return[noop,defaultState]},useMouseMatrixTransform=(ua={})=>{const J=reactExports.useRef(null),[la,xa]=reactExports.useState(0),Aa=ua.canvasElm??J.current,[ba,Sa]=reactExports.useState(ua.initialTransform??identity$3()),[Ma,Ra]=reactExports.useState(0),[Ia,La]=reactExports.useReducer(il=>il+1,0),Fa=reactExports.useCallback(il=>{ua.onSetTransform&&ua.onSetTransform(il),ua.transform||Sa(il)},[ua.onSetTransform,Sa]),ka=reactExports.useCallback(il=>{Fa(il),La()},[Fa]),el=ua.transform??ba,tl=reactExports.useCallback(()=>{xa(Date.now())},[]);reactExports.useEffect(()=>{const il=ua.canvasElm??J.current;if(il&&!Aa){Ra(Ma+1);return}if(!il){const Fl=setTimeout(()=>{Ra(Ma+1)},100);return()=>clearTimeout(Fl)}let nl=ua.transform??ba,sl={x:0,y:0},ll={x:0,y:0},dl=!1;const gl=Fl=>({x:Fl.pageX-il.getBoundingClientRect().left-window.scrollX,y:Fl.pageY-il.getBoundingClientRect().top-window.scrollY});function _l(Fl){ua.enabled!==!1&&(ua.shouldDrag&&!ua.shouldDrag(Fl)||(sl=gl(Fl),!(Date.now()-la<100)&&(dl=!0,Fl.preventDefault())))}function vl(Fl){if(!dl||ua.enabled===!1||ua.shouldDrag&&!ua.shouldDrag(Fl))return;ll=gl(Fl);const Ol=compose(translate(ll.x-sl.x,ll.y-sl.y),nl);Fa(Ol),nl=Ol,dl=!1}function Tl(Fl){gl(Fl),!(!dl||ua.enabled===!1)&&(ua.shouldDrag&&!ua.shouldDrag(Fl)||(ll=gl(Fl),Fa(compose(translate(ll.x-sl.x,ll.y-sl.y),nl))))}function Ll(Fl){if(ua.enabled===!1||ua.shouldDrag&&!ua.shouldDrag(Fl))return;const Ol=gl(Fl),ql=compose(translate(Ol.x,Ol.y),scale$2(1-Fl.deltaY/1e3,1-Fl.deltaY/1e3),translate(-Ol.x,-Ol.y),nl);Fa(ql),nl=ql,Fl.preventDefault()}function Il(Fl){if(!dl||ua.shouldDrag&&!ua.shouldDrag(Fl))return;if(il){const ql=il.getBoundingClientRect();if(Fl.clientX>=ql.left+10&&Fl.clientX<=ql.right-10&&Fl.clientY>=ql.top+10&&Fl.clientY<=ql.bottom-10)return}dl=!1,ll=gl(Fl);const Ol=compose(translate(ll.x-sl.x,ll.y-sl.y),nl);Fa(Ol),nl=Ol}return il.addEventListener("mousedown",_l),il.addEventListener("mouseup",vl),window.addEventListener("mousemove",Tl),il.addEventListener("mouseout",Il),il.addEventListener("wheel",Ll),()=>{il.removeEventListener("mousedown",_l),il.removeEventListener("mouseup",vl),window.removeEventListener("mousemove",Tl),il.removeEventListener("mouseout",Il),il.removeEventListener("wheel",Ll)}},[Aa,Ma,Ia,la,ua.enabled,ua.shouldDrag]);const rl=reactExports.useCallback(il=>applyToPoint(el,il),[el]);return{ref:J,transform:el,applyTransformToPoint:rl,setTransform:ka,cancelDrag:tl}},src_default=useMouseMatrixTransform,colors_default={"3d_viewer":{background_bottom:"rgb(102, 102, 128)",background_top:"rgb(204, 204, 230)",board:"rgb(51, 43, 23)",copper:"rgb(179, 156, 0)",silkscreen_bottom:"rgb(230, 230, 230)",silkscreen_top:"rgb(230, 230, 230)",soldermask:"rgb(20, 51, 36)",solderpaste:"rgb(128, 128, 128)"},board:{anchor:"rgb(255, 38, 226)",aux_items:"rgb(255, 255, 255)",b_adhes:"rgb(0, 0, 132)",b_crtyd:"rgb(255, 38, 226)",b_fab:"rgb(88, 93, 132)",b_mask:"rgba(2, 255, 238, 0.400)",b_paste:"rgb(0, 194, 194)",b_silks:"rgb(232, 178, 167)",background:"rgb(0, 16, 35)",cmts_user:"rgb(89, 148, 220)",copper:{b:"rgb(77, 127, 196)",f:"rgb(200, 52, 52)",in1:"rgb(127, 200, 127)",in10:"rgb(237, 124, 51)",in11:"rgb(91, 195, 235)",in12:"rgb(247, 111, 142)",in13:"rgb(167, 165, 198)",in14:"rgb(40, 204, 217)",in15:"rgb(232, 178, 167)",in16:"rgb(242, 237, 161)",in17:"rgb(237, 124, 51)",in18:"rgb(91, 195, 235)",in19:"rgb(247, 111, 142)",in2:"rgb(206, 125, 44)",in20:"rgb(167, 165, 198)",in21:"rgb(40, 204, 217)",in22:"rgb(232, 178, 167)",in23:"rgb(242, 237, 161)",in24:"rgb(237, 124, 51)",in25:"rgb(91, 195, 235)",in26:"rgb(247, 111, 142)",in27:"rgb(167, 165, 198)",in28:"rgb(40, 204, 217)",in29:"rgb(232, 178, 167)",in3:"rgb(79, 203, 203)",in30:"rgb(242, 237, 161)",in4:"rgb(219, 98, 139)",in5:"rgb(167, 165, 198)",in6:"rgb(40, 204, 217)",in7:"rgb(232, 178, 167)",in8:"rgb(242, 237, 161)",in9:"rgb(141, 203, 129)"},cursor:"rgb(255, 255, 255)",drc:"rgb(194, 194, 194)",drc_error:"rgba(215, 91, 107, 0.800)",drc_exclusion:"rgb(255, 255, 255)",drc_warning:"rgba(255, 208, 66, 0.902)",dwgs_user:"rgb(194, 194, 194)",eco1_user:"rgb(180, 219, 210)",eco2_user:"rgb(216, 200, 82)",edge_cuts:"rgb(208, 210, 205)",f_adhes:"rgb(132, 0, 132)",f_crtyd:"rgb(255, 0, 245)",f_fab:"rgb(175, 175, 175)",f_mask:"rgba(216, 100, 255, 0.400)",f_paste:"rgba(180, 160, 154, 0.902)",f_silks:"rgb(242, 237, 161)",footprint_text_back:"rgb(0, 0, 132)",footprint_text_front:"rgb(194, 194, 194)",footprint_text_invisible:"rgb(132, 132, 132)",grid:"rgb(132, 132, 132)",grid_axes:"rgb(194, 194, 194)",margin:"rgb(255, 38, 226)",microvia:"rgb(0, 132, 132)",no_connect:"rgb(0, 0, 132)",pad_back:"rgb(77, 127, 196)",pad_front:"rgb(200, 52, 52)",pad_plated_hole:"rgb(194, 194, 0)",pad_through_hole:"rgb(227, 183, 46)",plated_hole:"rgb(26, 196, 210)",ratsnest:"rgba(245, 255, 213, 0.702)",select_overlay:"rgb(4, 255, 67)",through_via:"rgb(236, 236, 236)",user_1:"rgb(194, 194, 194)",user_2:"rgb(89, 148, 220)",user_3:"rgb(180, 219, 210)",user_4:"rgb(216, 200, 82)",user_5:"rgb(194, 194, 194)",user_6:"rgb(89, 148, 220)",user_7:"rgb(180, 219, 210)",user_8:"rgb(216, 200, 82)",user_9:"rgb(232, 178, 167)",via_blind_buried:"rgb(187, 151, 38)",via_hole:"rgb(227, 183, 46)",via_micro:"rgb(0, 132, 132)",via_through:"rgb(236, 236, 236)",worksheet:"rgb(200, 114, 171)"},gerbview:{axes:"rgb(0, 0, 132)",background:"rgb(0, 0, 0)",dcodes:"rgb(255, 255, 255)",grid:"rgb(132, 132, 132)",layers:["rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)"],negative_objects:"rgb(132, 132, 132)",worksheet:"rgb(0, 0, 132)"},palette:["rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)"],schematic:{anchor:"rgb(0, 0, 255)",aux_items:"rgb(0, 0, 0)",background:"rgb(33, 33, 33)",brightened:"rgb(204, 204, 204)",bus:"rgb(0, 96, 192)",bus_junction:"rgb(0, 96, 192)",component_body:"rgb(44, 44, 44)",component_outline:"rgb(192, 0, 0)",cursor:"rgb(224, 224, 224)",erc_error:"rgba(192, 48, 48, 0.800)",erc_warning:"rgba(192, 140, 0, 0.800)",fields:"rgb(128, 0, 160)",grid:"rgb(60, 60, 60)",grid_axes:"rgb(60, 60, 60)",hidden:"rgb(194, 194, 194)",junction:"rgb(0, 160, 0)",label_global:"rgb(0, 160, 224)",label_hier:"rgb(160, 160, 0)",label_local:"rgb(192, 192, 192)",net_name:"rgb(224, 224, 224)",no_connect:"rgb(97, 43, 224)",note:"rgb(192, 192, 0)",override_item_colors:!1,pin:"rgb(192, 0, 0)",pin_name:"rgb(192, 192, 192)",pin_number:"rgb(192, 0, 0)",reference:"rgb(192, 192, 192)",shadow:"rgba(102, 179, 255, 0.800)",sheet:"rgb(128, 0, 160)",sheet_background:"rgba(255, 255, 255, 0.000)",sheet_fields:"rgb(160, 160, 0)",sheet_filename:"rgb(160, 160, 0)",sheet_label:"rgb(160, 160, 0)",sheet_name:"rgb(0, 160, 204)",value:"rgb(192, 192, 192)",wire:"rgb(0, 160, 0)",worksheet:"rgb(192, 0, 0)"}},scaleOnly=(ua,J=1)=>{if(Math.abs(ua.a)!==Math.abs(ua.d))throw new Error("Cannot scale non-uniformly");return J*Math.abs(ua.a)},zIndexMap={elementOverlay:30,dimensionOverlay:30,editTraceHintOverlay:30,errorOverlay:30,ratsNestOverlay:20,toolbarOverlay:20,topLayer:10},LAYER_NAME_TO_COLOR$1={red:"red",black:"black",green:"green",board:"rgb(255, 255, 255)",other:"#eee",top:colors_default.board.copper.f,inner1:colors_default.board.copper.in1,inner2:colors_default.board.copper.in2,inner4:colors_default.board.copper.in4,inner5:colors_default.board.copper.in5,inner6:colors_default.board.copper.in6,inner7:colors_default.board.copper.in7,inner8:colors_default.board.copper.in8,bottom:colors_default.board.copper.b,drill:colors_default.board.anchor,keepout:colors_default.board.background,tkeepout:colors_default.board.b_crtyd,tplace:colors_default.board.b_silks,top_silkscreen:colors_default.board.f_silks,bottom_silkscreen:colors_default.board.b_silks,top_fabrication:colors_default.board.f_fab,bottom_fabrication:colors_default.board.b_fab,...colors_default.board},DEFAULT_DRAW_ORDER=["top","inner1","inner2","inner3","inner4","inner5","inner6","bottom"],Drawer=class{constructor(ua){jp(this,"canvasLayerMap");jp(this,"ctxLayerMap");jp(this,"aperture");jp(this,"transform");jp(this,"foregroundLayer","top");jp(this,"lastPoint");this.canvasLayerMap=ua,this.ctxLayerMap=Object.fromEntries(Object.entries(ua).map(([J,la])=>[J,la.getContext("2d")])),this.transform=identity$3(),this.transform.d*=-1,this.transform=compose(this.transform,translate(0,-500)),this.lastPoint={x:0,y:0},this.equip({})}clear(){for(const ua of Object.values(this.ctxLayerMap))ua.clearRect(0,0,ua.canvas.width,ua.canvas.height)}equip(ua){this.aperture={fontSize:0,shape:"circle",mode:"add",size:0,color:"red",layer:"top",opacity:this.foregroundLayer===ua.color?1:.5,...ua}}drawMeshPattern(ua,J,la,xa,Aa,ba=45){const Sa=this.getLayerCtx(),[Ma,Ra]=applyToPoint(this.transform,[ua,J]),[Ia,La]=applyToPoint(this.transform,[ua+la,J+xa]),Fa=scaleOnly(this.transform,Aa);Sa.lineWidth=1,Sa.strokeStyle=this.aperture.color;const ka=el=>{const tl=Math.sin(el),rl=Math.cos(el),il=Math.sqrt(Math.pow(Ia-Ma,2)+Math.pow(La-Ra,2));for(let nl=-il;nl<=il;nl+=Fa)Sa.beginPath(),Sa.moveTo(Ma+nl*rl-il*tl,Ra+nl*tl+il*rl),Sa.lineTo(Ma+nl*rl+il*tl,Ra+nl*tl-il*rl),Sa.stroke()};ka(ba*Math.PI/180),ka((ba+90)*Math.PI/180)}rect(ua,J,la,xa,Aa){const[ba,Sa]=applyToPoint(this.transform,[ua-la/2,J-xa/2]),[Ma,Ra]=applyToPoint(this.transform,[ua+la/2,J+xa/2]);this.applyAperture();const Ia=this.getLayerCtx();Aa?(Ia.save(),Ia.beginPath(),Ia.rect(ba,Sa,Ma-ba,Ra-Sa),Ia.clip(),this.drawMeshPattern(ua-la/2,J-xa/2,la,xa,.15),Ia.restore(),Ia.strokeRect(ba,Sa,Ma-ba,Ra-Sa)):Ia.fillRect(ba,Sa,Ma-ba,Ra-Sa)}rotatedRect(ua,J,la,xa,Aa,ba){const Sa=this.getLayerCtx();this.applyAperture();const[Ma,Ra]=applyToPoint(this.transform,[ua-la/2,J-xa/2]),[Ia,La]=applyToPoint(this.transform,[ua+la/2,J+xa/2]);Sa.save();const[Fa,ka]=applyToPoint(this.transform,[ua,J]);Sa.translate(Fa,ka);const el=360-Aa;Aa&&Sa.rotate(el*Math.PI/180),Sa.translate(-Fa,-ka),ba?(Sa.beginPath(),Sa.rect(Ma,Ra,Ia-Ma,La-Ra),Sa.clip(),this.drawMeshPattern(ua-la/2,J-xa/2,la,xa,.15),Sa.strokeRect(Ma,Ra,Ia-Ma,La-Ra)):Sa.fillRect(Ma,Ra,Ia-Ma,La-Ra),Sa.restore()}circle(ua,J,la,xa){const Aa=scaleOnly(this.transform,la),[ba,Sa]=applyToPoint(this.transform,[ua,J]);this.applyAperture();const Ma=this.getLayerCtx();xa?(Ma.save(),Ma.beginPath(),Ma.arc(ba,Sa,Aa,0,2*Math.PI),Ma.clip(),this.drawMeshPattern(ua-la,J-la,la*2,la*2,.15),Ma.restore(),Ma.beginPath(),Ma.arc(ba,Sa,Aa,0,2*Math.PI),Ma.stroke()):(Ma.beginPath(),Ma.arc(ba,Sa,Aa,0,2*Math.PI),Ma.fill())}oval(ua,J,la,xa){const Aa=scaleOnly(this.transform,la),ba=scaleOnly(this.transform,xa),[Sa,Ma]=applyToPoint(this.transform,[ua,J]);this.applyAperture();const Ra=this.getLayerCtx();Ra.beginPath(),Ra.ellipse(Sa,Ma,Aa,ba,0,0,2*Math.PI),Ra.fill(),Ra.closePath()}pill(ua,J,la,xa){const[Aa,ba]=applyToPoint(this.transform,[ua-la/2,J+xa/2]),Sa=scaleOnly(this.transform,la),Ma=scaleOnly(this.transform,xa),Ra=Math.min(Sa,Ma)/2;this.applyAperture();const Ia=this.getLayerCtx();Ia.beginPath(),Ia.arc(Aa+Ra,ba+Ra,Ra,Math.PI,Math.PI*1.5),Ia.arc(Aa+Sa-Ra,ba+Ra,Ra,Math.PI*1.5,0),Ia.arc(Aa+Sa-Ra,ba+Ma-Ra,Ra,0,Math.PI*.5),Ia.arc(Aa+Ra,ba+Ma-Ra,Ra,Math.PI*.5,Math.PI),Ia.fill(),Ia.closePath()}polygon(ua){if(ua.length<3)return;this.applyAperture();const J=this.getLayerCtx(),la=ua.map(Aa=>applyToPoint(this.transform,[Aa.x,Aa.y]));J.beginPath(),J.moveTo(la[0][0],la[0][1]);for(let Aa=1;Aa<la.length;Aa++)J.lineTo(la[Aa][0],la[Aa][1]);J.closePath(),J.fill();const xa=scaleOnly(this.transform,this.aperture.size);J.lineWidth=xa,J.stroke()}debugText(ua,J,la){const[xa,Aa]=applyToPoint(this.transform,[J,la]);this.applyAperture();const ba=this.getLayerCtx();ba.font="10px sans-serif",ba.fillText(ua,xa,Aa)}getLayerCtx(){const ua=this.ctxLayerMap[this.aperture.layer];if(!ua)throw new Error(`No context for layer "${this.aperture.layer}"`);return ua}orderAndFadeLayers(){const{canvasLayerMap:ua,foregroundLayer:J}=this,la=new Set([J,"drill","other","board"]);["drill","board",J,...DEFAULT_DRAW_ORDER.filter(Aa=>Aa!==J)].forEach((Aa,ba)=>{const Sa=ua[Aa];Sa&&(Sa.style.zIndex=`${zIndexMap.topLayer-ba}`,Sa.style.opacity=la.has(Aa)?"1":"0.5")})}applyAperture(){const{transform:ua,aperture:J}=this;let{size:la,mode:xa,color:Aa,fontSize:ba,layer:Sa}=J;Sa in this.ctxLayerMap||(this.aperture.layer="other");const Ma=this.getLayerCtx();if(!Ma)throw new Error(`No context for layer "${this.foregroundLayer}"`);if(Aa||(Aa="undefined"),Ma.lineWidth=scaleOnly(ua,la),Ma.lineCap="round",xa==="add"){let Ra=(Aa==null?void 0:Aa[0])==="#"||Aa!=null&&Aa.startsWith("rgb")?Aa:LAYER_NAME_TO_COLOR$1[Aa==null?void 0:Aa.toLowerCase()]?LAYER_NAME_TO_COLOR$1[Aa==null?void 0:Aa.toLowerCase()]:null;Ra===null&&(console.warn(`Color mapping for "${Aa}" not found`),Ra="white"),Ma.fillStyle=Ra,Ma.strokeStyle=Ra}else Ma.globalCompositeOperation="destination-out",Ma.fillStyle="rgba(0,0,0,1)",Ma.strokeStyle="rgba(0,0,0,1)";Ma.font=`${scaleOnly(inverse(ua),ba)}px sans-serif`}moveTo(ua,J){this.lastPoint={x:ua,y:J}}lineTo(ua,J){const[la,xa]=applyToPoint(this.transform,[ua,J]),{size:Aa,shape:ba,mode:Sa}=this.aperture,Ma=scaleOnly(this.transform,Aa);let{lastPoint:Ra}=this;const Ia=applyToPoint(this.transform,Ra);this.applyAperture();const La=this.getLayerCtx();ba==="square"&&La.fillRect(Ia.x-Ma/2,Ia.y-Ma/2,Ma,Ma),La.beginPath(),La.moveTo(Ia.x,Ia.y),La.lineTo(la,xa),La.stroke(),La.closePath(),ba==="square"&&La.fillRect(la-Ma/2,xa-Ma/2,Ma,Ma),this.lastPoint={x:ua,y:J}}};function rotateText(ua){const{lines:J,anchorPoint:la,ccwRotation:xa}=ua;if(!xa)return J;const Aa=xa*Math.PI/180,ba=rotate(Aa),Sa=compose(translate(la.x,la.y),ba,translate(-la.x,-la.y));return applyToPoint(Sa,la),J.map(Ma=>({...Ma,x1:applyToPoint(Sa,{x:Ma.x1,y:Ma.y1}).x,y1:applyToPoint(Sa,{x:Ma.x1,y:Ma.y1}).y,x2:applyToPoint(Sa,{x:Ma.x2,y:Ma.y2}).x,y2:applyToPoint(Sa,{x:Ma.x2,y:Ma.y2}).y}))}var svgAlphabet={0:"M0.4544564813877358 0L0.2723441540828736 0.03592830447352719L0.1086847233315459 0.14528754990019965L0.020630545837255005 0.3040632652221331L0 0.5395277421960205L0.049259221760993496 0.7369487828466779L0.18080513776237842 0.9005494166306564L0.37036887043974215 0.9872116270037247L0.5864663759301132 1L0.8148695622827444 0.9332890276148733L0.9326583645506394 0.8113052246023419L1 0.4031281830668562L0.833288960385582 0.09886798567812842L0.6801767918233781 0.02483708485091681L0.4544564813877358 0",1:"M 0.198 0.272 L 0.537 0 L 0.54 1",2:"M0.069593147751606 0.19461498231706575L0.1039380353319058 0.1224291500164194L0.20543361884368308 0.05510832064153169L0.3717712794432549 0.009452970962689482L0.4785344452623127 0L0.663238590738758 0.008714098643339864L0.8017933618843684 0.04769189395915288L0.8775637379550322 0.10746757678258442L0.9047778372591005 0.17693069668193287L0.9029710920770878 0.2231347105796246L0.8704496788008566 0.30047744598157516L0.7292906538577354 0.4508486051631194L0.3737955032119913 0.7369006417749693L0 1L1 1",3:"M0.03917438899874637 0.19855364635107545L0.15510940508963084 0.06745632622133718L0.37598645522339846 0L0.8486391893813088 0.0652271323161611L0.9782182415054349 0.21747394183735683L0.9213133780517754 0.3547560290117714L0.6504271515903481 0.4543436297681271L0.22975249764129613 0.48476611625264143L0.7659038682744629 0.5411919558122493L0.9258712987734741 0.6203185665660985L1 0.7458360609169667L0.8938813281118737 0.9059190913045964L0.6166890258875837 1L0.261528440153542 0.9874861530507921L0 0.8837289530851273",4:"M0.7328897338403042 0L0 0.6684672518568535L1 0.6684672518568535M0.7243346007604563 0.4530722484807562L0.7243346007604563 1",5:"M 0 0 L 0 0.4973 L 0.4262 0.4319 L 0.7305 0.4565 L 0.8516 0.5009 L 0.9357 0.5639 L 1 0.7356 L 0.9696 0.8248 L 0.8898 0.895 L 0.733 0.9602 L 0.5518 0.9945 L 0.3814 1 L 0.2379 0.9821 L 0.1219 0.947 L 0 0.8748 M 0 0 L 1 0",6:"M0.6964601700926856 0L0.3639239026215478 0.0743562375769351L0.1415931962925719 0.21735490179786915L0.009977939399608712 0.46336322325406004L0.00029622007592593224 0.7083131475173043L0.09408885043224748 0.8746809149767036L0.3379247445101846 0.9876686500961888L0.7109203869569624 1L0.9260852957913362 0.9103558029693921L1 0.7716571969091733L0.9824294723385016 0.6390635485705886L0.7446504992867332 0.4733643097729175L0.31028858071607296 0.47578021640899115L0.1208702146816024 0.5481452483973847L0 0.6616669755788906",7:"M0 0L1 0L0.9246479649697582 0.030539772727272752L0.8850302419354837 0.05075757575757579L0.7922946068548385 0.11079545454545457L0.7419268208165322 0.15213068181818185L0.6907258064516127 0.20202020202020204L0.6400666267641127 0.26122159090909086L0.5913243447580644 0.33049242424242414L0.5458740234374998 0.4105902777777778L0.5050907258064514 0.5022727272727272L0.4703495148689514 0.6062973484848484L0.43257456133442534 0.787133049242424L0.41612903225806447 1",8:"M0.5143001078924863 0L0.16007477667923162 0.10731570786949331L0.14924628550868277 0.3146018498698755L0.2939585848842112 0.41617921794558677L0.8648302624811545 0.5385163833653317L1 0.7775820770511038L0.8180842915260376 0.9505845566922285L0.41968938540525413 1L0.08062381919779889 0.882831681184498L0 0.6936376947135333L0.17150171673893433 0.5188652309607817L0.6529263782780712 0.4242818653203618L0.8650205888491803 0.29644027376796367L0.8702067371119496 0.09910067291661573L0.5143001078924863 0",9:"M1 0.25379591792994305L0.9514789771111742 0.11679361536614272L0.8702482473521467 0.05711741614054847L0.7327445265851579 0.015213872471965633L0.525248180711544 0L0.3292056884418538 0.012928195113745608L0.15997632037247655 0.058762870026191856L0.05266940041228321 0.12882439350476L0 0.2562067822770946L0.11316462894512366 0.4121335905917837L0.2403060136479954 0.4603365890068938L0.4097241967586011 0.4745978388276783L0.8642414300184816 0.420815170259988L0.9732054796346318 0.34537434075898393L1 0.25379591792994305M0.9647426784191072 0.35488595400360495L0.4756895081034974 1",A:"M0 1L0.4808333333333333 0L1 1M0.24250000000000002 0.6099439775910365L0.7341666666666666 0.6099439775910365",B:"M0 1L0 0.0117369978777208L0.30665717153513444 0L0.5874522807082946 0.03451403469442413L0.7766202217193218 0.15033936404895643L0.7471969743588041 0.31967962568332936L0.5246013359741988 0.4102978954282461L0.04378745314885416 0.44918617613783574L0.5112949594180156 0.469692928091109L0.8540266515643348 0.5552749498651879L1 0.6868463175009967L0.9880091196159324 0.8570018204672155L0.922301719975498 0.9321708046604659L0.7584266951758925 0.9932594737131338L0 1",C:"M1 0.23038928858890784L0.9328355511865092 0.12426412616785204L0.8096380839483327 0.04912601676267708L0.5763225801788256 0L0.4039037709527492 0.015028068281399815L0.2519579390951737 0.06533979308999706L0.10359458463139784 0.18146243506591617L0 0.4862728453971315L0.08129580872733055 0.792689266886982L0.20257034847159672 0.9160822255736587L0.3286572892798542 0.9738230826074175L0.5742878414421707 1L0.7883510303801312 0.9665431511195721L0.946851033994232 0.8689071500976585L1 0.7311049027121912",D:"M0 1L0.015604366822624637 0.020770988281483303L0.22564758265176144 0L0.3865476147957666 0.0024153386496795644L0.6479126635475078 0.051745644338731314L0.841191887805517 0.15827717679529366L0.9517008345536152 0.30172260586872185L0.9957536578687336 0.4504541551987709L1 0.5624359222498485L0.9798483279164735 0.6584121775234548L0.9386273319285215 0.7395945263504481L0.806292129480815 0.8624239259880274L0.6296239151398265 0.9406169638094516L0.3397492767598845 0.9954164354263132L0 1",E:"M0 0L0 1M0 0L1 0M0 0.5L0.7 0.5M0 1L1 1",F:"M0 0L0 1M0.011363636363636364 0.006802721088435374L1 0.006802721088435374M0.011363636363636364 0.4965986394557823L0.8409090909090909 0.4965986394557823",G:"M0.902666857540557 0.03860785012651126L0.6504261864675637 0L0.3838947267237336 0.015442305268228053L0.21293332876776194 0.07706794377239819L0.07799659974941617 0.1994951236187481L0 0.46380381528937314L0.04159964421546915 0.7502491408002389L0.13176692977834842 0.8535497868383203L0.2709176262273927 0.936767572377719L0.4386472596876406 0.9891638569283179L0.6145513562841309 1L0.7782254421419019 0.9585373611026471L0.9092650433859927 0.8540372997461425L1 0.5556012645283437L0.5583959277303046 0.55491741080559",H:"M0 0L0 1M0 0.4788732394366197L0.989010989010989 0.4788732394366197M1 0L1 1",I:"M0.5 0L0.5 1",J:"M0.9976457238788704 0L1 0.7396412315872798L0.9773931362096968 0.8322033314977973L0.9345115952458736 0.882296255506608L0.8743862896259549 0.9221331222466961L0.8024024079884948 0.9526431718061675L0.6443996712151668 0.9893997797356828L0.5035848940343224 1L0.3127211130319937 0.9877004749449337L0.17201910858386513 0.9539509911894274L0.10357419806379677 0.9212555066079295L0.053656568662899015 0.8816079295154184L0.020759483663648916 0.8360407488986785L0.003376206348523566 0.7855864537444934L0 0.7312775330396476",K:"M0 0L0 1M0.8787878787878788 0.06666666666666667L0 0.6148148148148148M0.3333333333333333 0.45925925925925926L1 0.9777777777777777",L:"M0 0L0 1L1 1",M:"M0 1L0 0L0.5 0.6512L1 0L1 1",N:"M0 1L0 0L1 1L0.9803729146221786 0",O:"M0.4718499217948183 1L0.2896765846490613 0.9606979309189402L0.12315162147934663 0.8411184486080473L0 0.4352399966492615L0.11730398524516283 0.13145645436014852L0.2612197451988078 0.04493357858878059L0.5104071592772554 0L0.7450113425917159 0.05393013710105273L0.882367950645524 0.15242300282020502L1 0.5224527406249126L0.9414597290654386 0.7560662329321755L0.8371289514446183 0.8910800547287298L0.6518259868433511 0.9830452628933628L0.4718499217948183 1",P:"M0 1L0 0.018871774228013626L0.29609603495819875 0L0.5609840637427541 0.011794858892508529L0.7332142696692472 0.04353904702296349L0.8102258645858864 0.0691965055027166L0.9330504315465442 0.14445061754775845L0.9876391714147118 0.22527816445836535L1 0.3434414070631638L0.9510549958116356 0.41772808046663146L0.8746646891596713 0.45879131862541683L0.7528523813396283 0.49171525113425024L0.5766919939969619 0.5153253033973054L0.33725744877712827 0.5284469008187558L0.025622667325582785 0.529905468802775",Q:"M0.4618887943546369 0.9755918167206952L0.28356128136544534 0.9372490397450218L0.12055179272160406 0.8205882753548176L0 0.4246165790405623L0.1148276047430244 0.12824784112887844L0.25570518844754375 0.043836831567190586L0.49963205786237674 0L0.7292835601228574 0.0526138004304122L0.8637404608452104 0.14870263423138746L0.9788892040030622 0.5097006183769648L0.9215847647858059 0.7376120297474734L0.8194564929275405 0.869330409436378L0.6380654214095985 0.9590509139448092L0.4618887943546369 0.9755918167206952M0.5824181120212351 0.6861805006946525L1 1",R:"M0 0.9928375167236815L0 0.02590227442068435L0.3611517274211098 0L0.6146286724700761 0.008660554424468435L0.7675462459194776 0.035269459580494614L0.831839975516866 0.056961676692569484L0.8847592491838954 0.08519560521497332L0.9238557535364527 0.120683646438422L0.9583303225312839 0.21691797435320384L0.955092470586235 0.3022616904894429L0.9198097669001631 0.3640573439322699L0.8564862239866702 0.40639258627024005L0.7691258543593579 0.43335506909190874L0.601775027203482 0.4539166070813109L0.023939064200217658 0.46997623755243123M0.5038084874863982 0.5108023922274467L1 1",S:"M0.8886929689221953 0.15146982162688968L0.7276173683050475 0.013780286031594946L0.34582323121005076 0L0.1318235250900008 0.09920162734298861L0.0444543935052531 0.2811287071349243L0.08064065829108809 0.3709571405906485L0.21603115127470426 0.4485505768228281L0.7525409135992945 0.5111160926769565L0.9330263665417677 0.5850732219351329L1 0.7129938124702524L0.9117772389978691 0.9130572743138187L0.6423187128058188 1L0.29586019579751677 0.9935291584506244L0.10638454191462794 0.9229845198431584L0 0.7570771288048773",T:"M0 0L1 0M0.5148514851485149 0L0.5148514851485149 1",U:"M0 0L0.0023103778751369115 0.5467447428390111L0.01823032542100219 0.6954785891481812L0.05895528135268338 0.8056480226151669L0.13703402031421133 0.8894445726483398L0.23918400876232196 0.9448524533417946L0.3917887458926616 0.9848674531975652L0.584341627875137 1L0.7194816196604602 0.9848501456716763L0.8303268115073934 0.9449411544119768L0.8966613970084885 0.898186315516197L0.9251437568455642 0.867453197565408L0.9687114937020809 0.7890904895145239L0.9890470974808324 0.6852857184065537L1 0.0014769088758762145",V:"M0 0L0.5348837209302325 1L1 0",W:"M0 0L0.23300090661831369 0.9873417721518988L0.49954669084315495 0.30081906180193585L0.7851314596554849 1L1 0.0215934475055845",X:"M0 0L0.9893617021276596 1M1 0L0.010638297872340425 1",Y:"M0 0L0.4860515021459227 0.44712562100780695M1 0.0014194464158977947L0.48927038626609437 0.44996451383960256L0.5075107296137339 1",Z:"M0 0L1 0L0 1L1 1",".":"M 0.49 1 L 0.41 1","*":"M 0.5 0.25 L 0.8 0.25 M 0.5 0.25 L 0.5927 0.4402 M 0.5 0.25 L 0.2573 0.3676 M 0.5 0.25 L 0.2573 0.1324 M 0.5 0.25 L 0.599 0.055","(":"M0.75 0L0.25 0.5L0.25 0.5L0.75 1",")":"M0.25 0L0.75 0.5L0.75 0.5L0.25 1","-":"M0 0.5L1 0.5","+":"M 0 0.5 L 1 0.5 M 0.5 0.125 L 0.5 0.875","=":"M0 0.25L1 0.25M0 0.75L1 0.75",_:"M0 1 L1 1","[":"M0.75 0L0.25 0L0.25 1L0.75 1","]":"M0.25 0L0.75 0L0.75 1L0.25 1","<":"M0.75 0L0.25 0.5L0.25 0.5L0.75 1",">":"M0.25 0L0.75 0.5L0.75 0.5L0.25 1","'":"M 0.5 0 L 0.5 0.5",'"':"M 0.25 0 L 0.25 0.5 M 0.75 0 L 0.75 0.5"},lineAlphabet={};for(const ua in svgAlphabet){lineAlphabet[ua]=[];const J=svgAlphabet[ua].split("M").slice(1).map(la=>la.split("L").map(xa=>xa.trim().split(" ").map(parseFloat)));for(const la of J)for(let xa=0;xa<la.length-1;xa++)lineAlphabet[ua].push({x1:la[xa][0],y1:1-la[xa][1],x2:la[xa+1][0],y2:1-la[xa+1][1]})}var LETTER_HEIGHT_TO_WIDTH_RATIO=.6,LETTER_HEIGHT_TO_SPACE_RATIO=.2,getTextWidth=ua=>ua.text.length*ua.size*LETTER_HEIGHT_TO_WIDTH_RATIO+(ua.text.length-1)*ua.size*LETTER_HEIGHT_TO_SPACE_RATIO,convertTextToLines=ua=>{const J=ua.size/8,la=ua.size*LETTER_HEIGHT_TO_WIDTH_RATIO,xa=ua.size*LETTER_HEIGHT_TO_SPACE_RATIO,Aa=[];for(let ba=0;ba<ua.text.length;ba++){const Sa=ua.text[ba],Ma=lineAlphabet[Sa.toUpperCase()];if(Ma)for(const{x1:Ra,y1:Ia,x2:La,y2:Fa}of Ma)Aa.push({pcb_drawing_type:"line",x1:ua.x+(la+xa)*ba+la*Ra,y1:ua.y+ua.size*Ia,x2:ua.x+(la+xa)*ba+la*La,y2:ua.y+ua.size*Fa,width:J,layer:ua.layer,unit:ua.unit})}return Aa};function getColor(ua){return ua.is_mouse_over||ua.is_in_highlighted_net?color(LAYER_NAME_TO_COLOR$1[ua.layer]).lighten(.5).rgb().toString():LAYER_NAME_TO_COLOR$1[ua.layer]}var drawLine=(ua,J)=>{ua.equip({size:J.zoomIndependent?J.width/ua.transform.a:J.width,shape:J.squareCap?"square":"circle",color:getColor(J),layer:J.layer}),ua.moveTo(J.x1,J.y1),ua.lineTo(J.x2,J.y2)},drawText=(ua,J)=>{ua.equip({fontSize:J.size,color:J.layer});let la={x:0,y:0};const xa=getTextWidth(J),Aa=J.size;J.align==="top_left"?la.y=-Aa:J.align==="bottom_right"?la.x=-xa:J.align==="top_right"?(la.x=-xa,la.y=-Aa):J.align==="center"&&(la.x=-xa/2,la.y=-Aa/2),J.x??(J.x=0),J.y??(J.y=0);const ba={x:J.x,y:J.y};let Sa=convertTextToLines({...J,x:J.x+la.x,y:J.y+la.y});if(J.ccw_rotation){const Ma={lines:Sa,anchorPoint:ba,ccwRotation:J.ccw_rotation};Sa=rotateText(Ma)}for(const Ma of Sa)drawLine(ua,Ma)},drawRect=(ua,J)=>{ua.equip({color:getColor(J),layer:J.layer}),ua.rect(J.x,J.y,J.w,J.h,J.mesh_fill)},drawRotatedRect=(ua,J)=>{ua.equip({color:getColor(J),layer:J.layer}),ua.rotatedRect(J.x,J.y,J.w,J.h,J.ccw_rotation)},drawCircle=(ua,J)=>{ua.equip({color:getColor(J),layer:J.layer}),ua.circle(J.x,J.y,J.r,J.mesh_fill)},drawOval=(ua,J)=>{ua.equip({color:getColor(J),layer:J.layer}),ua.oval(J.x,J.y,J.rX,J.rY)},drawPill=(ua,J)=>{ua.equip({color:getColor(J),layer:J.layer}),ua.pill(J.x,J.y,J.w,J.h)},drawPolygon=(ua,J)=>{ua.equip({color:getColor(J),layer:J.layer}),ua.polygon(J.points)},drawPrimitive=(ua,J)=>{var la;switch(J.pcb_drawing_type){case"line":return drawLine(ua,J);case"text":return drawText(ua,J);case"rect":return((la=J._element)==null?void 0:la.shape)==="rotated_rect"?drawRotatedRect(ua,{...J,ccw_rotation:J._element.ccw_rotation,mesh_fill:J.mesh_fill}):drawRect(ua,J);case"circle":return drawCircle(ua,J);case"oval":return drawOval(ua,J);case"pill":return drawPill(ua,J);case"polygon":return drawPolygon(ua,J)}},drawPrimitives=(ua,J)=>{J.sort((la,xa)=>{const Aa=["bottom","top","drill"];return Aa.indexOf(la.layer)-Aa.indexOf(xa.layer)}),J.forEach(la=>drawPrimitive(ua,la))},CanvasPrimitiveRenderer=({primitives:ua,transform:J,grid:la,width:xa=500,height:Aa=500})=>{const ba=reactExports.useRef(),Sa=useGlobalStore(Ma=>Ma.selected_layer);return reactExports.useEffect(()=>{if(!ba.current||Object.keys(ba.current).length===0)return;const Ma=new Drawer(ba.current);J&&(Ma.transform=J),Ma.clear(),Ma.foregroundLayer=Sa,drawPrimitives(Ma,ua),Ma.orderAndFadeLayers()},[ua,J,Sa]),jsxRuntimeExports.jsxs("div",{style:{backgroundColor:"black",width:xa,height:Aa,position:"relative"},children:[jsxRuntimeExports.jsx(SuperGridExports.SuperGrid,{textColor:"rgba(0,255,0,0.8)",majorColor:"rgba(0,255,0,0.4)",minorColor:"rgba(0,255,0,0.2)",screenSpaceCellSize:200,width:xa,height:Aa,transform:J,stringifyCoord:(Ma,Ra,Ia)=>`${SuperGridExports.toMMSI(Ma,Ia)}, ${SuperGridExports.toMMSI(Ra,Ia)}`}),all_layers.map(Ma=>Ma.replace(/-/g,"")).concat(["drill","other"]).map((Ma,Ra)=>jsxRuntimeExports.jsx("canvas",{ref:Ia=>{ba.current??(ba.current={}),ba.current[Ma]=Ia},style:{position:"absolute",left:0,top:0,pointerEvents:"none"},width:xa,height:Aa},Ma))]})};function getExpandedStroke(ua,J){if(ua.length<2)throw new Error("Stroke must have at least two points");const la=ua.map(Fa=>Array.isArray(Fa)?{x:Fa[0],y:Fa[1]}:Fa),xa=[],Aa=[];function ba(Fa,ka){const el=ka.x-Fa.x,tl=ka.y-Fa.y,rl=Math.sqrt(el*el+tl*tl);return{x:-tl/rl,y:el/rl}}function Sa(Fa,ka,el,tl){const rl=tl/2,il={x:Fa.x+ka.x*rl*el,y:Fa.y+ka.y*rl*el};el>0?xa.push(il):Aa.unshift(il)}const Ma=ba(la[0],la[1]),Ra=la[0].trace_width??J;Sa(la[0],Ma,1,Ra),Sa(la[0],Ma,-1,Ra);for(let Fa=1;Fa<la.length-1;Fa++){const ka=la[Fa-1],el=la[Fa],tl=la[Fa+1],rl=ba(ka,el),il=ba(el,tl),nl=rl.x+il.x,sl=rl.y+il.y,ll=Math.sqrt(nl*nl+sl*sl),dl=el.trace_width??J;if(ll/2>2*(dl/2))Sa(el,rl,1,dl),Sa(el,il,1,dl),Sa(el,rl,-1,dl),Sa(el,il,-1,dl);else{const _l=1/ll;Sa(el,{x:nl*_l,y:sl*_l},1,dl),Sa(el,{x:nl*_l,y:sl*_l},-1,dl)}}const Ia=ba(la[la.length-2],la[la.length-1]),La=la[la.length-1].trace_width??J;return Sa(la[la.length-1],Ia,1,La),Sa(la[la.length-1],Ia,-1,La),[...xa,...Aa]}var globalPcbDrawingObjectCount=0,convertElementToPrimitives=(ua,J)=>{var Sa;const la="pcb_component_id"in ua?J.find(Ma=>Ma.type==="pcb_component"&&Ma.pcb_component_id===ua.pcb_component_id):void 0,xa=la&&"source_component_id"in la?J.find(Ma=>Ma.type==="source_component"&&Ma.source_component_id===la.source_component_id):void 0,Aa="source_port_id"in ua?ua.source_port_id:"pcb_port_id"in ua?(Sa=su_default$1(J).pcb_port.get(ua.pcb_port_id))==null?void 0:Sa.source_port_id:void 0,ba=Aa?J.find(Ma=>Ma.type==="source_port"&&Ma.source_port_id===Aa):void 0;switch(ua.type){case"pcb_board":{const{width:Ma,height:Ra,center:Ia,outline:La}=ua;return La&&La.length>2?La.map((Fa,ka,el)=>({_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:Fa.x,y1:Fa.y,x2:ka===el.length-1?el[0].x:el[ka+1].x,y2:ka===el.length-1?el[0].y:el[ka+1].y,width:1,zoomIndependent:!0,layer:"board",_element:ua})):[{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:Ia.x-Ma/2,y1:Ia.y-Ra/2,x2:Ia.x+Ma/2,y2:Ia.y-Ra/2,width:1,zoomIndependent:!0,layer:"board",_element:ua},{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:Ia.x-Ma/2,y1:Ia.y+Ra/2,x2:Ia.x+Ma/2,y2:Ia.y+Ra/2,width:1,zoomIndependent:!0,layer:"board",_element:ua},{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:Ia.x-Ma/2,y1:Ia.y-Ra/2,x2:Ia.x-Ma/2,y2:Ia.y+Ra/2,width:1,zoomIndependent:!0,layer:"board",_element:ua},{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:Ia.x+Ma/2,y1:Ia.y-Ra/2,x2:Ia.x+Ma/2,y2:Ia.y+Ra/2,width:1,zoomIndependent:!0,layer:"board",_element:ua}]}case"pcb_smtpad":{if(ua.shape==="rect"||ua.shape==="rotated_rect"){const{shape:Ma,x:Ra,y:Ia,width:La,height:Fa,layer:ka}=ua;return[{_pcb_drawing_object_id:`rect_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"rect",x:Ra,y:Ia,w:La,h:Fa,layer:ka||"top",_element:ua,_parent_pcb_component:la,_parent_source_component:xa,_source_port:ba}]}else if(ua.shape==="circle"){const{x:Ma,y:Ra,radius:Ia,layer:La}=ua;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:Ma,y:Ra,r:Ia,layer:La||"top",_element:ua,_parent_pcb_component:la,_parent_source_component:xa,_source_port:ba}]}return[]}case"pcb_hole":{if(ua.hole_shape==="circle"||!ua.hole_shape){const{x:Ma,y:Ra,hole_diameter:Ia}=ua;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:Ma,y:Ra,r:Ia/2,layer:"drill",_element:ua,_parent_pcb_component:la,_parent_source_component:xa}]}return[]}case"pcb_plated_hole":if(ua.shape==="circle"){const{x:Ma,y:Ra,hole_diameter:Ia,outer_diameter:La}=ua;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:Ma,y:Ra,r:La/2,layer:"top",_element:ua,_parent_pcb_component:la,_parent_source_component:xa,_source_port:ba},{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:Ma,y:Ra,r:Ia/2,layer:"drill",_element:ua}]}else if(ua.shape==="oval"){const{x:Ma,y:Ra,outer_height:Ia,outer_width:La,hole_height:Fa,hole_width:ka}=ua;return[{_pcb_drawing_object_id:`oval_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"oval",x:Ma,y:Ra,rX:La/2,rY:Ia/2,layer:"top",_element:ua,_parent_pcb_component:la,_parent_source_component:xa,_source_port:ba},{_pcb_drawing_object_id:`oval_${globalPcbDrawingObjectCount++}`,_element:ua,pcb_drawing_type:"oval",x:Ma,y:Ra,rX:ka/2,rY:Fa/2,layer:"drill"}]}else if(ua.shape==="pill"){const{x:Ma,y:Ra,outer_height:Ia,outer_width:La,hole_height:Fa,hole_width:ka}=ua;return[{_pcb_drawing_object_id:`pill_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"pill",x:Ma,y:Ra,w:La,h:Ia,layer:"top",_element:ua,_parent_pcb_component:la,_parent_source_component:xa,_source_port:ba},{_pcb_drawing_object_id:`pill_${globalPcbDrawingObjectCount++}`,_element:ua,pcb_drawing_type:"pill",x:Ma,y:Ra,w:ka,h:Fa,layer:"drill"}]}else return[];case"pcb_keepout":if(ua.shape==="circle"){const{center:Ma,radius:Ra}=ua;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:Ma.x,y:Ma.y,r:Ra,layer:"top",_element:ua,_parent_pcb_component:la,_parent_source_component:xa,mesh_fill:!0}]}else if(ua.shape==="rect"){const{x:Ma,y:Ra,width:Ia,height:La}=ua;return[{_pcb_drawing_object_id:`rect_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"rect",x:Ma,y:Ra,w:Ia,h:La,layer:"top",_element:ua,_parent_pcb_component:la,_parent_source_component:xa,mesh_fill:!0}]}case"pcb_trace":{const Ma=[];if(ua.route_thickness_mode==="interpolated"){const La=ua.route.map(ka=>({x:ka.x,y:ka.y,trace_width:ka.route_type==="wire"?ka.width:.5})),Fa=getExpandedStroke(La,.5);return Ma.push({_pcb_drawing_object_id:`polygon_${globalPcbDrawingObjectCount++}`,_element:ua,pcb_drawing_type:"polygon",points:Fa,layer:ua.route[0].layer}),ua.route.forEach(ka=>{ka.route_type==="via"&&Ma.push({_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,_element:ua,pcb_drawing_type:"circle",x:ka.x,y:ka.y,radius:ka.outer_diameter/2,fill:!0,layer:ua.route.layer})}),Ma}let Ra=null,Ia=null;for(const La of ua.route)La.route_type==="wire"&&(Ra!==null&&Ia!==null&&Ma.push({_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,_element:ua,pcb_drawing_type:"line",x1:Ra,y1:Ia,x2:La.x,y2:La.y,width:La.width,squareCap:!1,layer:La.layer}),Ra=La.x,Ia=La.y);return Ma}case"pcb_via":{const{x:Ma,y:Ra,outer_diameter:Ia,hole_diameter:La,from_layer:Fa,to_layer:ka}=ua;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:Ma,y:Ra,r:Ia/2,layer:Fa,_element:ua,_parent_pcb_component:la,_parent_source_component:xa},{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,_element:ua,pcb_drawing_type:"circle",x:Ma,y:Ra,r:La/2,layer:"drill",_parent_pcb_component:la,_parent_source_component:xa},{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:Ma,y:Ra,r:Ia/2,layer:ka,_element:ua,_parent_pcb_component:la,_parent_source_component:xa}]}case"pcb_silkscreen_rect":return[{_pcb_drawing_object_id:`rect_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"rect",x:ua.center.x,y:ua.center.y,w:ua.width,h:ua.height,layer:ua.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_circle":return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:ua.center.x,y:ua.center.y,r:ua.radius,layer:ua.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_oval":return[{_pcb_drawing_object_id:`oval_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"oval",x:ua.center.x,y:ua.center.y,rX:ua.radius_x/2,rY:ua.radius_y/2,layer:ua.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_pill":return[{_pcb_drawing_object_id:`pill_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"pill",x:ua.center.x,y:ua.center.y,w:ua.width,h:ua.height,layer:ua.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_line":return[{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:ua.x1,y1:ua.y1,x2:ua.x2,y2:ua.y2,width:.1,squareCap:!1,layer:ua.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_fabrication_note_path":case"pcb_silkscreen_path":{const{pcb_component_id:Ma,route:Ra,type:Ia}=ua;let La;return Ia==="pcb_silkscreen_path"?La=ua.layer==="bottom"?"bottom_silkscreen":"top_silkscreen":Ia==="pcb_fabrication_note_path"&&(La="top_fabrication"),Ra.slice(0,-1).map((Fa,ka)=>{const el=Ra[ka+1];return{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:Fa.x,y1:Fa.y,x2:el.x,y2:el.y,width:ua.stroke_width??.1,squareCap:!1,layer:La,_element:ua,_parent_pcb_component:la,_parent_source_component:xa,_source_port:ba}}).filter(Boolean)}case"pcb_silkscreen_text":return[{_pcb_drawing_object_id:`text_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"text",x:ua.anchor_position.x,y:ua.anchor_position.y,layer:ua.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",align:ua.anchor_alignment??"center",text:ua.text,size:ua.font_size,ccw_rotation:ua.ccw_rotation}];case"pcb_fabrication_note_text":return[{_pcb_drawing_object_id:`text_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"text",x:ua.anchor_position.x,y:ua.anchor_position.y,layer:ua.layer==="bottom"?"bottom_fabrication":"top_fabrication",size:ua.font_size,align:ua.anchor_alignment??"center",text:ua.text}]}return[]};function getTraceOverlayInfo({primitiveElement:ua,elements:J}){let la=ua.trace_length?`${ua.trace_length.toFixed(3)}`:"";const xa=su_default$1(J).source_trace.get(ua==null?void 0:ua.source_trace_id);if(xa!=null&&xa.display_name&&(xa!=null&&xa.max_length?la+=` / ${xa.max_length}mm `:la+=" mm ",la+=`(${xa.display_name})`),!la)return null;const Aa=ua.trace_length&&(xa==null?void 0:xa.max_length)&&ua.trace_length>xa.max_length;return{text:la,isOverLength:Aa}}function filterTracesIfMultiple(ua){const{primitives:J,is_showing_multiple_traces_length:la,elements:xa}=ua,Aa=J.filter(Ra=>Ra._element.type==="pcb_trace"),ba=xa.filter(Ra=>Ra.type==="source_trace"),Sa=J.filter(Ra=>Ra._element.type!=="pcb_trace"),Ma=Aa.filter(Ra=>ba.some(Ia=>Ra._element.type==="pcb_trace"&&Ra._element.source_trace_id===Ia.source_trace_id&&Ia.max_length!==void 0));if(!la)return[...Sa,...Ma];if(Aa.length>1){const Ra=Aa.reduce((Ia,La)=>{const Fa=Ia._element.trace_length;return La._element.trace_length<Fa?La:Ia},Aa[0]);return[...Sa,Ra]}return J}var containerStyle={position:"absolute",left:0,top:0,pointerEvents:"none",color:"red",fontFamily:"sans-serif",fontSize:12,textShadow:"0 0 2px black"},getTextForHighlightedPrimitive=ua=>{const{_element:J,_parent_pcb_component:la,_parent_source_component:xa,_source_port:Aa}=ua;switch(J.type){case"pcb_trace":return J.trace_length?`${J.trace_length.toFixed(3)}`:"";case"pcb_smtpad":case"pcb_plated_hole":{let ba="";xa&&"name"in xa&&xa.name&&(ba+=`.${xa.name} > `);const Sa=Array.from(new Set((J.port_hints??[]).concat((Aa==null?void 0:Aa.port_hints)??[]))).sort((Ma,Ra)=>Ra.localeCompare(Ma));return ba+=Sa.map(Ma=>Ma.match(/^[0-9]+$/)?`port.${Ma}`:`.${Ma}`).join(", "),ba}default:return""}},layerColorHightlightMap={top:"red",bottom:"aqua"},HighlightedPrimitiveBoxWithText=({primitive:ua,mousePos:J,elements:la})=>{var tl;const[xa,Aa]=reactExports.useState(!1),ba=ua._element;reactExports.useEffect(()=>{setTimeout(()=>{Aa(!0)},100)},[]);let[Sa,Ma,Ra,Ia]=[ua.screen_x,ua.screen_y,ua.screen_w,ua.screen_h];const La=ua.same_space_index??0,Fa=26,ka=layerColorHightlightMap[(tl=ua==null?void 0:ua._element)==null?void 0:tl.layer]??"red";let el=0;if(ba.type==="pcb_smtpad"&&(ba==null?void 0:ba.shape)==="rotated_rect"&&(el=ba==null?void 0:ba.ccw_rotation),ba.type==="pcb_trace"){const il=getTraceOverlayInfo({primitiveElement:ba,elements:la});if(!il)return null;const nl=J.y-35;return jsxRuntimeExports.jsx("div",{style:{zIndex:zIndexMap.elementOverlay,position:"absolute",left:J.x,top:nl,color:ka,pointerEvents:"none",transform:"translateX(-50%)"},children:jsxRuntimeExports.jsx("div",{style:{backgroundColor:"#f2efcc",color:il.isOverLength?"red":"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",minWidth:"45px",textAlign:"center",whiteSpace:"nowrap"},children:il.text})})}return jsxRuntimeExports.jsx("div",{style:{zIndex:zIndexMap.elementOverlay,position:"absolute",left:Sa-Ra/2-8,top:Ma-Ia/2-8,width:Ra+16,height:Ia+16,color:ka,transform:`rotate(${-el}deg)`,transformOrigin:"center center"},children:jsxRuntimeExports.jsx("div",{style:{width:xa?`calc(100% + ${Fa*2*La}px)`:"100%",height:xa?`calc(100% + ${Fa*2*La}px)`:"100%",marginLeft:xa?`${-Fa*La}px`:0,marginTop:xa?`${-Fa*La}px`:0,border:`1px solid ${ka}`,opacity:xa||La===0?1:0,transition:"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s"},children:jsxRuntimeExports.jsx("div",{style:{position:"absolute",bottom:Ia+20+Fa*La,marginRight:xa?`${-Fa*La}px`:0,marginBottom:xa?0:-Fa*La,transition:"margin-right 0.2s, margin-bottom 0.2s",backgroundColor:"#f2efcc",color:"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",transform:`rotate(${el}deg)`,minWidth:"45px",textAlign:"center"},children:getTextForHighlightedPrimitive(ua)})})})},ElementOverlayBox=({highlightedPrimitives:ua,mousePos:J,elements:la})=>{const[xa,Aa]=useGlobalStore(Ma=>[Ma.is_moving_component,Ma.is_showing_multiple_traces_length]),ba=ua.some(Ma=>Ma._element.type==="pcb_smtpad")&&ua.some(Ma=>Ma._element.type==="pcb_trace");let Sa=ua;return ba&&(Sa=Sa.filter(Ma=>Ma._element.type==="pcb_smtpad")),Sa=filterTracesIfMultiple({primitives:Sa,is_showing_multiple_traces_length:Aa,elements:la}),jsxRuntimeExports.jsx("div",{style:containerStyle,children:!xa&&Sa.map((Ma,Ra)=>jsxRuntimeExports.jsx(HighlightedPrimitiveBoxWithText,{primitive:Ma,mousePos:J,elements:la},Ra))})};function ifSetsMatchExactly(ua,J){return ua.size!==J.size?!1:Array.from(ua).every(la=>J.has(la))}var MouseElementTracker=({elements:ua,children:J,transform:la,primitives:xa,onMouseHoverOverPrimitives:Aa})=>{const[ba,Sa]=reactExports.useState([]),[Ma,Ra]=reactExports.useState({x:0,y:0}),Ia=reactExports.useMemo(()=>{var Fa,ka;const La=[];for(const el of ba){if(((Fa=el._element)==null?void 0:Fa.type)==="pcb_via"||((ka=el._element)==null?void 0:ka.type)==="pcb_component"||(el==null?void 0:el.layer)==="drill")continue;const tl=applyToPoint(la,el),rl="w"in el?el.w:"r"in el?el.r*2:0,il="h"in el?el.h:"r"in el?el.r*2:0,nl={w:rl*la.a,h:il*la.a};let sl=La.filter(ll=>tl.x===ll.screen_x&&tl.y===ll.screen_y&&nl.w===ll.screen_w&&nl.h===ll.screen_h).length;La.push({...el,screen_x:tl.x,screen_y:tl.y,screen_w:nl.w,screen_h:nl.h,same_space_index:sl})}return La},[ba,la]);return jsxRuntimeExports.jsxs("div",{style:{position:"relative"},onMouseMove:La=>{var Fa;if(la){const ka=La.currentTarget.getBoundingClientRect(),el=La.clientX-ka.left,tl=La.clientY-ka.top;Ra({x:el,y:tl});const rl=applyToPoint(inverse(la),{x:el,y:tl}),il=[];for(const nl of xa){if(!nl._element)continue;if("x1"in nl&&((Fa=nl._element)==null?void 0:Fa.type)==="pcb_trace"){const dl=pointToSegmentDistance({x:rl.x,y:rl.y},{x:nl.x1,y:nl.y1},{x:nl.x2,y:nl.y2}),gl=nl.width||.5,_l=Math.max(gl*25,2)/la.a;dl<_l&&il.push(nl);continue}if(!("x"in nl&&"y"in nl))continue;let sl=0,ll=0;if("w"in nl&&"h"in nl)sl=nl.w,ll=nl.h;else if("r"in nl)sl=nl.r*2,ll=nl.r*2;else continue;Math.abs(nl.x-rl.x)<sl/2&&Math.abs(nl.y-rl.y)<ll/2&&il.push(nl)}if(ifSetsMatchExactly(new Set(il.map(nl=>nl._pcb_drawing_object_id)),new Set(ba.map(nl=>nl._pcb_drawing_object_id))))return;Sa(il),Aa(il)}},children:[J,jsxRuntimeExports.jsx(ElementOverlayBox,{elements:ua,mousePos:Ma,highlightedPrimitives:Ia})]})},DimensionOverlay=({children:ua,transform:J})=>{J||(J=identity$3());const[la,xa]=reactExports.useState(!1),[Aa,ba]=reactExports.useState(!1),[Sa,Ma]=reactExports.useState({x:0,y:0}),[Ra,Ia]=reactExports.useState({x:0,y:0}),La=reactExports.useRef({x:0,y:0}),Fa=reactExports.useRef(null),ka=Fa.current,el=ka==null?void 0:ka.getBoundingClientRect();reactExports.useEffect(()=>{const nl=Fa.current,sl=gl=>{gl.key==="d"&&(Ma({x:La.current.x,y:La.current.y}),Ia({x:La.current.x,y:La.current.y}),xa(_l=>!_l),ba(!0),gl.preventDefault()),gl.key==="Escape"&&(xa(!1),ba(!1))},ll=()=>{nl&&nl.addEventListener("keydown",sl)},dl=()=>{nl&&nl.removeEventListener("keydown",sl)};return nl&&(nl.addEventListener("focus",ll),nl.addEventListener("blur",dl),nl.addEventListener("mouseenter",ll),nl.addEventListener("mouseleave",dl)),()=>{nl&&(nl.removeEventListener("focus",ll),nl.removeEventListener("blur",dl),nl.removeEventListener("mouseenter",ll),nl.removeEventListener("mouseleave",dl))}},[Fa]);const tl=applyToPoint(J,Sa),rl=applyToPoint(J,Ra),il={left:Math.min(tl.x,rl.x),right:Math.max(tl.x,rl.x),top:Math.min(tl.y,rl.y),bottom:Math.max(tl.y,rl.y),flipX:tl.x>rl.x,flipY:tl.y>rl.y,width:0,height:0};return il.width=il.right-il.left,il.height=il.bottom-il.top,jsxRuntimeExports.jsxs("div",{ref:Fa,tabIndex:0,style:{position:"relative"},onMouseEnter:()=>{Fa.current&&Fa.current.focus()},onMouseLeave:()=>{Fa.current&&Fa.current.blur()},onMouseMove:nl=>{const sl=nl.currentTarget.getBoundingClientRect(),ll=nl.clientX-sl.left,dl=nl.clientY-sl.top,gl=applyToPoint(inverse(J),{x:ll,y:dl});La.current.x=gl.x,La.current.y=gl.y,Aa&&Ia({x:gl.x,y:gl.y})},onMouseDown:()=>{Aa?ba(!1):la&&xa(!1)},children:[ua,la&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{style:{position:"absolute",left:il.left,width:il.width,textAlign:"center",top:tl.y+2,color:"red",mixBlendMode:"difference",pointerEvents:"none",marginTop:il.flipY?0:-20,fontSize:12,fontFamily:"sans-serif",zIndex:zIndexMap.dimensionOverlay},children:Math.abs(Sa.x-Ra.x).toFixed(2)}),jsxRuntimeExports.jsx("div",{style:{position:"absolute",left:rl.x,height:il.height,display:"flex",flexDirection:"column",justifyContent:"center",top:il.top,color:"red",pointerEvents:"none",mixBlendMode:"difference",fontSize:12,fontFamily:"sans-serif",zIndex:zIndexMap.dimensionOverlay},children:jsxRuntimeExports.jsx("div",{style:{marginLeft:il.flipX?"-100%":4,paddingRight:4},children:Math.abs(Sa.y-Ra.y).toFixed(2)})}),jsxRuntimeExports.jsxs("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none",mixBlendMode:"difference",zIndex:zIndexMap.dimensionOverlay},width:el.width,height:el.height,children:[jsxRuntimeExports.jsx("defs",{children:jsxRuntimeExports.jsx("marker",{id:"head",orient:"auto",markerWidth:"3",markerHeight:"4",refX:"2",refY:"2",children:jsxRuntimeExports.jsx("path",{d:"M0,0 V4 L2,2 Z",fill:"red"})})}),jsxRuntimeExports.jsx("line",{x1:tl.x,y1:tl.y,x2:rl.x,y2:rl.y,markerEnd:"url(#head)",strokeWidth:1.5,fill:"none",stroke:"red"}),jsxRuntimeExports.jsx("line",{x1:tl.x,y1:tl.y,x2:rl.x,y2:tl.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"}),jsxRuntimeExports.jsx("line",{x1:rl.x,y1:tl.y,x2:rl.x,y2:rl.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"})]}),jsxRuntimeExports.jsxs("div",{style:{right:0,bottom:0,position:"absolute",color:"red",fontFamily:"sans-serif",fontSize:12,margin:4},children:["(",Sa.x.toFixed(2),",",Sa.y.toFixed(2),")",jsxRuntimeExports.jsx("br",{}),"(",Ra.x.toFixed(2),",",Ra.y.toFixed(2),")",jsxRuntimeExports.jsx("br",{}),"dist:"," ",Math.sqrt(Math.pow(Ra.x-Sa.x,2)+Math.pow(Ra.y-Sa.y,2)).toFixed(2)]})]})]})},package_default={name:"@tscircuit/pcb-viewer",version:"1.11.28",main:"dist/index.js",type:"module",repository:"tscircuit/pcb-viewer",license:"MIT",scripts:{start:"storybook dev -p 6006",build:"tsup ./src/index.tsx --platform browser --dts --sourcemap --format esm --outDir dist",yalc:"npm run build && yalc push",storybook:"storybook dev -p 6006","build-storybook":"storybook build",format:"biome format . --write","format:check":"biome format ."},files:["dist"],devDependencies:{"@biomejs/biome":"^1.9.4","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@storybook/nextjs":"^8.0.6","@storybook/react":"^8.0.6","@swc/core":"^1.4.12","@tscircuit/core":"0.0.272","@tscircuit/eagle-xml-converter":"^1.0.0","@tscircuit/props":"^0.0.130","@tscircuit/soup-util":"^0.0.41","@types/color":"^3.0.6","@types/node":"18.7.23","@types/react":"^18.3.3","circuit-json":"^0.0.128",next:"^14.1.4","pixi.js":"^8.6.6",react:"^18.2.0","react-dom":"^18.2.0","react-use":"^17.4.0",storybook:"^8.0.6",tsup:"^8.0.2","type-fest":"^3.0.0",typescript:"^5.4.4","use-mouse-matrix-transform":"^1.3.0",zod:"^3.23.5"},peerDependencies:{react:"*","@tscircuit/core":"*"},dependencies:{"@emotion/css":"^11.11.2","circuit-json-to-connectivity-map":"^0.0.18","@tscircuit/math-utils":"^0.0.10","circuit-to-svg":"^0.0.36",color:"^4.2.3","react-supergrid":"^1.0.10","react-toastify":"^10.0.5","transformation-matrix":"^2.13.0",zustand:"^4.5.2"}},useHotKey=(ua,J)=>{const la=useGlobalStore(xa=>xa.is_mouse_over_container);reactExports.useEffect(()=>{if(!ua||typeof J!="function")return;const xa=Aa=>{const ba=ua.split("+"),Sa=ba.includes("ctrl"),Ma=ba.includes("shift"),Ra=ba.includes("alt"),Ia=ba.includes("meta"),La=ba[ba.length-1];la&&(!Sa||Aa.ctrlKey)&&(!Ma||Aa.shiftKey)&&(!Ra||Aa.altKey)&&(!Ia||Aa.metaKey)&&Aa.key.toLowerCase()===La.toLowerCase()&&(Aa.preventDefault(),J())};return window.addEventListener("keydown",xa),()=>{window.removeEventListener("keydown",xa)}},[ua,J])},LayerButton=({name:ua,selected:J,onClick:la})=>jsxRuntimeExports.jsxs("div",{className:css`
|
|
22439
22439
|
margin-top: 2px;
|
|
22440
22440
|
padding: 4px;
|