@tscircuit/runframe 0.0.61 → 0.0.63

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.
@@ -7142,7 +7142,7 @@ var wV=1,_V=6,dl=8,nl=10,Il=4;function LV(ol){return MV<<ol}function OV(ol){retu
7142
7142
  }
7143
7143
  `,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(ZV){this.uniforms.diffuse.value=ZV}},worldUnits:{enumerable:!0,get:function(){return"WORLD_UNITS"in this.defines},set:function(ZV){ZV===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(ZV){this.uniforms.linewidth.value=ZV}},dashed:{enumerable:!0,get:function(){return"USE_DASH"in this.defines},set(ZV){!!ZV!="USE_DASH"in this.defines&&(this.needsUpdate=!0),ZV===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(ZV){this.uniforms.dashScale.value=ZV}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(ZV){this.uniforms.dashSize.value=ZV}},dashOffset:{enumerable:!0,get:function(){return this.uniforms.dashOffset.value},set:function(ZV){this.uniforms.dashOffset.value=ZV}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(ZV){this.uniforms.gapSize.value=ZV}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(ZV){this.uniforms.opacity.value=ZV}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(ZV){this.uniforms.resolution.value.copy(ZV)}},alphaToCoverage:{enumerable:!0,get:function(){return"USE_ALPHA_TO_COVERAGE"in this.defines},set:function(ZV){!!ZV!="USE_ALPHA_TO_COVERAGE"in this.defines&&(this.needsUpdate=!0),ZV===!0?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1)}}}),this.setValues(UV)}}lV.LineMaterial=VV}(LineMaterial$1)),LineMaterial$1}var hasRequiredWireframe;function requireWireframe(){return hasRequiredWireframe||(hasRequiredWireframe=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=requireLineSegmentsGeometry(),RV=requireLineMaterial(),UV=new J.Vector3,ZV=new J.Vector3,WV=new J.Vector4;class IV extends J.Mesh{constructor(CV=new VV.LineSegmentsGeometry,FV=new RV.LineMaterial({color:Math.random()*16777215})){super(CV,FV),this.isWireframe=!0,this.type="Wireframe"}computeLineDistances(){const CV=this.geometry,FV=CV.attributes.instanceStart,NV=CV.attributes.instanceEnd,gV=new Float32Array(2*FV.count);for(let JV=0,nV=0,aV=FV.count;JV<aV;JV++,nV+=2)UV.fromBufferAttribute(FV,JV),ZV.fromBufferAttribute(NV,JV),gV[nV]=nV===0?0:gV[nV-1],gV[nV+1]=gV[nV]+UV.distanceTo(ZV);const eV=new J.InstancedInterleavedBuffer(gV,2,1);return CV.setAttribute("instanceDistanceStart",new J.InterleavedBufferAttribute(eV,1,0)),CV.setAttribute("instanceDistanceEnd",new J.InterleavedBufferAttribute(eV,1,1)),this}onBeforeRender(CV){const FV=this.material.uniforms;FV&&FV.resolution&&(CV.getViewport(WV),this.material.uniforms.resolution.value.set(WV.z,WV.w))}}lV.Wireframe=IV}(Wireframe$1)),Wireframe$1}var WireframeGeometry2={},hasRequiredWireframeGeometry2;function requireWireframeGeometry2(){return hasRequiredWireframeGeometry2||(hasRequiredWireframeGeometry2=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=requireLineSegmentsGeometry();class RV extends VV.LineSegmentsGeometry{constructor(ZV){super(),this.isWireframeGeometry2=!0,this.type="WireframeGeometry2",this.fromWireframeGeometry(new J.WireframeGeometry(ZV))}}lV.WireframeGeometry2=RV}(WireframeGeometry2)),WireframeGeometry2}var Line2$1={},LineSegments2$1={},hasRequiredLineSegments2;function requireLineSegments2(){return hasRequiredLineSegments2||(hasRequiredLineSegments2=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=requireLineSegmentsGeometry(),RV=requireLineMaterial(),UV=requireUv1(),ZV=new J.Vector4,WV=new J.Vector3,IV=new J.Vector3,dV=new J.Vector4,CV=new J.Vector4,FV=new J.Vector4,NV=new J.Vector3,gV=new J.Matrix4,eV=new J.Line3,JV=new J.Vector3,nV=new J.Box3,aV=new J.Sphere,GV=new J.Vector4;let cV,TV;function iV(pV,HV,oV){return GV.set(0,0,-HV,1).applyMatrix4(pV.projectionMatrix),GV.multiplyScalar(1/GV.w),GV.x=TV/oV.width,GV.y=TV/oV.height,GV.applyMatrix4(pV.projectionMatrixInverse),GV.multiplyScalar(1/GV.w),Math.abs(Math.max(GV.x,GV.y))}function tV(pV,HV){const oV=pV.matrixWorld,DV=pV.geometry,wV=DV.attributes.instanceStart,_V=DV.attributes.instanceEnd,dl=Math.min(DV.instanceCount,wV.count);for(let nl=0,Il=dl;nl<Il;nl++){eV.start.fromBufferAttribute(wV,nl),eV.end.fromBufferAttribute(_V,nl),eV.applyMatrix4(oV);const LV=new J.Vector3,OV=new J.Vector3;cV.distanceSqToSegment(eV.start,eV.end,OV,LV),OV.distanceTo(LV)<TV*.5&&HV.push({point:OV,pointOnLine:LV,distance:cV.origin.distanceTo(OV),object:pV,face:null,faceIndex:nl,uv:null,[UV.UV1]:null})}}function MV(pV,HV,oV){const DV=HV.projectionMatrix,_V=pV.material.resolution,dl=pV.matrixWorld,nl=pV.geometry,Il=nl.attributes.instanceStart,LV=nl.attributes.instanceEnd,OV=Math.min(nl.instanceCount,Il.count),$V=-HV.near;cV.at(1,FV),FV.w=1,FV.applyMatrix4(HV.matrixWorldInverse),FV.applyMatrix4(DV),FV.multiplyScalar(1/FV.w),FV.x*=_V.x/2,FV.y*=_V.y/2,FV.z=0,NV.copy(FV),gV.multiplyMatrices(HV.matrixWorldInverse,dl);for(let Cl=0,Zl=OV;Cl<Zl;Cl++){if(dV.fromBufferAttribute(Il,Cl),CV.fromBufferAttribute(LV,Cl),dV.w=1,CV.w=1,dV.applyMatrix4(gV),CV.applyMatrix4(gV),dV.z>$V&&CV.z>$V)continue;if(dV.z>$V){const rl=dV.z-CV.z,Pl=(dV.z-$V)/rl;dV.lerp(CV,Pl)}else if(CV.z>$V){const rl=CV.z-dV.z,Pl=(CV.z-$V)/rl;CV.lerp(dV,Pl)}dV.applyMatrix4(DV),CV.applyMatrix4(DV),dV.multiplyScalar(1/dV.w),CV.multiplyScalar(1/CV.w),dV.x*=_V.x/2,dV.y*=_V.y/2,CV.x*=_V.x/2,CV.y*=_V.y/2,eV.start.copy(dV),eV.start.z=0,eV.end.copy(CV),eV.end.z=0;const pl=eV.closestPointToPointParameter(NV,!0);eV.at(pl,JV);const ml=J.MathUtils.lerp(dV.z,CV.z,pl),Bl=ml>=-1&&ml<=1,jl=NV.distanceTo(JV)<TV*.5;if(Bl&&jl){eV.start.fromBufferAttribute(Il,Cl),eV.end.fromBufferAttribute(LV,Cl),eV.start.applyMatrix4(dl),eV.end.applyMatrix4(dl);const rl=new J.Vector3,Pl=new J.Vector3;cV.distanceSqToSegment(eV.start,eV.end,Pl,rl),oV.push({point:Pl,pointOnLine:rl,distance:cV.origin.distanceTo(Pl),object:pV,face:null,faceIndex:Cl,uv:null,[UV.UV1]:null})}}}class AV extends J.Mesh{constructor(HV=new VV.LineSegmentsGeometry,oV=new RV.LineMaterial({color:Math.random()*16777215})){super(HV,oV),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const HV=this.geometry,oV=HV.attributes.instanceStart,DV=HV.attributes.instanceEnd,wV=new Float32Array(2*oV.count);for(let dl=0,nl=0,Il=oV.count;dl<Il;dl++,nl+=2)WV.fromBufferAttribute(oV,dl),IV.fromBufferAttribute(DV,dl),wV[nl]=nl===0?0:wV[nl-1],wV[nl+1]=wV[nl]+WV.distanceTo(IV);const _V=new J.InstancedInterleavedBuffer(wV,2,1);return HV.setAttribute("instanceDistanceStart",new J.InterleavedBufferAttribute(_V,1,0)),HV.setAttribute("instanceDistanceEnd",new J.InterleavedBufferAttribute(_V,1,1)),this}raycast(HV,oV){const DV=this.material.worldUnits,wV=HV.camera;wV===null&&!DV&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const _V=HV.params.Line2!==void 0&&HV.params.Line2.threshold||0;cV=HV.ray;const dl=this.matrixWorld,nl=this.geometry,Il=this.material;TV=Il.linewidth+_V,nl.boundingSphere===null&&nl.computeBoundingSphere(),aV.copy(nl.boundingSphere).applyMatrix4(dl);let LV;if(DV)LV=TV*.5;else{const $V=Math.max(wV.near,aV.distanceToPoint(cV.origin));LV=iV(wV,$V,Il.resolution)}if(aV.radius+=LV,cV.intersectsSphere(aV)===!1)return;nl.boundingBox===null&&nl.computeBoundingBox(),nV.copy(nl.boundingBox).applyMatrix4(dl);let OV;if(DV)OV=TV*.5;else{const $V=Math.max(wV.near,nV.distanceToPoint(cV.origin));OV=iV(wV,$V,Il.resolution)}nV.expandByScalar(OV),cV.intersectsBox(nV)!==!1&&(DV?tV(this,oV):MV(this,wV,oV))}onBeforeRender(HV){const oV=this.material.uniforms;oV&&oV.resolution&&(HV.getViewport(ZV),this.material.uniforms.resolution.value.set(ZV.z,ZV.w))}}lV.LineSegments2=AV}(LineSegments2$1)),LineSegments2$1}var hasRequiredLine2$1;function requireLine2$1(){return hasRequiredLine2$1||(hasRequiredLine2$1=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireLineSegments2(),VV=requireLineGeometry(),RV=requireLineMaterial();class UV extends J.LineSegments2{constructor(WV=new VV.LineGeometry,IV=new RV.LineMaterial({color:Math.random()*16777215})){super(WV,IV),this.isLine2=!0,this.type="Line2"}}lV.Line2=UV}(Line2$1)),Line2$1}var LightProbeHelper={},hasRequiredLightProbeHelper;function requireLightProbeHelper(){return hasRequiredLightProbeHelper||(hasRequiredLightProbeHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV extends J.Mesh{constructor(UV,ZV){const WV=new J.ShaderMaterial({type:"LightProbeHelperMaterial",uniforms:{sh:{value:UV.sh.coefficients},intensity:{value:UV.intensity}},vertexShader:["varying vec3 vNormal;","void main() {"," vNormal = normalize( normalMatrix * normal );"," gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join(`
7144
7144
  `),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(`
7145
- `)}),IV=new J.SphereGeometry(1,32,16);super(IV,WV),this.lightProbe=UV,this.size=ZV,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}}lV.LightProbeHelper=VV}(LightProbeHelper)),LightProbeHelper}var VertexTangentsHelper={},hasRequiredVertexTangentsHelper;function requireVertexTangentsHelper(){return hasRequiredVertexTangentsHelper||(hasRequiredVertexTangentsHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=new J.Vector3,RV=new J.Vector3;class UV extends J.LineSegments{constructor(WV,IV=1,dV=65535){const CV=new J.BufferGeometry,FV=WV.geometry.attributes.tangent.count,NV=new J.Float32BufferAttribute(FV*2*3,3);CV.setAttribute("position",NV),super(CV,new J.LineBasicMaterial({color:dV,toneMapped:!1})),this.object=WV,this.size=IV,this.type="VertexTangentsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0);const WV=this.object.matrixWorld,IV=this.geometry.attributes.position,dV=this.object.geometry,CV=dV.attributes.position,FV=dV.attributes.tangent;let NV=0;for(let gV=0,eV=CV.count;gV<eV;gV++)VV.fromBufferAttribute(CV,gV).applyMatrix4(WV),RV.fromBufferAttribute(FV,gV),RV.transformDirection(WV).multiplyScalar(this.size).add(VV),IV.setXYZ(NV,VV.x,VV.y,VV.z),NV=NV+1,IV.setXYZ(NV,RV.x,RV.y,RV.z),NV=NV+1;IV.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}lV.VertexTangentsHelper=UV}(VertexTangentsHelper)),VertexTangentsHelper}var PositionalAudioHelper={},hasRequiredPositionalAudioHelper;function requirePositionalAudioHelper(){return hasRequiredPositionalAudioHelper||(hasRequiredPositionalAudioHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV extends J.Line{constructor(UV,ZV=1,WV=16,IV=2){const dV=new J.BufferGeometry,CV=WV+IV*2,FV=new Float32Array((CV*3+3)*3);dV.setAttribute("position",new J.BufferAttribute(FV,3));const NV=new J.LineBasicMaterial({color:65280}),gV=new J.LineBasicMaterial({color:16776960});super(dV,[gV,NV]),this.type="PositionalAudioHelper",this.audio=UV,this.range=ZV,this.divisionsInnerAngle=WV,this.divisionsOuterAngle=IV,this.update()}update(){const UV=this.audio,ZV=this.range,WV=this.divisionsInnerAngle,IV=this.divisionsOuterAngle,dV=J.MathUtils.degToRad(UV.panner.coneInnerAngle),CV=J.MathUtils.degToRad(UV.panner.coneOuterAngle),FV=dV/2,NV=CV/2;let gV=0,eV=0,JV,nV;const aV=this.geometry,GV=aV.attributes.position;aV.clearGroups();function cV(TV,iV,tV,MV){const AV=(iV-TV)/tV;for(GV.setXYZ(gV,0,0,0),eV++,JV=TV;JV<iV;JV+=AV)nV=gV+eV,GV.setXYZ(nV,Math.sin(JV)*ZV,0,Math.cos(JV)*ZV),GV.setXYZ(nV+1,Math.sin(Math.min(JV+AV,iV))*ZV,0,Math.cos(Math.min(JV+AV,iV))*ZV),GV.setXYZ(nV+2,0,0,0),eV+=3;aV.addGroup(gV,eV,MV),gV+=eV,eV=0}cV(-NV,-FV,IV,0),cV(-FV,FV,WV,1),cV(FV,NV,IV,0),GV.needsUpdate=!0,dV===CV&&(this.material[0].visible=!1)}dispose(){this.geometry.dispose(),this.material[0].dispose(),this.material[1].dispose()}}lV.PositionalAudioHelper=VV}(PositionalAudioHelper)),PositionalAudioHelper}var VertexNormalsHelper={},hasRequiredVertexNormalsHelper;function requireVertexNormalsHelper(){return hasRequiredVertexNormalsHelper||(hasRequiredVertexNormalsHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=new J.Vector3,RV=new J.Vector3,UV=new J.Matrix3;class ZV extends J.LineSegments{constructor(IV,dV=1,CV=16711680){const FV=new J.BufferGeometry,NV=IV.geometry.attributes.normal.count,gV=new J.Float32BufferAttribute(NV*2*3,3);FV.setAttribute("position",gV),super(FV,new J.LineBasicMaterial({color:CV,toneMapped:!1})),this.object=IV,this.size=dV,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),UV.getNormalMatrix(this.object.matrixWorld);const IV=this.object.matrixWorld,dV=this.geometry.attributes.position,CV=this.object.geometry;if(CV){const FV=CV.attributes.position,NV=CV.attributes.normal;let gV=0;for(let eV=0,JV=FV.count;eV<JV;eV++)VV.fromBufferAttribute(FV,eV).applyMatrix4(IV),RV.fromBufferAttribute(NV,eV),RV.applyMatrix3(UV).normalize().multiplyScalar(this.size).add(VV),dV.setXYZ(gV,VV.x,VV.y,VV.z),gV=gV+1,dV.setXYZ(gV,RV.x,RV.y,RV.z),gV=gV+1}dV.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}lV.VertexNormalsHelper=ZV}(VertexNormalsHelper)),VertexNormalsHelper}var RectAreaLightHelper={},hasRequiredRectAreaLightHelper;function requireRectAreaLightHelper(){return hasRequiredRectAreaLightHelper||(hasRequiredRectAreaLightHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV extends J.Line{constructor(UV,ZV){const WV=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],IV=new J.BufferGeometry;IV.setAttribute("position",new J.Float32BufferAttribute(WV,3)),IV.computeBoundingSphere();const dV=new J.LineBasicMaterial({fog:!1});super(IV,dV),this.light=UV,this.color=ZV,this.type="RectAreaLightHelper";const CV=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],FV=new J.BufferGeometry;FV.setAttribute("position",new J.Float32BufferAttribute(CV,3)),FV.computeBoundingSphere(),this.add(new J.Mesh(FV,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 UV=this.material.color,ZV=Math.max(UV.r,UV.g,UV.b);ZV>1&&UV.multiplyScalar(1/ZV),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()}}lV.RectAreaLightHelper=VV}(RectAreaLightHelper)),RectAreaLightHelper}var RectAreaLightUniformsLib={},hasRequiredRectAreaLightUniformsLib;function requireRectAreaLightUniformsLib(){return hasRequiredRectAreaLightUniformsLib||(hasRequiredRectAreaLightUniformsLib=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV{static init(){const UV=[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],ZV=[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],WV=new Float32Array(UV),IV=new Float32Array(ZV);J.UniformsLib.LTC_FLOAT_1=new J.DataTexture(WV,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(IV,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 dV=new Uint16Array(UV.length);UV.forEach(function(FV,NV){dV[NV]=J.DataUtils.toHalfFloat(FV)});const CV=new Uint16Array(ZV.length);ZV.forEach(function(FV,NV){CV[NV]=J.DataUtils.toHalfFloat(FV)}),J.UniformsLib.LTC_HALF_1=new J.DataTexture(dV,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(CV,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}}lV.RectAreaLightUniformsLib=VV}(RectAreaLightUniformsLib)),RectAreaLightUniformsLib}var LightProbeGenerator={},hasRequiredLightProbeGenerator;function requireLightProbeGenerator(){return hasRequiredLightProbeGenerator||(hasRequiredLightProbeGenerator=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV{static fromCubeTexture(UV){let ZV=0;const WV=new J.Vector3,IV=new J.Vector3,dV=new J.Color,CV=[0,0,0,0,0,0,0,0,0],FV=new J.SphericalHarmonics3,NV=FV.coefficients;for(let eV=0;eV<6;eV++){const JV=UV.image[eV],nV=JV.width,aV=JV.height,GV=document.createElement("canvas");GV.width=nV,GV.height=aV;const cV=GV.getContext("2d");cV.drawImage(JV,0,0,nV,aV);const TV=cV.getImageData(0,0,nV,aV),iV=TV.data,tV=TV.width,MV=2/tV;for(let AV=0,pV=iV.length;AV<pV;AV+=4){dV.setRGB(iV[AV]/255,iV[AV+1]/255,iV[AV+2]/255),"colorSpace"in UV?UV.colorSpace==="srgb"&&dV.convertSRGBToLinear():UV.encoding===3001&&dV.convertSRGBToLinear();const HV=AV/4,oV=-1+(HV%tV+.5)*MV,DV=1-(Math.floor(HV/tV)+.5)*MV;switch(eV){case 0:WV.set(-1,DV,-oV);break;case 1:WV.set(1,DV,oV);break;case 2:WV.set(-oV,1,-DV);break;case 3:WV.set(-oV,-1,DV);break;case 4:WV.set(-oV,DV,1);break;case 5:WV.set(oV,DV,-1);break}const wV=WV.lengthSq(),_V=4/(Math.sqrt(wV)*wV);ZV+=_V,IV.copy(WV).normalize(),J.SphericalHarmonics3.getBasisAt(IV,CV);for(let dl=0;dl<9;dl++)NV[dl].x+=CV[dl]*dV.r*_V,NV[dl].y+=CV[dl]*dV.g*_V,NV[dl].z+=CV[dl]*dV.b*_V}}const gV=4*Math.PI/ZV;for(let eV=0;eV<9;eV++)NV[eV].x*=gV,NV[eV].y*=gV,NV[eV].z*=gV;return new J.LightProbe(FV)}static fromCubeRenderTarget(UV,ZV){let WV=0;const IV=new J.Vector3,dV=new J.Vector3,CV=new J.Color,FV=[0,0,0,0,0,0,0,0,0],NV=new J.SphericalHarmonics3,gV=NV.coefficients;for(let JV=0;JV<6;JV++){const nV=ZV.width,aV=new Uint8Array(nV*nV*4);UV.readRenderTargetPixels(ZV,0,0,nV,nV,aV,JV);const GV=2/nV;for(let cV=0,TV=aV.length;cV<TV;cV+=4){CV.setRGB(aV[cV]/255,aV[cV+1]/255,aV[cV+2]/255),"colorSpace"in ZV.texture?ZV.texture.colorSpace==="srgb"&&CV.convertSRGBToLinear():ZV.texture.encoding===3001&&CV.convertSRGBToLinear();const iV=cV/4,tV=-1+(iV%nV+.5)*GV,MV=1-(Math.floor(iV/nV)+.5)*GV;switch(JV){case 0:IV.set(1,MV,-tV);break;case 1:IV.set(-1,MV,tV);break;case 2:IV.set(tV,1,-MV);break;case 3:IV.set(tV,-1,MV);break;case 4:IV.set(tV,MV,1);break;case 5:IV.set(-tV,MV,-1);break}const AV=IV.lengthSq(),pV=4/(Math.sqrt(AV)*AV);WV+=pV,dV.copy(IV).normalize(),J.SphericalHarmonics3.getBasisAt(dV,FV);for(let HV=0;HV<9;HV++)gV[HV].x+=FV[HV]*CV.r*pV,gV[HV].y+=FV[HV]*CV.g*pV,gV[HV].z+=FV[HV]*CV.b*pV}}const eV=4*Math.PI/WV;for(let JV=0;JV<9;JV++)gV[JV].x*=eV,gV[JV].y*=eV,gV[JV].z*=eV;return new J.LightProbe(NV)}}lV.LightProbeGenerator=VV}(LightProbeGenerator)),LightProbeGenerator}var NURBSSurface={},hasRequiredNURBSSurface;function requireNURBSSurface(){return hasRequiredNURBSSurface||(hasRequiredNURBSSurface=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=requireNURBSUtils();class RV{constructor(ZV,WV,IV,dV,CV){this.degree1=ZV,this.degree2=WV,this.knots1=IV,this.knots2=dV,this.controlPoints=[];const FV=IV.length-ZV-1,NV=dV.length-WV-1;for(let gV=0;gV<FV;++gV){this.controlPoints[gV]=[];for(let eV=0;eV<NV;++eV){const JV=CV[gV][eV];this.controlPoints[gV][eV]=new J.Vector4(JV.x,JV.y,JV.z,JV.w)}}}getPoint(ZV,WV,IV){const dV=this.knots1[0]+ZV*(this.knots1[this.knots1.length-1]-this.knots1[0]),CV=this.knots2[0]+WV*(this.knots2[this.knots2.length-1]-this.knots2[0]);VV.calcSurfacePoint(this.degree1,this.degree2,this.knots1,this.knots2,this.controlPoints,dV,CV,IV)}}lV.NURBSSurface=RV}(NURBSSurface)),NURBSSurface}var CurveExtras={},hasRequiredCurveExtras;function requireCurveExtras(){return hasRequiredCurveExtras||(hasRequiredCurveExtras=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV extends J.Curve{getPoint(cV,TV=new J.Vector3){const iV=TV;cV=2*Math.PI*cV;const tV=-.22*Math.cos(cV)-1.28*Math.sin(cV)-.44*Math.cos(3*cV)-.78*Math.sin(3*cV),MV=-.1*Math.cos(2*cV)-.27*Math.sin(2*cV)+.38*Math.cos(4*cV)+.46*Math.sin(4*cV),AV=.7*Math.cos(3*cV)-.4*Math.sin(3*cV);return iV.set(tV,MV,AV).multiplyScalar(20)}}class RV extends J.Curve{constructor(cV=5){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=2*Math.PI;const tV=16*Math.pow(Math.sin(cV),3),MV=13*Math.cos(cV)-5*Math.cos(2*cV)-2*Math.cos(3*cV)-Math.cos(4*cV);return iV.set(tV,MV,0).multiplyScalar(this.scale)}}class UV extends J.Curve{constructor(cV=70){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV=cV*4*Math.PI;const tV=this.scale/2,MV=tV*(1+Math.cos(cV)),AV=tV*Math.sin(cV),pV=2*tV*Math.sin(cV/2);return iV.set(MV,AV,pV)}}class ZV extends J.Curve{getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=2*Math.PI;const tV=10,MV=50,AV=MV*Math.sin(cV),pV=Math.cos(cV)*(tV+MV*Math.cos(cV)),HV=Math.sin(cV)*(tV+MV*Math.cos(cV));return iV.set(AV,pV,HV)}}class WV extends J.Curve{getPoint(cV,TV=new J.Vector3){const iV=TV,tV=30,MV=150,AV=2*Math.PI*cV*MV/30,pV=Math.cos(AV)*tV,HV=Math.sin(AV)*tV,oV=MV*cV;return iV.set(pV,HV,oV)}}class IV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=Math.PI*2;const tV=(2+Math.cos(3*cV))*Math.cos(2*cV),MV=(2+Math.cos(3*cV))*Math.sin(2*cV),AV=Math.sin(3*cV);return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}class dV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=3,MV=4;cV*=Math.PI*2;const AV=(2+Math.cos(MV*cV))*Math.cos(tV*cV),pV=(2+Math.cos(MV*cV))*Math.sin(tV*cV),HV=Math.sin(MV*cV);return iV.set(AV,pV,HV).multiplyScalar(this.scale)}}class CV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=2,MV=5;cV*=Math.PI*2;const AV=(2+Math.cos(MV*cV))*Math.cos(tV*cV),pV=(2+Math.cos(MV*cV))*Math.sin(tV*cV),HV=Math.sin(MV*cV);return iV.set(AV,pV,HV).multiplyScalar(this.scale)}}class FV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV=cV*4-2;const tV=Math.pow(cV,3)-3*cV,MV=Math.pow(cV,4)-4*cV*cV,AV=1/5*Math.pow(cV,5)-2*cV;return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}function NV(GV,cV,TV){const iV=cV-GV;return TV*iV+GV}class gV extends J.Curve{constructor(cV=1){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV=NV(-4,4,cV);const tV=2/5*cV*(cV*cV-7)*(cV*cV-10),MV=Math.pow(cV,4)-13*cV*cV,AV=1/10*cV*(cV*cV-4)*(cV*cV-9)*(cV*cV-12);return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}class eV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=Math.PI*2;const tV=Math.cos(2*cV)*(1+.6*(Math.cos(5*cV)+.75*Math.cos(10*cV))),MV=Math.sin(2*cV)*(1+.6*(Math.cos(5*cV)+.75*Math.cos(10*cV))),AV=.35*Math.sin(5*cV);return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}class JV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=cV*Math.PI*2,MV=Math.cos(2*tV)*(1+.45*Math.cos(3*tV)+.4*Math.cos(9*tV)),AV=Math.sin(2*tV)*(1+.45*Math.cos(3*tV)+.4*Math.cos(9*tV)),pV=.2*Math.sin(9*tV);return iV.set(MV,AV,pV).multiplyScalar(this.scale)}}class nV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=cV*Math.PI*2,MV=Math.cos(3*tV)*(1+.3*Math.cos(5*tV)+.5*Math.cos(10*tV)),AV=Math.sin(3*tV)*(1+.3*Math.cos(5*tV)+.5*Math.cos(10*tV)),pV=.2*Math.sin(20*tV);return iV.set(MV,AV,pV).multiplyScalar(this.scale)}}class aV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=cV*Math.PI*2,MV=Math.cos(4*tV)*(1+.5*(Math.cos(5*tV)+.4*Math.cos(20*tV))),AV=Math.sin(4*tV)*(1+.5*(Math.cos(5*tV)+.4*Math.cos(20*tV))),pV=.35*Math.sin(15*tV);return iV.set(MV,AV,pV).multiplyScalar(this.scale)}}lV.CinquefoilKnot=CV,lV.DecoratedTorusKnot4a=eV,lV.DecoratedTorusKnot4b=JV,lV.DecoratedTorusKnot5a=nV,lV.DecoratedTorusKnot5c=aV,lV.FigureEightPolynomialKnot=gV,lV.GrannyKnot=VV,lV.HeartCurve=RV,lV.HelixCurve=WV,lV.KnotCurve=ZV,lV.TorusKnot=dV,lV.TrefoilKnot=IV,lV.TrefoilPolynomialKnot=FV,lV.VivianiCurve=UV}(CurveExtras)),CurveExtras}var Geometry={},hasRequiredGeometry;function requireGeometry(){return hasRequiredGeometry||(hasRequiredGeometry=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=new J.Matrix4,RV=new J.Object3D,UV=new J.Vector3;class ZV extends J.EventDispatcher{static createBufferGeometryFromObject(CV){let FV=new J.BufferGeometry;const NV=CV.geometry;if(CV.isPoints||CV.isLine){const gV=new J.Float32BufferAttribute(NV.vertices.length*3,3),eV=new J.Float32BufferAttribute(NV.colors.length*3,3);if(FV.setAttribute("position",gV.copyVector3sArray(NV.vertices)),FV.setAttribute("color",eV.copyColorsArray(NV.colors)),NV.lineDistances&&NV.lineDistances.length===NV.vertices.length){const JV=new J.Float32BufferAttribute(NV.lineDistances.length,1);FV.setAttribute("lineDistance",JV.copyArray(NV.lineDistances))}NV.boundingSphere!==null&&(FV.boundingSphere=NV.boundingSphere.clone()),NV.boundingBox!==null&&(FV.boundingBox=NV.boundingBox.clone())}else CV.isMesh&&(FV=NV.toBufferGeometry());return FV}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(CV){const FV=new J.Matrix3().getNormalMatrix(CV);for(let NV=0,gV=this.vertices.length;NV<gV;NV++)this.vertices[NV].applyMatrix4(CV);for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV];eV.normal.applyMatrix3(FV).normalize();for(let JV=0,nV=eV.vertexNormals.length;JV<nV;JV++)eV.vertexNormals[JV].applyMatrix3(FV).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(CV){return VV.makeRotationX(CV),this.applyMatrix4(VV),this}rotateY(CV){return VV.makeRotationY(CV),this.applyMatrix4(VV),this}rotateZ(CV){return VV.makeRotationZ(CV),this.applyMatrix4(VV),this}translate(CV,FV,NV){return VV.makeTranslation(CV,FV,NV),this.applyMatrix4(VV),this}scale(CV,FV,NV){return VV.makeScale(CV,FV,NV),this.applyMatrix4(VV),this}lookAt(CV){return RV.lookAt(CV),RV.updateMatrix(),this.applyMatrix4(RV.matrix),this}fromBufferGeometry(CV){const FV=this,NV=CV.index!==null?CV.index:void 0,gV=CV.attributes;if(gV.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;const eV=gV.position,JV=gV.normal,nV=gV.color,aV=gV.uv,GV=gV.uv2;GV!==void 0&&(this.faceVertexUvs[1]=[]);for(let iV=0;iV<eV.count;iV++)FV.vertices.push(new J.Vector3().fromBufferAttribute(eV,iV)),nV!==void 0&&FV.colors.push(new J.Color().fromBufferAttribute(nV,iV));function cV(iV,tV,MV,AV){const pV=nV===void 0?[]:[FV.colors[iV].clone(),FV.colors[tV].clone(),FV.colors[MV].clone()],HV=JV===void 0?[]:[new J.Vector3().fromBufferAttribute(JV,iV),new J.Vector3().fromBufferAttribute(JV,tV),new J.Vector3().fromBufferAttribute(JV,MV)],oV=new IV(iV,tV,MV,HV,pV,AV);FV.faces.push(oV),aV!==void 0&&FV.faceVertexUvs[0].push([new J.Vector2().fromBufferAttribute(aV,iV),new J.Vector2().fromBufferAttribute(aV,tV),new J.Vector2().fromBufferAttribute(aV,MV)]),GV!==void 0&&FV.faceVertexUvs[1].push([new J.Vector2().fromBufferAttribute(GV,iV),new J.Vector2().fromBufferAttribute(GV,tV),new J.Vector2().fromBufferAttribute(GV,MV)])}const TV=CV.groups;if(TV.length>0)for(let iV=0;iV<TV.length;iV++){const tV=TV[iV],MV=tV.start,AV=tV.count;for(let pV=MV,HV=MV+AV;pV<HV;pV+=3)NV!==void 0?cV(NV.getX(pV),NV.getX(pV+1),NV.getX(pV+2),tV.materialIndex):cV(pV,pV+1,pV+2,tV.materialIndex)}else if(NV!==void 0)for(let iV=0;iV<NV.count;iV+=3)cV(NV.getX(iV),NV.getX(iV+1),NV.getX(iV+2));else for(let iV=0;iV<eV.count;iV+=3)cV(iV,iV+1,iV+2);return this.computeFaceNormals(),CV.boundingBox!==null&&(this.boundingBox=CV.boundingBox.clone()),CV.boundingSphere!==null&&(this.boundingSphere=CV.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(UV).negate(),this.translate(UV.x,UV.y,UV.z),this}normalize(){this.computeBoundingSphere();const CV=this.boundingSphere.center,FV=this.boundingSphere.radius,NV=FV===0?1:1/FV,gV=new J.Matrix4;return gV.set(NV,0,0,-NV*CV.x,0,NV,0,-NV*CV.y,0,0,NV,-NV*CV.z,0,0,0,1),this.applyMatrix4(gV),this}computeFaceNormals(){const CV=new J.Vector3,FV=new J.Vector3;for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV],JV=this.vertices[eV.a],nV=this.vertices[eV.b],aV=this.vertices[eV.c];CV.subVectors(aV,nV),FV.subVectors(JV,nV),CV.cross(FV),CV.normalize(),eV.normal.copy(CV)}}computeVertexNormals(CV=!0){const FV=new Array(this.vertices.length);for(let NV=0,gV=this.vertices.length;NV<gV;NV++)FV[NV]=new J.Vector3;if(CV){const NV=new J.Vector3,gV=new J.Vector3;for(let eV=0,JV=this.faces.length;eV<JV;eV++){const nV=this.faces[eV],aV=this.vertices[nV.a],GV=this.vertices[nV.b],cV=this.vertices[nV.c];NV.subVectors(cV,GV),gV.subVectors(aV,GV),NV.cross(gV),FV[nV.a].add(NV),FV[nV.b].add(NV),FV[nV.c].add(NV)}}else{this.computeFaceNormals();for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV];FV[eV.a].add(eV.normal),FV[eV.b].add(eV.normal),FV[eV.c].add(eV.normal)}}for(let NV=0,gV=this.vertices.length;NV<gV;NV++)FV[NV].normalize();for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV],JV=eV.vertexNormals;JV.length===3?(JV[0].copy(FV[eV.a]),JV[1].copy(FV[eV.b]),JV[2].copy(FV[eV.c])):(JV[0]=FV[eV.a].clone(),JV[1]=FV[eV.b].clone(),JV[2]=FV[eV.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let CV=0,FV=this.faces.length;CV<FV;CV++){const NV=this.faces[CV],gV=NV.vertexNormals;gV.length===3?(gV[0].copy(NV.normal),gV[1].copy(NV.normal),gV[2].copy(NV.normal)):(gV[0]=NV.normal.clone(),gV[1]=NV.normal.clone(),gV[2]=NV.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let FV=0,NV=this.faces.length;FV<NV;FV++){const gV=this.faces[FV];gV.__originalFaceNormal?gV.__originalFaceNormal.copy(gV.normal):gV.__originalFaceNormal=gV.normal.clone(),gV.__originalVertexNormals||(gV.__originalVertexNormals=[]);for(let eV=0,JV=gV.vertexNormals.length;eV<JV;eV++)gV.__originalVertexNormals[eV]?gV.__originalVertexNormals[eV].copy(gV.vertexNormals[eV]):gV.__originalVertexNormals[eV]=gV.vertexNormals[eV].clone()}const CV=new ZV;CV.faces=this.faces;for(let FV=0,NV=this.morphTargets.length;FV<NV;FV++){if(!this.morphNormals[FV]){this.morphNormals[FV]={},this.morphNormals[FV].faceNormals=[],this.morphNormals[FV].vertexNormals=[];const eV=this.morphNormals[FV].faceNormals,JV=this.morphNormals[FV].vertexNormals;for(let nV=0,aV=this.faces.length;nV<aV;nV++){const GV=new J.Vector3,cV={a:new J.Vector3,b:new J.Vector3,c:new J.Vector3};eV.push(GV),JV.push(cV)}}const gV=this.morphNormals[FV];CV.vertices=this.morphTargets[FV].vertices,CV.computeFaceNormals(),CV.computeVertexNormals();for(let eV=0,JV=this.faces.length;eV<JV;eV++){const nV=this.faces[eV],aV=gV.faceNormals[eV],GV=gV.vertexNormals[eV];aV.copy(nV.normal),GV.a.copy(nV.vertexNormals[0]),GV.b.copy(nV.vertexNormals[1]),GV.c.copy(nV.vertexNormals[2])}}for(let FV=0,NV=this.faces.length;FV<NV;FV++){const gV=this.faces[FV];gV.normal=gV.__originalFaceNormal,gV.vertexNormals=gV.__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(CV,FV,NV=0){if(!(CV&&CV.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",CV);return}let gV;const eV=this.vertices.length,JV=this.vertices,nV=CV.vertices,aV=this.faces,GV=CV.faces,cV=this.colors,TV=CV.colors;FV!==void 0&&(gV=new J.Matrix3().getNormalMatrix(FV));for(let iV=0,tV=nV.length;iV<tV;iV++){const AV=nV[iV].clone();FV!==void 0&&AV.applyMatrix4(FV),JV.push(AV)}for(let iV=0,tV=TV.length;iV<tV;iV++)cV.push(TV[iV].clone());for(let iV=0,tV=GV.length;iV<tV;iV++){const MV=GV[iV];let AV,pV;const HV=MV.vertexNormals,oV=MV.vertexColors,DV=new IV(MV.a+eV,MV.b+eV,MV.c+eV);DV.normal.copy(MV.normal),gV!==void 0&&DV.normal.applyMatrix3(gV).normalize();for(let wV=0,_V=HV.length;wV<_V;wV++)AV=HV[wV].clone(),gV!==void 0&&AV.applyMatrix3(gV).normalize(),DV.vertexNormals.push(AV);DV.color.copy(MV.color);for(let wV=0,_V=oV.length;wV<_V;wV++)pV=oV[wV],DV.vertexColors.push(pV.clone());DV.materialIndex=MV.materialIndex+NV,aV.push(DV)}for(let iV=0,tV=CV.faceVertexUvs.length;iV<tV;iV++){const MV=CV.faceVertexUvs[iV];this.faceVertexUvs[iV]===void 0&&(this.faceVertexUvs[iV]=[]);for(let AV=0,pV=MV.length;AV<pV;AV++){const HV=MV[AV],oV=[];for(let DV=0,wV=HV.length;DV<wV;DV++)oV.push(HV[DV].clone());this.faceVertexUvs[iV].push(oV)}}}mergeMesh(CV){if(!(CV&&CV.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",CV);return}CV.matrixAutoUpdate&&CV.updateMatrix(),this.merge(CV.geometry,CV.matrix)}mergeVertices(CV=4){const FV={},NV=[],gV=[],eV=Math.pow(10,CV);for(let aV=0,GV=this.vertices.length;aV<GV;aV++){const cV=this.vertices[aV],TV=`${Math.round(cV.x*eV)}_${Math.round(cV.y*eV)}_${Math.round(cV.z*eV)}`;FV[TV]===void 0?(FV[TV]=aV,NV.push(this.vertices[aV]),gV[aV]=NV.length-1):gV[aV]=gV[FV[TV]]}const JV=[];for(let aV=0,GV=this.faces.length;aV<GV;aV++){const cV=this.faces[aV];cV.a=gV[cV.a],cV.b=gV[cV.b],cV.c=gV[cV.c];const TV=[cV.a,cV.b,cV.c];for(let iV=0;iV<3;iV++)if(TV[iV]===TV[(iV+1)%3]){JV.push(aV);break}}for(let aV=JV.length-1;aV>=0;aV--){const GV=JV[aV];this.faces.splice(GV,1);for(let cV=0,TV=this.faceVertexUvs.length;cV<TV;cV++)this.faceVertexUvs[cV].splice(GV,1)}const nV=this.vertices.length-NV.length;return this.vertices=NV,nV}setFromPoints(CV){this.vertices=[];for(let FV=0,NV=CV.length;FV<NV;FV++){const gV=CV[FV];this.vertices.push(new J.Vector3(gV.x,gV.y,gV.z||0))}return this}sortFacesByMaterialIndex(){const CV=this.faces,FV=CV.length;for(let aV=0;aV<FV;aV++)CV[aV]._id=aV;function NV(aV,GV){return aV.materialIndex-GV.materialIndex}CV.sort(NV);const gV=this.faceVertexUvs[0],eV=this.faceVertexUvs[1];let JV,nV;gV&&gV.length===FV&&(JV=[]),eV&&eV.length===FV&&(nV=[]);for(let aV=0;aV<FV;aV++){const GV=CV[aV]._id;JV&&JV.push(gV[GV]),nV&&nV.push(eV[GV])}JV&&(this.faceVertexUvs[0]=JV),nV&&(this.faceVertexUvs[1]=nV)}toJSON(){const CV={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(CV.uuid=this.uuid,CV.type=this.type,this.name!==""&&(CV.name=this.name),this.parameters!==void 0){const MV=this.parameters;for(let AV in MV)MV[AV]!==void 0&&(CV[AV]=MV[AV]);return CV}const FV=[];for(let MV=0;MV<this.vertices.length;MV++){const AV=this.vertices[MV];FV.push(AV.x,AV.y,AV.z)}const NV=[],gV=[],eV={},JV=[],nV={},aV=[],GV={};for(let MV=0;MV<this.faces.length;MV++){const AV=this.faces[MV],pV=!0,HV=!1,oV=this.faceVertexUvs[0][MV]!==void 0,DV=AV.normal.length()>0,wV=AV.vertexNormals.length>0,_V=AV.color.r!==1||AV.color.g!==1||AV.color.b!==1,dl=AV.vertexColors.length>0;let nl=0;if(nl=cV(nl,0,0),nl=cV(nl,1,pV),nl=cV(nl,2,HV),nl=cV(nl,3,oV),nl=cV(nl,4,DV),nl=cV(nl,5,wV),nl=cV(nl,6,_V),nl=cV(nl,7,dl),NV.push(nl),NV.push(AV.a,AV.b,AV.c),NV.push(AV.materialIndex),oV){const Il=this.faceVertexUvs[0][MV];NV.push(tV(Il[0]),tV(Il[1]),tV(Il[2]))}if(DV&&NV.push(TV(AV.normal)),wV){const Il=AV.vertexNormals;NV.push(TV(Il[0]),TV(Il[1]),TV(Il[2]))}if(_V&&NV.push(iV(AV.color)),dl){const Il=AV.vertexColors;NV.push(iV(Il[0]),iV(Il[1]),iV(Il[2]))}}function cV(MV,AV,pV){return pV?MV|1<<AV:MV&~(1<<AV)}function TV(MV){const AV=MV.x.toString()+MV.y.toString()+MV.z.toString();return eV[AV]!==void 0||(eV[AV]=gV.length/3,gV.push(MV.x,MV.y,MV.z)),eV[AV]}function iV(MV){const AV=MV.r.toString()+MV.g.toString()+MV.b.toString();return nV[AV]!==void 0||(nV[AV]=JV.length,JV.push(MV.getHex())),nV[AV]}function tV(MV){const AV=MV.x.toString()+MV.y.toString();return GV[AV]!==void 0||(GV[AV]=aV.length/2,aV.push(MV.x,MV.y)),GV[AV]}return CV.data={},CV.data.vertices=FV,CV.data.normals=gV,JV.length>0&&(CV.data.colors=JV),aV.length>0&&(CV.data.uvs=[aV]),CV.data.faces=NV,CV}clone(){return new ZV().copy(this)}copy(CV){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=CV.name;const FV=CV.vertices;for(let iV=0,tV=FV.length;iV<tV;iV++)this.vertices.push(FV[iV].clone());const NV=CV.colors;for(let iV=0,tV=NV.length;iV<tV;iV++)this.colors.push(NV[iV].clone());const gV=CV.faces;for(let iV=0,tV=gV.length;iV<tV;iV++)this.faces.push(gV[iV].clone());for(let iV=0,tV=CV.faceVertexUvs.length;iV<tV;iV++){const MV=CV.faceVertexUvs[iV];this.faceVertexUvs[iV]===void 0&&(this.faceVertexUvs[iV]=[]);for(let AV=0,pV=MV.length;AV<pV;AV++){const HV=MV[AV],oV=[];for(let DV=0,wV=HV.length;DV<wV;DV++){const _V=HV[DV];oV.push(_V.clone())}this.faceVertexUvs[iV].push(oV)}}const eV=CV.morphTargets;for(let iV=0,tV=eV.length;iV<tV;iV++){const MV={};if(MV.name=eV[iV].name,eV[iV].vertices!==void 0){MV.vertices=[];for(let AV=0,pV=eV[iV].vertices.length;AV<pV;AV++)MV.vertices.push(eV[iV].vertices[AV].clone())}if(eV[iV].normals!==void 0){MV.normals=[];for(let AV=0,pV=eV[iV].normals.length;AV<pV;AV++)MV.normals.push(eV[iV].normals[AV].clone())}this.morphTargets.push(MV)}const JV=CV.morphNormals;for(let iV=0,tV=JV.length;iV<tV;iV++){const MV={};if(JV[iV].vertexNormals!==void 0){MV.vertexNormals=[];for(let AV=0,pV=JV[iV].vertexNormals.length;AV<pV;AV++){const HV=JV[iV].vertexNormals[AV],oV={};oV.a=HV.a.clone(),oV.b=HV.b.clone(),oV.c=HV.c.clone(),MV.vertexNormals.push(oV)}}if(JV[iV].faceNormals!==void 0){MV.faceNormals=[];for(let AV=0,pV=JV[iV].faceNormals.length;AV<pV;AV++)MV.faceNormals.push(JV[iV].faceNormals[AV].clone())}this.morphNormals.push(MV)}const nV=CV.skinWeights;for(let iV=0,tV=nV.length;iV<tV;iV++)this.skinWeights.push(nV[iV].clone());const aV=CV.skinIndices;for(let iV=0,tV=aV.length;iV<tV;iV++)this.skinIndices.push(aV[iV].clone());const GV=CV.lineDistances;for(let iV=0,tV=GV.length;iV<tV;iV++)this.lineDistances.push(GV[iV]);const cV=CV.boundingBox;cV!==null&&(this.boundingBox=cV.clone());const TV=CV.boundingSphere;return TV!==null&&(this.boundingSphere=TV.clone()),this.elementsNeedUpdate=CV.elementsNeedUpdate,this.verticesNeedUpdate=CV.verticesNeedUpdate,this.uvsNeedUpdate=CV.uvsNeedUpdate,this.normalsNeedUpdate=CV.normalsNeedUpdate,this.colorsNeedUpdate=CV.colorsNeedUpdate,this.lineDistancesNeedUpdate=CV.lineDistancesNeedUpdate,this.groupsNeedUpdate=CV.groupsNeedUpdate,this}toBufferGeometry(){const CV=new WV().fromGeometry(this),FV=new J.BufferGeometry,NV=new Float32Array(CV.vertices.length*3);if(FV.setAttribute("position",new J.BufferAttribute(NV,3).copyVector3sArray(CV.vertices)),CV.normals.length>0){const gV=new Float32Array(CV.normals.length*3);FV.setAttribute("normal",new J.BufferAttribute(gV,3).copyVector3sArray(CV.normals))}if(CV.colors.length>0){const gV=new Float32Array(CV.colors.length*3);FV.setAttribute("color",new J.BufferAttribute(gV,3).copyColorsArray(CV.colors))}if(CV.uvs.length>0){const gV=new Float32Array(CV.uvs.length*2);FV.setAttribute("uv",new J.BufferAttribute(gV,2).copyVector2sArray(CV.uvs))}if(CV.uvs2.length>0){const gV=new Float32Array(CV.uvs2.length*2);FV.setAttribute("uv2",new J.BufferAttribute(gV,2).copyVector2sArray(CV.uvs2))}FV.groups=CV.groups;for(let gV in CV.morphTargets){const eV=[],JV=CV.morphTargets[gV];for(let nV=0,aV=JV.length;nV<aV;nV++){const GV=JV[nV],cV=new J.Float32BufferAttribute(GV.data.length*3,3);cV.name=GV.name,eV.push(cV.copyVector3sArray(GV.data))}FV.morphAttributes[gV]=eV}if(CV.skinIndices.length>0){const gV=new J.Float32BufferAttribute(CV.skinIndices.length*4,4);FV.setAttribute("skinIndex",gV.copyVector4sArray(CV.skinIndices))}if(CV.skinWeights.length>0){const gV=new J.Float32BufferAttribute(CV.skinWeights.length*4,4);FV.setAttribute("skinWeight",gV.copyVector4sArray(CV.skinWeights))}return CV.boundingSphere!==null&&(FV.boundingSphere=CV.boundingSphere.clone()),CV.boundingBox!==null&&(FV.boundingBox=CV.boundingBox.clone()),FV}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(CV){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(CV)}dispose(){this.dispatchEvent({type:"dispose"})}}class WV{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(CV){const FV=[];let NV,gV,eV;const JV=CV.faces;for(gV=0;gV<JV.length;gV++){const nV=JV[gV];nV.materialIndex!==eV&&(eV=nV.materialIndex,NV!==void 0&&(NV.count=gV*3-NV.start,FV.push(NV)),NV={start:gV*3,materialIndex:eV})}NV!==void 0&&(NV.count=gV*3-NV.start,FV.push(NV)),this.groups=FV}fromGeometry(CV){const FV=CV.faces,NV=CV.vertices,gV=CV.faceVertexUvs,eV=gV[0]&&gV[0].length>0,JV=gV[1]&&gV[1].length>0,nV=CV.morphTargets,aV=nV.length;let GV;if(aV>0){GV=[];for(let HV=0;HV<aV;HV++)GV[HV]={name:nV[HV].name,data:[]};this.morphTargets.position=GV}const cV=CV.morphNormals,TV=cV.length;let iV;if(TV>0){iV=[];for(let HV=0;HV<TV;HV++)iV[HV]={name:cV[HV].name,data:[]};this.morphTargets.normal=iV}const tV=CV.skinIndices,MV=CV.skinWeights,AV=tV.length===NV.length,pV=MV.length===NV.length;NV.length>0&&FV.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let HV=0;HV<FV.length;HV++){const oV=FV[HV];this.vertices.push(NV[oV.a],NV[oV.b],NV[oV.c]);const DV=oV.vertexNormals;if(DV.length===3)this.normals.push(DV[0],DV[1],DV[2]);else{const _V=oV.normal;this.normals.push(_V,_V,_V)}const wV=oV.vertexColors;if(wV.length===3)this.colors.push(wV[0],wV[1],wV[2]);else{const _V=oV.color;this.colors.push(_V,_V,_V)}if(eV===!0){const _V=gV[0][HV];_V!==void 0?this.uvs.push(_V[0],_V[1],_V[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",HV),this.uvs.push(new J.Vector2,new J.Vector2,new J.Vector2))}if(JV===!0){const _V=gV[1][HV];_V!==void 0?this.uvs2.push(_V[0],_V[1],_V[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",HV),this.uvs2.push(new J.Vector2,new J.Vector2,new J.Vector2))}for(let _V=0;_V<aV;_V++){const dl=nV[_V].vertices;GV[_V].data.push(dl[oV.a],dl[oV.b],dl[oV.c])}for(let _V=0;_V<TV;_V++){const dl=cV[_V].vertexNormals[HV];iV[_V].data.push(dl.a,dl.b,dl.c)}AV&&this.skinIndices.push(tV[oV.a],tV[oV.b],tV[oV.c]),pV&&this.skinWeights.push(MV[oV.a],MV[oV.b],MV[oV.c])}return this.computeGroups(CV),this.verticesNeedUpdate=CV.verticesNeedUpdate,this.normalsNeedUpdate=CV.normalsNeedUpdate,this.colorsNeedUpdate=CV.colorsNeedUpdate,this.uvsNeedUpdate=CV.uvsNeedUpdate,this.groupsNeedUpdate=CV.groupsNeedUpdate,CV.boundingSphere!==null&&(this.boundingSphere=CV.boundingSphere.clone()),CV.boundingBox!==null&&(this.boundingBox=CV.boundingBox.clone()),this}}class IV{constructor(CV,FV,NV,gV,eV,JV=0){this.a=CV,this.b=FV,this.c=NV,this.normal=gV&&gV.isVector3?gV:new J.Vector3,this.vertexNormals=Array.isArray(gV)?gV:[],this.color=eV&&eV.isColor?eV:new J.Color,this.vertexColors=Array.isArray(eV)?eV:[],this.materialIndex=JV}clone(){return new this.constructor().copy(this)}copy(CV){this.a=CV.a,this.b=CV.b,this.c=CV.c,this.normal.copy(CV.normal),this.color.copy(CV.color),this.materialIndex=CV.materialIndex;for(let FV=0,NV=CV.vertexNormals.length;FV<NV;FV++)this.vertexNormals[FV]=CV.vertexNormals[FV].clone();for(let FV=0,NV=CV.vertexColors.length;FV<NV;FV++)this.vertexColors[FV]=CV.vertexColors[FV].clone();return this}}lV.Face3=IV,lV.Geometry=ZV}(Geometry)),Geometry}var MeshoptDecoder$1={},hasRequiredMeshoptDecoder;function requireMeshoptDecoder(){return hasRequiredMeshoptDecoder||(hasRequiredMeshoptDecoder=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});let J;const VV=()=>{if(J)return J;const RV="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",UV="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",ZV=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]),WV=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 IV=RV;WebAssembly.validate(ZV)&&(IV=UV);let dV;const CV=WebAssembly.instantiate(FV(IV),{}).then(JV=>{dV=JV.instance,dV.exports.__wasm_call_ctors()});function FV(JV){const nV=new Uint8Array(JV.length);for(let GV=0;GV<JV.length;++GV){const cV=JV.charCodeAt(GV);nV[GV]=cV>96?cV-71:cV>64?cV-65:cV>47?cV+4:cV>46?63:62}let aV=0;for(let GV=0;GV<JV.length;++GV)nV[aV++]=nV[GV]<60?WV[nV[GV]]:(nV[GV]-60)*64+nV[++GV];return nV.buffer.slice(0,aV)}function NV(JV,nV,aV,GV,cV,TV){const iV=dV.exports.sbrk,tV=aV+3&-4,MV=iV(tV*GV),AV=iV(cV.length),pV=new Uint8Array(dV.exports.memory.buffer);pV.set(cV,AV);const HV=JV(MV,aV,GV,AV,cV.length);if(HV===0&&TV&&TV(MV,tV,GV),nV.set(pV.subarray(MV,MV+aV*GV)),iV(MV-iV(0)),HV!==0)throw new Error(`Malformed buffer data: ${HV}`)}const gV={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},eV={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return J={ready:CV,supported:!0,decodeVertexBuffer(JV,nV,aV,GV,cV){NV(dV.exports.meshopt_decodeVertexBuffer,JV,nV,aV,GV,dV.exports[gV[cV]])},decodeIndexBuffer(JV,nV,aV,GV){NV(dV.exports.meshopt_decodeIndexBuffer,JV,nV,aV,GV)},decodeIndexSequence(JV,nV,aV,GV){NV(dV.exports.meshopt_decodeIndexSequence,JV,nV,aV,GV)},decodeGltfBuffer(JV,nV,aV,GV,cV,TV){NV(dV.exports[eV[cV]],JV,nV,aV,GV,dV.exports[gV[TV]])}},J};lV.MeshoptDecoder=VV}(MeshoptDecoder$1)),MeshoptDecoder$1}var hasRequiredThreeStdlib;function requireThreeStdlib(){return hasRequiredThreeStdlib||(hasRequiredThreeStdlib=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireMD2CharacterComplex(),VV=requireConvexObjectBreaker(),RV=requireMorphBlendMesh(),UV=requireGPUComputationRenderer(),ZV=requireGyroscope(),WV=requireMorphAnimMesh(),IV=requireRollerCoaster(),dV=requireTimer(),CV=requireWebGL(),FV=requireMD2Character(),NV=requireVolumeSlice(),gV=requireTubePainter(),eV=requireVolume$1(),JV=requireProgressiveLightmap(),nV=requireCSS2DRenderer(),aV=requireCSS3DRenderer(),GV=requireProjector(),cV=requireSVGRenderer(),TV=requireFlakesTexture(),iV=requireCurveModifier(),tV=requireSimplifyModifier(),MV=requireEdgeSplitModifier(),AV=requireTessellateModifier(),pV=requireGLTFExporter(),HV=requireUSDZExporter(),oV=requirePLYExporter(),DV=requireDRACOExporter(),wV=requireColladaExporter(),_V=requireMMDExporter(),dl=requireSTLExporter(),nl=requireOBJExporter(),Il=requireRoomEnvironment(),LV=requireAnimationClipCreator(),OV=requireCCDIKSolver(),$V=requireMMDPhysics(),Cl=requireMMDAnimationHelper(),Zl=requireBatchedMesh(),el=requireReflector(),pl=requireRefractor(),ml=requireShadowMesh(),Bl=requireLensflare(),jl=requireWater(),rl=requireMarchingCubes(),Pl=requireLightningStorm(),Hl=requireReflectorRTT(),Tl=requireReflectorForSSRPass(),kl=requireSky(),Dl=requireWater2(),ZR=requireGroundProjectedEnv(),JR=requireSceneUtils(),FR=requireUVsDebug(),QR=requireGeometryUtils(),hR=requireRoughnessMipmapper(),kR=requireSkeletonUtils(),AR=requireShadowMapViewer(),aR=requireBufferGeometryUtils(),TR=requireGeometryCompressionUtils(),xR=requireCinematicCamera(),pR=requireConvexHull(),UU=requireMeshSurfaceSampler(),SU=requireSimplexNoise(),xU=requireOBB(),DR=requireCapsule(),BR=requireColorConverter(),CU=requireImprovedNoise(),bR=requireOctree(),VR=requireLut(),mR=requireCameraControls(),YR=requireFirstPersonControls(),iR=requireTransformControls(),$R=requireDragControls(),lU=requirePointerLockControls(),hU=requireDeviceOrientationControls(),GR=requireTrackballControls(),IU=requireOrbitControls(),FU=requireArcballControls(),PU=requireFlyControls(),hZ=requireLUTPass(),zZ=requireClearPass(),jZ=requireGlitchPass(),DZ=requireHalftonePass(),kW=requireSMAAPass(),fU=requireFilmPass(),nW=requireOutlinePass(),NW=requireSSAOPass(),cW=requireSavePass(),DW=requireBokehPass(),HW=requirePass(),FZ=requireTexturePass(),CW=requireAdaptiveToneMappingPass(),gW=requireUnrealBloomPass(),TW=requireCubeTexturePass(),pW=requireSAOPass(),lZ=requireAfterimagePass(),wU=requireMaskPass(),LR=requireEffectComposer(),TU=requireDotScreenPass(),vR=requireSSRPass(),DU=requireTAARenderPass(),$U=requireShaderPass(),ol=requireSSAARenderPass(),vl=requireRenderPass(),wR=requireRenderPixelatedPass(),ZU=requireBloomPass(),tU=requireWaterPass(),uU=requireARButton(),yU=requireOculusHandModel(),XZ=requireOculusHandPointerModel(),mZ=requireText2D(),QZ=requireVRButton(),ZW=requireXRControllerModelFactory(),JW=requireXREstimatedLight(),IZ=requireXRHandMeshModel(),MR=requireXRHandModelFactory(),WU=requireXRHandPrimitiveModel(),MU=requireParametricGeometries(),VZ=requireParametricGeometry(),GZ=requireConvexGeometry(),$Z=requireLightningStrike(),eW=requireRoundedBoxGeometry(),iZ=requireBoxLineGeometry(),KU=requireDecalGeometry(),yZ=requireTeapotGeometry(),dW=requireTextGeometry(),KZ=requireCSM(),tW=requireCSMFrustum(),II=requireCSMHelper(),nU=requireCSMShader(),NU=requireACESFilmicToneMappingShader(),cU=requireAfterimageShader(),LU=requireBasicShader(),oZ=requireBleachBypassShader(),fZ=requireBlendShader(),BW=requireBokehShader(),bW=requireBokehShader2(),qW=requireBrightnessContrastShader(),AW=requireColorCorrectionShader(),FI=requireColorifyShader(),ZI=requireConvolutionShader(),cI=requireCopyShader(),zU=requireDOFMipMapShader(),EU=requireDepthLimitedBlurShader(),jU=requireDigitalGlitch(),_U=requireDotScreenShader(),qU=requireFXAAShader(),aW=requireFilmShader(),wZ=requireFocusShader(),EI=requireFreiChenShader(),XW=requireFresnelShader(),kI=requireGammaCorrectionShader(),gI=requireGodRaysShader(),$W=requireHalftoneShader(),id=requireHorizontalBlurShader(),KI=requireHorizontalTiltShiftShader(),Dd=requireHueSaturationShader(),gd=requireKaleidoShader(),Bd=requireLuminosityHighPassShader(),jd=requireLuminosityShader(),Yd=requireMirrorShader(),ld=requireNormalMapShader(),YC=requireParallaxShader(),fC=requirePixelShader(),$F=requireRGBShiftShader(),wC=requireSAOShader(),aN=requireSMAAShader(),RN=requireSSAOShader(),tR=requireSSRShader(),sU=requireSepiaShader(),AZ=requireSobelOperatorShader(),VW=requireSubsurfaceScatteringShader(),sW=requireTechnicolorShader(),zI=requireToneMapShader(),CI=requireToonShader(),fI=requireTriangleBlurShader(),Zd=requireUnpackDepthRGBAShader(),zd=requireVerticalBlurShader(),WC=requireVerticalTiltShiftShader(),kd=requireVignetteShader(),OC=requireVolumeShader(),BC=requireWaterRefractionShader(),oC=requireHTMLMesh(),VF=requireInteractiveGroup(),Tg=requireSelectionHelper(),VN=requireSelectionBox(),GG=requireAmmoPhysics(),FJ=requireParallaxBarrierEffect(),O0=requirePeppersGhostEffect(),KG=requireOutlineEffect(),m1=requireAnaglyphEffect(),dZ=requireAsciiEffect(),e1=requireStereoEffect(),IG=requireFBXLoader(),s1=requireFontLoader(),HG=requireTGALoader(),dG=requireLUTCubeLoader(),J1=requireNRRDLoader(),AJ=requireSTLLoader(),g0=requireMTLLoader(),aG=requireXLoader(),Kg=requireBVHLoader(),fN=requireKMZLoader(),k0=requireVRMLoader(),lJ=requireVRMLLoader(),Gg=requireKTX2Loader(),kN=requireLottieLoader(),TN=requireTTFLoader(),NJ=requireRGBELoader(),jg=requireAssimpLoader(),MN=requireColladaLoader(),jF=requireMDDLoader(),uN=requireEXRLoader(),SJ=require_3MFLoader(),Zg=requireXYZLoader(),e0=requireVTKLoader(),RG=requireLUT3dlLoader(),kJ=requireDDSLoader(),x0=requirePVRLoader(),K0=requireGCodeLoader(),SG=requireBasisTextureLoader(),V0=requireTDSLoader(),ag=requireLDrawLoader(),gJ=requireGLTFLoader(),md=requireSVGLoader(),DJ=require_3DMLoader(),vg=requireOBJLoader(),LC=requireAMFLoader(),W0=requireMMDLoader(),GI=requireMD2Loader(),qd=requireKTXLoader(),iC=requireTiltLoader(),X0=requireDRACOLoader(),XI=requireHDRCubeTextureLoader(),yd=requirePDBLoader(),l0=requirePRWMLoader(),AF=requireRGBMLoader(),Eg=requireVOXLoader(),PC=requirePCDLoader(),BN=requireLWOLoader(),wF=requirePLYLoader(),Wg=requireLineSegmentsGeometry(),UF=requireLineGeometry(),AC=requireWireframe(),VC=requireWireframeGeometry2(),Od=requireLine2$1(),HC=requireLineMaterial(),aF=requireLineSegments2(),RJ=requireLightProbeHelper(),MJ=requireVertexTangentsHelper(),JC=requirePositionalAudioHelper(),I0=requireVertexNormalsHelper(),_F=requireRectAreaLightHelper(),nN=requireRectAreaLightUniformsLib(),hF=requireLightProbeGenerator(),gg=requireNURBSUtils(),QN=requireNURBSCurve(),ig=requireNURBSSurface(),KF=requireCurveExtras(),rg=requireGeometry(),xd=requireMeshoptDecoder(),JF=requireMotionControllers();lV.MD2CharacterComplex=J.MD2CharacterComplex,lV.ConvexObjectBreaker=VV.ConvexObjectBreaker,lV.MorphBlendMesh=RV.MorphBlendMesh,lV.GPUComputationRenderer=UV.GPUComputationRenderer,lV.Gyroscope=ZV.Gyroscope,lV.MorphAnimMesh=WV.MorphAnimMesh,lV.RollerCoasterGeometry=IV.RollerCoasterGeometry,lV.RollerCoasterLiftersGeometry=IV.RollerCoasterLiftersGeometry,lV.RollerCoasterShadowGeometry=IV.RollerCoasterShadowGeometry,lV.SkyGeometry=IV.SkyGeometry,lV.TreesGeometry=IV.TreesGeometry,lV.Timer=dV.Timer,lV.getErrorMessage=CV.getErrorMessage,lV.getWebGL2ErrorMessage=CV.getWebGL2ErrorMessage,lV.getWebGLErrorMessage=CV.getWebGLErrorMessage,lV.isWebGL2Available=CV.isWebGL2Available,lV.isWebGLAvailable=CV.isWebGLAvailable,lV.MD2Character=FV.MD2Character,lV.VolumeSlice=NV.VolumeSlice,lV.TubePainter=gV.TubePainter,lV.Volume=eV.Volume,lV.ProgressiveLightMap=JV.ProgressiveLightMap,lV.CSS2DObject=nV.CSS2DObject,lV.CSS2DRenderer=nV.CSS2DRenderer,lV.CSS3DObject=aV.CSS3DObject,lV.CSS3DRenderer=aV.CSS3DRenderer,lV.CSS3DSprite=aV.CSS3DSprite,lV.Projector=GV.Projector,lV.RenderableFace=GV.RenderableFace,lV.RenderableLine=GV.RenderableLine,lV.RenderableObject=GV.RenderableObject,lV.RenderableSprite=GV.RenderableSprite,lV.RenderableVertex=GV.RenderableVertex,lV.SVGObject=cV.SVGObject,lV.SVGRenderer=cV.SVGRenderer,lV.FlakesTexture=TV.FlakesTexture,lV.Flow=iV.Flow,lV.InstancedFlow=iV.InstancedFlow,lV.getUniforms=iV.getUniforms,lV.initSplineTexture=iV.initSplineTexture,lV.modifyShader=iV.modifyShader,lV.updateSplineTexture=iV.updateSplineTexture,lV.SimplifyModifier=tV.SimplifyModifier,lV.EdgeSplitModifier=MV.EdgeSplitModifier,lV.TessellateModifier=AV.TessellateModifier,lV.GLTFExporter=pV.GLTFExporter,lV.USDZExporter=HV.USDZExporter,lV.PLYExporter=oV.PLYExporter,lV.DRACOExporter=DV.DRACOExporter,lV.ColladaExporter=wV.ColladaExporter,lV.MMDExporter=_V.MMDExporter,lV.STLExporter=dl.STLExporter,lV.OBJExporter=nl.OBJExporter,lV.RoomEnvironment=Il.RoomEnvironment,lV.AnimationClipCreator=LV.AnimationClipCreator,lV.CCDIKHelper=OV.CCDIKHelper,lV.CCDIKSolver=OV.CCDIKSolver,lV.MMDPhysics=$V.MMDPhysics,lV.MMDAnimationHelper=Cl.MMDAnimationHelper,lV.BatchedMesh=Zl.BatchedMesh,lV.Reflector=el.Reflector,lV.Refractor=pl.Refractor,lV.ShadowMesh=ml.ShadowMesh,lV.Lensflare=Bl.Lensflare,lV.LensflareElement=Bl.LensflareElement,lV.Water=jl.Water,lV.MarchingCubes=rl.MarchingCubes,lV.edgeTable=rl.edgeTable,lV.triTable=rl.triTable,lV.LightningStorm=Pl.LightningStorm,lV.ReflectorRTT=Hl.ReflectorRTT,lV.ReflectorForSSRPass=Tl.ReflectorForSSRPass,lV.Sky=kl.Sky,lV.Water2=Dl.Water2,lV.GroundProjectedEnv=ZR.GroundProjectedEnv,lV.SceneUtils=JR.SceneUtils,lV.UVsDebug=FR.UVsDebug,lV.GeometryUtils=QR.GeometryUtils,lV.RoughnessMipmapper=hR.RoughnessMipmapper,lV.SkeletonUtils=kR.SkeletonUtils,lV.ShadowMapViewer=AR.ShadowMapViewer,lV.computeMorphedAttributes=aR.computeMorphedAttributes,lV.estimateBytesUsed=aR.estimateBytesUsed,lV.interleaveAttributes=aR.interleaveAttributes,lV.mergeBufferAttributes=aR.mergeBufferAttributes,lV.mergeBufferGeometries=aR.mergeBufferGeometries,lV.mergeVertices=aR.mergeVertices,lV.toCreasedNormals=aR.toCreasedNormals,lV.toTrianglesDrawMode=aR.toTrianglesDrawMode,lV.GeometryCompressionUtils=TR.GeometryCompressionUtils,lV.PackedPhongMaterial=TR.PackedPhongMaterial,lV.CinematicCamera=xR.CinematicCamera,lV.ConvexHull=pR.ConvexHull,lV.Face=pR.Face,lV.HalfEdge=pR.HalfEdge,lV.VertexList=pR.VertexList,lV.VertexNode=pR.VertexNode,lV.MeshSurfaceSampler=UU.MeshSurfaceSampler,lV.SimplexNoise=SU.SimplexNoise,lV.OBB=xU.OBB,lV.Capsule=DR.Capsule,lV.ColorConverter=BR.ColorConverter,lV.ImprovedNoise=CU.ImprovedNoise,lV.Octree=bR.Octree,lV.ColorMapKeywords=VR.ColorMapKeywords,lV.Lut=VR.Lut,lV.CameraControls=mR.CameraControls,lV.MapControlsExp=mR.MapControlsExp,lV.OrbitControlsExp=mR.OrbitControlsExp,lV.STATE=mR.STATE,lV.TrackballControlsExp=mR.TrackballControlsExp,lV.FirstPersonControls=YR.FirstPersonControls,lV.TransformControls=iR.TransformControls,lV.TransformControlsGizmo=iR.TransformControlsGizmo,lV.TransformControlsPlane=iR.TransformControlsPlane,lV.DragControls=$R.DragControls,lV.PointerLockControls=lU.PointerLockControls,lV.DeviceOrientationControls=hU.DeviceOrientationControls,lV.TrackballControls=GR.TrackballControls,lV.MapControls=IU.MapControls,lV.OrbitControls=IU.OrbitControls,lV.ArcballControls=FU.ArcballControls,lV.FlyControls=PU.FlyControls,lV.LUTPass=hZ.LUTPass,lV.ClearPass=zZ.ClearPass,lV.GlitchPass=jZ.GlitchPass,lV.HalftonePass=DZ.HalftonePass,lV.SMAAPass=kW.SMAAPass,lV.FilmPass=fU.FilmPass,lV.OutlinePass=nW.OutlinePass,lV.SSAOPass=NW.SSAOPass,lV.SavePass=cW.SavePass,lV.BokehPass=DW.BokehPass,lV.FullScreenQuad=HW.FullScreenQuad,lV.Pass=HW.Pass,lV.TexturePass=FZ.TexturePass,lV.AdaptiveToneMappingPass=CW.AdaptiveToneMappingPass,lV.UnrealBloomPass=gW.UnrealBloomPass,lV.CubeTexturePass=TW.CubeTexturePass,lV.SAOPass=pW.SAOPass,lV.AfterimagePass=lZ.AfterimagePass,lV.ClearMaskPass=wU.ClearMaskPass,lV.MaskPass=wU.MaskPass,lV.EffectComposer=LR.EffectComposer,lV.DotScreenPass=TU.DotScreenPass,lV.SSRPass=vR.SSRPass,lV.TAARenderPass=DU.TAARenderPass,lV.ShaderPass=$U.ShaderPass,lV.SSAARenderPass=ol.SSAARenderPass,lV.RenderPass=vl.RenderPass,lV.RenderPixelatedPass=wR.RenderPixelatedPass,lV.BloomPass=ZU.BloomPass,lV.WaterPass=tU.WaterPass,lV.ARButton=uU.ARButton,lV.OculusHandModel=yU.OculusHandModel,lV.OculusHandPointerModel=XZ.OculusHandPointerModel,lV.createText=mZ.createText,lV.VRButton=QZ.VRButton,lV.XRControllerModelFactory=ZW.XRControllerModelFactory,lV.XREstimatedLight=JW.XREstimatedLight,lV.XRHandMeshModel=IZ.XRHandMeshModel,lV.XRHandModelFactory=MR.XRHandModelFactory,lV.XRHandPrimitiveModel=WU.XRHandPrimitiveModel,lV.ParametricGeometries=MU.ParametricGeometries,lV.ParametricGeometry=VZ.ParametricGeometry,lV.ConvexGeometry=GZ.ConvexGeometry,lV.LightningStrike=$Z.LightningStrike,lV.RoundedBoxGeometry=eW.RoundedBoxGeometry,lV.BoxLineGeometry=iZ.BoxLineGeometry,lV.DecalGeometry=KU.DecalGeometry,lV.DecalVertex=KU.DecalVertex,lV.TeapotGeometry=yZ.TeapotGeometry,lV.TextBufferGeometry=dW.TextGeometry,lV.TextGeometry=dW.TextGeometry,lV.CSM=KZ.CSM,lV.CSMFrustum=tW.CSMFrustum,lV.CSMHelper=II.CSMHelper,lV.CSMShader=nU.CSMShader,lV.ACESFilmicToneMappingShader=NU.ACESFilmicToneMappingShader,lV.AfterimageShader=cU.AfterimageShader,lV.BasicShader=LU.BasicShader,lV.BleachBypassShader=oZ.BleachBypassShader,lV.BlendShader=fZ.BlendShader,lV.BokehShader=BW.BokehShader,lV.BokehDepthShader=bW.BokehDepthShader,lV.BokehShader2=bW.BokehShader2,lV.BrightnessContrastShader=qW.BrightnessContrastShader,lV.ColorCorrectionShader=AW.ColorCorrectionShader,lV.ColorifyShader=FI.ColorifyShader,lV.ConvolutionShader=ZI.ConvolutionShader,lV.CopyShader=cI.CopyShader,lV.DOFMipMapShader=zU.DOFMipMapShader,lV.BlurShaderUtils=EU.BlurShaderUtils,lV.DepthLimitedBlurShader=EU.DepthLimitedBlurShader,lV.DigitalGlitch=jU.DigitalGlitch,lV.DotScreenShader=_U.DotScreenShader,lV.FXAAShader=qU.FXAAShader,lV.FilmShader=aW.FilmShader,lV.FocusShader=wZ.FocusShader,lV.FreiChenShader=EI.FreiChenShader,lV.FresnelShader=XW.FresnelShader,lV.GammaCorrectionShader=kI.GammaCorrectionShader,lV.GodRaysCombineShader=gI.GodRaysCombineShader,lV.GodRaysDepthMaskShader=gI.GodRaysDepthMaskShader,lV.GodRaysFakeSunShader=gI.GodRaysFakeSunShader,lV.GodRaysGenerateShader=gI.GodRaysGenerateShader,lV.HalftoneShader=$W.HalftoneShader,lV.HorizontalBlurShader=id.HorizontalBlurShader,lV.HorizontalTiltShiftShader=KI.HorizontalTiltShiftShader,lV.HueSaturationShader=Dd.HueSaturationShader,lV.KaleidoShader=gd.KaleidoShader,lV.LuminosityHighPassShader=Bd.LuminosityHighPassShader,lV.LuminosityShader=jd.LuminosityShader,lV.MirrorShader=Yd.MirrorShader,lV.NormalMapShader=ld.NormalMapShader,lV.ParallaxShader=YC.ParallaxShader,lV.PixelShader=fC.PixelShader,lV.RGBShiftShader=$F.RGBShiftShader,lV.SAOShader=wC.SAOShader,lV.SMAABlendShader=aN.SMAABlendShader,lV.SMAAEdgesShader=aN.SMAAEdgesShader,lV.SMAAWeightsShader=aN.SMAAWeightsShader,lV.SSAOBlurShader=RN.SSAOBlurShader,lV.SSAODepthShader=RN.SSAODepthShader,lV.SSAOShader=RN.SSAOShader,lV.SSRBlurShader=tR.SSRBlurShader,lV.SSRDepthShader=tR.SSRDepthShader,lV.SSRShader=tR.SSRShader,lV.SepiaShader=sU.SepiaShader,lV.SobelOperatorShader=AZ.SobelOperatorShader,lV.SubsurfaceScatteringShader=VW.SubsurfaceScatteringShader,lV.TechnicolorShader=sW.TechnicolorShader,lV.ToneMapShader=zI.ToneMapShader,lV.ToonShader1=CI.ToonShader1,lV.ToonShader2=CI.ToonShader2,lV.ToonShaderDotted=CI.ToonShaderDotted,lV.ToonShaderHatching=CI.ToonShaderHatching,lV.TriangleBlurShader=fI.TriangleBlurShader,lV.UnpackDepthRGBAShader=Zd.UnpackDepthRGBAShader,lV.VerticalBlurShader=zd.VerticalBlurShader,lV.VerticalTiltShiftShader=WC.VerticalTiltShiftShader,lV.VignetteShader=kd.VignetteShader,lV.VolumeRenderShader1=OC.VolumeRenderShader1,lV.WaterRefractionShader=BC.WaterRefractionShader,lV.HTMLMesh=oC.HTMLMesh,lV.InteractiveGroup=VF.InteractiveGroup,lV.SelectionHelper=Tg.SelectionHelper,lV.SelectionBox=VN.SelectionBox,lV.AmmoPhysics=GG.AmmoPhysics,lV.ParallaxBarrierEffect=FJ.ParallaxBarrierEffect,lV.PeppersGhostEffect=O0.PeppersGhostEffect,lV.OutlineEffect=KG.OutlineEffect,lV.AnaglyphEffect=m1.AnaglyphEffect,lV.AsciiEffect=dZ.AsciiEffect,lV.StereoEffect=e1.StereoEffect,lV.FBXLoader=IG.FBXLoader,lV.Font=s1.Font,lV.FontLoader=s1.FontLoader,lV.TGALoader=HG.TGALoader,lV.LUTCubeLoader=dG.LUTCubeLoader,lV.NRRDLoader=J1.NRRDLoader,lV.STLLoader=AJ.STLLoader,lV.MTLLoader=g0.MTLLoader,lV.XLoader=aG.XLoader,lV.BVHLoader=Kg.BVHLoader,lV.KMZLoader=fN.KMZLoader,lV.VRMLoader=k0.VRMLoader,lV.VRMLLoader=lJ.VRMLLoader,lV.KTX2Loader=Gg.KTX2Loader,lV.LottieLoader=kN.LottieLoader,lV.TTFLoader=TN.TTFLoader,lV.RGBELoader=NJ.RGBELoader,lV.AssimpLoader=jg.AssimpLoader,lV.ColladaLoader=MN.ColladaLoader,lV.MDDLoader=jF.MDDLoader,lV.EXRLoader=uN.EXRLoader,lV.ThreeMFLoader=SJ.ThreeMFLoader,lV.XYZLoader=Zg.XYZLoader,lV.VTKLoader=e0.VTKLoader,lV.LUT3dlLoader=RG.LUT3dlLoader,lV.DDSLoader=kJ.DDSLoader,lV.PVRLoader=x0.PVRLoader,lV.GCodeLoader=K0.GCodeLoader,lV.BasisTextureLoader=SG.BasisTextureLoader,lV.TDSLoader=V0.TDSLoader,lV.LDrawLoader=ag.LDrawLoader,lV.GLTFLoader=gJ.GLTFLoader,lV.SVGLoader=md.SVGLoader,lV.Rhino3dmLoader=DJ.Rhino3dmLoader,lV.OBJLoader=vg.OBJLoader,lV.AMFLoader=LC.AMFLoader,lV.MMDLoader=W0.MMDLoader,lV.MD2Loader=GI.MD2Loader,lV.KTXLoader=qd.KTXLoader,lV.TiltLoader=iC.TiltLoader,lV.DRACOLoader=X0.DRACOLoader,lV.HDRCubeTextureLoader=XI.HDRCubeTextureLoader,lV.PDBLoader=yd.PDBLoader,lV.PRWMLoader=l0.PRWMLoader,lV.RGBMLoader=AF.RGBMLoader,lV.VOXData3DTexture=Eg.VOXData3DTexture,lV.VOXLoader=Eg.VOXLoader,lV.VOXMesh=Eg.VOXMesh,lV.PCDLoader=PC.PCDLoader,lV.LWOLoader=BN.LWOLoader,lV.PLYLoader=wF.PLYLoader,lV.LineSegmentsGeometry=Wg.LineSegmentsGeometry,lV.LineGeometry=UF.LineGeometry,lV.Wireframe=AC.Wireframe,lV.WireframeGeometry2=VC.WireframeGeometry2,lV.Line2=Od.Line2,lV.LineMaterial=HC.LineMaterial,lV.LineSegments2=aF.LineSegments2,lV.LightProbeHelper=RJ.LightProbeHelper,lV.VertexTangentsHelper=MJ.VertexTangentsHelper,lV.PositionalAudioHelper=JC.PositionalAudioHelper,lV.VertexNormalsHelper=I0.VertexNormalsHelper,lV.RectAreaLightHelper=_F.RectAreaLightHelper,lV.RectAreaLightUniformsLib=nN.RectAreaLightUniformsLib,lV.LightProbeGenerator=hF.LightProbeGenerator,lV.calcBSplineDerivatives=gg.calcBSplineDerivatives,lV.calcBSplinePoint=gg.calcBSplinePoint,lV.calcBasisFunctionDerivatives=gg.calcBasisFunctionDerivatives,lV.calcBasisFunctions=gg.calcBasisFunctions,lV.calcKoverI=gg.calcKoverI,lV.calcNURBSDerivatives=gg.calcNURBSDerivatives,lV.calcRationalCurveDerivatives=gg.calcRationalCurveDerivatives,lV.calcSurfacePoint=gg.calcSurfacePoint,lV.findSpan=gg.findSpan,lV.NURBSCurve=QN.NURBSCurve,lV.NURBSSurface=ig.NURBSSurface,lV.CinquefoilKnot=KF.CinquefoilKnot,lV.DecoratedTorusKnot4a=KF.DecoratedTorusKnot4a,lV.DecoratedTorusKnot4b=KF.DecoratedTorusKnot4b,lV.DecoratedTorusKnot5a=KF.DecoratedTorusKnot5a,lV.DecoratedTorusKnot5c=KF.DecoratedTorusKnot5c,lV.FigureEightPolynomialKnot=KF.FigureEightPolynomialKnot,lV.GrannyKnot=KF.GrannyKnot,lV.HeartCurve=KF.HeartCurve,lV.HelixCurve=KF.HelixCurve,lV.KnotCurve=KF.KnotCurve,lV.TorusKnot=KF.TorusKnot,lV.TrefoilKnot=KF.TrefoilKnot,lV.TrefoilPolynomialKnot=KF.TrefoilPolynomialKnot,lV.VivianiCurve=KF.VivianiCurve,lV.Face3=rg.Face3,lV.Geometry=rg.Geometry,lV.MeshoptDecoder=xd.MeshoptDecoder,lV.MotionController=JF.MotionController,lV.MotionControllerConstants=JF.MotionControllerConstants,lV.fetchProfile=JF.fetchProfile,lV.fetchProfilesList=JF.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=lV=>{let J=typeof lV=="number"?"mm":lV.replace(/^[^a-zA-Z]+/g,"").toLowerCase();J||(J="mm");const VV=typeof lV=="number"?lV:Number.parseFloat(lV.split(J)[0]);if(J in unitToMm)return VV*unitToMm[J];throw new Error(`Unsupported unit: ${J}`)},mm_default=mm,__defProp$o=Object.defineProperty,__export$4=(lV,J)=>{for(var VV in J)__defProp$o(lV,VV,{get:J[VV],enumerable:!0})},fn_exports$1={};__export$4(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},(lV,J)=>Math.cos(J/8*Math.PI-Math.PI)).map(lV=>({x:lV,y:-Math.sqrt(1-lV**2)})),platedhole$1=(lV,J,VV,RV,UV)=>({type:"pcb_plated_hole",shape:"circle",x:J,y:VV,hole_diameter:mm(RV),outer_diameter:mm(UV),pcb_port_id:"",layers:["top","bottom"],port_hints:[lV.toString()]}),silkscreenRef$1=(lV,J,VV)=>({type:"pcb_silkscreen_text",pcb_silkscreen_text_id:"silkscreen_text_1",font:"tscircuit2024",font_size:VV,pcb_component_id:"pcb_component_1",text:"{REF}",layer:"top",anchor_position:{x:lV,y:J},anchor_alignment:"center"}),extendDipDef$1=lV=>z$1.object({fn:z$1.string(),dip:z$1.literal(!0),num_pins:z$1.number().optional().default(6),wide:z$1.boolean().optional(),narrow:z$1.boolean().optional(),w:length$4.optional(),p:length$4.default(length$4.parse(lV.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(lV.w??"300mil")),J)),dip_def$1=extendDipDef$1({}),getCcwDipCoords$1=(lV,J,VV,RV)=>{const UV=lV/2,ZV=J<=UV,WV=UV-1,IV=RV,dV=IV*WV;return ZV?{x:-VV/2,y:dV/2-(J-1)*IV}:{x:VV/2,y:-dV/2+(J-UV-1)*IV}},dip$1=lV=>{const J=dip_def$1.parse(lV),VV=[];for(let dV=0;dV<J.num_pins;dV++){const{x:CV,y:FV}=getCcwDipCoords$1(J.num_pins,dV+1,J.w,J.p??2.54);VV.push(platedhole$1(dV+1,CV,FV,J.id??"0.8mm",J.od??"1mm"))}const RV=J.w-J.od-.4,UV=(J.num_pins/2-1)*J.p+J.od+.4,ZV={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-RV/2,y:-UV/2},{x:-RV/2,y:UV/2},...u_curve$1.map(({x:dV,y:CV})=>({x:dV*RV/6,y:CV*RV/6+UV/2})),{x:RV/2,y:UV/2},{x:RV/2,y:-UV/2},{x:-RV/2,y:-UV/2}],type:"pcb_silkscreen_path",stroke_width:.1},WV=[];for(let dV=0;dV<J.num_pins;dV++){const CV=dV<J.num_pins/2,FV=CV?-J.w/2-J.p/2-.2:J.p/2+J.w/2+.2,NV=CV?(-UV+1.6)/2+dV*J.p:(-UV+1.6)/2+(dV-J.num_pins/2)*J.p,gV={type:"pcb_fabrication_note_text",layer:"top",pcb_component_id:`pin_${dV+1}`,pcb_silkscreen_text_id:`pin_${dV+1}`,text:`{pin${dV+1}}`,anchor_position:{x:FV,y:NV},font_size:.3,font_color:"red",font:"tscircuit2024",anchor_alignment:"top-left"};WV.push(gV)}const IV=silkscreenRef$1(0,UV/2+.5,.4);return{circuitJson:[...VV,ZV,IV,...WV],parameters:J}},rectpad$1=(lV,J,VV,RV,UV)=>({type:"pcb_smtpad",x:J,y:VV,width:RV,height:UV,layer:"top",shape:"rect",pcb_smtpad_id:"",port_hints:Array.isArray(lV)?lV.map(ZV=>ZV.toString()):[lV.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:4.2,G_mm_min:1.2,X_mm_min:2.4,C_mm_ref:2.8},{imperial:"2010",metric:"5025",Z_mm_min:6,G_mm_min:2.6,X_mm_min:2.4,C_mm_ref:4.4},{imperial:"2512",metric:"6332",Z_mm_min:7.2,G_mm_min:3.8,X_mm_min:3,C_mm_ref:5.6}],metricMap$1=sizes$1.reduce((lV,J)=>(lV[J.metric]=J,lV),{}),imperialMap$1=sizes$1.reduce((lV,J)=>(lV[J.imperial]=J,lV),{});z$1.object({tht:z$1.boolean(),p:length$4,pw:length$4.optional(),ph:length$4.optional(),metric:distance$5.optional(),imperial:distance$5.optional(),w:length$4.optional(),h:length$4.optional()});var deriveXFromH$1=lV=>.079*lV**2+.94*lV-.009,deriveZFromW$1=lV=>1.09*lV+.6,deriveGFromW$1=lV=>.59*lV-.31,deriveCFromW$1=lV=>-.01*lV**2+.94*lV+.03,passive$1=lV=>{let{tht:J,p:VV,pw:RV,ph:UV,metric:ZV,imperial:WV,w:IV,h:dV}=lV;if(typeof IV=="string"&&(IV=mm_default(IV)),typeof dV=="string"&&(dV=mm_default(dV)),typeof VV=="string"&&(VV=mm_default(VV)),typeof RV=="string"&&(RV=mm_default(RV)),typeof UV=="string"&&(UV=mm_default(UV)),dV>IV)throw new Error("height cannot be greater than width (rotated footprint not yet implemented)");let CV;if(ZV&&(CV=metricMap$1[ZV]),WV&&(CV=imperialMap$1[WV]),!CV&&IV&&dV&&!RV&&!UV&&(CV={imperial:"custom",metric:"custom",Z_mm_min:deriveZFromW$1(IV),G_mm_min:deriveGFromW$1(IV),X_mm_min:deriveXFromH$1(dV),C_mm_ref:deriveCFromW$1(IV)}),CV&&(IV=CV.Z_mm_min,dV=CV.X_mm_min,VV=CV.C_mm_ref,RV=(CV.Z_mm_min-CV.G_mm_min)/2,UV=(CV.Z_mm_min-CV.G_mm_min)/2),RV===void 0)throw new Error("could not infer pad width");if(UV===void 0)throw new Error("could not infer pad width");const FV=silkscreenRef$1(0,.9,.2);return J?[platedhole$1(1,-VV/2,0,RV,RV*1/.8),platedhole$1(2,VV/2,0,RV,RV*1/.8),FV]:[rectpad$1(["1","left"],-VV/2,0,RV,UV),rectpad$1(["2","right"],VV/2,0,RV,UV),FV]},diode$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),cap$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),led$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),res$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),ALPHABET$1="ABCDEFGHIJKLMNOPQRSTUVWXYZ",dim2d$1=z$1.string().transform(lV=>{const[J,VV]=lV.split(/[x ]/);return{x:parseFloat(J),y:parseFloat(VV)}}).pipe(z$1.object({x:z$1.number(),y:z$1.number()})),function_call$1=z$1.string().or(z$1.array(z$1.any())).transform(lV=>Array.isArray(lV)?lV:(lV.startsWith("(")&&lV.endsWith(")")&&(lV=lV.slice(1,-1)),lV.split(",").map(J=>{const VV=Number(J);return isNaN(VV)?J:VV}))).pipe(z$1.array(z$1.string().or(z$1.number()))),bga_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.number().optional().default(64),grid:dim2d$1.optional(),p:distance$5.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$1.boolean().optional(),blorigin:z$1.boolean().optional(),trorigin:z$1.boolean().optional(),brorigin:z$1.boolean().optional(),missing:function_call$1.default([])}).transform(lV=>{let J="tl";if(lV.blorigin&&(J="bl"),lV.trorigin&&(J="tr"),lV.brorigin&&(J="br"),!lV.grid){const RV=Math.ceil(Math.sqrt(lV.num_pins));lV.grid={x:RV,y:RV}}return lV.missing&&(lV.missing=lV.missing.map(RV=>{if(typeof RV=="number")return RV;if(RV==="center")return"center";if(RV==="topleft")return"topleft";const UV=RV.match(/([A-Z]+)(\d+)/);if(!UV)return RV;const ZV=ALPHABET$1.indexOf(UV[1]),WV=Number.parseInt(UV[2])-1;return ZV*lV.grid.x+WV+1})),{...lV,origin:J}}),bga$1=lV=>{const J=bga_def$1.parse(lV);let{num_pins:VV,grid:RV,p:UV,w:ZV,h:WV,ball:IV,pad:dV,missing:CV}=J;IV??(IV=.75/1.27*UV),dV??(dV=IV*.8);const FV=[],NV=(CV??[]).filter(aV=>typeof aV=="number"),gV=RV.x*RV.y-VV;if(CV.length===0&&gV>0&&(Math.sqrt(gV)%1===0?CV.push("center"):gV===1&&CV.push("topleft")),CV!=null&&CV.includes("center")){const aV=Math.floor(Math.sqrt(gV)),GV=Math.floor((RV.x-aV)/2),cV=Math.floor((RV.y-aV)/2);for(let TV=cV;TV<cV+aV;TV++)for(let iV=GV;iV<GV+aV;iV++)NV.push(TV*RV.x+iV+1)}CV!=null&&CV.includes("topleft")&&NV.push(1);const eV=new Set(NV);let JV=0;for(let aV=0;aV<RV.y;aV++)for(let GV=0;GV<RV.x;GV++){let cV=aV*RV.x+GV+1;if(eV.has(cV)){JV++;continue}cV-=JV;const TV=(GV-(RV.x-1)/2)*UV,iV=-(aV-(RV.y-1)/2)*UV;FV.push(rectpad$1([cV,`${ALPHABET$1[aV]}${GV+1}`],TV,iV,dV,dV))}const nV=silkscreenRef$1(0,RV.y*UV/2,.2);return{circuitJson:[...FV,nV],parameters:J}},extendSoicDef$1=lV=>z$1.object({fn:z$1.string(),num_pins:z$1.number().optional().default(8),w:length$4.default(length$4.parse(lV.w??"5.3mm")),p:length$4.default(length$4.parse(lV.p??"1.27mm")),pw:length$4.optional(),pl:length$4.optional(),legsoutside:z$1.boolean().optional().default(lV.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=lV=>{lV.widthincludeslegs!==void 0&&(lV.legsoutside=!lV.widthincludeslegs);const{num_pins:J,pn:VV,w:RV,p:UV,pl:ZV,legsoutside:WV}=lV,IV=J/2,dV=VV<=IV,CV=IV-1,FV=UV,NV=FV*CV,gV=WV?ZV/2:-ZV/2;return dV?{x:-RV/2-gV,y:NV/2-(VV-1)*FV}:{x:RV/2+gV,y:-NV/2+(VV-IV-1)*FV}},soic$1=lV=>{const J=soic_def$1.parse(lV);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},soicWithoutParsing$1=lV=>{const J=[];for(let IV=0;IV<lV.num_pins;IV++){const{x:dV,y:CV}=getCcwSoicCoords$1({num_pins:lV.num_pins,pn:IV+1,w:lV.w,p:lV.p??1.27,pl:lV.pl,legsoutside:lV.legsoutside});J.push(rectpad$1(IV+1,dV,CV,lV.pl??"1mm",lV.pw??"0.6mm"))}const VV=Math.min(1,lV.p/2),RV=lV.w-(lV.legsoutside?0:lV.pl*2)-.2,UV=(lV.num_pins/2-1)*lV.p+lV.pw+VV,ZV=silkscreenRef$1(0,UV/2+.4,UV/12),WV={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",stroke_width:.1,route:[{x:-RV/2,y:-UV/2},{x:-RV/2,y:UV/2},...u_curve$1.map(({x:IV,y:dV})=>({x:IV*RV/6,y:dV*RV/6+UV/2})),{x:RV/2,y:UV/2},{x:RV/2,y:-UV/2},{x:-RV/2,y:-UV/2}]};return[...J,WV,ZV]},pin_order_specifier$1=z$1.enum(["leftside","topside","rightside","bottomside","toppin","bottompin","leftpin","rightpin"]),getQuadPinMap$2=({num_pins:lV,cw:J,ccw:VV,startingpin:RV})=>{const UV=[],ZV=lV/4;let WV=1;const IV={};for(const dV of RV??[])IV[dV]=!0;!IV.leftside&&!IV.topside&&!IV.rightside&&!IV.bottomside&&(IV.leftside=!0),!IV.bottompin&&!IV.leftpin&&!IV.rightpin&&!IV.toppin&&(IV.leftside?IV.toppin=!0:IV.topside?IV.rightpin=!0:IV.rightside?IV.bottompin=!0:IV.bottomside&&(IV.leftpin=!0)),IV.leftside&&IV.toppin?WV=1:IV.leftside&&IV.bottompin?WV=ZV:IV.bottomside&&IV.leftpin?WV=ZV+1:IV.bottomside&&IV.rightpin?WV=ZV*2:IV.rightside&&IV.bottompin?WV=ZV*2+1:IV.rightside&&IV.toppin?WV=ZV*3:IV.topside&&IV.rightpin?WV=ZV*3+1:IV.topside&&IV.leftpin&&(WV=ZV*4),UV.push(-1);for(let dV=0;dV<lV;dV++)UV[WV]=dV+1,VV||!J?(WV++,WV>lV&&(WV=1)):(WV--,WV<1&&(WV=lV));return UV},base_quad_def$1=z$1.object({fn:z$1.string(),cc:z$1.literal(!0).optional(),ccw:z$1.literal(!0).optional(),startingpin:z$1.string().or(z$1.array(pin_order_specifier$1)).transform(lV=>typeof lV=="string"?lV.slice(1,-1).split(","):lV).pipe(z$1.array(pin_order_specifier$1)).optional(),num_pins:z$1.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$1.union([z$1.literal(!0),dim2d$1]).optional(),legsoutside:z$1.boolean().optional()}),quadTransform$1=lV=>{lV.w&&!lV.h?lV.h=lV.w:!lV.w&&lV.h&&(lV.w=lV.h);const J=lV.num_pins/4;if(!lV.p&&!lV.pw&&!lV.pl&&lV.w){const VV=J+4;lV.p=lV.w/VV}return!lV.p&&lV.w&&lV.h&&lV.pw&&lV.pl&&(lV.p=(lV.w-lV.pl*2)/(J-1)),!lV.w&&!lV.h&&lV.p&&(lV.w=lV.p*(J+4),lV.h=lV.w),lV.p&&!lV.pw&&!lV.pl?(lV.pw=lV.p/2,lV.pl=lV.p/2):lV.pw?lV.pl||(lV.pl=lV.pw*(1/.6)):lV.pw=lV.pl*(.6/1),lV},quad_def$1=base_quad_def$1.transform(quadTransform$1),SIDES_CCW$1=["left","bottom","right","top"],getQuadCoords$2=lV=>{const{pin_count:J,pn:VV,w:RV,h:UV,p:ZV,pl:WV,legsoutside:IV}=lV,dV=J/4,CV=SIDES_CCW$1[Math.floor((VV-1)/dV)],FV=(VV-1)%dV,NV=ZV*(dV-1),gV=ZV*(dV-1),eV=IV?WV/2:-WV/2;switch(CV){case"left":return{x:-RV/2-eV,y:gV/2-FV*ZV,o:"vert"};case"bottom":return{x:-NV/2+FV*ZV,y:-UV/2-eV,o:"horz"};case"right":return{x:RV/2+eV,y:-gV/2+FV*ZV,o:"vert"};case"top":return{x:NV/2-FV*ZV,y:UV/2+eV,o:"horz"};default:throw new Error("Invalid pin number")}},quad$1=lV=>{const J=quad_def$1.parse(lV),VV=[],RV=getQuadPinMap$2(J),UV=J.num_pins/4;for(let IV=0;IV<J.num_pins;IV++){const{x:dV,y:CV,o:FV}=getQuadCoords$2({pin_count:J.num_pins,pn:IV+1,w:J.w,h:J.h,p:J.p??.5,pl:J.pl,legsoutside:J.legsoutside});let NV=J.pw,gV=J.pl;FV==="vert"&&([NV,gV]=[gV,NV]);const eV=RV[IV+1];VV.push(rectpad$1(eV,dV,CV,NV,gV))}if(J.thermalpad)if(typeof J.thermalpad=="boolean"){const IV=J.p*(UV-1)+J.pw,dV=J.p*(UV-1)+J.pw;VV.push(rectpad$1(["thermalpad"],0,0,IV,dV))}else VV.push(rectpad$1(["thermalpad"],0,0,J.thermalpad.x,J.thermalpad.y));const ZV=[];for(const[IV,dV,CV]of[["top-left",-1,1],["bottom-left",-1,-1],["bottom-right",1,-1],["top-right",1,1]]){const FV=J.w/2*dV,NV=J.h/2*CV;let gV="none",eV=FV,JV=NV;const nV=J.pw*2;RV[1]===1&&IV==="top-left"?gV="in1":RV[UV*4]===1&&IV==="top-left"||RV[UV*3+1]===1&&IV==="top-right"?gV="in2":RV[UV*3]===1&&IV==="top-right"||RV[UV]===1&&IV==="bottom-left"?gV="in1":RV[UV+1]===1&&IV==="bottom-left"?gV="in2":RV[UV*2]===1&&IV==="bottom-right"?gV="in1":RV[UV*2+1]===1&&IV==="bottom-right"&&(gV="in2");const aV=gV==="in1"?1:-1;if(J.legsoutside){const GV=gV==="in1"?J.pl/2:J.pw/2,cV=gV==="in1"?J.pw/2:J.pl/2;eV+=GV*dV*aV,JV-=cV*CV*aV}(gV==="none"||J.legsoutside)&&ZV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}`,route:[{x:FV-nV*dV,y:NV},{x:FV,y:NV},{x:FV,y:NV-nV*CV}],type:"pcb_silkscreen_path",stroke_width:.1}),(gV==="in1"||gV==="in2")&&!J.legsoutside&&ZV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}_1`,route:[{x:FV-nV*dV,y:NV},{x:FV-nV*dV/2,y:NV}],type:"pcb_silkscreen_path",stroke_width:0},{layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}_2`,route:[{x:FV,y:NV-nV*CV/2},{x:FV,y:NV-nV*CV}],type:"pcb_silkscreen_path",stroke_width:.1}),(gV==="in1"||gV==="in2")&&ZV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}_3`,route:[{x:eV-.2*-dV,y:JV+.2*aV},{x:eV,y:JV},{x:eV+.2*aV*-dV,y:JV+.2},{x:eV-.2*-dV,y:JV+.2*aV}],type:"pcb_silkscreen_path",stroke_width:.1})}const WV=silkscreenRef$1(0,J.h/2+(J.legsoutside?J.pl*1.2:.5),.3);return{circuitJson:[...VV,...ZV,WV],parameters:J}};base_quad_def$1.extend({}).transform(quadTransform$1);var qfn$1=lV=>(lV.legsoutside=!1,quad$1(lV)),qfp$1=lV=>{lV.legsoutside=!0;const J=quad_def$1.parse(lV);if(!lV.p)switch(lV.num_pins){case 44:case 64:lV.p=.8;break;case 52:lV.w===14?lV.p=1:lV.p=.65;break;case 208:lV.p=.5;break}if(!lV.pl)switch(lV.num_pins){case 44:case 52:case 64:lV.pl=2.25;break;case 208:lV.pl=1.65;break;default:lV.pl=J.pl*4;break}if(!lV.pw)switch(lV.num_pins){case 44:case 64:lV.pw=.5;break;case 52:lV.w===14?lV.pw=.45:lV.pw=.55;break;case 208:lV.pw=.3;break;default:lV.pw=J.pw;break}return quad$1(lV)};base_quad_def$1.extend({}).transform(quadTransform$1);var mlp$1=lV=>(lV.legsoutside=!1,lV.thermalpad===void 0&&(lV.thermalpad=!0),quad$1(lV)),ssop_def$1=extendSoicDef$1({w:"3.9mm",p:"1.27mm"}),ssop$1=lV=>{const J=ssop_def$1.parse(lV);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},tssop_def$1=extendSoicDef$1({w:"6.1mm",p:"0.65mm",legsoutside:!0}),tssop$1=lV=>{const J=tssop_def$1.parse(lV);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot236_def$1=extendSoicDef$1({p:"0.95mm",w:"1.6mm",legsoutside:!0}),sot236$1=lV=>{const J=sot236_def$1.parse({...lV,num_pins:6});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot363_def$1=extendSoicDef$1({}),sot363$1=lV=>{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$1.object({fn:z$1.string(),num_pins:z$1.literal(3).default(3),w:z$1.string().default("1.92mm"),h:z$1.string().default("2.74mm"),pl:z$1.string().default("0.8mm"),pw:z$1.string().default("0.764mm")}),sot23$1=lV=>{const J=sot23_def$1.parse(lV);return{circuitJson:sot23WithoutParsing$1(J),parameters:J}},getCcwSot23Coords$1=lV=>{const{pn:J,w:VV,h:RV,pl:UV}=lV;return J===1?{x:-1.7,y:0}:J===2?{x:1.7,y:-.95}:{x:1.7,y:.95}},sot23WithoutParsing$1=lV=>{const J=[];for(let RV=0;RV<lV.num_pins;RV++){const{x:UV,y:ZV}=getCcwSot23Coords$1({num_pins:lV.num_pins,pn:RV+1,w:Number.parseFloat(lV.w),h:Number.parseFloat(lV.h),pl:Number.parseFloat(lV.pl)});J.push(rectpad$1(RV+1,UV,ZV,Number.parseFloat(lV.pl),Number.parseFloat(lV.pw)))}const VV=silkscreenRef$1(0,Number(lV.h),.3);return[...J,VV]},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=lV=>{const J=dfn_def$1.parse(lV),VV=[];for(let NV=0;NV<J.num_pins;NV++){const{x:gV,y:eV}=getCcwSoicCoords$1({num_pins:J.num_pins,pn:NV+1,w:J.w,p:J.p??1.27,pl:J.pl,widthincludeslegs:!0});VV.push(rectpad$1(NV+1,gV,eV,J.pl??"1mm",J.pw??"0.6mm"))}const RV=Math.min(1,J.p/2),UV=J.w+RV,ZV=(J.num_pins/2-1)*J.p+J.pw+RV,WV=[];for(const NV of CORNERS$1){const{dx:gV,dy:eV}=NV;WV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",route:[{x:gV*UV/2-gV*J.p,y:eV*ZV/2},{x:gV*UV/2,y:eV*ZV/2},{x:gV*UV/2,y:eV*ZV/2-eV*J.p}],type:"pcb_silkscreen_path",stroke_width:.1})}const IV=J.p/4,dV=-UV/2-IV/2,CV=ZV/2-J.p/2;WV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",type:"pcb_silkscreen_path",route:[{x:dV,y:CV},{x:dV-IV,y:CV+IV},{x:dV-IV,y:CV-IV},{x:dV,y:CV}],stroke_width:.1});const FV=silkscreenRef$1(0,ZV/2+.4,ZV/12);return{circuitJson:[...VV,FV,...WV],parameters:J}},pinrow_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.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=lV=>{const J=pinrow_def$1.parse(lV),{p:VV,id:RV,od:UV}=J,ZV=[],IV=-((J.num_pins-1)/2)*VV;for(let CV=0;CV<J.num_pins;CV++)ZV.push(platedhole$1(CV+1,IV+CV*VV,0,RV,UV));const dV=silkscreenRef$1(0,VV/2,.5);return{circuitJson:[...ZV,dV],parameters:J}},sot563_def$1=extendSoicDef$1({}),sot563$1=lV=>{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=lV=>{const J=ms012_def$1.parse({...lV,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=lV=>{const J=ms013_def$1.parse({...lV,num_pins:16});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot723_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.literal(3).default(3),w:z$1.string().default("1.2mm"),h:z$1.string().default("1.2mm"),pl:z$1.string().default("0.3mm"),pw:z$1.string().default("0.32mm")}),sot723$1=lV=>{const J=sot723_def$1.parse(lV),VV=sot723WithoutParsing$1(J),RV=silkscreenRef$1(.4,length$4.parse(J.h),.2);return{circuitJson:[...VV,RV],parameters:J}},getCcwSot723Coords$2=lV=>{const{pn:J,w:VV,h:RV,pl:UV}=lV;return J===1?{x:0,y:0}:J===2?{x:1,y:-.4}:{x:1,y:.4}},sot723WithoutParsing$1=lV=>{const J=[];for(let VV=0;VV<3;VV++){const{x:RV,y:UV}=getCcwSot723Coords$2({num_pins:lV.num_pins,pn:VV+1,w:Number.parseFloat(lV.w),h:Number.parseFloat(lV.h),pl:Number.parseFloat(lV.pl)});J.push(rectpad$1(VV+1,RV,UV,Number.parseFloat(lV.pl),VV!==0?Number.parseFloat(lV.pw):.42))}return J},sod_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.literal(2).default(2),w:z$1.string().default("2.36mm"),h:z$1.string().default("1.22mm"),pl:z$1.string().default("0.9mm"),pw:z$1.string().default("0.9mm"),pad_spacing:z$1.string().default("4.19mm")}),sod123$1=lV=>{const J=sod_def$1.parse(lV),VV=silkscreenRef$1(0,length$4.parse(J.h)/4+.4,.3);return{circuitJson:sodWithoutParsing$1(J).concat(VV),parameters:J}},getSodCoords$1=lV=>{const{pn:J,pad_spacing:VV}=lV;return J===1?{x:-VV/2,y:0}:{x:VV/2,y:0}},sodWithoutParsing$1=lV=>{const J=[];for(let VV=1;VV<=lV.num_pins;VV++){const{x:RV,y:UV}=getSodCoords$1({pn:VV,pad_spacing:Number.parseFloat(lV.pad_spacing)});J.push(rectpad$1(VV,RV,UV,Number.parseFloat(lV.pl),Number.parseFloat(lV.pw)))}return J},axial_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.literal(2).default(2),p:length$4.optional().default("2.54mm"),id:length$4.optional().default("0.7mm"),od:length$4.optional().default("1mm")}),axial$1=lV=>{const J=axial_def$1.parse(lV),{p:VV,id:RV,od:UV}=J,ZV=[platedhole$1(1,-VV/2,0,RV,UV),platedhole$1(2,VV/2,0,RV,UV)],WV={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",route:[{x:-VV/2+UV+RV/2,y:0},{x:VV/2-UV-RV/2,y:0}],stroke_width:.1,pcb_silkscreen_path_id:""},IV=silkscreenRef$1(0,VV/4,.5);return{circuitJson:[...ZV,WV,IV],parameters:J}},silkscreenpath$1=(lV,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:lV,stroke_width:J.stroke_width||.1}),pushbutton_def$1=z$1.object({fn:z$1.literal("pushbutton"),w:z$1.literal(4.5).default(4.5),h:z$1.literal(6.5).default(6.5),id:z$1.literal(1).default(1),od:z$1.literal(1.2).default(1.2)}),pushbutton$1=lV=>{const J=pushbutton_def$1.parse(lV),VV=J.w,RV=J.h,UV=J.id,ZV=[platedhole$1(1,-VV/2,RV/2,UV,UV*1.2),platedhole$1(2,-VV/2,-RV/2,UV,UV*1.2),platedhole$1(3,VV/2,-RV/2,UV,UV*1.2),platedhole$1(4,VV/2,RV/2,UV,UV*1.2)],WV=[silkscreenpath$1([{x:-VV/2,y:-RV/2},{x:-VV/2,y:RV/2}]),silkscreenpath$1([{x:VV/2,y:-RV/2},{x:VV/2,y:RV/2}]),silkscreenpath$1([{x:-VV/2,y:0},{x:-VV/5,y:0},{x:VV/5*1/Math.sqrt(2),y:RV/8}]),silkscreenpath$1([{x:VV/2,y:0},{x:VV/5,y:0}])],IV=silkscreenRef$1(0,RV/2+.4,.5);return{circuitJson:[...ZV,...WV,IV],parameters:J}},stampboard_def$1=z$1.object({fn:z$1.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$1.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight$1=lV=>{const J=stampboard_def$1.parse(lV);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=(lV,J,VV)=>{let RV=[];return VV==="right"&&(RV=[{x:lV+1/2,y:J},{x:lV-1/2,y:J+.6/2},{x:lV-1/2,y:J-.6/2},{x:lV+1/2,y:J}]),VV==="left"&&(RV=[{x:lV-1/2,y:J},{x:lV+1/2,y:J+.6/2},{x:lV+1/2,y:J-.6/2},{x:lV-1/2,y:J}]),VV==="top"&&(RV=[{x:lV,y:J+1/2},{x:lV-.6/2,y:J-1/2},{x:lV+.6/2,y:J-1/2},{x:lV,y:J+1/2}]),VV==="bottom"&&(RV=[{x:lV,y:J-1/2},{x:lV-.6/2,y:J+1/2},{x:lV+.6/2,y:J+1/2},{x:lV,y:J-1/2}]),RV},stampboard$1=lV=>{const J=stampboard_def$1.parse(lV),VV=J.h??getHeight$1(J),RV=[],UV=[];let ZV=[];const WV=1,IV=1.2,dV=J.left+J.right+(J.bottom??0)+(J.top??0);if(J.right){const gV=-((J.right-1)/2)*J.p;for(let eV=0;eV<J.right;eV++)eV===0&&!J.left&&!J.bottom&&(ZV=getTriangleDir$1(J.w/2-J.pl*1.4,gV+eV*J.p,"right")),RV.push(rectpad$1(eV+1+J.left+(J.bottom??0),J.w/2-J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&(UV.push(platedhole$1(eV+1+J.left+(J.bottom??0)+dV,J.w/2,gV+eV*J.p,WV,IV)),UV.push(platedhole$1(eV+1+J.left+(J.bottom??0)+dV*2,J.w/2-J.innerholeedgedistance,gV+eV*J.p,WV,IV)))}if(J.left){const gV=-((J.left-1)/2)*J.p;for(let eV=0;eV<J.left;eV++)eV===J.left-1&&(ZV=getTriangleDir$1(-J.w/2+J.pl*1.4,gV+eV*J.p,"left")),RV.push(rectpad$1(eV+1,-J.w/2+J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&(UV.push(platedhole$1(eV+1+dV,-J.w/2,gV+eV*J.p,WV,IV)),UV.push(platedhole$1(eV+1+dV*2,-J.w/2+J.innerholeedgedistance,gV+eV*J.p,WV,IV)))}if(J.top){const gV=-((J.top-1)/2)*J.p;for(let eV=0;eV<J.top;eV++)eV===J.top-1&&!J.left&&!J.bottom&&!J.right&&(ZV=getTriangleDir$1(gV+eV*J.p,VV/2-J.pl*1.4,"top")),RV.push(rectpad$1(eV+1+J.left+J.right+(J.bottom??0),gV+eV*J.p,VV/2-J.pl/2,J.pw,J.pl)),J.innerhole&&(UV.push(platedhole$1(eV+1+J.left+J.right+(J.bottom??0)+dV,gV+eV*J.p,VV/2,WV,IV)),UV.push(platedhole$1(eV+1+J.left+J.right+(J.bottom??0)+dV*2,gV+eV*J.p,VV/2-J.innerholeedgedistance,WV,IV)))}if(J.bottom){const gV=-((J.bottom-1)/2)*J.p;for(let eV=0;eV<J.bottom;eV++)eV===0&&!J.left&&(ZV=getTriangleDir$1(gV+eV*J.p,-VV/2+J.pl*1.4,"bottom")),RV.push(rectpad$1(eV+1+J.left,gV+eV*J.p,-VV/2+J.pl/2,J.pw,J.pl)),J.innerhole&&(UV.push(platedhole$1(eV+1+J.left+dV,gV+eV*J.p,-VV/2,WV,IV)),UV.push(platedhole$1(eV+1+J.left+dV*2,gV+eV*J.p,-VV/2+J.innerholeedgedistance,WV,IV)))}const CV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_triangle_1",pcb_component_id:"2",route:ZV,stroke_width:.1,layer:"top"},FV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2,y:VV/2},{x:J.w/2,y:VV/2},{x:J.w/2,y:-VV/2},{x:-J.w/2,y:-VV/2},{x:-J.w/2,y:VV/2}],stroke_width:.1,layer:"top"},NV=silkscreenRef$1(0,VV/1.8,VV/25);return{circuitJson:[...RV,...UV,FV,CV,NV],parameters:J}},stampreceiver_def$1=z$1.object({fn:z$1.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$1.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight2$1=lV=>{const J=stampreceiver_def$1.parse(lV);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=(lV,J,VV,RV=1,UV=.6)=>{const ZV=RV/2,WV=UV/2;return{left:[{x:lV+ZV,y:J},{x:lV-ZV,y:J+WV},{x:lV-ZV,y:J-WV},{x:lV+ZV,y:J}],right:[{x:lV-ZV,y:J},{x:lV+ZV,y:J+WV},{x:lV+ZV,y:J-WV},{x:lV-ZV,y:J}],top:[{x:lV,y:J-ZV},{x:lV-WV,y:J+ZV},{x:lV+WV,y:J+ZV},{x:lV,y:J-ZV}],bottom:[{x:lV,y:J+ZV},{x:lV-WV,y:J-ZV},{x:lV+WV,y:J-ZV},{x:lV,y:J+ZV}]}[VV]},stampreceiver$1=lV=>{const J=stampreceiver_def$1.parse(lV),VV=J.h??getHeight2$1(J),RV=[],UV=[],ZV=1,WV=1.2,IV=J.left+J.right+(J.bottom??0)+(J.top??0);let dV=[];if(J.right){const gV=-((J.right-1)/2)*J.p;for(let eV=0;eV<J.right;eV++)eV===0&&!J.left&&!J.bottom&&(dV=getTriangleDir2$1(J.w/2+J.pl*1.4,gV+eV*J.p,"right")),RV.push(rectpad$1(eV+1+J.left+(J.bottom??0),J.w/2-J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&UV.push(platedhole$1(eV+1+J.left+(J.bottom??0)+IV,J.w/2-J.innerholeedgedistance,gV+eV*J.p,ZV,WV))}if(J.left){const gV=-((J.left-1)/2)*J.p;for(let eV=0;eV<J.left;eV++)eV===J.left-1&&(dV=getTriangleDir2$1(-J.w/2-J.pl/3,gV+eV*J.p,"left")),RV.push(rectpad$1(eV+1,-J.w/2+J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&UV.push(platedhole$1(eV+1+IV,-J.w/2+J.innerholeedgedistance,gV+eV*J.p,ZV,WV))}if(J.top){const gV=-((J.top-1)/2)*J.p;for(let eV=0;eV<J.top;eV++)eV===J.top-1&&!J.left&&!J.bottom&&!J.right&&(dV=getTriangleDir2$1(gV+eV*J.p,VV/2+J.pl*1.4,"top")),RV.push(rectpad$1(eV+1+J.right+(J.bottom??0)+J.left,gV+eV*J.p,VV/2-J.pl/2,J.pw,J.pl)),J.innerhole&&UV.push(platedhole$1(eV+1+J.right+(J.bottom??0)+J.left+IV,gV+eV*J.p,VV/2-J.innerholeedgedistance,ZV,WV))}if(J.bottom){const gV=-((J.bottom-1)/2)*J.p;for(let eV=0;eV<J.bottom;eV++)eV===0&&!J.left&&(dV=getTriangleDir2$1(gV+eV*J.p,-VV/2-J.pl*1.4,"bottom")),RV.push(rectpad$1(eV+1+J.left,gV+eV*J.p,-VV/2+J.pl/2,J.pw,J.pl)),J.innerhole&&UV.push(platedhole$1(eV+1+J.left+IV,gV+eV*J.p,-VV/2+J.innerholeedgedistance,ZV,WV))}const CV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:dV,stroke_width:.1},FV={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:VV/2+J.pl/3},{x:J.w/2+J.pl/3,y:VV/2+J.pl/3},{x:J.w/2+J.pl/3,y:-VV/2-J.pl/3},{x:-J.w/2-J.pl/3,y:-VV/2-J.pl/3},{x:-J.w/2-J.pl/3,y:VV/2+J.pl/3}],stroke_width:.1,layer:"top"},NV=silkscreenRef$1(0,VV/1.8,VV/25);return{circuitJson:[...UV,...RV,FV,CV,NV],parameters:J}},lqfp$1=lV=>(lV.legsoutside=!0,quad$1(lV)),sot235_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.literal(5).default(5),h:z$1.string().default("1.6mm"),pl:z$1.string().default("1mm"),pw:z$1.string().default("0.7mm"),p:z$1.string().default("0.95mm")}),sot235$1=lV=>{const J=sot235_def$1.parse(lV);return{circuitJson:sot23_5WithoutParsing$1(J),parameters:J}},getCcwSot235Coords$1=lV=>{const{p:J,h:VV,pn:RV}=lV;if(RV===1)return{x:-VV/2-.5,y:J};if(RV===2)return{x:-VV/2-.5,y:0};if(RV===3)return{x:-VV/2-.5,y:-J};if(RV===4)return{x:VV/2+.5,y:-J};if(RV===5)return{x:VV/2+.5,y:J};throw new Error("Invalid pin number")},sot23_5WithoutParsing$1=lV=>{const J=[];for(let NV=1;NV<=lV.num_pins;NV++){const{x:gV,y:eV}=getCcwSot235Coords$1({h:Number.parseFloat(lV.h),p:Number.parseFloat(lV.p),pn:NV});J.push(rectpad$1(NV,gV,eV,Number.parseFloat(lV.pl),Number.parseFloat(lV.pw)))}const VV=(lV.num_pins+1)/2*Number.parseFloat(lV.p),RV=Number.parseFloat(lV.h),UV={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-VV/3,y:RV/2+Number.parseFloat(lV.p)/1.3},{x:VV/3,y:RV/2+Number.parseFloat(lV.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},ZV={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_2",route:[{x:-VV/3,y:-RV/2-Number.parseFloat(lV.p)/1.3},{x:VV/3,y:-RV/2-Number.parseFloat(lV.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},WV=silkscreenRef$1(0,RV+.3,.3),IV=getCcwSot235Coords$1({h:Number.parseFloat(lV.h),p:Number.parseFloat(lV.p),pn:1});IV.x=IV.x-Number.parseFloat(lV.pw)*1.5;const dV=.7,CV=.3,FV={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"pin1_indicator",route:[{x:IV.x+dV/2,y:IV.y},{x:IV.x-dV/2,y:IV.y+CV/2},{x:IV.x-dV/2,y:IV.y-CV/2},{x:IV.x+dV/2,y:IV.y}],stroke_width:.05};return[...J,WV,UV,ZV,FV]},breakoutheaders_def=z$1.object({fn:z$1.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=lV=>{const J=breakoutheaders_def.parse(lV);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=(lV,J,VV,RV=1,UV=.6)=>{const ZV=RV/2,WV=UV/2;return{left:[{x:lV+ZV,y:J},{x:lV-ZV,y:J+WV},{x:lV-ZV,y:J-WV},{x:lV+ZV,y:J}],right:[{x:lV-ZV,y:J},{x:lV+ZV,y:J+WV},{x:lV+ZV,y:J-WV},{x:lV-ZV,y:J}],top:[{x:lV,y:J-ZV},{x:lV-WV,y:J+ZV},{x:lV+WV,y:J+ZV},{x:lV,y:J-ZV}],bottom:[{x:lV,y:J+ZV},{x:lV-WV,y:J-ZV},{x:lV+WV,y:J-ZV},{x:lV,y:J+ZV}]}[VV]},breakoutheaders=lV=>{const J=breakoutheaders_def.parse(lV),VV=J.h??getHeight3(J),RV=[],UV=J.id,ZV=J.od;let WV=[];if(J.right){const FV=-((J.right-1)/2)*J.p;for(let NV=0;NV<J.right;NV++)NV===0&&!J.left&&!J.bottom&&(WV=getTrianglePath(J.w/2+ZV*1.4,FV+NV*J.p,"right")),RV.push(platedhole$1(NV+1+J.left+(J.bottom??0),J.w/2,FV+NV*J.p,UV,ZV))}if(J.left){const FV=-((J.left-1)/2)*J.p;for(let NV=0;NV<J.left;NV++)NV===J.left-1&&(WV=getTrianglePath(-J.w/2-ZV*1.4,FV+NV*J.p,"left")),RV.push(platedhole$1(NV+1,-J.w/2,FV+NV*J.p,UV,ZV))}if(J.top){const FV=-((J.top-1)/2)*J.p;for(let NV=0;NV<J.top;NV++)NV===J.top-1&&!J.left&&!J.bottom&&!J.right&&(WV=getTrianglePath(FV+NV*J.p,VV/2+ZV*1.4,"top")),RV.push(platedhole$1(NV+1+J.right+(J.bottom??0)+J.left,FV+NV*J.p,VV/2,UV,ZV))}if(J.bottom){const FV=-((J.bottom-1)/2)*J.p;for(let NV=0;NV<J.bottom;NV++)NV===0&&!J.left&&(WV=getTrianglePath(FV+NV*J.p,-VV/2-ZV*1.4,"bottom")),RV.push(platedhole$1(NV+1+J.left,FV+NV*J.p,-VV/2,UV,ZV))}const IV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:WV,stroke_width:.1},dV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2-ZV,y:VV/2+ZV},{x:J.w/2+ZV,y:VV/2+ZV},{x:J.w/2+ZV,y:-VV/2-ZV},{x:-J.w/2-ZV,y:-VV/2-ZV},{x:-J.w/2-ZV,y:VV/2+ZV}],stroke_width:.1,layer:"top"},CV=silkscreenRef$1(0,VV/1.7,VV/25);return{circuitJson:[...RV,dV,CV,IV],parameters:J}};function isNotNull$2(lV){return lV!==null}var string$1=lV=>{let J=footprinter$1();(lV.length===4||lV.length===5)&&/^\d+$/.test(lV)&&(lV=`res${lV}`);const VV=lV.split("_").map(RV=>{const UV=RV.match(/([a-z]+)([\(\d\.\+\?].*)?/),[ZV,WV,IV]=UV??[];return IV!=null&&IV.includes("?")?null:{fn:UV==null?void 0:UV[1],v:UV==null?void 0:UV[2]}}).filter(isNotNull$2);for(const{fn:RV,v:UV}of VV)J=J[RV](UV);return J.setString(lV),J},getFootprintNames$1=()=>Object.keys(fn_exports$1),footprinter$1=()=>{const lV=new Proxy({},{get:(J,VV)=>{if(VV==="soup"||VV==="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 "${VV}"`)}}if(VV==="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 VV==="getFootprintNames"?()=>Object.keys(fn_exports$1):VV==="params"?()=>J:VV==="setString"?RV=>(J.string=RV,lV):RV=>(Object.keys(J).length===0?`${VV}${RV}`in fn_exports$1?(J[`${VV}${RV}`]=!0,J.fn=`${VV}${RV}`):(J[VV]=!0,J.fn=VV,VV==="res"||VV==="cap"?RV&&(J.imperial=RV):J.num_pins=Number.isNaN(Number.parseFloat(RV))?void 0:Number.parseFloat(RV)):!RV&&["w","h","p"].includes(VV)||(J[VV]=RV??!0),lV)}});return lV};footprinter$1.string=string$1,footprinter$1.getFootprintNames=getFootprintNames$1;var fp$1=footprinter$1,unitMappings$1={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[lV,J]of Object.entries(unitMappings$1)){unitMappingAndVariantSuffixes.add(lV);for(const VV of Object.keys(J.variants))unitMappingAndVariantSuffixes.add(VV)}function getBaseTscircuitUnit$1(lV){for(const[J,VV]of Object.entries(unitMappings$1))if(lV in VV.variants)return{baseUnit:VV.baseUnit,conversionFactor:VV.variants[lV]};return{baseUnit:lV,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$1=lV=>{var IV;if(typeof lV>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof lV=="string"&&lV.match(/^[\d\.]+$/))return{value:Number.parseFloat(lV),parsedUnit:null,unitOfValue:null};if(typeof lV=="number")return{value:lV,parsedUnit:null,unitOfValue:null};if(typeof lV=="object"&&"x"in lV&&"y"in lV){const{parsedUnit:dV,unitOfValue:CV}=parseAndConvertSiUnit$1(lV.x);return{parsedUnit:dV,unitOfValue:CV,value:{x:parseAndConvertSiUnit$1(lV.x).value,y:parseAndConvertSiUnit$1(lV.y).value}}}const VV=(IV=lV.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:IV[0];if(!VV)throw new Error(`Could not determine unit: "${lV}"`);const RV=VV.split("").reverse().join(""),UV=lV.slice(0,-RV.length);if(RV in si_prefix_multiplier&&!unitMappingAndVariantSuffixes.has(RV)){const dV=si_prefix_multiplier[RV];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(UV)*dV}}const{baseUnit:ZV,conversionFactor:WV}=getBaseTscircuitUnit$1(RV);return{parsedUnit:RV,unitOfValue:ZV,value:WV*Number.parseFloat(UV)}},resistance$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),capacitance$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),inductance$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),voltage$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),length$3=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),frequency=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),distance$4=length$3,current=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),time=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),rotation$3=z$1.string().or(z$1.number()).transform(lV=>typeof lV=="number"?lV:lV.endsWith("deg")?Number.parseFloat(lV.split("deg")[0]):lV.endsWith("rad")?Number.parseFloat(lV.split("rad")[0])*180/Math.PI:Number.parseFloat(lV)),battery_capacity$1=z$1.number().or(z$1.string().endsWith("mAh")).transform(lV=>{if(typeof lV=="string"){const J=lV.replace("mAh",""),VV=Number.parseFloat(J);if(Number.isNaN(VV))throw new Error("Invalid capacity");return VV}return lV}).describe("Battery capacity in mAh"),point$2=z$1.object({x:distance$4,y:distance$4}),position$2=point$2,point3$2=z$1.object({x:distance$4,y:distance$4,z:distance$4}),position3=point3$2,size$4=z$1.object({width:z$1.number(),height:z$1.number()}),getZodPrefixedIdWithDefault$1=lV=>z$1.string().optional().default(()=>`${lV}_${nanoid(10)}`),supplier_name$1=z$1.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base$1=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$1,z$1.array(z$1.string())).optional(),display_value:z$1.string().optional()}),source_simple_capacitor$1=source_component_base$1.extend({ftype:z$1.literal("simple_capacitor"),capacitance:capacitance$1,display_capacitance:z$1.string().optional(),max_decoupling_trace_length:distance$4.optional()}),source_simple_resistor$1=source_component_base$1.extend({ftype:z$1.literal("simple_resistor"),resistance:resistance$1,display_resistance:z$1.string().optional()}),source_simple_diode$1=source_component_base$1.extend({ftype:z$1.literal("simple_diode")}),source_simple_ground$1=source_component_base$1.extend({ftype:z$1.literal("simple_ground")}),source_simple_bug$1=source_component_base$1.extend({ftype:z$1.literal("simple_bug")}).describe("@deprecated"),source_simple_chip$1=source_component_base$1.extend({ftype:z$1.literal("simple_chip")}),source_led$1=source_simple_diode$1.extend({ftype:z$1.literal("led")}),source_simple_power_source$1=source_component_base$1.extend({ftype:z$1.literal("simple_power_source"),voltage:voltage$1}),source_simple_battery$1=source_component_base$1.extend({ftype:z$1.literal("simple_battery"),capacity:battery_capacity$1}),source_simple_inductor$1=source_component_base$1.extend({ftype:z$1.literal("simple_inductor"),inductance:inductance$1}),source_simple_push_button=source_component_base$1.extend({ftype:z$1.literal("simple_push_button")}),source_simple_potentiometer=source_component_base$1.extend({ftype:z$1.literal("simple_potentiometer"),max_resistance:resistance$1}),source_simple_crystal=source_component_base$1.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$1.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$1.extend({ftype:z$1.literal("simple_resonator"),load_capacitance:capacitance$1,equivalent_series_resistance:resistance$1.optional(),frequency}),source_simple_transistor=source_component_base$1.extend({ftype:z$1.literal("simple_transistor"),transistor_type:z$1.enum(["npn","pnp"])}),any_source_component$1=z$1.union([source_simple_resistor$1,source_simple_capacitor$1,source_simple_diode$1,source_simple_ground$1,source_simple_chip$1,source_simple_bug$1,source_led$1,source_simple_power_source$1,source_simple_battery$1,source_simple_inductor$1,source_simple_push_button,source_simple_potentiometer,source_simple_crystal,source_simple_pin_header,source_simple_resonator,source_simple_transistor]),source_port$1=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$1=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()}),source_group$1=z$1.object({type:z$1.literal("source_group"),source_group_id:z$1.string(),name:z$1.string().optional()}),source_net$1=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$1=z$1.object({type:z$1.literal("schematic_box"),schematic_component_id:z$1.string(),width:distance$4,height:distance$4,x:distance$4,y:distance$4}).describe("Draws a box on the schematic"),schematic_path$1=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$2)}),schematic_pin_styles$1=z$1.record(z$1.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=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$1=z$1.object({type:z$1.literal("schematic_component"),rotation:rotation$3.default(0),size:size$4,center:point$2,source_component_id:z$1.string(),schematic_component_id:z$1.string(),pin_spacing:length$3.optional(),pin_styles:schematic_pin_styles$1.optional(),box_width:length$3.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$1=z$1.object({type:z$1.literal("schematic_line"),schematic_component_id:z$1.string(),x1:distance$4,x2:distance$4,y1:distance$4,y2:distance$4}),schematic_trace$1=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$1=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$4,y:distance$4}),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$1=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$2,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$1=z$1.object({type:z$1.literal("schematic_net_label"),source_net_id:z$1.string(),center:point$2,anchor_position:point$2.optional(),anchor_side:z$1.enum(["top","bottom","left","right"]),text:z$1.string(),symbol_name:z$1.string().optional()}),schematic_error$1=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$1=z$1.object({type:z$1.literal("schematic_debug_object"),label:z$1.string().optional()}),schematic_debug_rect$1=schematic_debug_object_base$1.extend({shape:z$1.literal("rect"),center:point$2,size:size$4}),schematic_debug_line$1=schematic_debug_object_base$1.extend({shape:z$1.literal("line"),start:point$2,end:point$2}),schematic_debug_point$1=schematic_debug_object_base$1.extend({shape:z$1.literal("point"),center:point$2}),schematic_debug_object$1=z$1.discriminatedUnion("shape",[schematic_debug_rect$1,schematic_debug_line$1,schematic_debug_point$1]),schematic_voltage_probe=z$1.object({type:z$1.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$1.string(),position:point$2,schematic_trace_id:z$1.string(),voltage:voltage$1.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers$1=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string$1=z$1.enum(all_layers$1),layer_ref$1=layer_string$1.or(z$1.object({name:layer_string$1})).transform(lV=>typeof lV=="string"?lV:lV.name),visible_layer$1=z$1.enum(["top","bottom"]),pcb_route_hint$1=z$1.object({x:distance$4,y:distance$4,via:z$1.boolean().optional(),via_to_layer:layer_ref$1.optional()}),pcb_route_hints=z$1.array(pcb_route_hint$1),route_hint_point$1=z$1.object({x:distance$4,y:distance$4,via:z$1.boolean().optional(),to_layer:layer_ref$1.optional(),trace_width:distance$4.optional()}),pcb_component$1=z$1.object({type:z$1.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault$1("pcb_component"),source_component_id:z$1.string(),center:point$2,layer:layer_ref$1,rotation:rotation$3,width:length$3,height:length$3}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square$1=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$1("pcb_hole"),hole_shape:z$1.enum(["circle","square"]),hole_diameter:z$1.number(),x:distance$4,y:distance$4}),pcb_hole_circle_or_square_shape=pcb_hole_circle_or_square$1.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval$1=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$1("pcb_hole"),hole_shape:z$1.literal("oval"),hole_width:z$1.number(),hole_height:z$1.number(),x:distance$4,y:distance$4}),pcb_hole_oval_shape=pcb_hole_oval$1.describe("Defines an oval hole on the PCB"),pcb_hole$1=pcb_hole_circle_or_square$1.or(pcb_hole_oval$1),pcb_plated_hole_circle$1=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$4,y:distance$4,layers:z$1.array(layer_ref$1),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$1("pcb_plated_hole")}),pcb_plated_hole_oval$1=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$4,y:distance$4,layers:z$1.array(layer_ref$1),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$1("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$4,y:distance$4,layers:z$1.array(layer_ref$1),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$1("pcb_plated_hole")}),pcb_plated_hole$1=z$1.union([pcb_plated_hole_circle$1,pcb_plated_hole_oval$1,pcb_circular_hole_with_rect_pad]),pcb_port$1=z$1.object({type:z$1.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault$1("pcb_port"),source_port_id:z$1.string(),pcb_component_id:z$1.string(),x:distance$4,y:distance$4,layers:z$1.array(layer_ref$1)}).describe("Defines a port on the PCB"),pcb_smtpad_circle$1=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault$1("pcb_smtpad"),x:distance$4,y:distance$4,radius:z$1.number(),layer:layer_ref$1,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$1=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$1("pcb_smtpad"),x:distance$4,y:distance$4,width:z$1.number(),height:z$1.number(),layer:layer_ref$1,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$1("pcb_smtpad"),x:distance$4,y:distance$4,width:z$1.number(),height:z$1.number(),ccw_rotation:rotation$3,layer:layer_ref$1,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$1=z$1.union([pcb_smtpad_circle$1,pcb_smtpad_rect$1,pcb_smtpad_rotated_rect]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle$1=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$1("pcb_solder_paste"),x:distance$4,y:distance$4,radius:z$1.number(),layer:layer_ref$1,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste_rect$1=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$1("pcb_solder_paste"),x:distance$4,y:distance$4,width:z$1.number(),height:z$1.number(),layer:layer_ref$1,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste$1=z$1.union([pcb_solder_paste_circle$1,pcb_solder_paste_rect$1]).describe("Defines solderpaste on the PCB"),pcb_text$1=z$1.object({type:z$1.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault$1("pcb_text"),text:z$1.string(),center:point$2,layer:layer_ref$1,width:length$3,height:length$3,lines:z$1.number(),align:z$1.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire$1=z$1.object({route_type:z$1.literal("wire"),x:distance$4,y:distance$4,width:distance$4,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref$1}),pcb_trace_route_point_via$1=z$1.object({route_type:z$1.literal("via"),x:distance$4,y:distance$4,from_layer:z$1.string(),to_layer:z$1.string()}),pcb_trace_route_point=z$1.union([pcb_trace_route_point_wire$1,pcb_trace_route_point_via$1]),pcb_trace$1=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$1("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$4,y:distance$4,width:distance$4,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref$1}),z$1.object({route_type:z$1.literal("via"),x:distance$4,y:distance$4,from_layer:z$1.string(),to_layer:z$1.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error$1=z$1.object({type:z$1.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault$1("pcb_trace_error"),error_type:z$1.literal("pcb_trace_error"),message:z$1.string(),center:point$2.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$1=z$1.object({type:z$1.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault$1("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$1=z$1.object({type:z$1.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault$1("pcb_via"),x:distance$4,y:distance$4,outer_diameter:distance$4.default("0.6mm"),hole_diameter:distance$4.default("0.25mm"),from_layer:layer_ref$1.optional(),to_layer:layer_ref$1.optional(),layers:z$1.array(layer_ref$1),pcb_trace_id:z$1.string().optional()}).describe("Defines a via on the PCB"),pcb_board$1=z$1.object({type:z$1.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault$1("pcb_board"),width:length$3,height:length$3,center:point$2,thickness:length$3.optional().default(1.4),num_layers:z$1.number().optional().default(4),outline:z$1.array(point$2).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error$1=z$1.object({type:z$1.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault$1("pcb_placement_error"),message:z$1.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint$1=z$1.object({type:z$1.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault$1("pcb_trace_hint"),pcb_port_id:z$1.string(),pcb_component_id:z$1.string(),route:z$1.array(route_hint_point$1)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line$1=z$1.object({type:z$1.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_line"),pcb_component_id:z$1.string(),stroke_width:distance$4.default("0.1mm"),x1:distance$4,y1:distance$4,x2:distance$4,y2:distance$4,layer:visible_layer$1}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path$1=z$1.object({type:z$1.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_path"),pcb_component_id:z$1.string(),layer:visible_layer$1,route:z$1.array(point$2),stroke_width:length$3}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text$1=z$1.object({type:z$1.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$4.default("0.2mm"),pcb_component_id:z$1.string(),text:z$1.string(),ccw_rotation:z$1.number().optional(),layer:layer_ref$1,is_mirrored:z$1.boolean().default(!1).optional(),anchor_position:point$2.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$1=z$1.object({type:z$1.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_rect"),pcb_component_id:z$1.string(),center:point$2,width:length$3,height:length$3,layer:layer_ref$1}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle$1=z$1.object({type:z$1.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_circle"),pcb_component_id:z$1.string(),center:point$2,radius:length$3,layer:visible_layer$1}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval$1=z$1.object({type:z$1.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_oval"),pcb_component_id:z$1.string(),center:point$2,radius_x:distance$4,radius_y:distance$4,layer:visible_layer$1}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text$1=z$1.object({type:z$1.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault$1("pcb_fabrication_note_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$4.default("1mm"),pcb_component_id:z$1.string(),text:z$1.string(),layer:visible_layer$1,anchor_position:point$2.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$1=z$1.object({type:z$1.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault$1("pcb_fabrication_note_path"),pcb_component_id:z$1.string(),layer:layer_ref$1,route:z$1.array(point$2),stroke_width:length$3,color:z$1.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout$1=z$1.object({type:z$1.literal("pcb_keepout"),shape:z$1.literal("rect"),center:point$2,width:distance$4,height:distance$4,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$2,radius:distance$4,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$1("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$1("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$1("pcb_group"),width:length$3,height:length$3,center:point$2,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$1=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$2,rotation:point3$2.optional(),size:point3$2.optional(),layer:layer_ref$1.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$1,source_port$1,any_source_component$1,source_led$1,source_net$1,source_group$1,source_simple_bug$1,source_simple_chip$1,source_simple_capacitor$1,source_simple_diode$1,source_simple_resistor$1,source_simple_power_source$1,source_simple_battery$1,source_simple_inductor$1,source_simple_pin_header,source_simple_resonator,source_simple_transistor,source_simple_potentiometer,source_simple_push_button,pcb_component$1,pcb_hole$1,pcb_missing_footprint_error,pcb_manual_edit_conflict_error,pcb_plated_hole$1,pcb_keepout$1,pcb_port$1,pcb_text$1,pcb_trace$1,pcb_via$1,pcb_smtpad$1,pcb_solder_paste$1,pcb_board$1,pcb_group,pcb_trace_hint$1,pcb_silkscreen_line$1,pcb_silkscreen_path$1,pcb_silkscreen_text$1,pcb_silkscreen_rect$1,pcb_silkscreen_circle$1,pcb_silkscreen_oval$1,pcb_trace_error$1,pcb_placement_error$1,pcb_port_not_matched_error$1,pcb_fabrication_note_path$1,pcb_fabrication_note_text$1,schematic_box$1,schematic_text$1,schematic_line$1,schematic_component$1,schematic_port$1,schematic_trace$1,schematic_path$1,schematic_error$1,schematic_net_label$1,schematic_debug_object$1,schematic_voltage_probe,cad_component$1]),any_soup_element=any_circuit_element;const Soup=Object.freeze(Object.defineProperty({__proto__:null,all_layers:all_layers$1,any_circuit_element,any_soup_element,any_source_component:any_source_component$1,battery_capacity:battery_capacity$1,cad_component:cad_component$1,capacitance:capacitance$1,current,distance:distance$4,frequency,getZodPrefixedIdWithDefault:getZodPrefixedIdWithDefault$1,inductance:inductance$1,layer_ref:layer_ref$1,layer_string:layer_string$1,length:length$3,pcb_board:pcb_board$1,pcb_component:pcb_component$1,pcb_fabrication_note_path:pcb_fabrication_note_path$1,pcb_fabrication_note_text:pcb_fabrication_note_text$1,pcb_group,pcb_hole:pcb_hole$1,pcb_hole_circle_or_square_shape,pcb_hole_oval_shape,pcb_keepout:pcb_keepout$1,pcb_manual_edit_conflict_error,pcb_missing_footprint_error,pcb_placement_error:pcb_placement_error$1,pcb_plated_hole:pcb_plated_hole$1,pcb_port:pcb_port$1,pcb_port_not_matched_error:pcb_port_not_matched_error$1,pcb_route_hint:pcb_route_hint$1,pcb_route_hints,pcb_silkscreen_circle:pcb_silkscreen_circle$1,pcb_silkscreen_line:pcb_silkscreen_line$1,pcb_silkscreen_oval:pcb_silkscreen_oval$1,pcb_silkscreen_path:pcb_silkscreen_path$1,pcb_silkscreen_rect:pcb_silkscreen_rect$1,pcb_silkscreen_text:pcb_silkscreen_text$1,pcb_smtpad:pcb_smtpad$1,pcb_solder_paste:pcb_solder_paste$1,pcb_text:pcb_text$1,pcb_trace:pcb_trace$1,pcb_trace_error:pcb_trace_error$1,pcb_trace_hint:pcb_trace_hint$1,pcb_trace_route_point,pcb_trace_route_point_via:pcb_trace_route_point_via$1,pcb_trace_route_point_wire:pcb_trace_route_point_wire$1,pcb_via:pcb_via$1,point:point$2,point3:point3$2,port_arrangement,position:position$2,position3,resistance:resistance$1,rotation:rotation$3,route_hint_point:route_hint_point$1,schematic_box:schematic_box$1,schematic_component:schematic_component$1,schematic_component_port_arrangement_by_sides,schematic_component_port_arrangement_by_size,schematic_debug_line:schematic_debug_line$1,schematic_debug_object:schematic_debug_object$1,schematic_debug_object_base:schematic_debug_object_base$1,schematic_debug_point:schematic_debug_point$1,schematic_debug_rect:schematic_debug_rect$1,schematic_error:schematic_error$1,schematic_line:schematic_line$1,schematic_net_label:schematic_net_label$1,schematic_path:schematic_path$1,schematic_pin_styles:schematic_pin_styles$1,schematic_port:schematic_port$1,schematic_text:schematic_text$1,schematic_trace:schematic_trace$1,schematic_voltage_probe,size:size$4,source_component_base:source_component_base$1,source_group:source_group$1,source_led:source_led$1,source_net:source_net$1,source_port:source_port$1,source_simple_battery:source_simple_battery$1,source_simple_bug:source_simple_bug$1,source_simple_capacitor:source_simple_capacitor$1,source_simple_chip:source_simple_chip$1,source_simple_crystal,source_simple_diode:source_simple_diode$1,source_simple_ground:source_simple_ground$1,source_simple_inductor:source_simple_inductor$1,source_simple_pin_header,source_simple_potentiometer,source_simple_power_source:source_simple_power_source$1,source_simple_push_button,source_simple_resistor:source_simple_resistor$1,source_simple_resonator,source_simple_transistor,source_trace:source_trace$1,supplier_name:supplier_name$1,time,visible_layer:visible_layer$1,voltage:voltage$1},Symbol.toStringTag,{value:"Module"}));var browser={exports:{}},ms$1,hasRequiredMs;function requireMs(){if(hasRequiredMs)return ms$1;hasRequiredMs=1;var lV=1e3,J=lV*60,VV=J*60,RV=VV*24,UV=RV*7,ZV=RV*365.25;ms$1=function(FV,NV){NV=NV||{};var gV=typeof FV;if(gV==="string"&&FV.length>0)return WV(FV);if(gV==="number"&&isFinite(FV))return NV.long?dV(FV):IV(FV);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(FV))};function WV(FV){if(FV=String(FV),!(FV.length>100)){var NV=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(FV);if(NV){var gV=parseFloat(NV[1]),eV=(NV[2]||"ms").toLowerCase();switch(eV){case"years":case"year":case"yrs":case"yr":case"y":return gV*ZV;case"weeks":case"week":case"w":return gV*UV;case"days":case"day":case"d":return gV*RV;case"hours":case"hour":case"hrs":case"hr":case"h":return gV*VV;case"minutes":case"minute":case"mins":case"min":case"m":return gV*J;case"seconds":case"second":case"secs":case"sec":case"s":return gV*lV;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return gV;default:return}}}}function IV(FV){var NV=Math.abs(FV);return NV>=RV?Math.round(FV/RV)+"d":NV>=VV?Math.round(FV/VV)+"h":NV>=J?Math.round(FV/J)+"m":NV>=lV?Math.round(FV/lV)+"s":FV+"ms"}function dV(FV){var NV=Math.abs(FV);return NV>=RV?CV(FV,NV,RV,"day"):NV>=VV?CV(FV,NV,VV,"hour"):NV>=J?CV(FV,NV,J,"minute"):NV>=lV?CV(FV,NV,lV,"second"):FV+" ms"}function CV(FV,NV,gV,eV){var JV=NV>=gV*1.5;return Math.round(FV/gV)+" "+eV+(JV?"s":"")}return ms$1}var common$2,hasRequiredCommon;function requireCommon(){if(hasRequiredCommon)return common$2;hasRequiredCommon=1;function lV(J){RV.debug=RV,RV.default=RV,RV.coerce=CV,RV.disable=IV,RV.enable=ZV,RV.enabled=dV,RV.humanize=requireMs(),RV.destroy=FV,Object.keys(J).forEach(NV=>{RV[NV]=J[NV]}),RV.names=[],RV.skips=[],RV.formatters={};function VV(NV){let gV=0;for(let eV=0;eV<NV.length;eV++)gV=(gV<<5)-gV+NV.charCodeAt(eV),gV|=0;return RV.colors[Math.abs(gV)%RV.colors.length]}RV.selectColor=VV;function RV(NV){let gV,eV=null,JV,nV;function aV(...GV){if(!aV.enabled)return;const cV=aV,TV=Number(new Date),iV=TV-(gV||TV);cV.diff=iV,cV.prev=gV,cV.curr=TV,gV=TV,GV[0]=RV.coerce(GV[0]),typeof GV[0]!="string"&&GV.unshift("%O");let tV=0;GV[0]=GV[0].replace(/%([a-zA-Z%])/g,(AV,pV)=>{if(AV==="%%")return"%";tV++;const HV=RV.formatters[pV];if(typeof HV=="function"){const oV=GV[tV];AV=HV.call(cV,oV),GV.splice(tV,1),tV--}return AV}),RV.formatArgs.call(cV,GV),(cV.log||RV.log).apply(cV,GV)}return aV.namespace=NV,aV.useColors=RV.useColors(),aV.color=RV.selectColor(NV),aV.extend=UV,aV.destroy=RV.destroy,Object.defineProperty(aV,"enabled",{enumerable:!0,configurable:!1,get:()=>eV!==null?eV:(JV!==RV.namespaces&&(JV=RV.namespaces,nV=RV.enabled(NV)),nV),set:GV=>{eV=GV}}),typeof RV.init=="function"&&RV.init(aV),aV}function UV(NV,gV){const eV=RV(this.namespace+(typeof gV>"u"?":":gV)+NV);return eV.log=this.log,eV}function ZV(NV){RV.save(NV),RV.namespaces=NV,RV.names=[],RV.skips=[];const gV=(typeof NV=="string"?NV:"").trim().replace(" ",",").split(",").filter(Boolean);for(const eV of gV)eV[0]==="-"?RV.skips.push(eV.slice(1)):RV.names.push(eV)}function WV(NV,gV){let eV=0,JV=0,nV=-1,aV=0;for(;eV<NV.length;)if(JV<gV.length&&(gV[JV]===NV[eV]||gV[JV]==="*"))gV[JV]==="*"?(nV=JV,aV=eV,JV++):(eV++,JV++);else if(nV!==-1)JV=nV+1,aV++,eV=aV;else return!1;for(;JV<gV.length&&gV[JV]==="*";)JV++;return JV===gV.length}function IV(){const NV=[...RV.names,...RV.skips.map(gV=>"-"+gV)].join(",");return RV.enable(""),NV}function dV(NV){for(const gV of RV.skips)if(WV(NV,gV))return!1;for(const gV of RV.names)if(WV(NV,gV))return!0;return!1}function CV(NV){return NV instanceof Error?NV.stack||NV.message:NV}function FV(){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 RV.enable(RV.load()),RV}return common$2=lV,common$2}var hasRequiredBrowser;function requireBrowser(){return hasRequiredBrowser||(hasRequiredBrowser=1,function(lV,J){J.formatArgs=RV,J.save=UV,J.load=ZV,J.useColors=VV,J.storage=WV(),J.destroy=(()=>{let dV=!1;return()=>{dV||(dV=!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 VV(){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 dV;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&&(dV=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(dV[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function RV(dV){if(dV[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+dV[0]+(this.useColors?"%c ":" ")+"+"+lV.exports.humanize(this.diff),!this.useColors)return;const CV="color: "+this.color;dV.splice(1,0,CV,"color: inherit");let FV=0,NV=0;dV[0].replace(/%[a-zA-Z%]/g,gV=>{gV!=="%%"&&(FV++,gV==="%c"&&(NV=FV))}),dV.splice(NV,0,CV)}J.log=console.debug||console.log||(()=>{});function UV(dV){try{dV?J.storage.setItem("debug",dV):J.storage.removeItem("debug")}catch{}}function ZV(){let dV;try{dV=J.storage.getItem("debug")}catch{}return!dV&&typeof process<"u"&&"env"in process&&(dV=process.env.DEBUG),dV}function WV(){try{return localStorage}catch{}}lV.exports=requireCommon()(J);const{formatters:IV}=lV.exports;IV.j=function(dV){try{return JSON.stringify(dV)}catch(CV){return"[UnexpectedJSONParseError]: "+CV.message}}}(browser,browser.exports)),browser.exports}var browserExports=requireBrowser();const Debug$1=getDefaultExportFromCjs$1(browserExports);var reactReconciler$1={exports:{}};/**
7145
+ `)}),IV=new J.SphereGeometry(1,32,16);super(IV,WV),this.lightProbe=UV,this.size=ZV,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}}lV.LightProbeHelper=VV}(LightProbeHelper)),LightProbeHelper}var VertexTangentsHelper={},hasRequiredVertexTangentsHelper;function requireVertexTangentsHelper(){return hasRequiredVertexTangentsHelper||(hasRequiredVertexTangentsHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=new J.Vector3,RV=new J.Vector3;class UV extends J.LineSegments{constructor(WV,IV=1,dV=65535){const CV=new J.BufferGeometry,FV=WV.geometry.attributes.tangent.count,NV=new J.Float32BufferAttribute(FV*2*3,3);CV.setAttribute("position",NV),super(CV,new J.LineBasicMaterial({color:dV,toneMapped:!1})),this.object=WV,this.size=IV,this.type="VertexTangentsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0);const WV=this.object.matrixWorld,IV=this.geometry.attributes.position,dV=this.object.geometry,CV=dV.attributes.position,FV=dV.attributes.tangent;let NV=0;for(let gV=0,eV=CV.count;gV<eV;gV++)VV.fromBufferAttribute(CV,gV).applyMatrix4(WV),RV.fromBufferAttribute(FV,gV),RV.transformDirection(WV).multiplyScalar(this.size).add(VV),IV.setXYZ(NV,VV.x,VV.y,VV.z),NV=NV+1,IV.setXYZ(NV,RV.x,RV.y,RV.z),NV=NV+1;IV.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}lV.VertexTangentsHelper=UV}(VertexTangentsHelper)),VertexTangentsHelper}var PositionalAudioHelper={},hasRequiredPositionalAudioHelper;function requirePositionalAudioHelper(){return hasRequiredPositionalAudioHelper||(hasRequiredPositionalAudioHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV extends J.Line{constructor(UV,ZV=1,WV=16,IV=2){const dV=new J.BufferGeometry,CV=WV+IV*2,FV=new Float32Array((CV*3+3)*3);dV.setAttribute("position",new J.BufferAttribute(FV,3));const NV=new J.LineBasicMaterial({color:65280}),gV=new J.LineBasicMaterial({color:16776960});super(dV,[gV,NV]),this.type="PositionalAudioHelper",this.audio=UV,this.range=ZV,this.divisionsInnerAngle=WV,this.divisionsOuterAngle=IV,this.update()}update(){const UV=this.audio,ZV=this.range,WV=this.divisionsInnerAngle,IV=this.divisionsOuterAngle,dV=J.MathUtils.degToRad(UV.panner.coneInnerAngle),CV=J.MathUtils.degToRad(UV.panner.coneOuterAngle),FV=dV/2,NV=CV/2;let gV=0,eV=0,JV,nV;const aV=this.geometry,GV=aV.attributes.position;aV.clearGroups();function cV(TV,iV,tV,MV){const AV=(iV-TV)/tV;for(GV.setXYZ(gV,0,0,0),eV++,JV=TV;JV<iV;JV+=AV)nV=gV+eV,GV.setXYZ(nV,Math.sin(JV)*ZV,0,Math.cos(JV)*ZV),GV.setXYZ(nV+1,Math.sin(Math.min(JV+AV,iV))*ZV,0,Math.cos(Math.min(JV+AV,iV))*ZV),GV.setXYZ(nV+2,0,0,0),eV+=3;aV.addGroup(gV,eV,MV),gV+=eV,eV=0}cV(-NV,-FV,IV,0),cV(-FV,FV,WV,1),cV(FV,NV,IV,0),GV.needsUpdate=!0,dV===CV&&(this.material[0].visible=!1)}dispose(){this.geometry.dispose(),this.material[0].dispose(),this.material[1].dispose()}}lV.PositionalAudioHelper=VV}(PositionalAudioHelper)),PositionalAudioHelper}var VertexNormalsHelper={},hasRequiredVertexNormalsHelper;function requireVertexNormalsHelper(){return hasRequiredVertexNormalsHelper||(hasRequiredVertexNormalsHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=new J.Vector3,RV=new J.Vector3,UV=new J.Matrix3;class ZV extends J.LineSegments{constructor(IV,dV=1,CV=16711680){const FV=new J.BufferGeometry,NV=IV.geometry.attributes.normal.count,gV=new J.Float32BufferAttribute(NV*2*3,3);FV.setAttribute("position",gV),super(FV,new J.LineBasicMaterial({color:CV,toneMapped:!1})),this.object=IV,this.size=dV,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),UV.getNormalMatrix(this.object.matrixWorld);const IV=this.object.matrixWorld,dV=this.geometry.attributes.position,CV=this.object.geometry;if(CV){const FV=CV.attributes.position,NV=CV.attributes.normal;let gV=0;for(let eV=0,JV=FV.count;eV<JV;eV++)VV.fromBufferAttribute(FV,eV).applyMatrix4(IV),RV.fromBufferAttribute(NV,eV),RV.applyMatrix3(UV).normalize().multiplyScalar(this.size).add(VV),dV.setXYZ(gV,VV.x,VV.y,VV.z),gV=gV+1,dV.setXYZ(gV,RV.x,RV.y,RV.z),gV=gV+1}dV.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}lV.VertexNormalsHelper=ZV}(VertexNormalsHelper)),VertexNormalsHelper}var RectAreaLightHelper={},hasRequiredRectAreaLightHelper;function requireRectAreaLightHelper(){return hasRequiredRectAreaLightHelper||(hasRequiredRectAreaLightHelper=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV extends J.Line{constructor(UV,ZV){const WV=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],IV=new J.BufferGeometry;IV.setAttribute("position",new J.Float32BufferAttribute(WV,3)),IV.computeBoundingSphere();const dV=new J.LineBasicMaterial({fog:!1});super(IV,dV),this.light=UV,this.color=ZV,this.type="RectAreaLightHelper";const CV=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],FV=new J.BufferGeometry;FV.setAttribute("position",new J.Float32BufferAttribute(CV,3)),FV.computeBoundingSphere(),this.add(new J.Mesh(FV,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 UV=this.material.color,ZV=Math.max(UV.r,UV.g,UV.b);ZV>1&&UV.multiplyScalar(1/ZV),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()}}lV.RectAreaLightHelper=VV}(RectAreaLightHelper)),RectAreaLightHelper}var RectAreaLightUniformsLib={},hasRequiredRectAreaLightUniformsLib;function requireRectAreaLightUniformsLib(){return hasRequiredRectAreaLightUniformsLib||(hasRequiredRectAreaLightUniformsLib=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV{static init(){const UV=[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],ZV=[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],WV=new Float32Array(UV),IV=new Float32Array(ZV);J.UniformsLib.LTC_FLOAT_1=new J.DataTexture(WV,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(IV,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 dV=new Uint16Array(UV.length);UV.forEach(function(FV,NV){dV[NV]=J.DataUtils.toHalfFloat(FV)});const CV=new Uint16Array(ZV.length);ZV.forEach(function(FV,NV){CV[NV]=J.DataUtils.toHalfFloat(FV)}),J.UniformsLib.LTC_HALF_1=new J.DataTexture(dV,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(CV,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}}lV.RectAreaLightUniformsLib=VV}(RectAreaLightUniformsLib)),RectAreaLightUniformsLib}var LightProbeGenerator={},hasRequiredLightProbeGenerator;function requireLightProbeGenerator(){return hasRequiredLightProbeGenerator||(hasRequiredLightProbeGenerator=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV{static fromCubeTexture(UV){let ZV=0;const WV=new J.Vector3,IV=new J.Vector3,dV=new J.Color,CV=[0,0,0,0,0,0,0,0,0],FV=new J.SphericalHarmonics3,NV=FV.coefficients;for(let eV=0;eV<6;eV++){const JV=UV.image[eV],nV=JV.width,aV=JV.height,GV=document.createElement("canvas");GV.width=nV,GV.height=aV;const cV=GV.getContext("2d");cV.drawImage(JV,0,0,nV,aV);const TV=cV.getImageData(0,0,nV,aV),iV=TV.data,tV=TV.width,MV=2/tV;for(let AV=0,pV=iV.length;AV<pV;AV+=4){dV.setRGB(iV[AV]/255,iV[AV+1]/255,iV[AV+2]/255),"colorSpace"in UV?UV.colorSpace==="srgb"&&dV.convertSRGBToLinear():UV.encoding===3001&&dV.convertSRGBToLinear();const HV=AV/4,oV=-1+(HV%tV+.5)*MV,DV=1-(Math.floor(HV/tV)+.5)*MV;switch(eV){case 0:WV.set(-1,DV,-oV);break;case 1:WV.set(1,DV,oV);break;case 2:WV.set(-oV,1,-DV);break;case 3:WV.set(-oV,-1,DV);break;case 4:WV.set(-oV,DV,1);break;case 5:WV.set(oV,DV,-1);break}const wV=WV.lengthSq(),_V=4/(Math.sqrt(wV)*wV);ZV+=_V,IV.copy(WV).normalize(),J.SphericalHarmonics3.getBasisAt(IV,CV);for(let dl=0;dl<9;dl++)NV[dl].x+=CV[dl]*dV.r*_V,NV[dl].y+=CV[dl]*dV.g*_V,NV[dl].z+=CV[dl]*dV.b*_V}}const gV=4*Math.PI/ZV;for(let eV=0;eV<9;eV++)NV[eV].x*=gV,NV[eV].y*=gV,NV[eV].z*=gV;return new J.LightProbe(FV)}static fromCubeRenderTarget(UV,ZV){let WV=0;const IV=new J.Vector3,dV=new J.Vector3,CV=new J.Color,FV=[0,0,0,0,0,0,0,0,0],NV=new J.SphericalHarmonics3,gV=NV.coefficients;for(let JV=0;JV<6;JV++){const nV=ZV.width,aV=new Uint8Array(nV*nV*4);UV.readRenderTargetPixels(ZV,0,0,nV,nV,aV,JV);const GV=2/nV;for(let cV=0,TV=aV.length;cV<TV;cV+=4){CV.setRGB(aV[cV]/255,aV[cV+1]/255,aV[cV+2]/255),"colorSpace"in ZV.texture?ZV.texture.colorSpace==="srgb"&&CV.convertSRGBToLinear():ZV.texture.encoding===3001&&CV.convertSRGBToLinear();const iV=cV/4,tV=-1+(iV%nV+.5)*GV,MV=1-(Math.floor(iV/nV)+.5)*GV;switch(JV){case 0:IV.set(1,MV,-tV);break;case 1:IV.set(-1,MV,tV);break;case 2:IV.set(tV,1,-MV);break;case 3:IV.set(tV,-1,MV);break;case 4:IV.set(tV,MV,1);break;case 5:IV.set(-tV,MV,-1);break}const AV=IV.lengthSq(),pV=4/(Math.sqrt(AV)*AV);WV+=pV,dV.copy(IV).normalize(),J.SphericalHarmonics3.getBasisAt(dV,FV);for(let HV=0;HV<9;HV++)gV[HV].x+=FV[HV]*CV.r*pV,gV[HV].y+=FV[HV]*CV.g*pV,gV[HV].z+=FV[HV]*CV.b*pV}}const eV=4*Math.PI/WV;for(let JV=0;JV<9;JV++)gV[JV].x*=eV,gV[JV].y*=eV,gV[JV].z*=eV;return new J.LightProbe(NV)}}lV.LightProbeGenerator=VV}(LightProbeGenerator)),LightProbeGenerator}var NURBSSurface={},hasRequiredNURBSSurface;function requireNURBSSurface(){return hasRequiredNURBSSurface||(hasRequiredNURBSSurface=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=requireNURBSUtils();class RV{constructor(ZV,WV,IV,dV,CV){this.degree1=ZV,this.degree2=WV,this.knots1=IV,this.knots2=dV,this.controlPoints=[];const FV=IV.length-ZV-1,NV=dV.length-WV-1;for(let gV=0;gV<FV;++gV){this.controlPoints[gV]=[];for(let eV=0;eV<NV;++eV){const JV=CV[gV][eV];this.controlPoints[gV][eV]=new J.Vector4(JV.x,JV.y,JV.z,JV.w)}}}getPoint(ZV,WV,IV){const dV=this.knots1[0]+ZV*(this.knots1[this.knots1.length-1]-this.knots1[0]),CV=this.knots2[0]+WV*(this.knots2[this.knots2.length-1]-this.knots2[0]);VV.calcSurfacePoint(this.degree1,this.degree2,this.knots1,this.knots2,this.controlPoints,dV,CV,IV)}}lV.NURBSSurface=RV}(NURBSSurface)),NURBSSurface}var CurveExtras={},hasRequiredCurveExtras;function requireCurveExtras(){return hasRequiredCurveExtras||(hasRequiredCurveExtras=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree();class VV extends J.Curve{getPoint(cV,TV=new J.Vector3){const iV=TV;cV=2*Math.PI*cV;const tV=-.22*Math.cos(cV)-1.28*Math.sin(cV)-.44*Math.cos(3*cV)-.78*Math.sin(3*cV),MV=-.1*Math.cos(2*cV)-.27*Math.sin(2*cV)+.38*Math.cos(4*cV)+.46*Math.sin(4*cV),AV=.7*Math.cos(3*cV)-.4*Math.sin(3*cV);return iV.set(tV,MV,AV).multiplyScalar(20)}}class RV extends J.Curve{constructor(cV=5){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=2*Math.PI;const tV=16*Math.pow(Math.sin(cV),3),MV=13*Math.cos(cV)-5*Math.cos(2*cV)-2*Math.cos(3*cV)-Math.cos(4*cV);return iV.set(tV,MV,0).multiplyScalar(this.scale)}}class UV extends J.Curve{constructor(cV=70){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV=cV*4*Math.PI;const tV=this.scale/2,MV=tV*(1+Math.cos(cV)),AV=tV*Math.sin(cV),pV=2*tV*Math.sin(cV/2);return iV.set(MV,AV,pV)}}class ZV extends J.Curve{getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=2*Math.PI;const tV=10,MV=50,AV=MV*Math.sin(cV),pV=Math.cos(cV)*(tV+MV*Math.cos(cV)),HV=Math.sin(cV)*(tV+MV*Math.cos(cV));return iV.set(AV,pV,HV)}}class WV extends J.Curve{getPoint(cV,TV=new J.Vector3){const iV=TV,tV=30,MV=150,AV=2*Math.PI*cV*MV/30,pV=Math.cos(AV)*tV,HV=Math.sin(AV)*tV,oV=MV*cV;return iV.set(pV,HV,oV)}}class IV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=Math.PI*2;const tV=(2+Math.cos(3*cV))*Math.cos(2*cV),MV=(2+Math.cos(3*cV))*Math.sin(2*cV),AV=Math.sin(3*cV);return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}class dV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=3,MV=4;cV*=Math.PI*2;const AV=(2+Math.cos(MV*cV))*Math.cos(tV*cV),pV=(2+Math.cos(MV*cV))*Math.sin(tV*cV),HV=Math.sin(MV*cV);return iV.set(AV,pV,HV).multiplyScalar(this.scale)}}class CV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=2,MV=5;cV*=Math.PI*2;const AV=(2+Math.cos(MV*cV))*Math.cos(tV*cV),pV=(2+Math.cos(MV*cV))*Math.sin(tV*cV),HV=Math.sin(MV*cV);return iV.set(AV,pV,HV).multiplyScalar(this.scale)}}class FV extends J.Curve{constructor(cV=10){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV=cV*4-2;const tV=Math.pow(cV,3)-3*cV,MV=Math.pow(cV,4)-4*cV*cV,AV=1/5*Math.pow(cV,5)-2*cV;return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}function NV(GV,cV,TV){const iV=cV-GV;return TV*iV+GV}class gV extends J.Curve{constructor(cV=1){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV=NV(-4,4,cV);const tV=2/5*cV*(cV*cV-7)*(cV*cV-10),MV=Math.pow(cV,4)-13*cV*cV,AV=1/10*cV*(cV*cV-4)*(cV*cV-9)*(cV*cV-12);return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}class eV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV;cV*=Math.PI*2;const tV=Math.cos(2*cV)*(1+.6*(Math.cos(5*cV)+.75*Math.cos(10*cV))),MV=Math.sin(2*cV)*(1+.6*(Math.cos(5*cV)+.75*Math.cos(10*cV))),AV=.35*Math.sin(5*cV);return iV.set(tV,MV,AV).multiplyScalar(this.scale)}}class JV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=cV*Math.PI*2,MV=Math.cos(2*tV)*(1+.45*Math.cos(3*tV)+.4*Math.cos(9*tV)),AV=Math.sin(2*tV)*(1+.45*Math.cos(3*tV)+.4*Math.cos(9*tV)),pV=.2*Math.sin(9*tV);return iV.set(MV,AV,pV).multiplyScalar(this.scale)}}class nV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=cV*Math.PI*2,MV=Math.cos(3*tV)*(1+.3*Math.cos(5*tV)+.5*Math.cos(10*tV)),AV=Math.sin(3*tV)*(1+.3*Math.cos(5*tV)+.5*Math.cos(10*tV)),pV=.2*Math.sin(20*tV);return iV.set(MV,AV,pV).multiplyScalar(this.scale)}}class aV extends J.Curve{constructor(cV=40){super(),this.scale=cV}getPoint(cV,TV=new J.Vector3){const iV=TV,tV=cV*Math.PI*2,MV=Math.cos(4*tV)*(1+.5*(Math.cos(5*tV)+.4*Math.cos(20*tV))),AV=Math.sin(4*tV)*(1+.5*(Math.cos(5*tV)+.4*Math.cos(20*tV))),pV=.35*Math.sin(15*tV);return iV.set(MV,AV,pV).multiplyScalar(this.scale)}}lV.CinquefoilKnot=CV,lV.DecoratedTorusKnot4a=eV,lV.DecoratedTorusKnot4b=JV,lV.DecoratedTorusKnot5a=nV,lV.DecoratedTorusKnot5c=aV,lV.FigureEightPolynomialKnot=gV,lV.GrannyKnot=VV,lV.HeartCurve=RV,lV.HelixCurve=WV,lV.KnotCurve=ZV,lV.TorusKnot=dV,lV.TrefoilKnot=IV,lV.TrefoilPolynomialKnot=FV,lV.VivianiCurve=UV}(CurveExtras)),CurveExtras}var Geometry={},hasRequiredGeometry;function requireGeometry(){return hasRequiredGeometry||(hasRequiredGeometry=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireThree(),VV=new J.Matrix4,RV=new J.Object3D,UV=new J.Vector3;class ZV extends J.EventDispatcher{static createBufferGeometryFromObject(CV){let FV=new J.BufferGeometry;const NV=CV.geometry;if(CV.isPoints||CV.isLine){const gV=new J.Float32BufferAttribute(NV.vertices.length*3,3),eV=new J.Float32BufferAttribute(NV.colors.length*3,3);if(FV.setAttribute("position",gV.copyVector3sArray(NV.vertices)),FV.setAttribute("color",eV.copyColorsArray(NV.colors)),NV.lineDistances&&NV.lineDistances.length===NV.vertices.length){const JV=new J.Float32BufferAttribute(NV.lineDistances.length,1);FV.setAttribute("lineDistance",JV.copyArray(NV.lineDistances))}NV.boundingSphere!==null&&(FV.boundingSphere=NV.boundingSphere.clone()),NV.boundingBox!==null&&(FV.boundingBox=NV.boundingBox.clone())}else CV.isMesh&&(FV=NV.toBufferGeometry());return FV}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(CV){const FV=new J.Matrix3().getNormalMatrix(CV);for(let NV=0,gV=this.vertices.length;NV<gV;NV++)this.vertices[NV].applyMatrix4(CV);for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV];eV.normal.applyMatrix3(FV).normalize();for(let JV=0,nV=eV.vertexNormals.length;JV<nV;JV++)eV.vertexNormals[JV].applyMatrix3(FV).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(CV){return VV.makeRotationX(CV),this.applyMatrix4(VV),this}rotateY(CV){return VV.makeRotationY(CV),this.applyMatrix4(VV),this}rotateZ(CV){return VV.makeRotationZ(CV),this.applyMatrix4(VV),this}translate(CV,FV,NV){return VV.makeTranslation(CV,FV,NV),this.applyMatrix4(VV),this}scale(CV,FV,NV){return VV.makeScale(CV,FV,NV),this.applyMatrix4(VV),this}lookAt(CV){return RV.lookAt(CV),RV.updateMatrix(),this.applyMatrix4(RV.matrix),this}fromBufferGeometry(CV){const FV=this,NV=CV.index!==null?CV.index:void 0,gV=CV.attributes;if(gV.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;const eV=gV.position,JV=gV.normal,nV=gV.color,aV=gV.uv,GV=gV.uv2;GV!==void 0&&(this.faceVertexUvs[1]=[]);for(let iV=0;iV<eV.count;iV++)FV.vertices.push(new J.Vector3().fromBufferAttribute(eV,iV)),nV!==void 0&&FV.colors.push(new J.Color().fromBufferAttribute(nV,iV));function cV(iV,tV,MV,AV){const pV=nV===void 0?[]:[FV.colors[iV].clone(),FV.colors[tV].clone(),FV.colors[MV].clone()],HV=JV===void 0?[]:[new J.Vector3().fromBufferAttribute(JV,iV),new J.Vector3().fromBufferAttribute(JV,tV),new J.Vector3().fromBufferAttribute(JV,MV)],oV=new IV(iV,tV,MV,HV,pV,AV);FV.faces.push(oV),aV!==void 0&&FV.faceVertexUvs[0].push([new J.Vector2().fromBufferAttribute(aV,iV),new J.Vector2().fromBufferAttribute(aV,tV),new J.Vector2().fromBufferAttribute(aV,MV)]),GV!==void 0&&FV.faceVertexUvs[1].push([new J.Vector2().fromBufferAttribute(GV,iV),new J.Vector2().fromBufferAttribute(GV,tV),new J.Vector2().fromBufferAttribute(GV,MV)])}const TV=CV.groups;if(TV.length>0)for(let iV=0;iV<TV.length;iV++){const tV=TV[iV],MV=tV.start,AV=tV.count;for(let pV=MV,HV=MV+AV;pV<HV;pV+=3)NV!==void 0?cV(NV.getX(pV),NV.getX(pV+1),NV.getX(pV+2),tV.materialIndex):cV(pV,pV+1,pV+2,tV.materialIndex)}else if(NV!==void 0)for(let iV=0;iV<NV.count;iV+=3)cV(NV.getX(iV),NV.getX(iV+1),NV.getX(iV+2));else for(let iV=0;iV<eV.count;iV+=3)cV(iV,iV+1,iV+2);return this.computeFaceNormals(),CV.boundingBox!==null&&(this.boundingBox=CV.boundingBox.clone()),CV.boundingSphere!==null&&(this.boundingSphere=CV.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(UV).negate(),this.translate(UV.x,UV.y,UV.z),this}normalize(){this.computeBoundingSphere();const CV=this.boundingSphere.center,FV=this.boundingSphere.radius,NV=FV===0?1:1/FV,gV=new J.Matrix4;return gV.set(NV,0,0,-NV*CV.x,0,NV,0,-NV*CV.y,0,0,NV,-NV*CV.z,0,0,0,1),this.applyMatrix4(gV),this}computeFaceNormals(){const CV=new J.Vector3,FV=new J.Vector3;for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV],JV=this.vertices[eV.a],nV=this.vertices[eV.b],aV=this.vertices[eV.c];CV.subVectors(aV,nV),FV.subVectors(JV,nV),CV.cross(FV),CV.normalize(),eV.normal.copy(CV)}}computeVertexNormals(CV=!0){const FV=new Array(this.vertices.length);for(let NV=0,gV=this.vertices.length;NV<gV;NV++)FV[NV]=new J.Vector3;if(CV){const NV=new J.Vector3,gV=new J.Vector3;for(let eV=0,JV=this.faces.length;eV<JV;eV++){const nV=this.faces[eV],aV=this.vertices[nV.a],GV=this.vertices[nV.b],cV=this.vertices[nV.c];NV.subVectors(cV,GV),gV.subVectors(aV,GV),NV.cross(gV),FV[nV.a].add(NV),FV[nV.b].add(NV),FV[nV.c].add(NV)}}else{this.computeFaceNormals();for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV];FV[eV.a].add(eV.normal),FV[eV.b].add(eV.normal),FV[eV.c].add(eV.normal)}}for(let NV=0,gV=this.vertices.length;NV<gV;NV++)FV[NV].normalize();for(let NV=0,gV=this.faces.length;NV<gV;NV++){const eV=this.faces[NV],JV=eV.vertexNormals;JV.length===3?(JV[0].copy(FV[eV.a]),JV[1].copy(FV[eV.b]),JV[2].copy(FV[eV.c])):(JV[0]=FV[eV.a].clone(),JV[1]=FV[eV.b].clone(),JV[2]=FV[eV.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let CV=0,FV=this.faces.length;CV<FV;CV++){const NV=this.faces[CV],gV=NV.vertexNormals;gV.length===3?(gV[0].copy(NV.normal),gV[1].copy(NV.normal),gV[2].copy(NV.normal)):(gV[0]=NV.normal.clone(),gV[1]=NV.normal.clone(),gV[2]=NV.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let FV=0,NV=this.faces.length;FV<NV;FV++){const gV=this.faces[FV];gV.__originalFaceNormal?gV.__originalFaceNormal.copy(gV.normal):gV.__originalFaceNormal=gV.normal.clone(),gV.__originalVertexNormals||(gV.__originalVertexNormals=[]);for(let eV=0,JV=gV.vertexNormals.length;eV<JV;eV++)gV.__originalVertexNormals[eV]?gV.__originalVertexNormals[eV].copy(gV.vertexNormals[eV]):gV.__originalVertexNormals[eV]=gV.vertexNormals[eV].clone()}const CV=new ZV;CV.faces=this.faces;for(let FV=0,NV=this.morphTargets.length;FV<NV;FV++){if(!this.morphNormals[FV]){this.morphNormals[FV]={},this.morphNormals[FV].faceNormals=[],this.morphNormals[FV].vertexNormals=[];const eV=this.morphNormals[FV].faceNormals,JV=this.morphNormals[FV].vertexNormals;for(let nV=0,aV=this.faces.length;nV<aV;nV++){const GV=new J.Vector3,cV={a:new J.Vector3,b:new J.Vector3,c:new J.Vector3};eV.push(GV),JV.push(cV)}}const gV=this.morphNormals[FV];CV.vertices=this.morphTargets[FV].vertices,CV.computeFaceNormals(),CV.computeVertexNormals();for(let eV=0,JV=this.faces.length;eV<JV;eV++){const nV=this.faces[eV],aV=gV.faceNormals[eV],GV=gV.vertexNormals[eV];aV.copy(nV.normal),GV.a.copy(nV.vertexNormals[0]),GV.b.copy(nV.vertexNormals[1]),GV.c.copy(nV.vertexNormals[2])}}for(let FV=0,NV=this.faces.length;FV<NV;FV++){const gV=this.faces[FV];gV.normal=gV.__originalFaceNormal,gV.vertexNormals=gV.__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(CV,FV,NV=0){if(!(CV&&CV.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",CV);return}let gV;const eV=this.vertices.length,JV=this.vertices,nV=CV.vertices,aV=this.faces,GV=CV.faces,cV=this.colors,TV=CV.colors;FV!==void 0&&(gV=new J.Matrix3().getNormalMatrix(FV));for(let iV=0,tV=nV.length;iV<tV;iV++){const AV=nV[iV].clone();FV!==void 0&&AV.applyMatrix4(FV),JV.push(AV)}for(let iV=0,tV=TV.length;iV<tV;iV++)cV.push(TV[iV].clone());for(let iV=0,tV=GV.length;iV<tV;iV++){const MV=GV[iV];let AV,pV;const HV=MV.vertexNormals,oV=MV.vertexColors,DV=new IV(MV.a+eV,MV.b+eV,MV.c+eV);DV.normal.copy(MV.normal),gV!==void 0&&DV.normal.applyMatrix3(gV).normalize();for(let wV=0,_V=HV.length;wV<_V;wV++)AV=HV[wV].clone(),gV!==void 0&&AV.applyMatrix3(gV).normalize(),DV.vertexNormals.push(AV);DV.color.copy(MV.color);for(let wV=0,_V=oV.length;wV<_V;wV++)pV=oV[wV],DV.vertexColors.push(pV.clone());DV.materialIndex=MV.materialIndex+NV,aV.push(DV)}for(let iV=0,tV=CV.faceVertexUvs.length;iV<tV;iV++){const MV=CV.faceVertexUvs[iV];this.faceVertexUvs[iV]===void 0&&(this.faceVertexUvs[iV]=[]);for(let AV=0,pV=MV.length;AV<pV;AV++){const HV=MV[AV],oV=[];for(let DV=0,wV=HV.length;DV<wV;DV++)oV.push(HV[DV].clone());this.faceVertexUvs[iV].push(oV)}}}mergeMesh(CV){if(!(CV&&CV.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",CV);return}CV.matrixAutoUpdate&&CV.updateMatrix(),this.merge(CV.geometry,CV.matrix)}mergeVertices(CV=4){const FV={},NV=[],gV=[],eV=Math.pow(10,CV);for(let aV=0,GV=this.vertices.length;aV<GV;aV++){const cV=this.vertices[aV],TV=`${Math.round(cV.x*eV)}_${Math.round(cV.y*eV)}_${Math.round(cV.z*eV)}`;FV[TV]===void 0?(FV[TV]=aV,NV.push(this.vertices[aV]),gV[aV]=NV.length-1):gV[aV]=gV[FV[TV]]}const JV=[];for(let aV=0,GV=this.faces.length;aV<GV;aV++){const cV=this.faces[aV];cV.a=gV[cV.a],cV.b=gV[cV.b],cV.c=gV[cV.c];const TV=[cV.a,cV.b,cV.c];for(let iV=0;iV<3;iV++)if(TV[iV]===TV[(iV+1)%3]){JV.push(aV);break}}for(let aV=JV.length-1;aV>=0;aV--){const GV=JV[aV];this.faces.splice(GV,1);for(let cV=0,TV=this.faceVertexUvs.length;cV<TV;cV++)this.faceVertexUvs[cV].splice(GV,1)}const nV=this.vertices.length-NV.length;return this.vertices=NV,nV}setFromPoints(CV){this.vertices=[];for(let FV=0,NV=CV.length;FV<NV;FV++){const gV=CV[FV];this.vertices.push(new J.Vector3(gV.x,gV.y,gV.z||0))}return this}sortFacesByMaterialIndex(){const CV=this.faces,FV=CV.length;for(let aV=0;aV<FV;aV++)CV[aV]._id=aV;function NV(aV,GV){return aV.materialIndex-GV.materialIndex}CV.sort(NV);const gV=this.faceVertexUvs[0],eV=this.faceVertexUvs[1];let JV,nV;gV&&gV.length===FV&&(JV=[]),eV&&eV.length===FV&&(nV=[]);for(let aV=0;aV<FV;aV++){const GV=CV[aV]._id;JV&&JV.push(gV[GV]),nV&&nV.push(eV[GV])}JV&&(this.faceVertexUvs[0]=JV),nV&&(this.faceVertexUvs[1]=nV)}toJSON(){const CV={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(CV.uuid=this.uuid,CV.type=this.type,this.name!==""&&(CV.name=this.name),this.parameters!==void 0){const MV=this.parameters;for(let AV in MV)MV[AV]!==void 0&&(CV[AV]=MV[AV]);return CV}const FV=[];for(let MV=0;MV<this.vertices.length;MV++){const AV=this.vertices[MV];FV.push(AV.x,AV.y,AV.z)}const NV=[],gV=[],eV={},JV=[],nV={},aV=[],GV={};for(let MV=0;MV<this.faces.length;MV++){const AV=this.faces[MV],pV=!0,HV=!1,oV=this.faceVertexUvs[0][MV]!==void 0,DV=AV.normal.length()>0,wV=AV.vertexNormals.length>0,_V=AV.color.r!==1||AV.color.g!==1||AV.color.b!==1,dl=AV.vertexColors.length>0;let nl=0;if(nl=cV(nl,0,0),nl=cV(nl,1,pV),nl=cV(nl,2,HV),nl=cV(nl,3,oV),nl=cV(nl,4,DV),nl=cV(nl,5,wV),nl=cV(nl,6,_V),nl=cV(nl,7,dl),NV.push(nl),NV.push(AV.a,AV.b,AV.c),NV.push(AV.materialIndex),oV){const Il=this.faceVertexUvs[0][MV];NV.push(tV(Il[0]),tV(Il[1]),tV(Il[2]))}if(DV&&NV.push(TV(AV.normal)),wV){const Il=AV.vertexNormals;NV.push(TV(Il[0]),TV(Il[1]),TV(Il[2]))}if(_V&&NV.push(iV(AV.color)),dl){const Il=AV.vertexColors;NV.push(iV(Il[0]),iV(Il[1]),iV(Il[2]))}}function cV(MV,AV,pV){return pV?MV|1<<AV:MV&~(1<<AV)}function TV(MV){const AV=MV.x.toString()+MV.y.toString()+MV.z.toString();return eV[AV]!==void 0||(eV[AV]=gV.length/3,gV.push(MV.x,MV.y,MV.z)),eV[AV]}function iV(MV){const AV=MV.r.toString()+MV.g.toString()+MV.b.toString();return nV[AV]!==void 0||(nV[AV]=JV.length,JV.push(MV.getHex())),nV[AV]}function tV(MV){const AV=MV.x.toString()+MV.y.toString();return GV[AV]!==void 0||(GV[AV]=aV.length/2,aV.push(MV.x,MV.y)),GV[AV]}return CV.data={},CV.data.vertices=FV,CV.data.normals=gV,JV.length>0&&(CV.data.colors=JV),aV.length>0&&(CV.data.uvs=[aV]),CV.data.faces=NV,CV}clone(){return new ZV().copy(this)}copy(CV){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=CV.name;const FV=CV.vertices;for(let iV=0,tV=FV.length;iV<tV;iV++)this.vertices.push(FV[iV].clone());const NV=CV.colors;for(let iV=0,tV=NV.length;iV<tV;iV++)this.colors.push(NV[iV].clone());const gV=CV.faces;for(let iV=0,tV=gV.length;iV<tV;iV++)this.faces.push(gV[iV].clone());for(let iV=0,tV=CV.faceVertexUvs.length;iV<tV;iV++){const MV=CV.faceVertexUvs[iV];this.faceVertexUvs[iV]===void 0&&(this.faceVertexUvs[iV]=[]);for(let AV=0,pV=MV.length;AV<pV;AV++){const HV=MV[AV],oV=[];for(let DV=0,wV=HV.length;DV<wV;DV++){const _V=HV[DV];oV.push(_V.clone())}this.faceVertexUvs[iV].push(oV)}}const eV=CV.morphTargets;for(let iV=0,tV=eV.length;iV<tV;iV++){const MV={};if(MV.name=eV[iV].name,eV[iV].vertices!==void 0){MV.vertices=[];for(let AV=0,pV=eV[iV].vertices.length;AV<pV;AV++)MV.vertices.push(eV[iV].vertices[AV].clone())}if(eV[iV].normals!==void 0){MV.normals=[];for(let AV=0,pV=eV[iV].normals.length;AV<pV;AV++)MV.normals.push(eV[iV].normals[AV].clone())}this.morphTargets.push(MV)}const JV=CV.morphNormals;for(let iV=0,tV=JV.length;iV<tV;iV++){const MV={};if(JV[iV].vertexNormals!==void 0){MV.vertexNormals=[];for(let AV=0,pV=JV[iV].vertexNormals.length;AV<pV;AV++){const HV=JV[iV].vertexNormals[AV],oV={};oV.a=HV.a.clone(),oV.b=HV.b.clone(),oV.c=HV.c.clone(),MV.vertexNormals.push(oV)}}if(JV[iV].faceNormals!==void 0){MV.faceNormals=[];for(let AV=0,pV=JV[iV].faceNormals.length;AV<pV;AV++)MV.faceNormals.push(JV[iV].faceNormals[AV].clone())}this.morphNormals.push(MV)}const nV=CV.skinWeights;for(let iV=0,tV=nV.length;iV<tV;iV++)this.skinWeights.push(nV[iV].clone());const aV=CV.skinIndices;for(let iV=0,tV=aV.length;iV<tV;iV++)this.skinIndices.push(aV[iV].clone());const GV=CV.lineDistances;for(let iV=0,tV=GV.length;iV<tV;iV++)this.lineDistances.push(GV[iV]);const cV=CV.boundingBox;cV!==null&&(this.boundingBox=cV.clone());const TV=CV.boundingSphere;return TV!==null&&(this.boundingSphere=TV.clone()),this.elementsNeedUpdate=CV.elementsNeedUpdate,this.verticesNeedUpdate=CV.verticesNeedUpdate,this.uvsNeedUpdate=CV.uvsNeedUpdate,this.normalsNeedUpdate=CV.normalsNeedUpdate,this.colorsNeedUpdate=CV.colorsNeedUpdate,this.lineDistancesNeedUpdate=CV.lineDistancesNeedUpdate,this.groupsNeedUpdate=CV.groupsNeedUpdate,this}toBufferGeometry(){const CV=new WV().fromGeometry(this),FV=new J.BufferGeometry,NV=new Float32Array(CV.vertices.length*3);if(FV.setAttribute("position",new J.BufferAttribute(NV,3).copyVector3sArray(CV.vertices)),CV.normals.length>0){const gV=new Float32Array(CV.normals.length*3);FV.setAttribute("normal",new J.BufferAttribute(gV,3).copyVector3sArray(CV.normals))}if(CV.colors.length>0){const gV=new Float32Array(CV.colors.length*3);FV.setAttribute("color",new J.BufferAttribute(gV,3).copyColorsArray(CV.colors))}if(CV.uvs.length>0){const gV=new Float32Array(CV.uvs.length*2);FV.setAttribute("uv",new J.BufferAttribute(gV,2).copyVector2sArray(CV.uvs))}if(CV.uvs2.length>0){const gV=new Float32Array(CV.uvs2.length*2);FV.setAttribute("uv2",new J.BufferAttribute(gV,2).copyVector2sArray(CV.uvs2))}FV.groups=CV.groups;for(let gV in CV.morphTargets){const eV=[],JV=CV.morphTargets[gV];for(let nV=0,aV=JV.length;nV<aV;nV++){const GV=JV[nV],cV=new J.Float32BufferAttribute(GV.data.length*3,3);cV.name=GV.name,eV.push(cV.copyVector3sArray(GV.data))}FV.morphAttributes[gV]=eV}if(CV.skinIndices.length>0){const gV=new J.Float32BufferAttribute(CV.skinIndices.length*4,4);FV.setAttribute("skinIndex",gV.copyVector4sArray(CV.skinIndices))}if(CV.skinWeights.length>0){const gV=new J.Float32BufferAttribute(CV.skinWeights.length*4,4);FV.setAttribute("skinWeight",gV.copyVector4sArray(CV.skinWeights))}return CV.boundingSphere!==null&&(FV.boundingSphere=CV.boundingSphere.clone()),CV.boundingBox!==null&&(FV.boundingBox=CV.boundingBox.clone()),FV}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(CV){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(CV)}dispose(){this.dispatchEvent({type:"dispose"})}}class WV{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(CV){const FV=[];let NV,gV,eV;const JV=CV.faces;for(gV=0;gV<JV.length;gV++){const nV=JV[gV];nV.materialIndex!==eV&&(eV=nV.materialIndex,NV!==void 0&&(NV.count=gV*3-NV.start,FV.push(NV)),NV={start:gV*3,materialIndex:eV})}NV!==void 0&&(NV.count=gV*3-NV.start,FV.push(NV)),this.groups=FV}fromGeometry(CV){const FV=CV.faces,NV=CV.vertices,gV=CV.faceVertexUvs,eV=gV[0]&&gV[0].length>0,JV=gV[1]&&gV[1].length>0,nV=CV.morphTargets,aV=nV.length;let GV;if(aV>0){GV=[];for(let HV=0;HV<aV;HV++)GV[HV]={name:nV[HV].name,data:[]};this.morphTargets.position=GV}const cV=CV.morphNormals,TV=cV.length;let iV;if(TV>0){iV=[];for(let HV=0;HV<TV;HV++)iV[HV]={name:cV[HV].name,data:[]};this.morphTargets.normal=iV}const tV=CV.skinIndices,MV=CV.skinWeights,AV=tV.length===NV.length,pV=MV.length===NV.length;NV.length>0&&FV.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let HV=0;HV<FV.length;HV++){const oV=FV[HV];this.vertices.push(NV[oV.a],NV[oV.b],NV[oV.c]);const DV=oV.vertexNormals;if(DV.length===3)this.normals.push(DV[0],DV[1],DV[2]);else{const _V=oV.normal;this.normals.push(_V,_V,_V)}const wV=oV.vertexColors;if(wV.length===3)this.colors.push(wV[0],wV[1],wV[2]);else{const _V=oV.color;this.colors.push(_V,_V,_V)}if(eV===!0){const _V=gV[0][HV];_V!==void 0?this.uvs.push(_V[0],_V[1],_V[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",HV),this.uvs.push(new J.Vector2,new J.Vector2,new J.Vector2))}if(JV===!0){const _V=gV[1][HV];_V!==void 0?this.uvs2.push(_V[0],_V[1],_V[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",HV),this.uvs2.push(new J.Vector2,new J.Vector2,new J.Vector2))}for(let _V=0;_V<aV;_V++){const dl=nV[_V].vertices;GV[_V].data.push(dl[oV.a],dl[oV.b],dl[oV.c])}for(let _V=0;_V<TV;_V++){const dl=cV[_V].vertexNormals[HV];iV[_V].data.push(dl.a,dl.b,dl.c)}AV&&this.skinIndices.push(tV[oV.a],tV[oV.b],tV[oV.c]),pV&&this.skinWeights.push(MV[oV.a],MV[oV.b],MV[oV.c])}return this.computeGroups(CV),this.verticesNeedUpdate=CV.verticesNeedUpdate,this.normalsNeedUpdate=CV.normalsNeedUpdate,this.colorsNeedUpdate=CV.colorsNeedUpdate,this.uvsNeedUpdate=CV.uvsNeedUpdate,this.groupsNeedUpdate=CV.groupsNeedUpdate,CV.boundingSphere!==null&&(this.boundingSphere=CV.boundingSphere.clone()),CV.boundingBox!==null&&(this.boundingBox=CV.boundingBox.clone()),this}}class IV{constructor(CV,FV,NV,gV,eV,JV=0){this.a=CV,this.b=FV,this.c=NV,this.normal=gV&&gV.isVector3?gV:new J.Vector3,this.vertexNormals=Array.isArray(gV)?gV:[],this.color=eV&&eV.isColor?eV:new J.Color,this.vertexColors=Array.isArray(eV)?eV:[],this.materialIndex=JV}clone(){return new this.constructor().copy(this)}copy(CV){this.a=CV.a,this.b=CV.b,this.c=CV.c,this.normal.copy(CV.normal),this.color.copy(CV.color),this.materialIndex=CV.materialIndex;for(let FV=0,NV=CV.vertexNormals.length;FV<NV;FV++)this.vertexNormals[FV]=CV.vertexNormals[FV].clone();for(let FV=0,NV=CV.vertexColors.length;FV<NV;FV++)this.vertexColors[FV]=CV.vertexColors[FV].clone();return this}}lV.Face3=IV,lV.Geometry=ZV}(Geometry)),Geometry}var MeshoptDecoder$1={},hasRequiredMeshoptDecoder;function requireMeshoptDecoder(){return hasRequiredMeshoptDecoder||(hasRequiredMeshoptDecoder=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});let J;const VV=()=>{if(J)return J;const RV="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",UV="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",ZV=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]),WV=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 IV=RV;WebAssembly.validate(ZV)&&(IV=UV);let dV;const CV=WebAssembly.instantiate(FV(IV),{}).then(JV=>{dV=JV.instance,dV.exports.__wasm_call_ctors()});function FV(JV){const nV=new Uint8Array(JV.length);for(let GV=0;GV<JV.length;++GV){const cV=JV.charCodeAt(GV);nV[GV]=cV>96?cV-71:cV>64?cV-65:cV>47?cV+4:cV>46?63:62}let aV=0;for(let GV=0;GV<JV.length;++GV)nV[aV++]=nV[GV]<60?WV[nV[GV]]:(nV[GV]-60)*64+nV[++GV];return nV.buffer.slice(0,aV)}function NV(JV,nV,aV,GV,cV,TV){const iV=dV.exports.sbrk,tV=aV+3&-4,MV=iV(tV*GV),AV=iV(cV.length),pV=new Uint8Array(dV.exports.memory.buffer);pV.set(cV,AV);const HV=JV(MV,aV,GV,AV,cV.length);if(HV===0&&TV&&TV(MV,tV,GV),nV.set(pV.subarray(MV,MV+aV*GV)),iV(MV-iV(0)),HV!==0)throw new Error(`Malformed buffer data: ${HV}`)}const gV={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},eV={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return J={ready:CV,supported:!0,decodeVertexBuffer(JV,nV,aV,GV,cV){NV(dV.exports.meshopt_decodeVertexBuffer,JV,nV,aV,GV,dV.exports[gV[cV]])},decodeIndexBuffer(JV,nV,aV,GV){NV(dV.exports.meshopt_decodeIndexBuffer,JV,nV,aV,GV)},decodeIndexSequence(JV,nV,aV,GV){NV(dV.exports.meshopt_decodeIndexSequence,JV,nV,aV,GV)},decodeGltfBuffer(JV,nV,aV,GV,cV,TV){NV(dV.exports[eV[cV]],JV,nV,aV,GV,dV.exports[gV[TV]])}},J};lV.MeshoptDecoder=VV}(MeshoptDecoder$1)),MeshoptDecoder$1}var hasRequiredThreeStdlib;function requireThreeStdlib(){return hasRequiredThreeStdlib||(hasRequiredThreeStdlib=1,function(lV){Object.defineProperty(lV,Symbol.toStringTag,{value:"Module"});const J=requireMD2CharacterComplex(),VV=requireConvexObjectBreaker(),RV=requireMorphBlendMesh(),UV=requireGPUComputationRenderer(),ZV=requireGyroscope(),WV=requireMorphAnimMesh(),IV=requireRollerCoaster(),dV=requireTimer(),CV=requireWebGL(),FV=requireMD2Character(),NV=requireVolumeSlice(),gV=requireTubePainter(),eV=requireVolume$1(),JV=requireProgressiveLightmap(),nV=requireCSS2DRenderer(),aV=requireCSS3DRenderer(),GV=requireProjector(),cV=requireSVGRenderer(),TV=requireFlakesTexture(),iV=requireCurveModifier(),tV=requireSimplifyModifier(),MV=requireEdgeSplitModifier(),AV=requireTessellateModifier(),pV=requireGLTFExporter(),HV=requireUSDZExporter(),oV=requirePLYExporter(),DV=requireDRACOExporter(),wV=requireColladaExporter(),_V=requireMMDExporter(),dl=requireSTLExporter(),nl=requireOBJExporter(),Il=requireRoomEnvironment(),LV=requireAnimationClipCreator(),OV=requireCCDIKSolver(),$V=requireMMDPhysics(),Cl=requireMMDAnimationHelper(),Zl=requireBatchedMesh(),el=requireReflector(),pl=requireRefractor(),ml=requireShadowMesh(),Bl=requireLensflare(),jl=requireWater(),rl=requireMarchingCubes(),Pl=requireLightningStorm(),Hl=requireReflectorRTT(),Tl=requireReflectorForSSRPass(),kl=requireSky(),Dl=requireWater2(),ZR=requireGroundProjectedEnv(),JR=requireSceneUtils(),FR=requireUVsDebug(),QR=requireGeometryUtils(),hR=requireRoughnessMipmapper(),kR=requireSkeletonUtils(),AR=requireShadowMapViewer(),aR=requireBufferGeometryUtils(),TR=requireGeometryCompressionUtils(),xR=requireCinematicCamera(),pR=requireConvexHull(),UU=requireMeshSurfaceSampler(),SU=requireSimplexNoise(),xU=requireOBB(),DR=requireCapsule(),BR=requireColorConverter(),CU=requireImprovedNoise(),bR=requireOctree(),VR=requireLut(),mR=requireCameraControls(),YR=requireFirstPersonControls(),iR=requireTransformControls(),$R=requireDragControls(),lU=requirePointerLockControls(),hU=requireDeviceOrientationControls(),GR=requireTrackballControls(),IU=requireOrbitControls(),FU=requireArcballControls(),PU=requireFlyControls(),hZ=requireLUTPass(),zZ=requireClearPass(),jZ=requireGlitchPass(),DZ=requireHalftonePass(),kW=requireSMAAPass(),fU=requireFilmPass(),nW=requireOutlinePass(),NW=requireSSAOPass(),cW=requireSavePass(),DW=requireBokehPass(),HW=requirePass(),FZ=requireTexturePass(),CW=requireAdaptiveToneMappingPass(),gW=requireUnrealBloomPass(),TW=requireCubeTexturePass(),pW=requireSAOPass(),lZ=requireAfterimagePass(),wU=requireMaskPass(),LR=requireEffectComposer(),TU=requireDotScreenPass(),vR=requireSSRPass(),DU=requireTAARenderPass(),$U=requireShaderPass(),ol=requireSSAARenderPass(),vl=requireRenderPass(),wR=requireRenderPixelatedPass(),ZU=requireBloomPass(),tU=requireWaterPass(),uU=requireARButton(),yU=requireOculusHandModel(),XZ=requireOculusHandPointerModel(),mZ=requireText2D(),QZ=requireVRButton(),ZW=requireXRControllerModelFactory(),JW=requireXREstimatedLight(),IZ=requireXRHandMeshModel(),MR=requireXRHandModelFactory(),WU=requireXRHandPrimitiveModel(),MU=requireParametricGeometries(),VZ=requireParametricGeometry(),GZ=requireConvexGeometry(),$Z=requireLightningStrike(),eW=requireRoundedBoxGeometry(),iZ=requireBoxLineGeometry(),KU=requireDecalGeometry(),yZ=requireTeapotGeometry(),dW=requireTextGeometry(),KZ=requireCSM(),tW=requireCSMFrustum(),II=requireCSMHelper(),nU=requireCSMShader(),NU=requireACESFilmicToneMappingShader(),cU=requireAfterimageShader(),LU=requireBasicShader(),oZ=requireBleachBypassShader(),fZ=requireBlendShader(),BW=requireBokehShader(),bW=requireBokehShader2(),qW=requireBrightnessContrastShader(),AW=requireColorCorrectionShader(),FI=requireColorifyShader(),ZI=requireConvolutionShader(),cI=requireCopyShader(),zU=requireDOFMipMapShader(),EU=requireDepthLimitedBlurShader(),jU=requireDigitalGlitch(),_U=requireDotScreenShader(),qU=requireFXAAShader(),aW=requireFilmShader(),wZ=requireFocusShader(),EI=requireFreiChenShader(),XW=requireFresnelShader(),kI=requireGammaCorrectionShader(),gI=requireGodRaysShader(),$W=requireHalftoneShader(),id=requireHorizontalBlurShader(),KI=requireHorizontalTiltShiftShader(),Dd=requireHueSaturationShader(),gd=requireKaleidoShader(),Bd=requireLuminosityHighPassShader(),jd=requireLuminosityShader(),Yd=requireMirrorShader(),ld=requireNormalMapShader(),YC=requireParallaxShader(),fC=requirePixelShader(),$F=requireRGBShiftShader(),wC=requireSAOShader(),aN=requireSMAAShader(),RN=requireSSAOShader(),tR=requireSSRShader(),sU=requireSepiaShader(),AZ=requireSobelOperatorShader(),VW=requireSubsurfaceScatteringShader(),sW=requireTechnicolorShader(),zI=requireToneMapShader(),CI=requireToonShader(),fI=requireTriangleBlurShader(),Zd=requireUnpackDepthRGBAShader(),zd=requireVerticalBlurShader(),WC=requireVerticalTiltShiftShader(),kd=requireVignetteShader(),OC=requireVolumeShader(),BC=requireWaterRefractionShader(),oC=requireHTMLMesh(),VF=requireInteractiveGroup(),Tg=requireSelectionHelper(),VN=requireSelectionBox(),GG=requireAmmoPhysics(),FJ=requireParallaxBarrierEffect(),O0=requirePeppersGhostEffect(),KG=requireOutlineEffect(),m1=requireAnaglyphEffect(),dZ=requireAsciiEffect(),e1=requireStereoEffect(),IG=requireFBXLoader(),s1=requireFontLoader(),HG=requireTGALoader(),dG=requireLUTCubeLoader(),J1=requireNRRDLoader(),AJ=requireSTLLoader(),g0=requireMTLLoader(),aG=requireXLoader(),Kg=requireBVHLoader(),fN=requireKMZLoader(),k0=requireVRMLoader(),lJ=requireVRMLLoader(),Gg=requireKTX2Loader(),kN=requireLottieLoader(),TN=requireTTFLoader(),NJ=requireRGBELoader(),jg=requireAssimpLoader(),MN=requireColladaLoader(),jF=requireMDDLoader(),uN=requireEXRLoader(),SJ=require_3MFLoader(),Zg=requireXYZLoader(),e0=requireVTKLoader(),RG=requireLUT3dlLoader(),kJ=requireDDSLoader(),x0=requirePVRLoader(),K0=requireGCodeLoader(),SG=requireBasisTextureLoader(),V0=requireTDSLoader(),ag=requireLDrawLoader(),gJ=requireGLTFLoader(),md=requireSVGLoader(),DJ=require_3DMLoader(),vg=requireOBJLoader(),LC=requireAMFLoader(),W0=requireMMDLoader(),GI=requireMD2Loader(),qd=requireKTXLoader(),iC=requireTiltLoader(),X0=requireDRACOLoader(),XI=requireHDRCubeTextureLoader(),yd=requirePDBLoader(),l0=requirePRWMLoader(),AF=requireRGBMLoader(),Eg=requireVOXLoader(),PC=requirePCDLoader(),BN=requireLWOLoader(),wF=requirePLYLoader(),Wg=requireLineSegmentsGeometry(),UF=requireLineGeometry(),AC=requireWireframe(),VC=requireWireframeGeometry2(),Od=requireLine2$1(),HC=requireLineMaterial(),aF=requireLineSegments2(),RJ=requireLightProbeHelper(),MJ=requireVertexTangentsHelper(),JC=requirePositionalAudioHelper(),I0=requireVertexNormalsHelper(),_F=requireRectAreaLightHelper(),nN=requireRectAreaLightUniformsLib(),hF=requireLightProbeGenerator(),gg=requireNURBSUtils(),QN=requireNURBSCurve(),ig=requireNURBSSurface(),KF=requireCurveExtras(),rg=requireGeometry(),xd=requireMeshoptDecoder(),JF=requireMotionControllers();lV.MD2CharacterComplex=J.MD2CharacterComplex,lV.ConvexObjectBreaker=VV.ConvexObjectBreaker,lV.MorphBlendMesh=RV.MorphBlendMesh,lV.GPUComputationRenderer=UV.GPUComputationRenderer,lV.Gyroscope=ZV.Gyroscope,lV.MorphAnimMesh=WV.MorphAnimMesh,lV.RollerCoasterGeometry=IV.RollerCoasterGeometry,lV.RollerCoasterLiftersGeometry=IV.RollerCoasterLiftersGeometry,lV.RollerCoasterShadowGeometry=IV.RollerCoasterShadowGeometry,lV.SkyGeometry=IV.SkyGeometry,lV.TreesGeometry=IV.TreesGeometry,lV.Timer=dV.Timer,lV.getErrorMessage=CV.getErrorMessage,lV.getWebGL2ErrorMessage=CV.getWebGL2ErrorMessage,lV.getWebGLErrorMessage=CV.getWebGLErrorMessage,lV.isWebGL2Available=CV.isWebGL2Available,lV.isWebGLAvailable=CV.isWebGLAvailable,lV.MD2Character=FV.MD2Character,lV.VolumeSlice=NV.VolumeSlice,lV.TubePainter=gV.TubePainter,lV.Volume=eV.Volume,lV.ProgressiveLightMap=JV.ProgressiveLightMap,lV.CSS2DObject=nV.CSS2DObject,lV.CSS2DRenderer=nV.CSS2DRenderer,lV.CSS3DObject=aV.CSS3DObject,lV.CSS3DRenderer=aV.CSS3DRenderer,lV.CSS3DSprite=aV.CSS3DSprite,lV.Projector=GV.Projector,lV.RenderableFace=GV.RenderableFace,lV.RenderableLine=GV.RenderableLine,lV.RenderableObject=GV.RenderableObject,lV.RenderableSprite=GV.RenderableSprite,lV.RenderableVertex=GV.RenderableVertex,lV.SVGObject=cV.SVGObject,lV.SVGRenderer=cV.SVGRenderer,lV.FlakesTexture=TV.FlakesTexture,lV.Flow=iV.Flow,lV.InstancedFlow=iV.InstancedFlow,lV.getUniforms=iV.getUniforms,lV.initSplineTexture=iV.initSplineTexture,lV.modifyShader=iV.modifyShader,lV.updateSplineTexture=iV.updateSplineTexture,lV.SimplifyModifier=tV.SimplifyModifier,lV.EdgeSplitModifier=MV.EdgeSplitModifier,lV.TessellateModifier=AV.TessellateModifier,lV.GLTFExporter=pV.GLTFExporter,lV.USDZExporter=HV.USDZExporter,lV.PLYExporter=oV.PLYExporter,lV.DRACOExporter=DV.DRACOExporter,lV.ColladaExporter=wV.ColladaExporter,lV.MMDExporter=_V.MMDExporter,lV.STLExporter=dl.STLExporter,lV.OBJExporter=nl.OBJExporter,lV.RoomEnvironment=Il.RoomEnvironment,lV.AnimationClipCreator=LV.AnimationClipCreator,lV.CCDIKHelper=OV.CCDIKHelper,lV.CCDIKSolver=OV.CCDIKSolver,lV.MMDPhysics=$V.MMDPhysics,lV.MMDAnimationHelper=Cl.MMDAnimationHelper,lV.BatchedMesh=Zl.BatchedMesh,lV.Reflector=el.Reflector,lV.Refractor=pl.Refractor,lV.ShadowMesh=ml.ShadowMesh,lV.Lensflare=Bl.Lensflare,lV.LensflareElement=Bl.LensflareElement,lV.Water=jl.Water,lV.MarchingCubes=rl.MarchingCubes,lV.edgeTable=rl.edgeTable,lV.triTable=rl.triTable,lV.LightningStorm=Pl.LightningStorm,lV.ReflectorRTT=Hl.ReflectorRTT,lV.ReflectorForSSRPass=Tl.ReflectorForSSRPass,lV.Sky=kl.Sky,lV.Water2=Dl.Water2,lV.GroundProjectedEnv=ZR.GroundProjectedEnv,lV.SceneUtils=JR.SceneUtils,lV.UVsDebug=FR.UVsDebug,lV.GeometryUtils=QR.GeometryUtils,lV.RoughnessMipmapper=hR.RoughnessMipmapper,lV.SkeletonUtils=kR.SkeletonUtils,lV.ShadowMapViewer=AR.ShadowMapViewer,lV.computeMorphedAttributes=aR.computeMorphedAttributes,lV.estimateBytesUsed=aR.estimateBytesUsed,lV.interleaveAttributes=aR.interleaveAttributes,lV.mergeBufferAttributes=aR.mergeBufferAttributes,lV.mergeBufferGeometries=aR.mergeBufferGeometries,lV.mergeVertices=aR.mergeVertices,lV.toCreasedNormals=aR.toCreasedNormals,lV.toTrianglesDrawMode=aR.toTrianglesDrawMode,lV.GeometryCompressionUtils=TR.GeometryCompressionUtils,lV.PackedPhongMaterial=TR.PackedPhongMaterial,lV.CinematicCamera=xR.CinematicCamera,lV.ConvexHull=pR.ConvexHull,lV.Face=pR.Face,lV.HalfEdge=pR.HalfEdge,lV.VertexList=pR.VertexList,lV.VertexNode=pR.VertexNode,lV.MeshSurfaceSampler=UU.MeshSurfaceSampler,lV.SimplexNoise=SU.SimplexNoise,lV.OBB=xU.OBB,lV.Capsule=DR.Capsule,lV.ColorConverter=BR.ColorConverter,lV.ImprovedNoise=CU.ImprovedNoise,lV.Octree=bR.Octree,lV.ColorMapKeywords=VR.ColorMapKeywords,lV.Lut=VR.Lut,lV.CameraControls=mR.CameraControls,lV.MapControlsExp=mR.MapControlsExp,lV.OrbitControlsExp=mR.OrbitControlsExp,lV.STATE=mR.STATE,lV.TrackballControlsExp=mR.TrackballControlsExp,lV.FirstPersonControls=YR.FirstPersonControls,lV.TransformControls=iR.TransformControls,lV.TransformControlsGizmo=iR.TransformControlsGizmo,lV.TransformControlsPlane=iR.TransformControlsPlane,lV.DragControls=$R.DragControls,lV.PointerLockControls=lU.PointerLockControls,lV.DeviceOrientationControls=hU.DeviceOrientationControls,lV.TrackballControls=GR.TrackballControls,lV.MapControls=IU.MapControls,lV.OrbitControls=IU.OrbitControls,lV.ArcballControls=FU.ArcballControls,lV.FlyControls=PU.FlyControls,lV.LUTPass=hZ.LUTPass,lV.ClearPass=zZ.ClearPass,lV.GlitchPass=jZ.GlitchPass,lV.HalftonePass=DZ.HalftonePass,lV.SMAAPass=kW.SMAAPass,lV.FilmPass=fU.FilmPass,lV.OutlinePass=nW.OutlinePass,lV.SSAOPass=NW.SSAOPass,lV.SavePass=cW.SavePass,lV.BokehPass=DW.BokehPass,lV.FullScreenQuad=HW.FullScreenQuad,lV.Pass=HW.Pass,lV.TexturePass=FZ.TexturePass,lV.AdaptiveToneMappingPass=CW.AdaptiveToneMappingPass,lV.UnrealBloomPass=gW.UnrealBloomPass,lV.CubeTexturePass=TW.CubeTexturePass,lV.SAOPass=pW.SAOPass,lV.AfterimagePass=lZ.AfterimagePass,lV.ClearMaskPass=wU.ClearMaskPass,lV.MaskPass=wU.MaskPass,lV.EffectComposer=LR.EffectComposer,lV.DotScreenPass=TU.DotScreenPass,lV.SSRPass=vR.SSRPass,lV.TAARenderPass=DU.TAARenderPass,lV.ShaderPass=$U.ShaderPass,lV.SSAARenderPass=ol.SSAARenderPass,lV.RenderPass=vl.RenderPass,lV.RenderPixelatedPass=wR.RenderPixelatedPass,lV.BloomPass=ZU.BloomPass,lV.WaterPass=tU.WaterPass,lV.ARButton=uU.ARButton,lV.OculusHandModel=yU.OculusHandModel,lV.OculusHandPointerModel=XZ.OculusHandPointerModel,lV.createText=mZ.createText,lV.VRButton=QZ.VRButton,lV.XRControllerModelFactory=ZW.XRControllerModelFactory,lV.XREstimatedLight=JW.XREstimatedLight,lV.XRHandMeshModel=IZ.XRHandMeshModel,lV.XRHandModelFactory=MR.XRHandModelFactory,lV.XRHandPrimitiveModel=WU.XRHandPrimitiveModel,lV.ParametricGeometries=MU.ParametricGeometries,lV.ParametricGeometry=VZ.ParametricGeometry,lV.ConvexGeometry=GZ.ConvexGeometry,lV.LightningStrike=$Z.LightningStrike,lV.RoundedBoxGeometry=eW.RoundedBoxGeometry,lV.BoxLineGeometry=iZ.BoxLineGeometry,lV.DecalGeometry=KU.DecalGeometry,lV.DecalVertex=KU.DecalVertex,lV.TeapotGeometry=yZ.TeapotGeometry,lV.TextBufferGeometry=dW.TextGeometry,lV.TextGeometry=dW.TextGeometry,lV.CSM=KZ.CSM,lV.CSMFrustum=tW.CSMFrustum,lV.CSMHelper=II.CSMHelper,lV.CSMShader=nU.CSMShader,lV.ACESFilmicToneMappingShader=NU.ACESFilmicToneMappingShader,lV.AfterimageShader=cU.AfterimageShader,lV.BasicShader=LU.BasicShader,lV.BleachBypassShader=oZ.BleachBypassShader,lV.BlendShader=fZ.BlendShader,lV.BokehShader=BW.BokehShader,lV.BokehDepthShader=bW.BokehDepthShader,lV.BokehShader2=bW.BokehShader2,lV.BrightnessContrastShader=qW.BrightnessContrastShader,lV.ColorCorrectionShader=AW.ColorCorrectionShader,lV.ColorifyShader=FI.ColorifyShader,lV.ConvolutionShader=ZI.ConvolutionShader,lV.CopyShader=cI.CopyShader,lV.DOFMipMapShader=zU.DOFMipMapShader,lV.BlurShaderUtils=EU.BlurShaderUtils,lV.DepthLimitedBlurShader=EU.DepthLimitedBlurShader,lV.DigitalGlitch=jU.DigitalGlitch,lV.DotScreenShader=_U.DotScreenShader,lV.FXAAShader=qU.FXAAShader,lV.FilmShader=aW.FilmShader,lV.FocusShader=wZ.FocusShader,lV.FreiChenShader=EI.FreiChenShader,lV.FresnelShader=XW.FresnelShader,lV.GammaCorrectionShader=kI.GammaCorrectionShader,lV.GodRaysCombineShader=gI.GodRaysCombineShader,lV.GodRaysDepthMaskShader=gI.GodRaysDepthMaskShader,lV.GodRaysFakeSunShader=gI.GodRaysFakeSunShader,lV.GodRaysGenerateShader=gI.GodRaysGenerateShader,lV.HalftoneShader=$W.HalftoneShader,lV.HorizontalBlurShader=id.HorizontalBlurShader,lV.HorizontalTiltShiftShader=KI.HorizontalTiltShiftShader,lV.HueSaturationShader=Dd.HueSaturationShader,lV.KaleidoShader=gd.KaleidoShader,lV.LuminosityHighPassShader=Bd.LuminosityHighPassShader,lV.LuminosityShader=jd.LuminosityShader,lV.MirrorShader=Yd.MirrorShader,lV.NormalMapShader=ld.NormalMapShader,lV.ParallaxShader=YC.ParallaxShader,lV.PixelShader=fC.PixelShader,lV.RGBShiftShader=$F.RGBShiftShader,lV.SAOShader=wC.SAOShader,lV.SMAABlendShader=aN.SMAABlendShader,lV.SMAAEdgesShader=aN.SMAAEdgesShader,lV.SMAAWeightsShader=aN.SMAAWeightsShader,lV.SSAOBlurShader=RN.SSAOBlurShader,lV.SSAODepthShader=RN.SSAODepthShader,lV.SSAOShader=RN.SSAOShader,lV.SSRBlurShader=tR.SSRBlurShader,lV.SSRDepthShader=tR.SSRDepthShader,lV.SSRShader=tR.SSRShader,lV.SepiaShader=sU.SepiaShader,lV.SobelOperatorShader=AZ.SobelOperatorShader,lV.SubsurfaceScatteringShader=VW.SubsurfaceScatteringShader,lV.TechnicolorShader=sW.TechnicolorShader,lV.ToneMapShader=zI.ToneMapShader,lV.ToonShader1=CI.ToonShader1,lV.ToonShader2=CI.ToonShader2,lV.ToonShaderDotted=CI.ToonShaderDotted,lV.ToonShaderHatching=CI.ToonShaderHatching,lV.TriangleBlurShader=fI.TriangleBlurShader,lV.UnpackDepthRGBAShader=Zd.UnpackDepthRGBAShader,lV.VerticalBlurShader=zd.VerticalBlurShader,lV.VerticalTiltShiftShader=WC.VerticalTiltShiftShader,lV.VignetteShader=kd.VignetteShader,lV.VolumeRenderShader1=OC.VolumeRenderShader1,lV.WaterRefractionShader=BC.WaterRefractionShader,lV.HTMLMesh=oC.HTMLMesh,lV.InteractiveGroup=VF.InteractiveGroup,lV.SelectionHelper=Tg.SelectionHelper,lV.SelectionBox=VN.SelectionBox,lV.AmmoPhysics=GG.AmmoPhysics,lV.ParallaxBarrierEffect=FJ.ParallaxBarrierEffect,lV.PeppersGhostEffect=O0.PeppersGhostEffect,lV.OutlineEffect=KG.OutlineEffect,lV.AnaglyphEffect=m1.AnaglyphEffect,lV.AsciiEffect=dZ.AsciiEffect,lV.StereoEffect=e1.StereoEffect,lV.FBXLoader=IG.FBXLoader,lV.Font=s1.Font,lV.FontLoader=s1.FontLoader,lV.TGALoader=HG.TGALoader,lV.LUTCubeLoader=dG.LUTCubeLoader,lV.NRRDLoader=J1.NRRDLoader,lV.STLLoader=AJ.STLLoader,lV.MTLLoader=g0.MTLLoader,lV.XLoader=aG.XLoader,lV.BVHLoader=Kg.BVHLoader,lV.KMZLoader=fN.KMZLoader,lV.VRMLoader=k0.VRMLoader,lV.VRMLLoader=lJ.VRMLLoader,lV.KTX2Loader=Gg.KTX2Loader,lV.LottieLoader=kN.LottieLoader,lV.TTFLoader=TN.TTFLoader,lV.RGBELoader=NJ.RGBELoader,lV.AssimpLoader=jg.AssimpLoader,lV.ColladaLoader=MN.ColladaLoader,lV.MDDLoader=jF.MDDLoader,lV.EXRLoader=uN.EXRLoader,lV.ThreeMFLoader=SJ.ThreeMFLoader,lV.XYZLoader=Zg.XYZLoader,lV.VTKLoader=e0.VTKLoader,lV.LUT3dlLoader=RG.LUT3dlLoader,lV.DDSLoader=kJ.DDSLoader,lV.PVRLoader=x0.PVRLoader,lV.GCodeLoader=K0.GCodeLoader,lV.BasisTextureLoader=SG.BasisTextureLoader,lV.TDSLoader=V0.TDSLoader,lV.LDrawLoader=ag.LDrawLoader,lV.GLTFLoader=gJ.GLTFLoader,lV.SVGLoader=md.SVGLoader,lV.Rhino3dmLoader=DJ.Rhino3dmLoader,lV.OBJLoader=vg.OBJLoader,lV.AMFLoader=LC.AMFLoader,lV.MMDLoader=W0.MMDLoader,lV.MD2Loader=GI.MD2Loader,lV.KTXLoader=qd.KTXLoader,lV.TiltLoader=iC.TiltLoader,lV.DRACOLoader=X0.DRACOLoader,lV.HDRCubeTextureLoader=XI.HDRCubeTextureLoader,lV.PDBLoader=yd.PDBLoader,lV.PRWMLoader=l0.PRWMLoader,lV.RGBMLoader=AF.RGBMLoader,lV.VOXData3DTexture=Eg.VOXData3DTexture,lV.VOXLoader=Eg.VOXLoader,lV.VOXMesh=Eg.VOXMesh,lV.PCDLoader=PC.PCDLoader,lV.LWOLoader=BN.LWOLoader,lV.PLYLoader=wF.PLYLoader,lV.LineSegmentsGeometry=Wg.LineSegmentsGeometry,lV.LineGeometry=UF.LineGeometry,lV.Wireframe=AC.Wireframe,lV.WireframeGeometry2=VC.WireframeGeometry2,lV.Line2=Od.Line2,lV.LineMaterial=HC.LineMaterial,lV.LineSegments2=aF.LineSegments2,lV.LightProbeHelper=RJ.LightProbeHelper,lV.VertexTangentsHelper=MJ.VertexTangentsHelper,lV.PositionalAudioHelper=JC.PositionalAudioHelper,lV.VertexNormalsHelper=I0.VertexNormalsHelper,lV.RectAreaLightHelper=_F.RectAreaLightHelper,lV.RectAreaLightUniformsLib=nN.RectAreaLightUniformsLib,lV.LightProbeGenerator=hF.LightProbeGenerator,lV.calcBSplineDerivatives=gg.calcBSplineDerivatives,lV.calcBSplinePoint=gg.calcBSplinePoint,lV.calcBasisFunctionDerivatives=gg.calcBasisFunctionDerivatives,lV.calcBasisFunctions=gg.calcBasisFunctions,lV.calcKoverI=gg.calcKoverI,lV.calcNURBSDerivatives=gg.calcNURBSDerivatives,lV.calcRationalCurveDerivatives=gg.calcRationalCurveDerivatives,lV.calcSurfacePoint=gg.calcSurfacePoint,lV.findSpan=gg.findSpan,lV.NURBSCurve=QN.NURBSCurve,lV.NURBSSurface=ig.NURBSSurface,lV.CinquefoilKnot=KF.CinquefoilKnot,lV.DecoratedTorusKnot4a=KF.DecoratedTorusKnot4a,lV.DecoratedTorusKnot4b=KF.DecoratedTorusKnot4b,lV.DecoratedTorusKnot5a=KF.DecoratedTorusKnot5a,lV.DecoratedTorusKnot5c=KF.DecoratedTorusKnot5c,lV.FigureEightPolynomialKnot=KF.FigureEightPolynomialKnot,lV.GrannyKnot=KF.GrannyKnot,lV.HeartCurve=KF.HeartCurve,lV.HelixCurve=KF.HelixCurve,lV.KnotCurve=KF.KnotCurve,lV.TorusKnot=KF.TorusKnot,lV.TrefoilKnot=KF.TrefoilKnot,lV.TrefoilPolynomialKnot=KF.TrefoilPolynomialKnot,lV.VivianiCurve=KF.VivianiCurve,lV.Face3=rg.Face3,lV.Geometry=rg.Geometry,lV.MeshoptDecoder=xd.MeshoptDecoder,lV.MotionController=JF.MotionController,lV.MotionControllerConstants=JF.MotionControllerConstants,lV.fetchProfile=JF.fetchProfile,lV.fetchProfilesList=JF.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=lV=>{let J=typeof lV=="number"?"mm":lV.replace(/^[^a-zA-Z]+/g,"").toLowerCase();J||(J="mm");const VV=typeof lV=="number"?lV:Number.parseFloat(lV.split(J)[0]);if(J in unitToMm)return VV*unitToMm[J];throw new Error(`Unsupported unit: ${J}`)},mm_default=mm,__defProp$o=Object.defineProperty,__export$4=(lV,J)=>{for(var VV in J)__defProp$o(lV,VV,{get:J[VV],enumerable:!0})},fn_exports$1={};__export$4(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},(lV,J)=>Math.cos(J/8*Math.PI-Math.PI)).map(lV=>({x:lV,y:-Math.sqrt(1-lV**2)})),platedhole$1=(lV,J,VV,RV,UV)=>({type:"pcb_plated_hole",shape:"circle",x:J,y:VV,hole_diameter:mm(RV),outer_diameter:mm(UV),pcb_port_id:"",layers:["top","bottom"],port_hints:[lV.toString()]}),silkscreenRef$1=(lV,J,VV)=>({type:"pcb_silkscreen_text",pcb_silkscreen_text_id:"silkscreen_text_1",font:"tscircuit2024",font_size:VV,pcb_component_id:"pcb_component_1",text:"{REF}",layer:"top",anchor_position:{x:lV,y:J},anchor_alignment:"center"}),extendDipDef$1=lV=>z$1.object({fn:z$1.string(),num_pins:z$1.number().optional().default(6),wide:z$1.boolean().optional(),narrow:z$1.boolean().optional(),w:length$4.optional(),p:length$4.default(length$4.parse(lV.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(lV.w??"300mil")),J)),dip_def$1=extendDipDef$1({}),getCcwDipCoords$1=(lV,J,VV,RV)=>{const UV=lV/2,ZV=J<=UV,WV=UV-1,IV=RV,dV=IV*WV;return ZV?{x:-VV/2,y:dV/2-(J-1)*IV}:{x:VV/2,y:-dV/2+(J-UV-1)*IV}},dip$1=lV=>{const J=dip_def$1.parse(lV),VV=[];for(let dV=0;dV<J.num_pins;dV++){const{x:CV,y:FV}=getCcwDipCoords$1(J.num_pins,dV+1,J.w,J.p??2.54);VV.push(platedhole$1(dV+1,CV,FV,J.id??"0.8mm",J.od??"1mm"))}const RV=J.w-J.od-.4,UV=(J.num_pins/2-1)*J.p+J.od+.4,ZV={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-RV/2,y:-UV/2},{x:-RV/2,y:UV/2},...u_curve$1.map(({x:dV,y:CV})=>({x:dV*RV/6,y:CV*RV/6+UV/2})),{x:RV/2,y:UV/2},{x:RV/2,y:-UV/2},{x:-RV/2,y:-UV/2}],type:"pcb_silkscreen_path",stroke_width:.1},WV=[];for(let dV=0;dV<J.num_pins;dV++){const CV=dV<J.num_pins/2,FV=CV?-J.w/2-J.p/2-.2:J.p/2+J.w/2+.2,NV=CV?(-UV+1.6)/2+dV*J.p:(-UV+1.6)/2+(dV-J.num_pins/2)*J.p,gV={type:"pcb_fabrication_note_text",layer:"top",pcb_component_id:`pin_${dV+1}`,pcb_silkscreen_text_id:`pin_${dV+1}`,text:`{pin${dV+1}}`,anchor_position:{x:FV,y:NV},font_size:.3,font_color:"red",font:"tscircuit2024",anchor_alignment:"top-left"};WV.push(gV)}const IV=silkscreenRef$1(0,UV/2+.5,.4);return{circuitJson:[...VV,ZV,IV,...WV],parameters:J}},rectpad$1=(lV,J,VV,RV,UV)=>({type:"pcb_smtpad",x:J,y:VV,width:RV,height:UV,layer:"top",shape:"rect",pcb_smtpad_id:"",port_hints:Array.isArray(lV)?lV.map(ZV=>ZV.toString()):[lV.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((lV,J)=>(lV[J.metric]=J,lV),{}),imperialMap$1=sizes$1.reduce((lV,J)=>(lV[J.imperial]=J,lV),{});z$1.object({tht:z$1.boolean(),p:length$4,pw:length$4.optional(),ph:length$4.optional(),metric:distance$5.optional(),imperial:distance$5.optional(),w:length$4.optional(),h:length$4.optional()});var deriveXFromH$1=lV=>.079*lV**2+.94*lV-.009,deriveZFromW$1=lV=>1.09*lV+.6,deriveGFromW$1=lV=>.59*lV-.31,deriveCFromW$1=lV=>-.01*lV**2+.94*lV+.03,passive$1=lV=>{let{tht:J,p:VV,pw:RV,ph:UV,metric:ZV,imperial:WV,w:IV,h:dV}=lV;if(typeof IV=="string"&&(IV=mm_default(IV)),typeof dV=="string"&&(dV=mm_default(dV)),typeof VV=="string"&&(VV=mm_default(VV)),typeof RV=="string"&&(RV=mm_default(RV)),typeof UV=="string"&&(UV=mm_default(UV)),dV>IV)throw new Error("height cannot be greater than width (rotated footprint not yet implemented)");let CV;if(ZV&&(CV=metricMap$1[ZV]),WV&&(CV=imperialMap$1[WV]),!CV&&IV&&dV&&!RV&&!UV&&(CV={imperial:"custom",metric:"custom",Z_mm_min:deriveZFromW$1(IV),G_mm_min:deriveGFromW$1(IV),X_mm_min:deriveXFromH$1(dV),C_mm_ref:deriveCFromW$1(IV)}),CV&&(IV=CV.Z_mm_min,dV=CV.X_mm_min,VV=CV.C_mm_ref,RV=(CV.Z_mm_min-CV.G_mm_min)/2,UV=(CV.Z_mm_min-CV.G_mm_min)/2),RV===void 0)throw new Error("could not infer pad width");if(UV===void 0)throw new Error("could not infer pad width");const FV=silkscreenRef$1(0,.9,.2);return J?[platedhole$1(1,-VV/2,0,RV,RV*1/.8),platedhole$1(2,VV/2,0,RV,RV*1/.8),FV]:[rectpad$1(["1","left"],-VV/2,0,RV,UV),rectpad$1(["2","right"],VV/2,0,RV,UV),FV]},diode$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),cap$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),led$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),res$1=lV=>({circuitJson:passive$1(lV),parameters:lV}),ALPHABET$1="ABCDEFGHIJKLMNOPQRSTUVWXYZ",dim2d$1=z$1.string().transform(lV=>{const[J,VV]=lV.split(/[x ]/);return{x:parseFloat(J),y:parseFloat(VV)}}).pipe(z$1.object({x:z$1.number(),y:z$1.number()})),function_call$1=z$1.string().or(z$1.array(z$1.any())).transform(lV=>Array.isArray(lV)?lV:(lV.startsWith("(")&&lV.endsWith(")")&&(lV=lV.slice(1,-1)),lV.split(",").map(J=>{const VV=Number(J);return isNaN(VV)?J:VV}))).pipe(z$1.array(z$1.string().or(z$1.number()))),bga_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.number().optional().default(64),grid:dim2d$1.optional(),p:distance$5.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$1.boolean().optional(),blorigin:z$1.boolean().optional(),trorigin:z$1.boolean().optional(),brorigin:z$1.boolean().optional(),missing:function_call$1.default([])}).transform(lV=>{let J="tl";if(lV.blorigin&&(J="bl"),lV.trorigin&&(J="tr"),lV.brorigin&&(J="br"),!lV.grid){const RV=Math.ceil(Math.sqrt(lV.num_pins));lV.grid={x:RV,y:RV}}return lV.missing&&(lV.missing=lV.missing.map(RV=>{if(typeof RV=="number")return RV;if(RV==="center")return"center";if(RV==="topleft")return"topleft";const UV=RV.match(/([A-Z]+)(\d+)/);if(!UV)return RV;const ZV=ALPHABET$1.indexOf(UV[1]),WV=Number.parseInt(UV[2])-1;return ZV*lV.grid.x+WV+1})),{...lV,origin:J}}),bga$1=lV=>{const J=bga_def$1.parse(lV);let{num_pins:VV,grid:RV,p:UV,w:ZV,h:WV,ball:IV,pad:dV,missing:CV}=J;IV??(IV=.75/1.27*UV),dV??(dV=IV*.8);const FV=[],NV=(CV??[]).filter(aV=>typeof aV=="number"),gV=RV.x*RV.y-VV;if(CV.length===0&&gV>0&&(Math.sqrt(gV)%1===0?CV.push("center"):gV===1&&CV.push("topleft")),CV!=null&&CV.includes("center")){const aV=Math.floor(Math.sqrt(gV)),GV=Math.floor((RV.x-aV)/2),cV=Math.floor((RV.y-aV)/2);for(let TV=cV;TV<cV+aV;TV++)for(let iV=GV;iV<GV+aV;iV++)NV.push(TV*RV.x+iV+1)}CV!=null&&CV.includes("topleft")&&NV.push(1);const eV=new Set(NV);let JV=0;for(let aV=0;aV<RV.y;aV++)for(let GV=0;GV<RV.x;GV++){let cV=aV*RV.x+GV+1;if(eV.has(cV)){JV++;continue}cV-=JV;const TV=(GV-(RV.x-1)/2)*UV,iV=-(aV-(RV.y-1)/2)*UV;FV.push(rectpad$1([cV,`${ALPHABET$1[aV]}${GV+1}`],TV,iV,dV,dV))}const nV=silkscreenRef$1(0,RV.y*UV/2,.2);return{circuitJson:[...FV,nV],parameters:J}},extendSoicDef$1=lV=>z$1.object({fn:z$1.string(),num_pins:z$1.number().optional().default(8),w:length$4.default(length$4.parse(lV.w??"5.3mm")),p:length$4.default(length$4.parse(lV.p??"1.27mm")),pw:length$4.optional(),pl:length$4.optional(),legsoutside:z$1.boolean().optional().default(lV.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=lV=>{lV.widthincludeslegs!==void 0&&(lV.legsoutside=!lV.widthincludeslegs);const{num_pins:J,pn:VV,w:RV,p:UV,pl:ZV,legsoutside:WV}=lV,IV=J/2,dV=VV<=IV,CV=IV-1,FV=UV,NV=FV*CV,gV=WV?ZV/2:-ZV/2;return dV?{x:-RV/2-gV,y:NV/2-(VV-1)*FV}:{x:RV/2+gV,y:-NV/2+(VV-IV-1)*FV}},soic$1=lV=>{const J=soic_def$1.parse(lV);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},soicWithoutParsing$1=lV=>{const J=[];for(let IV=0;IV<lV.num_pins;IV++){const{x:dV,y:CV}=getCcwSoicCoords$1({num_pins:lV.num_pins,pn:IV+1,w:lV.w,p:lV.p??1.27,pl:lV.pl,legsoutside:lV.legsoutside});J.push(rectpad$1(IV+1,dV,CV,lV.pl??"1mm",lV.pw??"0.6mm"))}const VV=Math.min(1,lV.p/2),RV=lV.w-(lV.legsoutside?0:lV.pl*2)-.2,UV=(lV.num_pins/2-1)*lV.p+lV.pw+VV,ZV=silkscreenRef$1(0,UV/2+.4,UV/12),WV={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",stroke_width:.1,route:[{x:-RV/2,y:-UV/2},{x:-RV/2,y:UV/2},...u_curve$1.map(({x:IV,y:dV})=>({x:IV*RV/6,y:dV*RV/6+UV/2})),{x:RV/2,y:UV/2},{x:RV/2,y:-UV/2},{x:-RV/2,y:-UV/2}]};return[...J,WV,ZV]},pin_order_specifier$1=z$1.enum(["leftside","topside","rightside","bottomside","toppin","bottompin","leftpin","rightpin"]),getQuadPinMap$2=({num_pins:lV,cw:J,ccw:VV,startingpin:RV})=>{const UV=[],ZV=lV/4;let WV=1;const IV={};for(const dV of RV??[])IV[dV]=!0;!IV.leftside&&!IV.topside&&!IV.rightside&&!IV.bottomside&&(IV.leftside=!0),!IV.bottompin&&!IV.leftpin&&!IV.rightpin&&!IV.toppin&&(IV.leftside?IV.toppin=!0:IV.topside?IV.rightpin=!0:IV.rightside?IV.bottompin=!0:IV.bottomside&&(IV.leftpin=!0)),IV.leftside&&IV.toppin?WV=1:IV.leftside&&IV.bottompin?WV=ZV:IV.bottomside&&IV.leftpin?WV=ZV+1:IV.bottomside&&IV.rightpin?WV=ZV*2:IV.rightside&&IV.bottompin?WV=ZV*2+1:IV.rightside&&IV.toppin?WV=ZV*3:IV.topside&&IV.rightpin?WV=ZV*3+1:IV.topside&&IV.leftpin&&(WV=ZV*4),UV.push(-1);for(let dV=0;dV<lV;dV++)UV[WV]=dV+1,VV||!J?(WV++,WV>lV&&(WV=1)):(WV--,WV<1&&(WV=lV));return UV},base_quad_def$1=z$1.object({fn:z$1.string(),cc:z$1.boolean().default(!0).optional(),ccw:z$1.boolean().default(!0).optional(),startingpin:z$1.string().or(z$1.array(pin_order_specifier$1)).transform(lV=>typeof lV=="string"?lV.slice(1,-1).split(","):lV).pipe(z$1.array(pin_order_specifier$1)).optional(),num_pins:z$1.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$1.union([z$1.literal(!0),dim2d$1]).optional(),legsoutside:z$1.boolean().optional()}),quadTransform$1=lV=>{lV.w&&!lV.h?lV.h=lV.w:!lV.w&&lV.h&&(lV.w=lV.h);const J=lV.num_pins/4;if(!lV.p&&!lV.pw&&!lV.pl&&lV.w){const VV=J+4;lV.p=lV.w/VV}return!lV.p&&lV.w&&lV.h&&lV.pw&&lV.pl&&(lV.p=(lV.w-lV.pl*2)/(J-1)),!lV.w&&!lV.h&&lV.p&&(lV.w=lV.p*(J+4),lV.h=lV.w),lV.p&&!lV.pw&&!lV.pl?(lV.pw=lV.p/2,lV.pl=lV.p/2):lV.pw?lV.pl||(lV.pl=lV.pw*(1/.6)):lV.pw=lV.pl*(.6/1),lV},quad_def$1=base_quad_def$1.transform(quadTransform$1),SIDES_CCW$1=["left","bottom","right","top"],getQuadCoords$2=lV=>{const{pin_count:J,pn:VV,w:RV,h:UV,p:ZV,pl:WV,legsoutside:IV}=lV,dV=J/4,CV=SIDES_CCW$1[Math.floor((VV-1)/dV)],FV=(VV-1)%dV,NV=ZV*(dV-1),gV=ZV*(dV-1),eV=IV?WV/2:-WV/2;switch(CV){case"left":return{x:-RV/2-eV,y:gV/2-FV*ZV,o:"vert"};case"bottom":return{x:-NV/2+FV*ZV,y:-UV/2-eV,o:"horz"};case"right":return{x:RV/2+eV,y:-gV/2+FV*ZV,o:"vert"};case"top":return{x:NV/2-FV*ZV,y:UV/2+eV,o:"horz"};default:throw new Error("Invalid pin number")}},quad$1=lV=>{const J=quad_def$1.parse(lV),VV=[],RV=getQuadPinMap$2(J),UV=J.num_pins/4;for(let IV=0;IV<J.num_pins;IV++){const{x:dV,y:CV,o:FV}=getQuadCoords$2({pin_count:J.num_pins,pn:IV+1,w:J.w,h:J.h,p:J.p??.5,pl:J.pl,legsoutside:J.legsoutside});let NV=J.pw,gV=J.pl;FV==="vert"&&([NV,gV]=[gV,NV]);const eV=RV[IV+1];VV.push(rectpad$1(eV,dV,CV,NV,gV))}if(J.thermalpad)if(typeof J.thermalpad=="boolean"){const IV=J.p*(UV-1)+J.pw,dV=J.p*(UV-1)+J.pw;VV.push(rectpad$1(["thermalpad"],0,0,IV,dV))}else VV.push(rectpad$1(["thermalpad"],0,0,J.thermalpad.x,J.thermalpad.y));const ZV=[];for(const[IV,dV,CV]of[["top-left",-1,1],["bottom-left",-1,-1],["bottom-right",1,-1],["top-right",1,1]]){const FV=J.w/2*dV,NV=J.h/2*CV;let gV="none",eV=FV,JV=NV;const nV=J.pw*2;RV[1]===1&&IV==="top-left"?gV="in1":RV[UV*4]===1&&IV==="top-left"||RV[UV*3+1]===1&&IV==="top-right"?gV="in2":RV[UV*3]===1&&IV==="top-right"||RV[UV]===1&&IV==="bottom-left"?gV="in1":RV[UV+1]===1&&IV==="bottom-left"?gV="in2":RV[UV*2]===1&&IV==="bottom-right"?gV="in1":RV[UV*2+1]===1&&IV==="bottom-right"&&(gV="in2");const aV=gV==="in1"?1:-1;if(J.legsoutside){const GV=gV==="in1"?J.pl/2:J.pw/2,cV=gV==="in1"?J.pw/2:J.pl/2;eV+=GV*dV*aV,JV-=cV*CV*aV}(gV==="none"||J.legsoutside)&&ZV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}`,route:[{x:FV-nV*dV,y:NV},{x:FV,y:NV},{x:FV,y:NV-nV*CV}],type:"pcb_silkscreen_path",stroke_width:.1}),(gV==="in1"||gV==="in2")&&!J.legsoutside&&ZV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}_1`,route:[{x:FV-nV*dV,y:NV},{x:FV-nV*dV/2,y:NV}],type:"pcb_silkscreen_path",stroke_width:0},{layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}_2`,route:[{x:FV,y:NV-nV*CV/2},{x:FV,y:NV-nV*CV}],type:"pcb_silkscreen_path",stroke_width:.1}),(gV==="in1"||gV==="in2")&&ZV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:`pcb_silkscreen_path_${IV}_3`,route:[{x:eV-.2*-dV,y:JV+.2*aV},{x:eV,y:JV},{x:eV+.2*aV*-dV,y:JV+.2},{x:eV-.2*-dV,y:JV+.2*aV}],type:"pcb_silkscreen_path",stroke_width:.1})}const WV=silkscreenRef$1(0,J.h/2+(J.legsoutside?J.pl*1.2:.5),.3);return{circuitJson:[...VV,...ZV,WV],parameters:J}};base_quad_def$1.extend({}).transform(quadTransform$1);var qfn$1=lV=>(lV.legsoutside=!1,quad$1(lV)),qfp$1=lV=>{lV.legsoutside=!0;const J=quad_def$1.parse(lV);if(!lV.p)switch(lV.num_pins){case 44:case 64:lV.p=.8;break;case 52:lV.w===14?lV.p=1:lV.p=.65;break;case 208:lV.p=.5;break}if(!lV.pl)switch(lV.num_pins){case 44:case 52:case 64:lV.pl=2.25;break;case 208:lV.pl=1.65;break;default:lV.pl=J.pl*4;break}if(!lV.pw)switch(lV.num_pins){case 44:case 64:lV.pw=.5;break;case 52:lV.w===14?lV.pw=.45:lV.pw=.55;break;case 208:lV.pw=.3;break;default:lV.pw=J.pw;break}return quad$1(lV)};base_quad_def$1.extend({}).transform(quadTransform$1);var mlp$1=lV=>(lV.legsoutside=!1,lV.thermalpad===void 0&&(lV.thermalpad=!0),quad$1(lV)),ssop_def$1=extendSoicDef$1({w:"3.9mm",p:"1.27mm"}),ssop$1=lV=>{const J=ssop_def$1.parse(lV);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},tssop_def$1=extendSoicDef$1({w:"6.1mm",p:"0.65mm",legsoutside:!0}),tssop$1=lV=>{const J=tssop_def$1.parse(lV);return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot236_def$1=extendSoicDef$1({p:"0.95mm",w:"1.6mm",legsoutside:!0}),sot236$1=lV=>{const J=sot236_def$1.parse({...lV,num_pins:6});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot363_def$1=extendSoicDef$1({}),sot363$1=lV=>{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$1.object({fn:z$1.string(),num_pins:z$1.literal(3).default(3),w:z$1.string().default("1.92mm"),h:z$1.string().default("2.74mm"),pl:z$1.string().default("0.8mm"),pw:z$1.string().default("0.764mm")}),sot23$1=lV=>{const J=sot23_def$1.parse(lV);return{circuitJson:sot23WithoutParsing$1(J),parameters:J}},getCcwSot23Coords$1=lV=>{const{pn:J,w:VV,h:RV,pl:UV}=lV;return J===1?{x:-1.7,y:0}:J===2?{x:1.7,y:-.95}:{x:1.7,y:.95}},sot23WithoutParsing$1=lV=>{const J=[];for(let RV=0;RV<lV.num_pins;RV++){const{x:UV,y:ZV}=getCcwSot23Coords$1({num_pins:lV.num_pins,pn:RV+1,w:Number.parseFloat(lV.w),h:Number.parseFloat(lV.h),pl:Number.parseFloat(lV.pl)});J.push(rectpad$1(RV+1,UV,ZV,Number.parseFloat(lV.pl),Number.parseFloat(lV.pw)))}const VV=silkscreenRef$1(0,Number(lV.h),.3);return[...J,VV]},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=lV=>{const J=dfn_def$1.parse(lV),VV=[];for(let NV=0;NV<J.num_pins;NV++){const{x:gV,y:eV}=getCcwSoicCoords$1({num_pins:J.num_pins,pn:NV+1,w:J.w,p:J.p??1.27,pl:J.pl,widthincludeslegs:!0});VV.push(rectpad$1(NV+1,gV,eV,J.pl??"1mm",J.pw??"0.6mm"))}const RV=Math.min(1,J.p/2),UV=J.w+RV,ZV=(J.num_pins/2-1)*J.p+J.pw+RV,WV=[];for(const NV of CORNERS$1){const{dx:gV,dy:eV}=NV;WV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",route:[{x:gV*UV/2-gV*J.p,y:eV*ZV/2},{x:gV*UV/2,y:eV*ZV/2},{x:gV*UV/2,y:eV*ZV/2-eV*J.p}],type:"pcb_silkscreen_path",stroke_width:.1})}const IV=J.p/4,dV=-UV/2-IV/2,CV=ZV/2-J.p/2;WV.push({layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"",type:"pcb_silkscreen_path",route:[{x:dV,y:CV},{x:dV-IV,y:CV+IV},{x:dV-IV,y:CV-IV},{x:dV,y:CV}],stroke_width:.1});const FV=silkscreenRef$1(0,ZV/2+.4,ZV/12);return{circuitJson:[...VV,FV,...WV],parameters:J}},pinrow_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.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=lV=>{const J=pinrow_def$1.parse(lV),{p:VV,id:RV,od:UV}=J,ZV=[],IV=-((J.num_pins-1)/2)*VV;for(let CV=0;CV<J.num_pins;CV++)ZV.push(platedhole$1(CV+1,IV+CV*VV,0,RV,UV));const dV=silkscreenRef$1(0,VV/2,.5);return{circuitJson:[...ZV,dV],parameters:J}},sot563_def$1=extendSoicDef$1({}),sot563$1=lV=>{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=lV=>{const J=ms012_def$1.parse({...lV,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=lV=>{const J=ms013_def$1.parse({...lV,num_pins:16});return{circuitJson:soicWithoutParsing$1(J),parameters:J}},sot723_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.literal(3).default(3),w:z$1.string().default("1.2mm"),h:z$1.string().default("1.2mm"),pl:z$1.string().default("0.3mm"),pw:z$1.string().default("0.32mm")}),sot723$1=lV=>{const J=sot723_def$1.parse(lV),VV=sot723WithoutParsing$1(J),RV=silkscreenRef$1(.4,length$4.parse(J.h),.2);return{circuitJson:[...VV,RV],parameters:J}},getCcwSot723Coords$2=lV=>{const{pn:J,w:VV,h:RV,pl:UV}=lV;return J===1?{x:0,y:0}:J===2?{x:1,y:-.4}:{x:1,y:.4}},sot723WithoutParsing$1=lV=>{const J=[];for(let VV=0;VV<3;VV++){const{x:RV,y:UV}=getCcwSot723Coords$2({num_pins:lV.num_pins,pn:VV+1,w:Number.parseFloat(lV.w),h:Number.parseFloat(lV.h),pl:Number.parseFloat(lV.pl)});J.push(rectpad$1(VV+1,RV,UV,Number.parseFloat(lV.pl),VV!==0?Number.parseFloat(lV.pw):.42))}return J},sod_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.literal(2).default(2),w:z$1.string().default("2.36mm"),h:z$1.string().default("1.22mm"),pl:z$1.string().default("0.9mm"),pw:z$1.string().default("0.9mm"),pad_spacing:z$1.string().default("4.19mm")}),sod123$1=lV=>{const J=sod_def$1.parse(lV),VV=silkscreenRef$1(0,length$4.parse(J.h)/4+.4,.3);return{circuitJson:sodWithoutParsing$1(J).concat(VV),parameters:J}},getSodCoords$1=lV=>{const{pn:J,pad_spacing:VV}=lV;return J===1?{x:-VV/2,y:0}:{x:VV/2,y:0}},sodWithoutParsing$1=lV=>{const J=[];for(let VV=1;VV<=lV.num_pins;VV++){const{x:RV,y:UV}=getSodCoords$1({pn:VV,pad_spacing:Number.parseFloat(lV.pad_spacing)});J.push(rectpad$1(VV,RV,UV,Number.parseFloat(lV.pl),Number.parseFloat(lV.pw)))}return J},axial_def$1=z$1.object({fn:z$1.string(),p:length$4.optional().default("2.54mm"),id:length$4.optional().default("0.7mm"),od:length$4.optional().default("1mm")}),axial$1=lV=>{const J=axial_def$1.parse(lV),{p:VV,id:RV,od:UV}=J,ZV=[platedhole$1(1,-VV/2,0,RV,UV),platedhole$1(2,VV/2,0,RV,UV)],WV={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",route:[{x:-VV/2+UV+RV/2,y:0},{x:VV/2-UV-RV/2,y:0}],stroke_width:.1,pcb_silkscreen_path_id:""},IV=silkscreenRef$1(0,VV/4,.5);return{circuitJson:[...ZV,WV,IV],parameters:J}},silkscreenpath$1=(lV,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:lV,stroke_width:J.stroke_width||.1}),pushbutton_def$1=z$1.object({fn:z$1.literal("pushbutton"),w:z$1.number().default(4.5),h:z$1.number().default(6.5),id:z$1.number().default(1),od:z$1.number().default(1.2)}),pushbutton$1=lV=>{const J=pushbutton_def$1.parse(lV),VV=J.w,RV=J.h,UV=J.id,ZV=[platedhole$1(1,-VV/2,RV/2,UV,UV*1.2),platedhole$1(2,-VV/2,-RV/2,UV,UV*1.2),platedhole$1(3,VV/2,-RV/2,UV,UV*1.2),platedhole$1(4,VV/2,RV/2,UV,UV*1.2)],WV=[silkscreenpath$1([{x:-VV/2,y:-RV/2},{x:-VV/2,y:RV/2}]),silkscreenpath$1([{x:VV/2,y:-RV/2},{x:VV/2,y:RV/2}]),silkscreenpath$1([{x:-VV/2,y:0},{x:-VV/5,y:0},{x:VV/5*1/Math.sqrt(2),y:RV/8}]),silkscreenpath$1([{x:VV/2,y:0},{x:VV/5,y:0}])],IV=silkscreenRef$1(0,RV/2+.4,.5);return{circuitJson:[...ZV,...WV,IV],parameters:J}},stampboard_def$1=z$1.object({fn:z$1.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$1.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight$1=lV=>{const J=stampboard_def$1.parse(lV);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=(lV,J,VV)=>{let RV=[];return VV==="right"&&(RV=[{x:lV+1/2,y:J},{x:lV-1/2,y:J+.6/2},{x:lV-1/2,y:J-.6/2},{x:lV+1/2,y:J}]),VV==="left"&&(RV=[{x:lV-1/2,y:J},{x:lV+1/2,y:J+.6/2},{x:lV+1/2,y:J-.6/2},{x:lV-1/2,y:J}]),VV==="top"&&(RV=[{x:lV,y:J+1/2},{x:lV-.6/2,y:J-1/2},{x:lV+.6/2,y:J-1/2},{x:lV,y:J+1/2}]),VV==="bottom"&&(RV=[{x:lV,y:J-1/2},{x:lV-.6/2,y:J+1/2},{x:lV+.6/2,y:J+1/2},{x:lV,y:J-1/2}]),RV},stampboard$1=lV=>{const J=stampboard_def$1.parse(lV),VV=J.h??getHeight$1(J),RV=[],UV=[];let ZV=[];const WV=1,IV=1.2,dV=J.left+J.right+(J.bottom??0)+(J.top??0);if(J.right){const gV=-((J.right-1)/2)*J.p;for(let eV=0;eV<J.right;eV++)eV===0&&!J.left&&!J.bottom&&(ZV=getTriangleDir$1(J.w/2-J.pl*1.4,gV+eV*J.p,"right")),RV.push(rectpad$1(eV+1+J.left+(J.bottom??0),J.w/2-J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&(UV.push(platedhole$1(eV+1+J.left+(J.bottom??0)+dV,J.w/2,gV+eV*J.p,WV,IV)),UV.push(platedhole$1(eV+1+J.left+(J.bottom??0)+dV*2,J.w/2-J.innerholeedgedistance,gV+eV*J.p,WV,IV)))}if(J.left){const gV=-((J.left-1)/2)*J.p;for(let eV=0;eV<J.left;eV++)eV===J.left-1&&(ZV=getTriangleDir$1(-J.w/2+J.pl*1.4,gV+eV*J.p,"left")),RV.push(rectpad$1(eV+1,-J.w/2+J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&(UV.push(platedhole$1(eV+1+dV,-J.w/2,gV+eV*J.p,WV,IV)),UV.push(platedhole$1(eV+1+dV*2,-J.w/2+J.innerholeedgedistance,gV+eV*J.p,WV,IV)))}if(J.top){const gV=-((J.top-1)/2)*J.p;for(let eV=0;eV<J.top;eV++)eV===J.top-1&&!J.left&&!J.bottom&&!J.right&&(ZV=getTriangleDir$1(gV+eV*J.p,VV/2-J.pl*1.4,"top")),RV.push(rectpad$1(eV+1+J.left+J.right+(J.bottom??0),gV+eV*J.p,VV/2-J.pl/2,J.pw,J.pl)),J.innerhole&&(UV.push(platedhole$1(eV+1+J.left+J.right+(J.bottom??0)+dV,gV+eV*J.p,VV/2,WV,IV)),UV.push(platedhole$1(eV+1+J.left+J.right+(J.bottom??0)+dV*2,gV+eV*J.p,VV/2-J.innerholeedgedistance,WV,IV)))}if(J.bottom){const gV=-((J.bottom-1)/2)*J.p;for(let eV=0;eV<J.bottom;eV++)eV===0&&!J.left&&(ZV=getTriangleDir$1(gV+eV*J.p,-VV/2+J.pl*1.4,"bottom")),RV.push(rectpad$1(eV+1+J.left,gV+eV*J.p,-VV/2+J.pl/2,J.pw,J.pl)),J.innerhole&&(UV.push(platedhole$1(eV+1+J.left+dV,gV+eV*J.p,-VV/2,WV,IV)),UV.push(platedhole$1(eV+1+J.left+dV*2,gV+eV*J.p,-VV/2+J.innerholeedgedistance,WV,IV)))}const CV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_triangle_1",pcb_component_id:"2",route:ZV,stroke_width:.1,layer:"top"},FV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2,y:VV/2},{x:J.w/2,y:VV/2},{x:J.w/2,y:-VV/2},{x:-J.w/2,y:-VV/2},{x:-J.w/2,y:VV/2}],stroke_width:.1,layer:"top"},NV=silkscreenRef$1(0,VV/1.8,VV/25);return{circuitJson:[...RV,...UV,FV,CV,NV],parameters:J}},stampreceiver_def$1=z$1.object({fn:z$1.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$1.boolean().default(!1),innerholeedgedistance:length$4.default(length$4.parse("1.61mm"))}),getHeight2$1=lV=>{const J=stampreceiver_def$1.parse(lV);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=(lV,J,VV,RV=1,UV=.6)=>{const ZV=RV/2,WV=UV/2;return{left:[{x:lV+ZV,y:J},{x:lV-ZV,y:J+WV},{x:lV-ZV,y:J-WV},{x:lV+ZV,y:J}],right:[{x:lV-ZV,y:J},{x:lV+ZV,y:J+WV},{x:lV+ZV,y:J-WV},{x:lV-ZV,y:J}],top:[{x:lV,y:J-ZV},{x:lV-WV,y:J+ZV},{x:lV+WV,y:J+ZV},{x:lV,y:J-ZV}],bottom:[{x:lV,y:J+ZV},{x:lV-WV,y:J-ZV},{x:lV+WV,y:J-ZV},{x:lV,y:J+ZV}]}[VV]},stampreceiver$1=lV=>{const J=stampreceiver_def$1.parse(lV),VV=J.h??getHeight2$1(J),RV=[],UV=[],ZV=1,WV=1.2,IV=J.left+J.right+(J.bottom??0)+(J.top??0);let dV=[];if(J.right){const gV=-((J.right-1)/2)*J.p;for(let eV=0;eV<J.right;eV++)eV===0&&!J.left&&!J.bottom&&(dV=getTriangleDir2$1(J.w/2+J.pl*1.4,gV+eV*J.p,"right")),RV.push(rectpad$1(eV+1+J.left+(J.bottom??0),J.w/2-J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&UV.push(platedhole$1(eV+1+J.left+(J.bottom??0)+IV,J.w/2-J.innerholeedgedistance,gV+eV*J.p,ZV,WV))}if(J.left){const gV=-((J.left-1)/2)*J.p;for(let eV=0;eV<J.left;eV++)eV===J.left-1&&(dV=getTriangleDir2$1(-J.w/2-J.pl/3,gV+eV*J.p,"left")),RV.push(rectpad$1(eV+1,-J.w/2+J.pl/2,gV+eV*J.p,J.pl,J.pw)),J.innerhole&&UV.push(platedhole$1(eV+1+IV,-J.w/2+J.innerholeedgedistance,gV+eV*J.p,ZV,WV))}if(J.top){const gV=-((J.top-1)/2)*J.p;for(let eV=0;eV<J.top;eV++)eV===J.top-1&&!J.left&&!J.bottom&&!J.right&&(dV=getTriangleDir2$1(gV+eV*J.p,VV/2+J.pl*1.4,"top")),RV.push(rectpad$1(eV+1+J.right+(J.bottom??0)+J.left,gV+eV*J.p,VV/2-J.pl/2,J.pw,J.pl)),J.innerhole&&UV.push(platedhole$1(eV+1+J.right+(J.bottom??0)+J.left+IV,gV+eV*J.p,VV/2-J.innerholeedgedistance,ZV,WV))}if(J.bottom){const gV=-((J.bottom-1)/2)*J.p;for(let eV=0;eV<J.bottom;eV++)eV===0&&!J.left&&(dV=getTriangleDir2$1(gV+eV*J.p,-VV/2-J.pl*1.4,"bottom")),RV.push(rectpad$1(eV+1+J.left,gV+eV*J.p,-VV/2+J.pl/2,J.pw,J.pl)),J.innerhole&&UV.push(platedhole$1(eV+1+J.left+IV,gV+eV*J.p,-VV/2+J.innerholeedgedistance,ZV,WV))}const CV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:dV,stroke_width:.1},FV={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:VV/2+J.pl/3},{x:J.w/2+J.pl/3,y:VV/2+J.pl/3},{x:J.w/2+J.pl/3,y:-VV/2-J.pl/3},{x:-J.w/2-J.pl/3,y:-VV/2-J.pl/3},{x:-J.w/2-J.pl/3,y:VV/2+J.pl/3}],stroke_width:.1,layer:"top"},NV=silkscreenRef$1(0,VV/1.8,VV/25);return{circuitJson:[...UV,...RV,FV,CV,NV],parameters:J}},lqfp$1=lV=>(lV.legsoutside=!0,quad$1(lV)),sot235_def$1=z$1.object({fn:z$1.string(),num_pins:z$1.literal(5).default(5),h:z$1.string().default("1.6mm"),pl:z$1.string().default("1mm"),pw:z$1.string().default("0.7mm"),p:z$1.string().default("0.95mm")}),sot235$1=lV=>{const J=sot235_def$1.parse(lV);return{circuitJson:sot23_5WithoutParsing$1(J),parameters:J}},getCcwSot235Coords$1=lV=>{const{p:J,h:VV,pn:RV}=lV;if(RV===1)return{x:-VV/2-.5,y:J};if(RV===2)return{x:-VV/2-.5,y:0};if(RV===3)return{x:-VV/2-.5,y:-J};if(RV===4)return{x:VV/2+.5,y:-J};if(RV===5)return{x:VV/2+.5,y:J};throw new Error("Invalid pin number")},sot23_5WithoutParsing$1=lV=>{const J=[];for(let NV=1;NV<=lV.num_pins;NV++){const{x:gV,y:eV}=getCcwSot235Coords$1({h:Number.parseFloat(lV.h),p:Number.parseFloat(lV.p),pn:NV});J.push(rectpad$1(NV,gV,eV,Number.parseFloat(lV.pl),Number.parseFloat(lV.pw)))}const VV=(lV.num_pins+1)/2*Number.parseFloat(lV.p),RV=Number.parseFloat(lV.h),UV={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_1",route:[{x:-VV/3,y:RV/2+Number.parseFloat(lV.p)/1.3},{x:VV/3,y:RV/2+Number.parseFloat(lV.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},ZV={layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"silkscreen_path_2",route:[{x:-VV/3,y:-RV/2-Number.parseFloat(lV.p)/1.3},{x:VV/3,y:-RV/2-Number.parseFloat(lV.p)/1.3}],type:"pcb_silkscreen_path",stroke_width:.05},WV=silkscreenRef$1(0,RV+.3,.3),IV=getCcwSot235Coords$1({h:Number.parseFloat(lV.h),p:Number.parseFloat(lV.p),pn:1});IV.x=IV.x-Number.parseFloat(lV.pw)*1.5;const dV=.7,CV=.3,FV={type:"pcb_silkscreen_path",layer:"top",pcb_component_id:"",pcb_silkscreen_path_id:"pin1_indicator",route:[{x:IV.x+dV/2,y:IV.y},{x:IV.x-dV/2,y:IV.y+CV/2},{x:IV.x-dV/2,y:IV.y-CV/2},{x:IV.x+dV/2,y:IV.y}],stroke_width:.05};return[...J,WV,UV,ZV,FV]},breakoutheaders_def=z$1.object({fn:z$1.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=lV=>{const J=breakoutheaders_def.parse(lV);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=(lV,J,VV,RV=1,UV=.6)=>{const ZV=RV/2,WV=UV/2;return{left:[{x:lV+ZV,y:J},{x:lV-ZV,y:J+WV},{x:lV-ZV,y:J-WV},{x:lV+ZV,y:J}],right:[{x:lV-ZV,y:J},{x:lV+ZV,y:J+WV},{x:lV+ZV,y:J-WV},{x:lV-ZV,y:J}],top:[{x:lV,y:J-ZV},{x:lV-WV,y:J+ZV},{x:lV+WV,y:J+ZV},{x:lV,y:J-ZV}],bottom:[{x:lV,y:J+ZV},{x:lV-WV,y:J-ZV},{x:lV+WV,y:J-ZV},{x:lV,y:J+ZV}]}[VV]},breakoutheaders=lV=>{const J=breakoutheaders_def.parse(lV),VV=J.h??getHeight3(J),RV=[],UV=J.id,ZV=J.od;let WV=[];if(J.right){const FV=-((J.right-1)/2)*J.p;for(let NV=0;NV<J.right;NV++)NV===0&&!J.left&&!J.bottom&&(WV=getTrianglePath(J.w/2+ZV*1.4,FV+NV*J.p,"right")),RV.push(platedhole$1(NV+1+J.left+(J.bottom??0),J.w/2,FV+NV*J.p,UV,ZV))}if(J.left){const FV=-((J.left-1)/2)*J.p;for(let NV=0;NV<J.left;NV++)NV===J.left-1&&(WV=getTrianglePath(-J.w/2-ZV*1.4,FV+NV*J.p,"left")),RV.push(platedhole$1(NV+1,-J.w/2,FV+NV*J.p,UV,ZV))}if(J.top){const FV=-((J.top-1)/2)*J.p;for(let NV=0;NV<J.top;NV++)NV===J.top-1&&!J.left&&!J.bottom&&!J.right&&(WV=getTrianglePath(FV+NV*J.p,VV/2+ZV*1.4,"top")),RV.push(platedhole$1(NV+1+J.right+(J.bottom??0)+J.left,FV+NV*J.p,VV/2,UV,ZV))}if(J.bottom){const FV=-((J.bottom-1)/2)*J.p;for(let NV=0;NV<J.bottom;NV++)NV===0&&!J.left&&(WV=getTrianglePath(FV+NV*J.p,-VV/2-ZV*1.4,"bottom")),RV.push(platedhole$1(NV+1+J.left,FV+NV*J.p,-VV/2,UV,ZV))}const IV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"1",pcb_component_id:"1",layer:"top",route:WV,stroke_width:.1},dV={type:"pcb_silkscreen_path",pcb_silkscreen_path_id:"pcb_silkscreen_path_1",pcb_component_id:"1",route:[{x:-J.w/2-ZV,y:VV/2+ZV},{x:J.w/2+ZV,y:VV/2+ZV},{x:J.w/2+ZV,y:-VV/2-ZV},{x:-J.w/2-ZV,y:-VV/2-ZV},{x:-J.w/2-ZV,y:VV/2+ZV}],stroke_width:.1,layer:"top"},CV=silkscreenRef$1(0,VV/1.7,VV/25);return{circuitJson:[...RV,dV,CV,IV],parameters:J}};function isNotNull$2(lV){return lV!==null}var string$1=lV=>{let J=footprinter$1();(lV.length===4||lV.length===5)&&/^\d+$/.test(lV)&&(lV=`res${lV}`);const VV=lV.split("_").map(RV=>{const UV=RV.match(/([a-z]+)([\(\d\.\+\?].*)?/),[ZV,WV,IV]=UV??[];return IV!=null&&IV.includes("?")?null:{fn:UV==null?void 0:UV[1],v:UV==null?void 0:UV[2]}}).filter(isNotNull$2);for(const{fn:RV,v:UV}of VV)J=J[RV](UV);return J.setString(lV),J},getFootprintNames$1=()=>Object.keys(fn_exports$1),footprinter$1=()=>{const lV=new Proxy({},{get:(J,VV)=>{if(VV==="soup"||VV==="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 "${VV}"`)}}if(VV==="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 VV==="getFootprintNames"?()=>Object.keys(fn_exports$1):VV==="params"?()=>J:VV==="setString"?RV=>(J.string=RV,lV):RV=>(Object.keys(J).length===0?`${VV}${RV}`in fn_exports$1?(J[`${VV}${RV}`]=!0,J.fn=`${VV}${RV}`):(J[VV]=!0,J.fn=VV,VV==="res"||VV==="cap"?RV&&(J.imperial=RV):J.num_pins=Number.isNaN(Number.parseFloat(RV))?void 0:Number.parseFloat(RV)):!RV&&["w","h","p"].includes(VV)||(J[VV]=RV??!0),lV)}});return lV};footprinter$1.string=string$1,footprinter$1.getFootprintNames=getFootprintNames$1;var fp$1=footprinter$1,unitMappings$1={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[lV,J]of Object.entries(unitMappings$1)){unitMappingAndVariantSuffixes.add(lV);for(const VV of Object.keys(J.variants))unitMappingAndVariantSuffixes.add(VV)}function getBaseTscircuitUnit$1(lV){for(const[J,VV]of Object.entries(unitMappings$1))if(lV in VV.variants)return{baseUnit:VV.baseUnit,conversionFactor:VV.variants[lV]};return{baseUnit:lV,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$1=lV=>{var IV;if(typeof lV>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof lV=="string"&&lV.match(/^[\d\.]+$/))return{value:Number.parseFloat(lV),parsedUnit:null,unitOfValue:null};if(typeof lV=="number")return{value:lV,parsedUnit:null,unitOfValue:null};if(typeof lV=="object"&&"x"in lV&&"y"in lV){const{parsedUnit:dV,unitOfValue:CV}=parseAndConvertSiUnit$1(lV.x);return{parsedUnit:dV,unitOfValue:CV,value:{x:parseAndConvertSiUnit$1(lV.x).value,y:parseAndConvertSiUnit$1(lV.y).value}}}const VV=(IV=lV.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:IV[0];if(!VV)throw new Error(`Could not determine unit: "${lV}"`);const RV=VV.split("").reverse().join(""),UV=lV.slice(0,-RV.length);if(RV in si_prefix_multiplier&&!unitMappingAndVariantSuffixes.has(RV)){const dV=si_prefix_multiplier[RV];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(UV)*dV}}const{baseUnit:ZV,conversionFactor:WV}=getBaseTscircuitUnit$1(RV);return{parsedUnit:RV,unitOfValue:ZV,value:WV*Number.parseFloat(UV)}},resistance$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),capacitance$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),inductance$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),voltage$1=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),length$3=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),frequency=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),distance$4=length$3,current=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),time=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit$1(lV).value),rotation$3=z$1.string().or(z$1.number()).transform(lV=>typeof lV=="number"?lV:lV.endsWith("deg")?Number.parseFloat(lV.split("deg")[0]):lV.endsWith("rad")?Number.parseFloat(lV.split("rad")[0])*180/Math.PI:Number.parseFloat(lV)),battery_capacity$1=z$1.number().or(z$1.string().endsWith("mAh")).transform(lV=>{if(typeof lV=="string"){const J=lV.replace("mAh",""),VV=Number.parseFloat(J);if(Number.isNaN(VV))throw new Error("Invalid capacity");return VV}return lV}).describe("Battery capacity in mAh"),point$2=z$1.object({x:distance$4,y:distance$4}),position$2=point$2,point3$2=z$1.object({x:distance$4,y:distance$4,z:distance$4}),position3=point3$2,size$4=z$1.object({width:z$1.number(),height:z$1.number()}),getZodPrefixedIdWithDefault$1=lV=>z$1.string().optional().default(()=>`${lV}_${nanoid(10)}`),supplier_name$1=z$1.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base$1=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$1,z$1.array(z$1.string())).optional(),display_value:z$1.string().optional()}),source_simple_capacitor$1=source_component_base$1.extend({ftype:z$1.literal("simple_capacitor"),capacitance:capacitance$1,display_capacitance:z$1.string().optional(),max_decoupling_trace_length:distance$4.optional()}),source_simple_resistor$1=source_component_base$1.extend({ftype:z$1.literal("simple_resistor"),resistance:resistance$1,display_resistance:z$1.string().optional()}),source_simple_diode$1=source_component_base$1.extend({ftype:z$1.literal("simple_diode")}),source_simple_ground$1=source_component_base$1.extend({ftype:z$1.literal("simple_ground")}),source_simple_bug$1=source_component_base$1.extend({ftype:z$1.literal("simple_bug")}).describe("@deprecated"),source_simple_chip$1=source_component_base$1.extend({ftype:z$1.literal("simple_chip")}),source_led$1=source_simple_diode$1.extend({ftype:z$1.literal("led")}),source_simple_power_source$1=source_component_base$1.extend({ftype:z$1.literal("simple_power_source"),voltage:voltage$1}),source_simple_battery$1=source_component_base$1.extend({ftype:z$1.literal("simple_battery"),capacity:battery_capacity$1}),source_simple_inductor$1=source_component_base$1.extend({ftype:z$1.literal("simple_inductor"),inductance:inductance$1}),source_simple_push_button=source_component_base$1.extend({ftype:z$1.literal("simple_push_button")}),source_simple_potentiometer=source_component_base$1.extend({ftype:z$1.literal("simple_potentiometer"),max_resistance:resistance$1}),source_simple_crystal=source_component_base$1.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$1.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$1.extend({ftype:z$1.literal("simple_resonator"),load_capacitance:capacitance$1,equivalent_series_resistance:resistance$1.optional(),frequency}),source_simple_transistor=source_component_base$1.extend({ftype:z$1.literal("simple_transistor"),transistor_type:z$1.enum(["npn","pnp"])}),source_simple_mosfet=source_component_base$1.extend({ftype:z$1.literal("simple_mosfet"),channel_type:z$1.enum(["n","p"]),mosfet_mode:z$1.enum(["enhancement","depletion"])}),any_source_component$1=z$1.union([source_simple_resistor$1,source_simple_capacitor$1,source_simple_diode$1,source_simple_ground$1,source_simple_chip$1,source_simple_bug$1,source_led$1,source_simple_power_source$1,source_simple_battery$1,source_simple_inductor$1,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$1=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$1=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$1=z$1.object({type:z$1.literal("source_group"),source_group_id:z$1.string(),name:z$1.string().optional()}),source_net$1=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$1=z$1.object({type:z$1.literal("schematic_box"),schematic_component_id:z$1.string(),width:distance$4,height:distance$4,x:distance$4,y:distance$4}).describe("Draws a box on the schematic"),schematic_path$1=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$2)}),schematic_pin_styles$1=z$1.record(z$1.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=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$1=z$1.object({type:z$1.literal("schematic_component"),rotation:rotation$3.default(0),size:size$4,center:point$2,source_component_id:z$1.string(),schematic_component_id:z$1.string(),pin_spacing:length$3.optional(),pin_styles:schematic_pin_styles$1.optional(),box_width:length$3.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$1=z$1.object({type:z$1.literal("schematic_line"),schematic_component_id:z$1.string(),x1:distance$4,x2:distance$4,y1:distance$4,y2:distance$4}),schematic_trace$1=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$1=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$4,y:distance$4}),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$1=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$2,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$1=z$1.object({type:z$1.literal("schematic_net_label"),source_net_id:z$1.string(),center:point$2,anchor_position:point$2.optional(),anchor_side:z$1.enum(["top","bottom","left","right"]),text:z$1.string(),symbol_name:z$1.string().optional()}),schematic_error$1=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$1=z$1.object({type:z$1.literal("schematic_debug_object"),label:z$1.string().optional()}),schematic_debug_rect$1=schematic_debug_object_base$1.extend({shape:z$1.literal("rect"),center:point$2,size:size$4}),schematic_debug_line$1=schematic_debug_object_base$1.extend({shape:z$1.literal("line"),start:point$2,end:point$2}),schematic_debug_point$1=schematic_debug_object_base$1.extend({shape:z$1.literal("point"),center:point$2}),schematic_debug_object$1=z$1.discriminatedUnion("shape",[schematic_debug_rect$1,schematic_debug_line$1,schematic_debug_point$1]),schematic_voltage_probe=z$1.object({type:z$1.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$1.string(),position:point$2,schematic_trace_id:z$1.string(),voltage:voltage$1.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers$1=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string$1=z$1.enum(all_layers$1),layer_ref$1=layer_string$1.or(z$1.object({name:layer_string$1})).transform(lV=>typeof lV=="string"?lV:lV.name),visible_layer$1=z$1.enum(["top","bottom"]),pcb_route_hint$1=z$1.object({x:distance$4,y:distance$4,via:z$1.boolean().optional(),via_to_layer:layer_ref$1.optional()}),pcb_route_hints=z$1.array(pcb_route_hint$1),route_hint_point$1=z$1.object({x:distance$4,y:distance$4,via:z$1.boolean().optional(),to_layer:layer_ref$1.optional(),trace_width:distance$4.optional()}),pcb_component$1=z$1.object({type:z$1.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault$1("pcb_component"),source_component_id:z$1.string(),center:point$2,layer:layer_ref$1,rotation:rotation$3,width:length$3,height:length$3}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square$1=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$1("pcb_hole"),hole_shape:z$1.enum(["circle","square"]),hole_diameter:z$1.number(),x:distance$4,y:distance$4}),pcb_hole_circle_or_square_shape=pcb_hole_circle_or_square$1.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval$1=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault$1("pcb_hole"),hole_shape:z$1.literal("oval"),hole_width:z$1.number(),hole_height:z$1.number(),x:distance$4,y:distance$4}),pcb_hole_oval_shape=pcb_hole_oval$1.describe("Defines an oval hole on the PCB"),pcb_hole$1=pcb_hole_circle_or_square$1.or(pcb_hole_oval$1),pcb_plated_hole_circle$1=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$4,y:distance$4,layers:z$1.array(layer_ref$1),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$1("pcb_plated_hole")}),pcb_plated_hole_oval$1=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$4,y:distance$4,layers:z$1.array(layer_ref$1),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$1("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$4,y:distance$4,layers:z$1.array(layer_ref$1),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$1("pcb_plated_hole")}),pcb_plated_hole$1=z$1.union([pcb_plated_hole_circle$1,pcb_plated_hole_oval$1,pcb_circular_hole_with_rect_pad]),pcb_port$1=z$1.object({type:z$1.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault$1("pcb_port"),source_port_id:z$1.string(),pcb_component_id:z$1.string(),x:distance$4,y:distance$4,layers:z$1.array(layer_ref$1)}).describe("Defines a port on the PCB"),pcb_smtpad_circle$1=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault$1("pcb_smtpad"),x:distance$4,y:distance$4,radius:z$1.number(),layer:layer_ref$1,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$1=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault$1("pcb_smtpad"),x:distance$4,y:distance$4,width:z$1.number(),height:z$1.number(),layer:layer_ref$1,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$1("pcb_smtpad"),x:distance$4,y:distance$4,width:z$1.number(),height:z$1.number(),ccw_rotation:rotation$3,layer:layer_ref$1,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$1=z$1.union([pcb_smtpad_circle$1,pcb_smtpad_rect$1,pcb_smtpad_rotated_rect]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle$1=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$1("pcb_solder_paste"),x:distance$4,y:distance$4,radius:z$1.number(),layer:layer_ref$1,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste_rect$1=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault$1("pcb_solder_paste"),x:distance$4,y:distance$4,width:z$1.number(),height:z$1.number(),layer:layer_ref$1,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste$1=z$1.union([pcb_solder_paste_circle$1,pcb_solder_paste_rect$1]).describe("Defines solderpaste on the PCB"),pcb_text$1=z$1.object({type:z$1.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault$1("pcb_text"),text:z$1.string(),center:point$2,layer:layer_ref$1,width:length$3,height:length$3,lines:z$1.number(),align:z$1.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire$1=z$1.object({route_type:z$1.literal("wire"),x:distance$4,y:distance$4,width:distance$4,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref$1}),pcb_trace_route_point_via$1=z$1.object({route_type:z$1.literal("via"),x:distance$4,y:distance$4,from_layer:z$1.string(),to_layer:z$1.string()}),pcb_trace_route_point=z$1.union([pcb_trace_route_point_wire$1,pcb_trace_route_point_via$1]),pcb_trace$1=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$1("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$4,y:distance$4,width:distance$4,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref$1}),z$1.object({route_type:z$1.literal("via"),x:distance$4,y:distance$4,from_layer:z$1.string(),to_layer:z$1.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error$1=z$1.object({type:z$1.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault$1("pcb_trace_error"),error_type:z$1.literal("pcb_trace_error"),message:z$1.string(),center:point$2.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$1=z$1.object({type:z$1.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault$1("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$1=z$1.object({type:z$1.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault$1("pcb_via"),x:distance$4,y:distance$4,outer_diameter:distance$4.default("0.6mm"),hole_diameter:distance$4.default("0.25mm"),from_layer:layer_ref$1.optional(),to_layer:layer_ref$1.optional(),layers:z$1.array(layer_ref$1),pcb_trace_id:z$1.string().optional()}).describe("Defines a via on the PCB"),pcb_board$1=z$1.object({type:z$1.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault$1("pcb_board"),width:length$3,height:length$3,center:point$2,thickness:length$3.optional().default(1.4),num_layers:z$1.number().optional().default(4),outline:z$1.array(point$2).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error$1=z$1.object({type:z$1.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault$1("pcb_placement_error"),message:z$1.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint$1=z$1.object({type:z$1.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault$1("pcb_trace_hint"),pcb_port_id:z$1.string(),pcb_component_id:z$1.string(),route:z$1.array(route_hint_point$1)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line$1=z$1.object({type:z$1.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_line"),pcb_component_id:z$1.string(),stroke_width:distance$4.default("0.1mm"),x1:distance$4,y1:distance$4,x2:distance$4,y2:distance$4,layer:visible_layer$1}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path$1=z$1.object({type:z$1.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_path"),pcb_component_id:z$1.string(),layer:visible_layer$1,route:z$1.array(point$2),stroke_width:length$3}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text$1=z$1.object({type:z$1.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$4.default("0.2mm"),pcb_component_id:z$1.string(),text:z$1.string(),ccw_rotation:z$1.number().optional(),layer:layer_ref$1,is_mirrored:z$1.boolean().default(!1).optional(),anchor_position:point$2.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$1=z$1.object({type:z$1.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_rect"),pcb_component_id:z$1.string(),center:point$2,width:length$3,height:length$3,layer:layer_ref$1}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle$1=z$1.object({type:z$1.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_circle"),pcb_component_id:z$1.string(),center:point$2,radius:length$3,layer:visible_layer$1}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval$1=z$1.object({type:z$1.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault$1("pcb_silkscreen_oval"),pcb_component_id:z$1.string(),center:point$2,radius_x:distance$4,radius_y:distance$4,layer:visible_layer$1}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text$1=z$1.object({type:z$1.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault$1("pcb_fabrication_note_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance$4.default("1mm"),pcb_component_id:z$1.string(),text:z$1.string(),layer:visible_layer$1,anchor_position:point$2.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$1=z$1.object({type:z$1.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault$1("pcb_fabrication_note_path"),pcb_component_id:z$1.string(),layer:layer_ref$1,route:z$1.array(point$2),stroke_width:length$3,color:z$1.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout$1=z$1.object({type:z$1.literal("pcb_keepout"),shape:z$1.literal("rect"),center:point$2,width:distance$4,height:distance$4,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$2,radius:distance$4,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$1("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$1("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$1("pcb_group"),width:length$3,height:length$3,center:point$2,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$1=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$2,rotation:point3$2.optional(),size:point3$2.optional(),layer:layer_ref$1.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$1,source_port$1,any_source_component$1,source_led$1,source_net$1,source_group$1,source_simple_bug$1,source_simple_chip$1,source_simple_capacitor$1,source_simple_diode$1,source_simple_resistor$1,source_simple_power_source$1,source_simple_battery$1,source_simple_inductor$1,source_simple_pin_header,source_simple_resonator,source_simple_transistor,source_simple_mosfet,source_simple_potentiometer,source_simple_push_button,pcb_component$1,pcb_hole$1,pcb_missing_footprint_error,pcb_manual_edit_conflict_error,pcb_plated_hole$1,pcb_keepout$1,pcb_port$1,pcb_text$1,pcb_trace$1,pcb_via$1,pcb_smtpad$1,pcb_solder_paste$1,pcb_board$1,pcb_group,pcb_trace_hint$1,pcb_silkscreen_line$1,pcb_silkscreen_path$1,pcb_silkscreen_text$1,pcb_silkscreen_rect$1,pcb_silkscreen_circle$1,pcb_silkscreen_oval$1,pcb_trace_error$1,pcb_placement_error$1,pcb_port_not_matched_error$1,pcb_fabrication_note_path$1,pcb_fabrication_note_text$1,schematic_box$1,schematic_text$1,schematic_line$1,schematic_component$1,schematic_port$1,schematic_trace$1,schematic_path$1,schematic_error$1,schematic_net_label$1,schematic_debug_object$1,schematic_voltage_probe,cad_component$1]),any_soup_element=any_circuit_element;const Soup=Object.freeze(Object.defineProperty({__proto__:null,all_layers:all_layers$1,any_circuit_element,any_soup_element,any_source_component:any_source_component$1,battery_capacity:battery_capacity$1,cad_component:cad_component$1,capacitance:capacitance$1,current,distance:distance$4,frequency,getZodPrefixedIdWithDefault:getZodPrefixedIdWithDefault$1,inductance:inductance$1,layer_ref:layer_ref$1,layer_string:layer_string$1,length:length$3,pcb_board:pcb_board$1,pcb_component:pcb_component$1,pcb_fabrication_note_path:pcb_fabrication_note_path$1,pcb_fabrication_note_text:pcb_fabrication_note_text$1,pcb_group,pcb_hole:pcb_hole$1,pcb_hole_circle_or_square_shape,pcb_hole_oval_shape,pcb_keepout:pcb_keepout$1,pcb_manual_edit_conflict_error,pcb_missing_footprint_error,pcb_placement_error:pcb_placement_error$1,pcb_plated_hole:pcb_plated_hole$1,pcb_port:pcb_port$1,pcb_port_not_matched_error:pcb_port_not_matched_error$1,pcb_route_hint:pcb_route_hint$1,pcb_route_hints,pcb_silkscreen_circle:pcb_silkscreen_circle$1,pcb_silkscreen_line:pcb_silkscreen_line$1,pcb_silkscreen_oval:pcb_silkscreen_oval$1,pcb_silkscreen_path:pcb_silkscreen_path$1,pcb_silkscreen_rect:pcb_silkscreen_rect$1,pcb_silkscreen_text:pcb_silkscreen_text$1,pcb_smtpad:pcb_smtpad$1,pcb_solder_paste:pcb_solder_paste$1,pcb_text:pcb_text$1,pcb_trace:pcb_trace$1,pcb_trace_error:pcb_trace_error$1,pcb_trace_hint:pcb_trace_hint$1,pcb_trace_route_point,pcb_trace_route_point_via:pcb_trace_route_point_via$1,pcb_trace_route_point_wire:pcb_trace_route_point_wire$1,pcb_via:pcb_via$1,point:point$2,point3:point3$2,port_arrangement,position:position$2,position3,resistance:resistance$1,rotation:rotation$3,route_hint_point:route_hint_point$1,schematic_box:schematic_box$1,schematic_component:schematic_component$1,schematic_component_port_arrangement_by_sides,schematic_component_port_arrangement_by_size,schematic_debug_line:schematic_debug_line$1,schematic_debug_object:schematic_debug_object$1,schematic_debug_object_base:schematic_debug_object_base$1,schematic_debug_point:schematic_debug_point$1,schematic_debug_rect:schematic_debug_rect$1,schematic_error:schematic_error$1,schematic_line:schematic_line$1,schematic_net_label:schematic_net_label$1,schematic_path:schematic_path$1,schematic_pin_styles:schematic_pin_styles$1,schematic_port:schematic_port$1,schematic_text:schematic_text$1,schematic_trace:schematic_trace$1,schematic_voltage_probe,size:size$4,source_component_base:source_component_base$1,source_group:source_group$1,source_led:source_led$1,source_net:source_net$1,source_port:source_port$1,source_simple_battery:source_simple_battery$1,source_simple_bug:source_simple_bug$1,source_simple_capacitor:source_simple_capacitor$1,source_simple_chip:source_simple_chip$1,source_simple_crystal,source_simple_diode:source_simple_diode$1,source_simple_ground:source_simple_ground$1,source_simple_inductor:source_simple_inductor$1,source_simple_mosfet,source_simple_pin_header,source_simple_potentiometer,source_simple_power_source:source_simple_power_source$1,source_simple_push_button,source_simple_resistor:source_simple_resistor$1,source_simple_resonator,source_simple_transistor,source_trace:source_trace$1,supplier_name:supplier_name$1,time,visible_layer:visible_layer$1,voltage:voltage$1},Symbol.toStringTag,{value:"Module"}));var browser={exports:{}},ms$1,hasRequiredMs;function requireMs(){if(hasRequiredMs)return ms$1;hasRequiredMs=1;var lV=1e3,J=lV*60,VV=J*60,RV=VV*24,UV=RV*7,ZV=RV*365.25;ms$1=function(FV,NV){NV=NV||{};var gV=typeof FV;if(gV==="string"&&FV.length>0)return WV(FV);if(gV==="number"&&isFinite(FV))return NV.long?dV(FV):IV(FV);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(FV))};function WV(FV){if(FV=String(FV),!(FV.length>100)){var NV=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(FV);if(NV){var gV=parseFloat(NV[1]),eV=(NV[2]||"ms").toLowerCase();switch(eV){case"years":case"year":case"yrs":case"yr":case"y":return gV*ZV;case"weeks":case"week":case"w":return gV*UV;case"days":case"day":case"d":return gV*RV;case"hours":case"hour":case"hrs":case"hr":case"h":return gV*VV;case"minutes":case"minute":case"mins":case"min":case"m":return gV*J;case"seconds":case"second":case"secs":case"sec":case"s":return gV*lV;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return gV;default:return}}}}function IV(FV){var NV=Math.abs(FV);return NV>=RV?Math.round(FV/RV)+"d":NV>=VV?Math.round(FV/VV)+"h":NV>=J?Math.round(FV/J)+"m":NV>=lV?Math.round(FV/lV)+"s":FV+"ms"}function dV(FV){var NV=Math.abs(FV);return NV>=RV?CV(FV,NV,RV,"day"):NV>=VV?CV(FV,NV,VV,"hour"):NV>=J?CV(FV,NV,J,"minute"):NV>=lV?CV(FV,NV,lV,"second"):FV+" ms"}function CV(FV,NV,gV,eV){var JV=NV>=gV*1.5;return Math.round(FV/gV)+" "+eV+(JV?"s":"")}return ms$1}var common$2,hasRequiredCommon;function requireCommon(){if(hasRequiredCommon)return common$2;hasRequiredCommon=1;function lV(J){RV.debug=RV,RV.default=RV,RV.coerce=CV,RV.disable=IV,RV.enable=ZV,RV.enabled=dV,RV.humanize=requireMs(),RV.destroy=FV,Object.keys(J).forEach(NV=>{RV[NV]=J[NV]}),RV.names=[],RV.skips=[],RV.formatters={};function VV(NV){let gV=0;for(let eV=0;eV<NV.length;eV++)gV=(gV<<5)-gV+NV.charCodeAt(eV),gV|=0;return RV.colors[Math.abs(gV)%RV.colors.length]}RV.selectColor=VV;function RV(NV){let gV,eV=null,JV,nV;function aV(...GV){if(!aV.enabled)return;const cV=aV,TV=Number(new Date),iV=TV-(gV||TV);cV.diff=iV,cV.prev=gV,cV.curr=TV,gV=TV,GV[0]=RV.coerce(GV[0]),typeof GV[0]!="string"&&GV.unshift("%O");let tV=0;GV[0]=GV[0].replace(/%([a-zA-Z%])/g,(AV,pV)=>{if(AV==="%%")return"%";tV++;const HV=RV.formatters[pV];if(typeof HV=="function"){const oV=GV[tV];AV=HV.call(cV,oV),GV.splice(tV,1),tV--}return AV}),RV.formatArgs.call(cV,GV),(cV.log||RV.log).apply(cV,GV)}return aV.namespace=NV,aV.useColors=RV.useColors(),aV.color=RV.selectColor(NV),aV.extend=UV,aV.destroy=RV.destroy,Object.defineProperty(aV,"enabled",{enumerable:!0,configurable:!1,get:()=>eV!==null?eV:(JV!==RV.namespaces&&(JV=RV.namespaces,nV=RV.enabled(NV)),nV),set:GV=>{eV=GV}}),typeof RV.init=="function"&&RV.init(aV),aV}function UV(NV,gV){const eV=RV(this.namespace+(typeof gV>"u"?":":gV)+NV);return eV.log=this.log,eV}function ZV(NV){RV.save(NV),RV.namespaces=NV,RV.names=[],RV.skips=[];const gV=(typeof NV=="string"?NV:"").trim().replace(" ",",").split(",").filter(Boolean);for(const eV of gV)eV[0]==="-"?RV.skips.push(eV.slice(1)):RV.names.push(eV)}function WV(NV,gV){let eV=0,JV=0,nV=-1,aV=0;for(;eV<NV.length;)if(JV<gV.length&&(gV[JV]===NV[eV]||gV[JV]==="*"))gV[JV]==="*"?(nV=JV,aV=eV,JV++):(eV++,JV++);else if(nV!==-1)JV=nV+1,aV++,eV=aV;else return!1;for(;JV<gV.length&&gV[JV]==="*";)JV++;return JV===gV.length}function IV(){const NV=[...RV.names,...RV.skips.map(gV=>"-"+gV)].join(",");return RV.enable(""),NV}function dV(NV){for(const gV of RV.skips)if(WV(NV,gV))return!1;for(const gV of RV.names)if(WV(NV,gV))return!0;return!1}function CV(NV){return NV instanceof Error?NV.stack||NV.message:NV}function FV(){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 RV.enable(RV.load()),RV}return common$2=lV,common$2}var hasRequiredBrowser;function requireBrowser(){return hasRequiredBrowser||(hasRequiredBrowser=1,function(lV,J){J.formatArgs=RV,J.save=UV,J.load=ZV,J.useColors=VV,J.storage=WV(),J.destroy=(()=>{let dV=!1;return()=>{dV||(dV=!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 VV(){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 dV;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&&(dV=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(dV[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function RV(dV){if(dV[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+dV[0]+(this.useColors?"%c ":" ")+"+"+lV.exports.humanize(this.diff),!this.useColors)return;const CV="color: "+this.color;dV.splice(1,0,CV,"color: inherit");let FV=0,NV=0;dV[0].replace(/%[a-zA-Z%]/g,gV=>{gV!=="%%"&&(FV++,gV==="%c"&&(NV=FV))}),dV.splice(NV,0,CV)}J.log=console.debug||console.log||(()=>{});function UV(dV){try{dV?J.storage.setItem("debug",dV):J.storage.removeItem("debug")}catch{}}function ZV(){let dV;try{dV=J.storage.getItem("debug")}catch{}return!dV&&typeof process<"u"&&"env"in process&&(dV=process.env.DEBUG),dV}function WV(){try{return localStorage}catch{}}lV.exports=requireCommon()(J);const{formatters:IV}=lV.exports;IV.j=function(dV){try{return JSON.stringify(dV)}catch(CV){return"[UnexpectedJSONParseError]: "+CV.message}}}(browser,browser.exports)),browser.exports}var browserExports=requireBrowser();const Debug$1=getDefaultExportFromCjs$1(browserExports);var reactReconciler$1={exports:{}};/**
7146
7146
  * @license React
7147
7147
  * react-reconciler.production.min.js
7148
7148
  *
@@ -7289,13 +7289,13 @@ Check the render method of \``+XR+"`.")}throw new Error("Element type is invalid
7289
7289
 
7290
7290
  Check the render method of %s.`,hU(kZ)||"Unknown"));var gR=qc(gl,El);gR.payload={element:zV},bV=bV===void 0?null:bV,bV!==null&&(typeof bV!="function"&&CV("render(...): Expected the last optional `callback` argument to be a function. Instead received: %s.",bV),gR.callback=bV);var XR=H1(fV,gR,El);return XR!==null&&(lG(XR,fV,El,gl),IY(XR,fV,El)),El}function RI(zV){var yV=zV.current;if(!yV.child)return null;switch(yV.child.tag){case DV:return VZ(yV.child.stateNode);default:return yV.child.stateNode}}function pd(zV){switch(zV.tag){case HV:{var yV=zV.stateNode;if(Ll(yV)){var mV=zG(yV);Sc(yV,mV)}break}case $V:{TS(function(){var fV=yF(zV,VI);if(fV!==null){var gl=$J();lG(fV,zV,VI,gl)}});var bV=VI;NI(zV,bV);break}}}function HZ(zV,yV){var mV=zV.memoizedState;mV!==null&&mV.dehydrated!==null&&(mV.retryLane=mN(mV.retryLane,yV))}function NI(zV,yV){HZ(zV,yV);var mV=zV.alternate;mV&&HZ(mV,yV)}function nI(zV){if(zV.tag===$V){var yV=VI,mV=yF(zV,yV);if(mV!==null){var bV=$J();lG(mV,zV,yV,bV)}NI(zV,yV)}}function QI(zV){if(zV.tag===$V){var yV=sJ,mV=yF(zV,yV);if(mV!==null){var bV=$J();lG(mV,zV,yV,bV)}NI(zV,yV)}}function ed(zV){if(zV.tag===$V){var yV=DE(zV),mV=yF(zV,yV);if(mV!==null){var bV=$J();lG(mV,zV,yV,bV)}NI(zV,yV)}}function uW(zV){var yV=IZ(zV);return yV===null?null:yV.stateNode}var bI=function(zV){return null};function Ud(zV){return bI(zV)}var ZC=function(zV){return!1};function OZ(zV){return ZC(zV)}var nZ=null,YI=null,BI=null,oI=null,tZ=null,qI=null,rV=null,vV=null,il=null;{var xl=function(zV,yV,mV){var bV=yV[mV],fV=MU(zV)?zV.slice():NV({},zV);return mV+1===yV.length?(MU(fV)?fV.splice(bV,1):delete fV[bV],fV):(fV[bV]=xl(zV[bV],yV,mV+1),fV)},lR=function(zV,yV){return xl(zV,yV,0)},OR=function(zV,yV,mV,bV){var fV=yV[bV],gl=MU(zV)?zV.slice():NV({},zV);if(bV+1===yV.length){var El=mV[bV];gl[El]=gl[fV],MU(gl)?gl.splice(fV,1):delete gl[fV]}else gl[fV]=OR(zV[fV],yV,mV,bV+1);return gl},HR=function(zV,yV,mV){if(yV.length!==mV.length){dV("copyWithRename() expects paths of the same length");return}else for(var bV=0;bV<mV.length-1;bV++)if(yV[bV]!==mV[bV]){dV("copyWithRename() expects paths to be the same except for the deepest key");return}return OR(zV,yV,mV,0)},oR=function(zV,yV,mV,bV){if(mV>=yV.length)return bV;var fV=yV[mV],gl=MU(zV)?zV.slice():NV({},zV);return gl[fV]=oR(zV[fV],yV,mV+1,bV),gl},bU=function(zV,yV,mV){return oR(zV,yV,0,mV)},gZ=function(zV,yV){for(var mV=zV.memoizedState;mV!==null&&yV>0;)mV=mV.next,yV--;return mV};nZ=function(zV,yV,mV,bV){var fV=gZ(zV,yV);if(fV!==null){var gl=bU(fV.memoizedState,mV,bV);fV.memoizedState=gl,fV.baseState=gl,zV.memoizedProps=NV({},zV.memoizedProps);var El=yF(zV,VI);El!==null&&lG(El,zV,VI,NF)}},YI=function(zV,yV,mV){var bV=gZ(zV,yV);if(bV!==null){var fV=lR(bV.memoizedState,mV);bV.memoizedState=fV,bV.baseState=fV,zV.memoizedProps=NV({},zV.memoizedProps);var gl=yF(zV,VI);gl!==null&&lG(gl,zV,VI,NF)}},BI=function(zV,yV,mV,bV){var fV=gZ(zV,yV);if(fV!==null){var gl=HR(fV.memoizedState,mV,bV);fV.memoizedState=gl,fV.baseState=gl,zV.memoizedProps=NV({},zV.memoizedProps);var El=yF(zV,VI);El!==null&&lG(El,zV,VI,NF)}},oI=function(zV,yV,mV){zV.pendingProps=bU(zV.memoizedProps,yV,mV),zV.alternate&&(zV.alternate.pendingProps=zV.pendingProps);var bV=yF(zV,VI);bV!==null&&lG(bV,zV,VI,NF)},tZ=function(zV,yV){zV.pendingProps=lR(zV.memoizedProps,yV),zV.alternate&&(zV.alternate.pendingProps=zV.pendingProps);var mV=yF(zV,VI);mV!==null&&lG(mV,zV,VI,NF)},qI=function(zV,yV,mV){zV.pendingProps=HR(zV.memoizedProps,yV,mV),zV.alternate&&(zV.alternate.pendingProps=zV.pendingProps);var bV=yF(zV,VI);bV!==null&&lG(bV,zV,VI,NF)},rV=function(zV){var yV=yF(zV,VI);yV!==null&&lG(yV,zV,VI,NF)},vV=function(zV){bI=zV},il=function(zV){ZC=zV}}function bZ(zV){var yV=ZW(zV);return yV===null?null:yV.stateNode}function vU(zV){return null}function YW(){return kZ}function vZ(zV){var yV=zV.findFiberByHostInstance,mV=ZV.ReactCurrentDispatcher;return Pg({bundleType:zV.bundleType,version:zV.version,rendererPackageName:zV.rendererPackageName,rendererConfig:zV.rendererConfig,overrideHookState:nZ,overrideHookStateDeletePath:YI,overrideHookStateRenamePath:BI,overrideProps:oI,overridePropsDeletePath:tZ,overridePropsRenamePath:qI,setErrorHandler:vV,setSuspenseHandler:il,scheduleUpdate:rV,currentDispatcherRef:mV,findHostInstanceByFiber:bZ,findFiberByHostInstance:yV||vU,findHostInstancesForRefresh:zl,scheduleRefresh:qV,scheduleRoot:Jl,setRefreshHandler:D0,getCurrentFiber:YW,reconcilerVersion:TZ})}return VV.attemptContinuousHydration=QI,VV.attemptDiscreteHydration=nI,VV.attemptHydrationAtCurrentPriority=ed,VV.attemptSynchronousHydration=pd,VV.batchedUpdates=Zk,VV.createComponentSelector=$A,VV.createContainer=LW,VV.createHasPseudoClassSelector=VS,VV.createHydrationContainer=oW,VV.createPortal=LZ,VV.createRoleSelector=Tk,VV.createTestNameSelector=ek,VV.createTextSelector=em,VV.deferredUpdates=OS,VV.discreteUpdates=FA,VV.findAllNodes=RS,VV.findBoundingRects=hS,VV.findHostInstance=WZ,VV.findHostInstanceWithNoPortals=uW,VV.findHostInstanceWithWarning=SW,VV.flushControlled=yE,VV.flushPassiveEffects=aT,VV.flushSync=TS,VV.focusWithin=Jk,VV.getCurrentUpdatePriority=YN,VV.getFindAllNodesFailureDescription=yS,VV.getPublicRootInstance=RI,VV.injectIntoDevTools=vZ,VV.isAlreadyRendering=Ak,VV.observeVisibleRects=$0,VV.registerMutableSourceForHydration=LE,VV.runWithPriority=Cd,VV.shouldError=Ud,VV.shouldSuspend=OZ,VV.updateContainer=jI,VV}),reactReconciler_development$1.exports}var hasRequiredReactReconciler$1;function requireReactReconciler$1(){return hasRequiredReactReconciler$1||(hasRequiredReactReconciler$1=1,process.env.NODE_ENV==="production"?reactReconciler$1.exports=requireReactReconciler_production_min$1():reactReconciler$1.exports=requireReactReconciler_development$1()),reactReconciler$1.exports}var reactReconcilerExports$1=requireReactReconciler$1();const ReactReconciler=getDefaultExportFromCjs$1(reactReconcilerExports$1);function defineSymbol(lV){return lV}var ac_voltmeter_default={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.03018695000000049},{x:-.30105415000000013,y:.03018695000000049}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.03018695000000049},{x:.5339524499999997,y:.03018695000000049}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09765764999999949,y:.12845085000000034},{x:-.0011297500000011507,y:-.06303624999999946},{x:-.10778645000000164,y:.12845085000000034}],color:"primary",fill:!1},path17:{type:"path",points:[{x:-.002934749999999875,y:-.13606674999999946},{x:.06869635000000063,y:-.11019914999999947}],color:"primary",fill:!1},path18:{type:"path",points:[{x:.06869635000000063,y:-.11019914999999947},{x:.1403274500000009,y:-.13606674999999946}],color:"primary",fill:!1},path19:{type:"path",points:[{x:-.1461968499999997,y:-.13606674999999946},{x:-.07456574999999921,y:-.11019914999999947}],color:"primary",fill:!1},path20:{type:"path",points:[{x:-.07456575000000054,y:-.11019914999999947},{x:-.0029346500000002607,y:-.13606674999999946}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17328624999999942,y:.39216264999999995},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.40216264999999995}},refblocks:{left1:{x:-.5413984499999998,y:.029334149999999948},right1:{x:.54139845,y:.030330549999999734}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.5021626499999999,maxY:.39216264999999995,width:1.1391137819999997,height:.5443252999999999,centerX:11102230246251565e-32,centerY:.05499999999999999},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03731525000000002,radius:.28854213,color:"primary",fill:!1}}},{paths,bounds,refblocks,circles}=ac_voltmeter_default,ac_voltmeter_horz_default={primitives:[...Object.values(paths),...Object.values(circles),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"}],ports:[{...refblocks.left1,labels:["1"]},{...refblocks.right1,labels:["2"]}],size:{width:bounds.width,height:bounds.height},center:{x:bounds.centerX,y:bounds.centerY}},rotateRightFacingAnchor=(lV,J="right")=>{switch(J){case"down":switch(lV){case"middle_top":return"middle_right";case"middle_bottom":return"middle_left";case"middle_left":return"middle_bottom";case"middle_right":return"middle_top"}break;case"up":switch(lV){case"middle_top":return"middle_left";case"middle_bottom":return"middle_right";case"middle_left":return"middle_top";case"middle_right":return"middle_bottom"}break;case"left":switch(lV){case"middle_top":return"middle_bottom";case"middle_bottom":return"middle_top";case"middle_left":return"middle_right";case"middle_right":return"middle_left"}break;case"right":return lV}return lV},flipSymbolOverXAxis=(lV,J)=>{const{primitives:VV,center:RV,ports:UV,size:ZV}=lV,WV=transform({a:1,b:0,c:0,d:-1,e:0,f:2*RV.y}),IV=VV.map(CV=>{switch(CV={...CV},CV.type){case"path":return{...CV,points:CV.points.map(eV=>applyToPoint(WV,eV))};case"text":const FV=applyToPoint(WV,{x:CV.x,y:CV.y}),NV={top_left:"bottom_left",top_right:"bottom_right",bottom_left:"top_left",bottom_right:"top_right",center:"center",middle_top:"middle_bottom",middle_bottom:"middle_top",middle_left:"middle_left",middle_right:"middle_right"};return{...CV,x:FV.x,y:FV.y,anchor:NV[CV.anchor]};case"circle":case"box":const gV=applyToPoint(WV,{x:CV.x,y:CV.y});return{...CV,x:gV.x,y:gV.y}}}),dV=UV.map(CV=>({...CV,...applyToPoint(WV,CV)}));return{primitives:IV,center:RV,ports:dV,size:ZV,...J}},flipSymbolOverYAxis=(lV,J)=>{const{primitives:VV,center:RV,ports:UV,size:ZV}=lV,WV=transform({a:-1,b:0,c:0,d:1,e:0,f:2*RV.x}),IV=VV.map(CV=>{switch(CV={...CV},CV.type){case"path":return{...CV,points:CV.points.map(eV=>applyToPoint(WV,eV))};case"text":const FV=applyToPoint(WV,{x:CV.x,y:CV.y}),NV={top_left:"top_right",top_right:"top_left",bottom_left:"bottom_right",bottom_right:"bottom_left",center:"center",middle_top:"middle_top",middle_bottom:"middle_bottom",middle_left:"middle_right",middle_right:"middle_left"};return{...CV,x:FV.x,y:FV.y,anchor:NV[CV.anchor]};case"circle":case"box":const gV=applyToPoint(WV,{x:CV.x,y:CV.y});return{...CV,x:gV.x,y:gV.y}}}),dV=UV.map(CV=>({...CV,...applyToPoint(WV,CV)}));return{primitives:IV,center:RV,ports:dV,size:ZV,...J}},rotateRightFacingSymbol=(lV,J)=>{const{newOrientation:VV,overrides:RV}=J,UV={up:Math.PI/2,right:0,down:-Math.PI/2,left:-Math.PI},ZV=rotate(VV?UV[VV]:Math.PI/2,lV.center.x,lV.center.y),{primitives:WV,center:IV,size:dV,ports:CV}=lV,FV=WV.map(gV=>{switch(gV={...gV},gV.type){case"path":return{...gV,points:gV.points.map(aV=>applyToPoint(ZV,aV))};case"text":const eV=applyToPoint(ZV,{x:gV.x,y:gV.y});return gV.anchor=rotateRightFacingAnchor(gV.anchor,VV??"right"),{...gV,x:eV.x,y:eV.y};case"circle":const JV=applyToPoint(ZV,{x:gV.x,y:gV.y});return{...gV,x:JV.x,y:JV.y};case"box":const nV=applyToPoint(ZV,{x:gV.x,y:gV.y});return{...gV,x:nV.x,y:nV.y,width:gV.height,height:gV.width}}}),NV=CV.map(gV=>({...gV,...applyToPoint(ZV,gV)}));return{primitives:FV,center:IV,ports:NV,size:{width:VV==="up"||VV==="down"?dV.width:dV.height,height:VV==="up"||VV==="down"?dV.height:dV.width},...RV}},rotateSymbol=(lV,J="down",VV={})=>rotateRightFacingSymbol(lV,{newOrientation:J,overrides:VV}),rotatedSymbol=rotateRightFacingSymbol(ac_voltmeter_horz_default,{newOrientation:"up"}),ac_voltmeter_vert_default=rotatedSymbol,avalanche_diode_default={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.0390362999999998},{x:-.1199943999999995,y:-.09325540000000054}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17132800000000015},{x:.14458890000000002,y:.0390362999999998}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.09325539999999921},{x:-.1199943999999995,y:.17132800000000015}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17132800000000015},{x:.14458890000000002,y:-.09325539999999921}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.0390362999999998},{x:-.5168693999999996,y:.0390362999999998}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.03895110000000024},{x:.1496715999999998,y:.03895110000000024}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17181090000000032},{x:.07768859999999966,y:.19542900000000052}],color:"primary",fill:!1},"path43-8-3":{type:"path",points:[{x:.21083259999999981,y:-.1180321000000002},{x:.14512999999999954,y:-.094414}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.26884529999999995},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27884529999999996}},refblocks:{left1:{x:-.5191471000000001,y:.03992070000000081},right1:{x:.5191470999999999,y:.03889609999999988}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.37884529999999994,maxY:.26884529999999995,width:1.094611082,height:.2976905999999999,centerX:-11102230246251565e-32,centerY:.05499999999999999},circles:{}},{paths:paths2,texts,bounds:bounds2,refblocks:refblocks2,circles:circles2}=avalanche_diode_default,avalanche_diode_horz_default={primitives:[...Object.values(paths2),...Object.values(circles2),{...texts.top1,anchor:"middle_bottom"},{...texts.bottom1,anchor:"middle_top"}],ports:[{...refblocks2.left1,labels:["1"]},{...refblocks2.right1,labels:["2"]}],size:{width:bounds2.width,height:bounds2.height},center:{x:bounds2.centerX,y:bounds2.centerY}},rotated=rotateRightFacingSymbol(avalanche_diode_horz_default,{newOrientation:"down"}),avalanche_diode_vert_default=rotated,battery_default={paths:{path43:{type:"path",points:[{x:-.05901489999999909,y:.18831315000000015},{x:-.05869489999999833,y:-.11814524999999954}],color:"primary",fill:!1},"path43-6":{type:"path",points:[{x:.015375000000000805,y:.12533125000000034},{x:.016669000000000933,y:-.05562075000000033}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.06443049999999961,y:.032673549999999496},{x:-.4368029,y:.032673549999999496}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.4350822999999997,y:.03438825000000034},{x:.028285099999999952,y:.03438825000000034}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.027835099999999446,y:.26564474999999943},bottom1:{type:"text",text:"{VAL}",x:-.028373699999999502,y:-.27564474999999966}},refblocks:{left1:{x:-.4458008,y:.033557849999999334},right1:{x:.4458008,y:.03343344999999931}},bounds:{minX:-.473959241,maxX:.473959241,minY:-.37564474999999964,maxY:.26564474999999943,width:.947918482,height:.2912894999999991,centerX:0,centerY:.055000000000000104},circles:{}},{paths:paths3,texts:texts2,bounds:bounds3,refblocks:refblocks3,circles:circles3}=battery_default,battery_horz_default={primitives:[...Object.values(paths3),...Object.values(circles3),{...texts2.top1,anchor:"middle_bottom"},{...texts2.bottom1,anchor:"middle_top"}],ports:[{...refblocks3.left1,labels:["1"]},{...refblocks3.right1,labels:["2"]}],size:{width:bounds3.width,height:bounds3.height},center:{x:bounds3.centerX,y:bounds3.centerY}},battery_vert_default=rotateRightFacingSymbol(battery_horz_default,{newOrientation:"up"}),boxresistor_default={paths:{path1:{type:"path",points:[{x:-.511850799999999,y:.04616140000000257},{x:-.24726749999999953,y:.04616140000000257}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.2818991000000013,y:.04616140000000257},{x:.5464825000000006,y:.04616140000000257}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.0173157000000006,y:.17845310000000225},{x:.2818990000000001,y:.17845310000000225},{x:.2818990000000001,y:-.0861302999999971},{x:-.24726770000000053,y:-.0861302999999971},{x:-.24726770000000053,y:.17845310000000225},{x:.017315699999998824,y:.17845310000000225}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0014247999999992267,y:.2499980000000015},bottom1:{type:"text",text:"{VAL}",x:-.0004627999999997634,y:-.24999799999999972}},refblocks:{left1:{x:-.5337907000000002,y:.04580520000000021},right1:{x:.5337907000000004,y:.04525870000000154}},bounds:{minX:-.5619491410000002,maxX:.5619491410000004,minY:-.24999799999999972,maxY:.2499980000000015,width:1.1238982820000005,height:.4999960000000012,centerX:11102230246251565e-32,centerY:8881784197001252e-31},circles:{}},SymbolModifier=class{constructor(lV){MI(this,"symbol");this.symbol=JSON.parse(JSON.stringify(lV))}changeTextAnchor(lV,J){return this.symbol={...this.symbol,primitives:this.symbol.primitives.map(VV=>VV.type==="text"&&VV.text===lV?{...VV,anchor:J}:VV)},this}labelPort(lV,J){return this.symbol={...this.symbol,ports:this.symbol.ports.map(VV=>VV.labels.includes(lV)?{...VV,labels:J}:VV)},this}rotateRightFacingSymbol(lV){return this.symbol=rotateRightFacingSymbol(this.symbol,{newOrientation:lV}),this}build(){return this.symbol}},modifySymbol=lV=>new SymbolModifier({...lV,primitives:lV.primitives??[...Object.values(lV.paths??{}),...Object.values(lV.texts??{}),...Object.values(lV.circles??{}),...Object.values(lV.rects??{})],ports:lV.ports??Object.entries(lV.refblocks).flatMap(([J,VV])=>[{...VV,labels:[J]}]),center:lV.center??{x:lV.bounds.centerX,y:lV.bounds.centerY},size:lV.size??{width:lV.bounds.width,height:lV.bounds.height}}),{paths:paths4,texts:texts3,bounds:bounds4,refblocks:refblocks4,circles:circles4}=boxresistor_default,boxresistor_down_default=modifySymbol({primitives:[...Object.values(paths4),...Object.values(circles4),{type:"text",text:"{REF}",x:-.16,y:.2294553499999995},{type:"text",text:"{VAL}",x:.16,y:.2294553499999995}],ports:[{...refblocks4.left1,labels:["1"]},{...refblocks4.right1,labels:["2"]}],size:{width:bounds4.width,height:bounds4.height},center:{x:bounds4.centerX,y:bounds4.centerY}}).changeTextAnchor("{VAL}","middle_bottom").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),{paths:paths5,texts:texts4,bounds:bounds5,refblocks:refblocks5,circles:circles5}=boxresistor_default,boxresistor_left_default=modifySymbol({primitives:[...Object.values(paths5),...Object.values(circles5),{type:"text",text:"{REF}",x:0,y:.2294553499999995},{type:"text",text:"{VAL}",x:0,y:-.1594553499999995}],ports:[{...refblocks5.left1,labels:["1"]},{...refblocks5.right1,labels:["2"]}],size:{width:bounds5.width,height:bounds5.height},center:{x:bounds5.centerX,y:bounds5.centerY}}).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),{paths:paths6,texts:texts5,bounds:bounds6,refblocks:refblocks6,circles:circles6}=boxresistor_default,boxresistor_right_default=modifySymbol({primitives:[...Object.values(paths6),...Object.values(circles6),{type:"text",text:"{REF}",x:0,y:.2294553499999995},{type:"text",text:"{VAL}",x:0,y:-.1594553499999995}],ports:[{...refblocks6.left1,labels:["1"]},{...refblocks6.right1,labels:["2"]}],size:{width:bounds6.width,height:bounds6.height},center:{x:bounds6.centerX,y:bounds6.centerY}}).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),{paths:paths7,texts:texts6,bounds:bounds7,refblocks:refblocks7,circles:circles7}=boxresistor_default,boxresistor_up_default=modifySymbol({primitives:[...Object.values(paths7),...Object.values(circles7),{type:"text",text:"{REF}",x:-.16,y:.2294553499999995},{type:"text",text:"{VAL}",x:.16,y:.2294553499999995}],ports:[{...refblocks7.left1,labels:["1"]},{...refblocks7.right1,labels:["2"]}],size:{width:bounds7.width,height:bounds7.height},center:{x:bounds7.centerX,y:bounds7.centerY}}).changeTextAnchor("{VAL}","middle_bottom").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),capacitor_default={paths:{path27:{type:"path",points:[{x:.5229378000000002,y:.017283050000003186},{x:.07314620000000005,y:.017283050000003186}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.0856037999999999,y:.017283050000003186},{x:-.5353954999999999,y:.017283050000003186}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.0731461999999996,y:.2818663500000014},{x:.07314620000000005,y:-.24730024999999856}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.0856037999999999,y:.2818663500000014},{x:-.0856037999999999,y:-.24730024999999856}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.012864500000000056,y:.4200086500000033},bottom1:{type:"text",text:"{VAL}",x:-.003850500000000423,y:-.42000864999999976}},refblocks:{left1:{x:-.5512093000000005,y:.01638025000000276},right1:{x:.5512093,y:.016926950000001995}},bounds:{minX:-.5793677410000004,maxX:.579367741,minY:-.42000864999999976,maxY:.4200086500000033,width:1.1587354820000004,height:.8400173000000031,centerX:-2220446049250313e-31,centerY:17763568394002505e-31},circles:{}},{paths:paths8,texts:texts7,bounds:bounds8,refblocks:refblocks8,circles:circles8}=capacitor_default,capacitor_down_default=modifySymbol({primitives:[...Object.values(paths8),...Object.values(circles8),{type:"text",text:"{REF}",x:-.2,y:.2094553499999995},{type:"text",text:"{VAL}",x:.2,y:.2094553499999995}],ports:[{...refblocks8.left1,labels:["1"]},{...refblocks8.right1,labels:["2"]}],size:{width:bounds8.width,height:bounds8.height},center:{x:bounds8.centerX,y:bounds8.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),capacitor_right_default=modifySymbol(capacitor_default).rotateRightFacingSymbol("right").changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),capacitor_left_default=modifySymbol(capacitor_right_default).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),capacitor_polarized_default={paths:{"path27-5":{type:"path",points:[{x:.5229378000000007,y:.017283050000003186},{x:.001333100000000531,y:.017283050000003186}],color:"primary",fill:!1},"path28-5":{type:"path",points:[{x:-.08560379999999945,y:.017283050000003186},{x:-.5353954999999995,y:.017283050000003186}],color:"primary",fill:!1},"path30-7":{type:"path",points:[{x:-.0024798999999995353,y:.28420285000000334},{x:-.0024798999999995353,y:-.247479349999999}],color:"primary",fill:!1},path8704:{type:"path",points:[{x:-.1433630999999993,y:-.24400714999999806},{x:-.1433630999999993,y:-.24400714999999806},{x:-.14262848833929928,y:-.24277205092349807},{x:-.1418975396743993,y:-.2415360290679981},{x:-.14117026348109932,y:-.24029908349449816},{x:-.14044666923519933,y:-.23906121326399818},{x:-.13972676641249931,y:-.2378224174374982},{x:-.1390105644887993,y:-.23658269507599822},{x:-.13829807293989932,y:-.2353420452404983},{x:-.13758930124159935,y:-.23410046699199832},{x:-.13688425886969938,y:-.23285795939149836},{x:-.13618295529999938,y:-.23161452149999842},{x:-.13548540000829937,y:-.23037015237849842},{x:-.13479160247039934,y:-.22912485108799843},{x:-.13410157216209936,y:-.22787861668949844},{x:-.1334153185591994,y:-.22663144824399842},{x:-.13273285113749936,y:-.22538334481249844},{x:-.13205417937279937,y:-.22413430545599844},{x:-.1313793127408994,y:-.2228843292354985},{x:-.1307082607175994,y:-.22163341521199847},{x:-.13004103277869938,y:-.2203815624464985},{x:-.1293776383999994,y:-.21912876999999853},{x:-.12871808705729942,y:-.21787503693349855},{x:-.12806238822639943,y:-.21662036230799855},{x:-.12741055138309942,y:-.21536474518449858},{x:-.12676258600319942,y:-.21410818462399858},{x:-.12611850156249946,y:-.21285067968749863},{x:-.12547830753679945,y:-.21159222943599865},{x:-.12484201340189946,y:-.21033283293049862},{x:-.12420962863359947,y:-.20907248923199864},{x:-.12358116270769948,y:-.20781119740149864},{x:-.12295662509999947,y:-.20654895649999866},{x:-.12233602528629947,y:-.20528576558849868},{x:-.12171937274239948,y:-.20402162372799865},{x:-.12110667694409948,y:-.20275652997949864},{x:-.12049794736719947,y:-.2014904834039986},{x:-.11989319348749948,y:-.20022348306249865},{x:-.11929242478079949,y:-.19895552801599864},{x:-.11869565072289952,y:-.19768661732549864},{x:-.11810288078959952,y:-.19641675005199866},{x:-.11751412445669952,y:-.19514592525649863},{x:-.1169293911999995,y:-.1938741419999986},{x:-.11634869049529953,y:-.19260139934349865},{x:-.11577203181839951,y:-.1913276963479986},{x:-.11519942464509951,y:-.1900530320744986},{x:-.11463087845119951,y:-.18877740558399858},{x:-.11406640271249952,y:-.1875008159374986},{x:-.11350600690479953,y:-.18622326219599858},{x:-.11294970050389953,y:-.18494474342049858},{x:-.11239749298559953,y:-.1836652586719986},{x:-.11184939382569953,y:-.18238480701149856},{x:-.11130541249999952,y:-.18110338749999852},{x:-.11076555848429954,y:-.17982099919849853},{x:-.11022984125439952,y:-.1785376411679985},{x:-.10969827028609953,y:-.1772533124694985},{x:-.10917085505519954,y:-.17596801216399852},{x:-.10864760503749954,y:-.17468173931249847},{x:-.10812852970879953,y:-.17339449297599843},{x:-.10761363854489954,y:-.17210627221549843},{x:-.10710294102159955,y:-.17081707609199845},{x:-.10659644661469955,y:-.16952690366649845},{x:-.10609416479999954,y:-.1682357539999984},{x:-.10559610505329955,y:-.1669436261534984},{x:-.10510227685039954,y:-.1656505191879984},{x:-.10461268966709955,y:-.16435643216449838},{x:-.10412735297919956,y:-.16306136414399838},{x:-.10364627626249956,y:-.16176531418749837},{x:-.10316946899279957,y:-.16046828135599833},{x:-.10269694064589956,y:-.15917026471049833},{x:-.10222870069759955,y:-.1578712633119983},{x:-.10176475862369955,y:-.1565712762214983},{x:-.10130512389999956,y:-.1552703024999983},{x:-.10084980600229956,y:-.15396834120849828},{x:-.10039881440639958,y:-.15266539140799829},{x:-.09995215858809957,y:-.15136145215949826},{x:-.09950984802319957,y:-.15005652252399826},{x:-.09907189218749957,y:-.14875060156249825},{x:-.09863830055679956,y:-.14744368833599825},{x:-.09820908260689958,y:-.14613578190549825},{x:-.09778424781359957,y:-.14482688133199823},{x:-.09736380565269957,y:-.1435169856764982},{x:-.09694776559999957,y:-.1422060939999982},{x:-.09653613713129958,y:-.1408942053634982},{x:-.09612892972239956,y:-.13958131882799818},{x:-.09572615284909958,y:-.13826743345449818},{x:-.09532781598719958,y:-.13695254830399817},{x:-.09493392861249958,y:-.13563666243749817},{x:-.09454450020079957,y:-.13431977491599817},{x:-.09415954022789956,y:-.13300188480049818},{x:-.09377905816959958,y:-.13168299115199816},{x:-.09340306350169958,y:-.13036309303149818},{x:-.09303156569999958,y:-.12904218949999818},{x:-.09266457424029959,y:-.12772027961849816},{x:-.09230209859839958,y:-.12639736244799815},{x:-.09194414825009957,y:-.12507343704949817},{x:-.09159073267119958,y:-.12374850248399819},{x:-.09124186133749958,y:-.12242255781249818},{x:-.09089754372479958,y:-.12109560209599818},{x:-.09055778930889957,y:-.11976763439549819},{x:-.09022260756559956,y:-.11843865377199818},{x:-.08989200797069956,y:-.11710865928649819},{x:-.08956599999999959,y:-.11577764999999829},{x:-.08956599999999959,y:-.11577764999999829},{x:-.08916166532269958,y:-.1141015840276983},{x:-.08876332646159957,y:-.11242441110159831},{x:-.08837097017289958,y:-.11074614170789834},{x:-.08798458321279957,y:-.10906678633279836},{x:-.08760415233749957,y:-.10738635546249836},{x:-.08722966430319957,y:-.10570485958319836},{x:-.08686110586609956,y:-.10402230918109837},{x:-.08649846378239957,y:-.10233871474239843},{x:-.0861417248082996,y:-.10065408675329846},{x:-.08579087569999959,y:-.09896843569999846},{x:-.08544590321369959,y:-.09728177206869845},{x:-.08510679410559958,y:-.09559410634559845},{x:-.08477353513189957,y:-.09390544901689848},{x:-.08444611304879956,y:-.09221581056879849},{x:-.08412451461249956,y:-.0905252014874985},{x:-.08380872657919955,y:-.0888336322591985},{x:-.08349873570509957,y:-.08714111337009853},{x:-.08319452874639957,y:-.08544765530639854},{x:-.08289609245929955,y:-.08375326855429854},{x:-.08260341359999955,y:-.08205796359999856},{x:-.08231647892469955,y:-.08036175092969856},{x:-.08203527518959956,y:-.07866464102959857},{x:-.08175978915089956,y:-.07696664438589859},{x:-.08149000756479956,y:-.07526777148479862},{x:-.08122591718749958,y:-.07356803281249863},{x:-.08096750477519957,y:-.07186743885519864},{x:-.08071475708409956,y:-.07016600009909864},{x:-.08046766087039958,y:-.06846372703039866},{x:-.08022620289029957,y:-.06676063013529866},{x:-.07999036989999955,y:-.06505671989999867},{x:-.07976014865569958,y:-.06335200681069868},{x:-.07953552591359955,y:-.061646501353598705},{x:-.07931648842989956,y:-.0599402140148987},{x:-.07910302296079955,y:-.0582331552807987},{x:-.07889511626249955,y:-.05652533563749871},{x:-.07869275509119955,y:-.05481676557119872},{x:-.07849592620309954,y:-.053107455568098726},{x:-.07830461635439954,y:-.05139741611439873},{x:-.07811881230129955,y:-.049686657696298736},{x:-.07793850079999953,y:-.04797519079999873},{x:-.07776366860669955,y:-.04626302591169874},{x:-.07759430247759955,y:-.04455017351759874},{x:-.07743038916889955,y:-.042836644103898744},{x:-.07727191543679954,y:-.04112244815679875},{x:-.07711886803749955,y:-.039407596162498754},{x:-.07697123372719955,y:-.03769209860719875},{x:-.07682899926209953,y:-.035975965977098755},{x:-.07669215139839955,y:-.03425920875839876},{x:-.07656067689229953,y:-.032541837437298764},{x:-.07643456249999953,y:-.03082386249999876},{x:-.07631379497769952,y:-.029105294432698766},{x:-.07619836108159952,y:-.02738614372159877},{x:-.07608824756789952,y:-.02566642085289876},{x:-.07598344119279953,y:-.023946136312798766},{x:-.07588392871249951,y:-.02222530058749876},{x:-.0757896968831995,y:-.020503924163198756},{x:-.07570073246109951,y:-.01878201752609876},{x:-.07561702220239952,y:-.017059591162398753},{x:-.07553855286329951,y:-.015336655558298754},{x:-.07546531119999951,y:-.01361322119999875},{x:-.07539728396869952,y:-.011889298573698748},{x:-.07533445792559951,y:-.010164898165598747},{x:-.07527681982689952,y:-.008440030461898743},{x:-.07522435642879952,y:-.006714705948798734},{x:-.07517705448749952,y:-.004988935112498731},{x:-.07513490075919951,y:-.0032627284391987255},{x:-.07509788200009951,y:-.0015360964150987165},{x:-.07506598496639952,y:.0001909504736012889},{x:-.0750391964142995,y:.0019184017407012956},{x:-.07501750309999951,y:.003646246900001303},{x:-.07500089177969951,y:.00537447546530131},{x:-.07498934920959952,y:.00710307695040132},{x:-.0749828621458995,y:.00883204086910133},{x:-.0749814173447995,y:.010561356735201338},{x:-.07498500156249951,y:.012291014062501347},{x:-.0749936015551995,y:.014021002364801359},{x:-.07500720407909953,y:.015751311155901372},{x:-.07502579589039951,y:.017481929949601384},{x:-.0750493637452995,y:.01921284825970139},{x:-.07507789439999951,y:.0209440556000014},{x:-.0751113746106995,y:.022675541484301412},{x:-.0751497911335995,y:.024407295426401427},{x:-.07519313072489951,y:.02613930694010145},{x:-.07524138014079951,y:.027871565539201462},{x:-.07529452613749951,y:.029604060737501478},{x:-.07535255547119951,y:.031336782048801484},{x:-.0754154548980995,y:.0330697189869015},{x:-.07548321117439952,y:.03480286106560152},{x:-.07555581105629952,y:.03653619779870154},{x:-.07563324129999952,y:.038269718700001565},{x:-.07571548866169951,y:.04000341328330158},{x:-.07580253989759951,y:.04173727106240159},{x:-.07589438176389952,y:.043471281551101616},{x:-.07599100101679952,y:.04520543426320164},{x:-.07609238441249952,y:.04693971871250166},{x:-.07619851870719953,y:.048674124412801674},{x:-.07630939065709953,y:.0504086408779017},{x:-.07642498701839952,y:.05214325762160172},{x:-.07654529454729952,y:.05387796415770175},{x:-.07667029999999952,y:.055612750000001654},{x:-.07667029999999952,y:.055612750000001654},{x:-.07680210846969952,y:.05708314936460168},{x:-.07693595411759954,y:.05855396299680169},{x:-.07707186730189955,y:.06002517220420173},{x:-.07720987838079954,y:.06149675829440175},{x:-.07735001771249954,y:.06296870257500178},{x:-.07749231565519954,y:.06444098635360178},{x:-.07763680256709955,y:.0659135909378018},{x:-.07778350880639956,y:.06738649763520185},{x:-.07793246473129956,y:.06885968775340187},{x:-.07808370069999958,y:.07033314260000188},{x:-.07823724707069958,y:.07180684348260188},{x:-.07839313420159956,y:.07328077170880191},{x:-.07855139245089958,y:.07475490858620194},{x:-.07871205217679958,y:.07622923542240194},{x:-.07887514373749958,y:.07770373352500196},{x:-.07904069749119959,y:.07917838420160196},{x:-.07920874379609959,y:.080653168759802},{x:-.07937931301039959,y:.082128068507202},{x:-.07955243549229958,y:.08360306475140203},{x:-.0797281415999996,y:.085078138800002},{x:-.0799064616916996,y:.08655327196060203},{x:-.08008742612559962,y:.08802844554080204},{x:-.08027106525989962,y:.08950364084820207},{x:-.08045740945279962,y:.09097883919040207},{x:-.08064648906249965,y:.0924540218750021},{x:-.08083833444719964,y:.0939291702096021},{x:-.08103297596509963,y:.09540426550180209},{x:-.08123044397439966,y:.09687928905920212},{x:-.08143076883329967,y:.09835422218940212},{x:-.08163398089999965,y:.09982904620000212},{x:-.08184011053269966,y:.10130374239860213},{x:-.08204918808959966,y:.10277829209280215},{x:-.08226124392889968,y:.10425267659020215},{x:-.08247630840879966,y:.10572687719840214},{x:-.08269441188749967,y:.10720087522500214},{x:-.08291558472319968,y:.10867465197760214},{x:-.0831398572740997,y:.11014818876380215},{x:-.08336725989839969,y:.11162146689120216},{x:-.0835978229542997,y:.11309446766740217},{x:-.0838315767999997,y:.11456717240000215},{x:-.08406855179369971,y:.11603956239660215},{x:-.0843087782935997,y:.11751161896480215},{x:-.08455228665789971,y:.11898332341220215},{x:-.0847991072447997,y:.12045465704640215},{x:-.08504927041249971,y:.12192560117500215},{x:-.0853028065191997,y:.12339613710560214},{x:-.08555974592309973,y:.12486624614580213},{x:-.08582011898239973,y:.12633590960320215},{x:-.08608395605529973,y:.12780510878540213},{x:-.08635128749999971,y:.1292738250000021},{x:-.08662214367469973,y:.1307420395546021},{x:-.08689655493759973,y:.1322097337568021},{x:-.08717455164689972,y:.13367688891420207},{x:-.08745616416079972,y:.13514348633440207},{x:-.08774142283749972,y:.13660950732500204},{x:-.08803035803519974,y:.13807493319360203},{x:-.08832300011209973,y:.13953974524780205},{x:-.08861937942639975,y:.14100392479520202},{x:-.08891952633629974,y:.14246745314340203},{x:-.08922347119999974,y:.14393031160000203},{x:-.08953124437569973,y:.145392481472602},{x:-.08984287622159975,y:.14685394406880198},{x:-.09015839709589976,y:.148314680696202},{x:-.09047783735679976,y:.149774672662402},{x:-.09080122736249976,y:.15123390127500197},{x:-.09112859747119977,y:.15269234784160193},{x:-.09145997804109976,y:.15414999366980195},{x:-.09179539943039977,y:.15560682006720195},{x:-.09213489199729977,y:.1570628083414019},{x:-.09247848609999976,y:.1585179398000019},{x:-.09282621209669975,y:.1599721957506019},{x:-.09317810034559978,y:.1614255575008019},{x:-.09353418120489977,y:.16287800635820185},{x:-.09389448503279976,y:.16432952363040182},{x:-.09425904218749978,y:.16578009062500182},{x:-.09462788302719977,y:.1672296886496018},{x:-.09500103791009978,y:.1686782990118018},{x:-.09537853719439979,y:.17012590301920177},{x:-.09576041123829979,y:.17157248197940175},{x:-.09614669039999979,y:.17301801720000176},{x:-.09653740503769978,y:.17446248998860173},{x:-.0969325855095998,y:.17590588165280172},{x:-.09733226217389979,y:.17734817350020168},{x:-.09773646538879979,y:.1787893468384017},{x:-.0981452255124998,y:.18022938297500168},{x:-.0985585729031998,y:.18166826321760166},{x:-.09897653791909979,y:.1831059688738016},{x:-.09939915091839979,y:.1845424812512016},{x:-.0998264422592998,y:.1859777816574016},{x:-.1002584422999998,y:.1874118514000016},{x:-.1006951813986998,y:.18884467178660155},{x:-.1011366899135998,y:.19027622412480152},{x:-.10158299820289979,y:.19170648972220153},{x:-.1020341366247998,y:.1931354498864015},{x:-.1024901355374998,y:.1945630859250015},{x:-.1029510252991998,y:.19598937914560147},{x:-.10341683626809982,y:.19741431085580147},{x:-.1038875988023998,y:.19883786236320142},{x:-.1043633432602998,y:.20026001497540138},{x:-.10484409999999977,y:.2016807500000013},{x:-.10484409999999977,y:.2016807500000013},{x:-.10512829034499978,y:.20251255364660126},{x:-.10541452131999979,y:.2033439212528012},{x:-.10570279283499981,y:.2041748478182012},{x:-.10599310479999982,y:.20500532834240115},{x:-.10628545712499982,y:.20583535782500112},{x:-.10657984971999983,y:.20666493126560112},{x:-.10687628249499985,y:.2074940436638011},{x:-.10717475535999986,y:.20832269001920106},{x:-.10747526822499989,y:.2091508653314011},{x:-.1077778209999999,y:.20997856460000103},{x:-.10808241359499988,y:.21080578282460102},{x:-.10838904591999989,y:.21163251500480096},{x:-.10869771788499989,y:.212458756140201},{x:-.10900842939999988,y:.21328450123040094},{x:-.10932118037499987,y:.21410974527500093},{x:-.10963597071999989,y:.21493448327360093},{x:-.10995280034499992,y:.21575871022580093},{x:-.1102716691599999,y:.2165824211312009},{x:-.1105925770749999,y:.21740561098940095},{x:-.11091552399999992,y:.21822827480000093},{x:-.1112405098449999,y:.2190504075626009},{x:-.11156753451999993,y:.21987200427680093},{x:-.11189659793499994,y:.22069305994220095},{x:-.11222769999999993,y:.22151356955840096},{x:-.11256084062499995,y:.222333528125001},{x:-.11289601971999996,y:.223152930641601},{x:-.11323323719499996,y:.223971772107801},{x:-.11357249295999995,y:.22479004752320103},{x:-.11391378692499997,y:.22560775188740104},{x:-.11425711899999995,y:.22642488020000104},{x:-.11460248909499995,y:.22724142746060105},{x:-.11494989711999995,y:.2280573886688011},{x:-.11529934298499996,y:.22887275882420108},{x:-.11565082659999995,y:.22968753292640107},{x:-.11600434787499994,y:.23050170597500114},{x:-.11635990671999996,y:.23131527296960114},{x:-.11671750304499996,y:.23212822890980117},{x:-.11707713675999995,y:.23294056879520117},{x:-.11743880777499995,y:.2337522876254012},{x:-.11780251599999993,y:.2345633804000012},{x:-.11816826134499994,y:.23537384211860124},{x:-.11853604371999993,y:.23618366778080127},{x:-.11890586303499992,y:.2369928523862013},{x:-.11927771919999992,y:.23780139093440128},{x:-.11965161212499995,y:.23860927842500138},{x:-.12002754171999992,y:.23941650985760138},{x:-.12040550789499993,y:.24022308023180142},{x:-.12078551055999992,y:.24102898454720142},{x:-.12116754962499991,y:.24183421780340145},{x:-.12155162499999989,y:.24263877500000142},{x:-.1219377365949999,y:.2434426511366015},{x:-.1223258843199999,y:.2442458412128015},{x:-.1227160680849999,y:.24504834022820154},{x:-.12310828779999988,y:.24585014318240156},{x:-.12350254337499987,y:.24665124507500158},{x:-.12389883471999988,y:.24745164090560162},{x:-.12429716174499987,y:.24825132567380165},{x:-.12469752435999987,y:.2490502943792017},{x:-.12509992247499988,y:.2498485420214017},{x:-.12550435599999984,y:.25064606360000175},{x:-.12591082484499985,y:.25144285411460177},{x:-.12631932891999986,y:.2522389085648018},{x:-.12672986813499987,y:.25303422195020187},{x:-.12714244239999986,y:.25382878927040187},{x:-.12755705162499986,y:.25462260552500193},{x:-.12797369571999986,y:.25541566571360197},{x:-.12839237459499983,y:.256207964835802},{x:-.12881308815999984,y:.256999497891202},{x:-.12923583632499985,y:.2577902598794021},{x:-.12966061899999984,y:.2585802458000021},{x:-.13008743609499984,y:.25936945065260214},{x:-.13051628751999986,y:.2601578694368022},{x:-.13094717318499982,y:.26094549715220217},{x:-.13138009299999984,y:.26173232879840225},{x:-.13181504687499984,y:.2625183593750023},{x:-.13225203471999986,y:.2633035838816023},{x:-.13269105644499984,y:.26408799731780236},{x:-.13313211195999985,y:.26487159468320237},{x:-.13357520117499982,y:.2656543709774024},{x:-.13402032399999986,y:.26643632120000244},{x:-.13446748034499983,y:.26721744035060246},{x:-.13491667011999983,y:.26799772342880246},{x:-.13536789323499984,y:.2687771654342025},{x:-.13582114959999986,y:.2695557613664026},{x:-.13627643912499987,y:.27033350622500263},{x:-.13673376171999985,y:.27111039500960266},{x:-.13719311729499983,y:.2718864227198026},{x:-.13765450575999985,y:.2726615843552027},{x:-.13811792702499986,y:.2734358749154028},{x:-.1385833809999999,y:.2742092894000028},{x:-.13905086759499988,y:.2749818228086028},{x:-.1395203867199999,y:.2757534701408028},{x:-.1399919382849999,y:.27652422639620283},{x:-.14046552219999991,y:.27729408657440285},{x:-.1409411383749999,y:.2780630456750029},{x:-.1414187867199999,y:.2788310986976029},{x:-.14189846714499993,y:.27959824064180294},{x:-.14238017955999993,y:.2803644665072029},{x:-.1428639238749999,y:.28112977129340294},{x:-.1433496999999999,y:.28189415000000295}],color:"primary",fill:!1},"rect1577-4":{type:"path",points:[{x:.26345180000000035,y:.2455934500000012},{x:.12298460000000011,y:.2455934500000012},{x:.12298460000000011,y:.2505664500000009},{x:.26345180000000035,y:.2505664500000009}],color:"primary",fill:!0},"rect1577-4-7":{type:"path",points:[{x:.19576130000000003,y:.31834525000000014},{x:.19576130000000003,y:.17787805000000034},{x:.1907882999999999,y:.17787805000000034},{x:.1907882999999999,y:.31834525000000014}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.012864499999999612,y:.4200086500000033},bottom1:{type:"text",text:"{VAL}",x:-.003850499999999979,y:-.42000864999999976}},refblocks:{left1:{x:-.5512093,y:.016380250000000984},right1:{x:.5512093,y:.016926950000001995}},bounds:{minX:-.579367741,maxX:.579367741,minY:-.42000864999999976,maxY:.4200086500000033,width:1.158735482,height:.8400173000000031,centerX:0,centerY:17763568394002505e-31},circles:{}},{paths:paths9,texts:texts8,bounds:bounds9,refblocks:refblocks9,circles:circles9}=capacitor_polarized_default,capacitor_polarized_down_default=modifySymbol({primitives:[...Object.values(paths9),...Object.values(circles9),{type:"text",text:"{REF}",x:-.2,y:.2094553499999995},{type:"text",text:"{VAL}",x:.3,y:.2094553499999995}],ports:[{...refblocks9.left1,labels:["1"]},{...refblocks9.right1,labels:["2"]}],size:{width:bounds9.width,height:bounds9.height},center:{x:bounds9.centerX,y:bounds9.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),capacitor_polarized_right_default=modifySymbol(capacitor_polarized_default).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),capacitor_polarized_left_default=modifySymbol(capacitor_polarized_right_default).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),{paths:paths10,texts:texts9,bounds:bounds10,refblocks:refblocks10,circles:circles10}=capacitor_polarized_default,capacitor_polarized_up_default=modifySymbol({primitives:[...Object.values(paths10),...Object.values(circles10),{type:"text",text:"{REF}",x:.1,y:-.2094553499999995},{type:"text",text:"{VAL}",x:-.2,y:-.2094553499999995}],ports:[{...refblocks10.left1,labels:["1"]},{...refblocks10.right1,labels:["2"]}],size:{width:bounds10.width,height:bounds10.height},center:{x:bounds10.centerX,y:bounds10.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("up").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),{paths:paths11,texts:texts10,bounds:bounds11,refblocks:refblocks11,circles:circles11}=capacitor_default,capacitor_up_default=modifySymbol({primitives:[...Object.values(paths11),...Object.values(circles11),{type:"text",text:"{REF}",x:.2,y:-.2094553499999995},{type:"text",text:"{VAL}",x:-.2,y:-.2094553499999995}],ports:[{...refblocks11.left1,labels:["1"]},{...refblocks11.right1,labels:["2"]}],size:{width:bounds11.width,height:bounds11.height},center:{x:bounds11.centerX,y:bounds11.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("up").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),constant_current_diode_default={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.02897970000000072},{x:-.30105415000000013,y:.02897970000000072}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.02897970000000072},{x:.5339524499999997,y:.02897970000000072}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.2932119499999999,y:.2923763000000008},{x:.2932119499999999,y:-.23441689999999937}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.021208049999999812,y:.3692298999999999},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.3692298999999999}},refblocks:{left1:{x:-.5413984499999998,y:.028126900000000177},right1:{x:.54139845,y:.029123299999999963}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.3692298999999999,maxY:.3692298999999999,width:1.1391137819999997,height:.7384597999999998,centerX:11102230246251565e-32,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03610800000000025,radius:.28854213,color:"primary",fill:!1}}},constant_current_diode_horz_default=modifySymbol(constant_current_diode_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),constant_current_diode_vert_default=modifySymbol(constant_current_diode_default).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),crystal_4pin_default={paths:{path27:{type:"path",points:[{x:.52188525,y:-.010083950000000286},{x:.1314137500000001,y:-.010083950000000286}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.12501034999999971,y:.25449935000000146},{x:.12501035000000016,y:-.2746672499999985}],color:"primary",fill:!1},"path29-2":{type:"path",points:[{x:.07157854999999946,y:.253778650000001},{x:.07157854999999991,y:-.27538794999999716}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.13957305000000053,y:.25449935000000146},{x:-.1395730500000001,y:-.2746672499999985}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.08349325000000052,y:.25541165000000277},{x:-.08349325000000007,y:-.27375494999999894}],color:"primary",fill:!1},"path29-2-7":{type:"path",points:[{x:.07147894999999993,y:.2552525499999998},{x:-.0829032500000002,y:.2552525499999998}],color:"primary",fill:!1},"path29-2-7-6":{type:"path",points:[{x:.07107315000000014,y:-.27817384999999817},{x:-.08330905,y:-.27817384999999817}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.21327535000000042,y:.31803495000000304},{x:.19712464999999968,y:.31807695}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.003324649999999707,y:.694594949999999},{x:.003324649999999707,y:.3310069500000008},{x:.003324649999999707,y:.3209089500000015}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:-.21327535000000042,y:.3180639499999991},{x:-.21327535000000042,y:.2498769499999991}],color:"primary",fill:!1},"path43-8-8":{type:"path",points:[{x:.19712464999999968,y:.31807695},{x:.19712464999999968,y:.24987695000000443}],color:"primary",fill:!1},"path43-9":{type:"path",points:[{x:.19226054999999942,y:-.3468980499999983},{x:-.21813945000000068,y:-.3469400500000006}],color:"primary",fill:!1},"path44-0-5":{type:"path",points:[{x:-.024339450000000262,y:-.7234580499999996},{x:-.024339450000000262,y:-.3598700499999996},{x:-.024339450000000262,y:-.34977205000000033}],color:"primary",fill:!1},"path43-8-1":{type:"path",points:[{x:.19226054999999942,y:-.3469270499999997},{x:.19226054999999942,y:-.2787400499999979}],color:"primary",fill:!1},"path43-8-8-9":{type:"path",points:[{x:-.21813955000000096,y:-.34694015},{x:-.21813955000000096,y:-.27874015000000085}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.14368304999999992,y:-.010083950000000286},{x:-.5364480500000002,y:-.010083950000000286}],color:"primary",fill:!1}},texts:{left1:{type:"text",text:"{REF}",x:-.38155925000000046,y:.09576035000000083},right1:{type:"text",text:"{VAL}",x:.3369813499999994,y:-.17868404999999754}},refblocks:{top1:{x:.0032092499999998303,y:.7114137500000002},bottom1:{x:-.02355145000000025,y:-.7114137500000002},left1:{x:-.5415391500000004,y:-.00607074999999746},right1:{x:.5415391499999997,y:-.012221549999997805}},bounds:{minX:-.5696975910000004,maxX:.5696975909999997,minY:-.7395721910000002,maxY:.7395721910000002,width:1.1393951820000001,height:1.4791443820000003,centerX:-33306690738754696e-32,centerY:0},circles:{}},crystal_4pin_horz_default=modifySymbol(crystal_4pin_default).labelPort("top1",["2","gnd1"]).labelPort("bottom1",["4","gnd2"]).labelPort("left1",["1"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","bottom_right").changeTextAnchor("{VAL}","top_left").build(),crystal_4pin_vert_default=modifySymbol(crystal_4pin_horz_default).rotateRightFacingSymbol("up").changeTextAnchor("{REF}","top_right").changeTextAnchor("{VAL}","bottom_left").build(),crystal_default={paths:{path27:{type:"path",points:[{x:.5229378000000002,y:-.012283099999995883},{x:.13246630000000037,y:-.012283099999995883}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.14263049999999966,y:-.012283099999995883},{x:-.5353954999999999,y:-.012283099999995883}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.12606289999999998,y:-.2768663999999976},{x:.12606290000000042,y:.2523002000000023}],color:"primary",fill:!1},"path29-2":{type:"path",points:[{x:.07263109999999973,y:-.27614569999999716},{x:.07263110000000017,y:.253020900000001}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.13852050000000027,y:-.2768663999999976},{x:-.13852049999999982,y:.2523002000000023}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.08244070000000026,y:-.27777869999999893},{x:-.08244069999999981,y:.2513879000000028}],color:"primary",fill:!1},"path29-2-7":{type:"path",points:[{x:.07253150000000019,y:-.27761959999999597},{x:-.08185069999999994,y:-.27761959999999597}],color:"primary",fill:!1},"path29-2-7-6":{type:"path",points:[{x:.0721257000000004,y:.255806800000002},{x:-.08225649999999973,y:.255806800000002}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.012864500000000056,y:-.4150086999999978},bottom1:{type:"text",text:"{VAL}",x:-.003850500000000423,y:.4250087000000011}},refblocks:{left1:{x:-.5512093000000002,y:-.011380399999998403},right1:{x:.5512093,y:-.011926899999997076}},bounds:{minX:-.5793677410000002,maxX:.579367741,minY:-.5150086999999978,maxY:.4250087000000011,width:1.1587354820000002,height:1,centerX:-11102230246251565e-32,centerY:-.04499999999999832},circles:{}},crystal_horz_default=modifySymbol(crystal_default).changeTextAnchor("{VAL}","middle_bottom").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),crystal_vert_default=modifySymbol(crystal_default).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_right").build(),darlington_pair_transistor_default={paths:{path11:{type:"path",points:[{x:1.9942486145,y:-1.6422072295000003},{x:2.0984258145,y:-1.6428272295000004}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:2.1030704145000003,y:-1.4809259295000001},{x:2.1026604145,y:-1.8041042295}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:2.2218770145,y:-1.4969414295},{x:2.1063461145,y:-1.5757354295000003}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:2.2286252145,y:-1.7819395295000002},{x:2.1136540145000002,y:-1.7033263295}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:2.2273251145,y:-1.4948802295},{x:2.2284101145,y:-1.1518438295000002}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:2.2276017145,y:-1.9567437295},{x:2.2281317145,y:-1.7888340295000003}],color:"primary",fill:!1},"arrow-2":{type:"path",points:[{x:2.1704797145,y:-1.6991380295000003},{x:2.1275815145,y:-1.7604028295000003},{x:2.1917009144999997,y:-1.7601828295000004}],color:"primary",fill:!1},path1:{type:"path",points:[{x:1.5978828145000001,y:-1.5020091295000002},{x:1.8597023145000002,y:-1.5035561295000002}],color:"primary",fill:!1},path2:{type:"path",points:[{x:1.8686937145000002,y:-1.3411936295000002},{x:1.8682837145,y:-1.6643719295000001}],color:"primary",fill:!1},path3:{type:"path",points:[{x:1.9875004145000004,y:-1.3572092295000002},{x:1.8719693145,y:-1.4360031295000002}],color:"primary",fill:!1},path4:{type:"path",points:[{x:1.9942486145,y:-1.6422072295000003},{x:1.8792773145000001,y:-1.5635940295000004}],color:"primary",fill:!1},"arrow-1":{type:"path",points:[{x:1.9361028144999999,y:-1.5594057295000003},{x:1.8932048145,y:-1.6206705295000003},{x:1.9573242144999998,y:-1.6204505295000005}],color:"primary",fill:!1},path9:{type:"path",points:[{x:1.9943087144999998,y:-1.3539494295000003},{x:2.2269582145,y:-1.3556534295000002}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{VAL}",x:1.8805772145,y:-1.9423669295000003},right1:{type:"text",text:"{REF}",x:1.8845380145,y:-1.1387692295000003}},refblocks:{right1:{x:2.2278617145000004,y:-1.9651412295000004},right2:{x:1.5977076145000002,y:-1.5027827295000002},right3:{x:2.2278680145,y:-1.1403971295000002}},bounds:{minX:1.5810976555000003,maxX:2.3461148445,minY:-1.9817511885000003,maxY:-1.1237871705000002,width:.7650171889999999,height:.8579640180000001,centerX:1.9636062500000002,centerY:-1.5527691795000003},circles:{"path1-0":{type:"circle",x:2.0463372145000003,y:-1.5363384295000002,radius:.29977763,color:"primary",fill:!1}}},darlington_pair_transistor_horz_default=modifySymbol(darlington_pair_transistor_default).changeTextAnchor("{VAL}","middle_top").labelPort("right2",["1"]).labelPort("right3",["2"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","middle_bottom").build();darlington_pair_transistor_default.bounds.width+=.3;var darlington_pair_transistor_vert_default=modifySymbol(darlington_pair_transistor_default).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("right2",["1"]).labelPort("right3",["2"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","middle_left").build(),dc_ammeter_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.12447409999999959,y:.0852510999999998},{x:.11626639999999999,y:.0852510999999998}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.4472267999999995},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.3470985000000004},left1:{type:"text",text:"A",x:0,y:-.1}},refblocks:{left1:{x:-.5446330999999993,y:0},right1:{x:.5381638000000004,y:0}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:-.08525110000000002,maxY:.0852510999999998,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:-11102230246251565e-32},circles:{path1:{type:"circle",x:0,y:0,radius:.28854213,color:"primary",fill:!1}}},{paths:paths12,texts:texts11,bounds:bounds12,refblocks:refblocks12,circles:circles12}=dc_ammeter_default,dc_ammeter_horz_default={primitives:[...Object.values(paths12),...Object.values(circles12),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts11.left1,x:0,y:.01,anchor:"center",fontSize:.3}],ports:[{...refblocks12.left1,labels:["1"]},{...refblocks12.right1,labels:["2"]}],size:{width:bounds12.width,height:bounds12.height},center:{x:bounds12.centerX,y:bounds12.centerY}};function isPathPrimitive(lV){return typeof lV=="object"&&lV!==null&&lV.type==="path"&&Array.isArray(lV.points)&&typeof lV.color=="string"}function isTextPrimitive(lV){return typeof lV=="object"&&lV!==null&&lV.type==="text"&&typeof lV.text=="string"&&typeof lV.x=="number"&&typeof lV.y=="number"&&typeof lV.anchor=="string"}var{6:letter,2:underline,...rest}=dc_ammeter_horz_default.primitives;isPathPrimitive(underline)&&underline.points.map(lV=>{lV.y+=.05}),isTextPrimitive(letter)&&(letter.y+=.025);function isPrimitive(lV){return typeof lV=="object"}var rotatedSymbol2=rotateSymbol({...dc_ammeter_horz_default,primitives:Object.values(rest).filter(isPrimitive)}),dc_ammeter_vert_default={...rotatedSymbol2,primitives:[...rotatedSymbol2.primitives,letter,underline]},dc_voltmeter_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09442299999999992,y:-.13438304999999984},{x:-.004364400000000712,y:.05710404999999996},{x:-.1110211000000012,y:-.13438304999999984}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.12447409999999959,y:.13438304999999984},{x:.11626639999999999,y:.13438304999999984}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.39809484999999944},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.39623045000000046}},refblocks:{left1:{x:-.5446330999999993,y:0},right1:{x:.5381638000000004,y:0}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:-.13438304999999984,maxY:.13438304999999984,width:1.0614356000000003,height:1,centerX:0,centerY:0},circles:{path1:{type:"circle",x:0,y:0,radius:.28854213,color:"primary",fill:!1}}},{paths:paths13,texts:texts12,bounds:bounds13,refblocks:refblocks13,circles:circles13}=dc_voltmeter_default,dc_voltmeter_horz_default={primitives:[...Object.values(paths13),...Object.values(circles13),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"}],ports:[{...refblocks13.left1,labels:["1"]},{...refblocks13.right1,labels:["2"]}],size:{width:bounds13.width,height:bounds13.height},center:{x:bounds13.centerX,y:bounds13.centerY}},{2:letter2,3:underline2,...rest2}=dc_voltmeter_horz_default.primitives;function isPrimitive2(lV){return typeof lV=="object"}var rotatedSymbol3=rotateSymbol({...dc_voltmeter_horz_default,primitives:Object.values(rest2).filter(isPrimitive2)}),dc_voltmeter_vert_default={...rotatedSymbol3,primitives:[...rotatedSymbol3.primitives,letter2,underline2]},diac_default={paths:{path11:{type:"path",points:[{x:-.5176700499999997,y:.041745050000000505},{x:-.10888805000000024,y:.041745050000000505}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1031184499999993,y:.041745050000000505},{x:.5246894499999994,y:.041745050000000505}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.09343985000000021,y:-.14620634999999882},{x:-.0930998500000002,y:.2583405500000009}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.08519034999999908,y:-.14503384999999902},{x:.08553034999999909,y:.2595130500000007}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.08315755000000014,y:.055934450000000524},{x:-.08415755000000047,y:-.14678124999999964},{x:.08653524999999984,y:-.05104664999999953},{x:-.08126175000000035,y:.05647715000000031}],color:"primary",fill:!0},"path11-0-9-0":{type:"path",points:[{x:.07661224999999927,y:.256654450000001},{x:.07761224999999983,y:.05393885000000109},{x:-.0930805500000007,y:.1496734500000012},{x:.07471644999999949,y:.25719715000000143}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.0316381500000007,y:.41683614999999996},bottom1:{type:"text",text:"{VAL}",x:-.03022294999999975,y:-.41683614999999996}},refblocks:{left1:{x:-.54139845,y:.04089205000000051},right1:{x:.5413984499999995,y:.04188845000000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.41683614999999996,maxY:.41683614999999996,width:1.1391137819999995,height:.8336722999999999,centerX:-2220446049250313e-31,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000003116,y:.048873150000000365,radius:.28854213,color:"primary",fill:!1}}},diac_horz_default=modifySymbol(diac_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol4=rotateSymbol(diac_horz_default),texts13=rotatedSymbol4.primitives.filter(lV=>lV.type==="text"),ref=texts13.find(lV=>lV.text==="{REF}"),val=texts13.find(lV=>lV.text==="{VAL}");ref.y=0,val.y=0;var diac_vert_default=rotatedSymbol4,diode_default={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999836},{x:-.1199943999999995,y:-.08825540000000132}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.1763280000000016},{x:.14458890000000002,y:.04403629999999836}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.08825539999999776},{x:-.1199943999999995,y:.1763280000000016}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.1763280000000016},{x:.14458890000000002,y:-.08825539999999776}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999836},{x:-.5168693999999996,y:.04403629999999836}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797,y:.04395110000000102},{x:.14967160000000002,y:.04395110000000102}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384529999999785},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999999524,y:-.2738453000000014}},refblocks:{left1:{x:-.5191471000000001,y:.0449206999999987},right1:{x:.5191471000000001,y:.043896100000001326}},bounds:{minX:-.5473055410000001,maxX:.5473055410000001,minY:-.2738453000000014,maxY:.27384529999999785,width:1.0946110820000001,height:.5476905999999993,centerX:0,centerY:-17763568394002505e-31},circles:{}},diode_right_default=modifySymbol(diode_default).labelPort("left1",["1","pos"]).labelPort("right1",["2","neg"]).changeTextAnchor("{REF}","middle_bottom").changeTextAnchor("{VAL}","middle_top").build(),diode_down_default=rotateSymbol(diode_right_default,"down"),diode_left_default=rotateSymbol(diode_right_default,"left"),diode_up_default=rotateSymbol(diode_right_default,"up"),dpdt_switch_default={paths:{path1:{type:"path",points:[{x:-.3543580999999998,y:.22373490000000018},{x:-.1279290999999998,y:.22373490000000018}],color:"primary",fill:!1},"path-1-3":{type:"path",points:[{x:-.11341659999999987,y:.2240546000000001},{x:.1031012,y:.354}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.10434800000000011,y:.127178},{x:.345089,y:.127178}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.12008600000000014,y:.36383770000000015},{x:.360827,y:.36383770000000015}],color:"primary",fill:!1},path4:{type:"path",points:[{x:-.3543580999999998,y:-.17811849999999985},{x:-.1279290999999998,y:-.17811849999999985}],color:"primary",fill:!1},"path4-6":{type:"path",points:[{x:-.11341659999999987,y:-.1777987999999997},{x:.1031012,y:-.04780299999999982}],color:"primary",fill:!1},path5:{type:"path",points:[{x:.10434800000000011,y:-.2746754},{x:.345089,y:-.2746754}],color:"primary",fill:!1},path6:{type:"path",points:[{x:.12008600000000014,y:-.038015699999999875},{x:.360827,y:-.038015699999999875}],color:"primary",fill:!1},"path1-4-join":{type:"path",points:[{x:-.020896399999999815,y:-.10273049999999984},{x:-.025476399999999844,y:.2768100000000002}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0862317999999998,y:.46447740000000026},bottom1:{type:"text",text:"{VAL}",x:-.0862317999999998,y:-.4244773999999998}},refblocks:{top1:{x:-.11569089999999993,y:.22373490000000018},top2:{x:.10744680000000018,y:.36383770000000015},top3:{x:.10744750000000014,y:.12717810000000007},bottom1:{x:-.11569089999999993,y:-.17811849999999985},bottom2:{x:.10744750000000014,y:-.2746754},left1:{x:-.3682734999999999,y:.22373490000000018},left2:{x:-.3682734999999999,y:-.17811849999999985},right1:{x:.36827350000000014,y:.36383770000000015},right2:{x:.36827350000000014,y:.12717810000000007},right3:{x:.36827350000000014,y:-.038015699999999875},right4:{x:.10744680000000018,y:-.038015699999999875},right5:{x:.36827350000000014,y:-.2746754}},bounds:{minX:-.3964319409999999,maxX:.3964319410000001,minY:-.4744773999999998,maxY:.5644774000000002,width:1,height:1.0389548,centerX:-11102230246251565e-32,centerY:.045000000000000207},circles:{}},{paths:paths14,texts:texts14,bounds:bounds14,refblocks:refblocks14,circles:circles14}=dpdt_switch_default,dpdt_switch_horz_default={primitives:[...Object.values(paths14),...Object.values(circles14),{...texts14.top1,anchor:"middle_bottom"},{...texts14.bottom1,anchor:"middle_top"}],ports:[{...refblocks14.left1,labels:["1"]},{...refblocks14.left2,labels:["4"]},{...refblocks14.right1,labels:["3"]},{...refblocks14.right2,labels:["2"]},{...refblocks14.right3,labels:["6"]},{...refblocks14.right5,labels:["5"]}],size:{width:bounds14.width,height:bounds14.height},center:{x:bounds14.centerX,y:bounds14.centerY}},rotatedSymbol5=rotateSymbol(dpdt_switch_horz_default),texts15=rotatedSymbol5.primitives.filter(lV=>lV.type==="text"),val2=texts15.find(lV=>lV.text==="{VAL}");val2.anchor="middle_right",val2.x=-.37,val2.y=.12;var ref2=texts15.find(lV=>lV.text==="{REF}");ref2.anchor="middle_left",ref2.x=.37,ref2.y=.12;var dpdt_switch_vert_default=rotatedSymbol5,dpst_switch_default={paths:{path11:{type:"path",points:[{x:-.3622268000000006,y:.06287995000000057},{x:-.1357978000000004,y:.06287995000000057}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.12009950000000069,y:.061349450000000916},{x:.10307889999999986,y:.2010388500000011}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.12795640000000064,y:.06287995000000057},{x:.36869780000000096,y:.06287995000000057}],color:"primary",fill:!1},"path11-5":{type:"path",points:[{x:-.3622270999999999,y:-.16866424999999907},{x:-.1357980999999997,y:-.16866424999999907}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:-.12009979999999998,y:-.17019474999999962},{x:.10307860000000058,y:-.03050534999999921}],color:"primary",fill:!1},"path12-0":{type:"path",points:[{x:.12795610000000002,y:-.16866424999999907},{x:.3686968000000006,y:-.16866424999999907}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.1958158999999995,y:.39716265000000006},bottom1:{type:"text",text:"{VAL}",x:-.029144200000000398,y:-.39716264999999984}},refblocks:{bottom1:{x:-.12356020000000001,y:-.17345394999999963},bottom2:{x:.1153169000000005,y:-.17345394999999963},left1:{x:-.37614279999999956,y:-.16951715000000012},left2:{x:-.12356020000000001,y:.05809054999999996},left3:{x:-.37614279999999956,y:.06202735000000037},right1:{x:.37614279999999933,y:-.16852074999999966},right2:{x:.1153169000000005,y:.05809054999999996},right3:{x:.37614279999999933,y:.06302374999999993}},bounds:{minX:-.40430124099999953,maxX:.4043012409999993,minY:-.39716264999999984,maxY:.39716265000000006,width:.8086024819999988,height:.7943252999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}};dpst_switch_default.bounds.width+=.2;var{paths:paths15,texts:texts16,bounds:bounds15,refblocks:refblocks15,circles:circles15}=dpst_switch_default,dpst_switch_horz_default={primitives:[...Object.values(paths15),...Object.values(circles15),{...texts16.top1,anchor:"middle_bottom",x:0},{...texts16.bottom1,anchor:"middle_top",x:0}],ports:[{...refblocks15.left1,labels:["1","left1"]},{...refblocks15.left3,labels:["3","left3"]},{...refblocks15.right1,labels:["2","right1"]},{...refblocks15.right3,labels:["4","right3"]}],size:{width:bounds15.width,height:bounds15.height},center:{x:bounds15.centerX,y:bounds15.centerY}},rotatedSymbol6=rotateSymbol(dpst_switch_horz_default),texts17=rotatedSymbol6.primitives.filter(lV=>lV.type==="text"),val3=texts17.find(lV=>lV.text==="{VAL}");val3.anchor="middle_right",val3.x=-.35,val3.y=0;var ref3=texts17.find(lV=>lV.text==="{REF}");ref3.anchor="middle_left",ref3.x=.3,ref3.y=0;var dpst_switch_vert_default=rotatedSymbol6,filled_diode_default={paths:{path11:{type:"path",points:[{x:-.541495829500001,y:.044368009536419395},{x:-.21998262950000114,y:.044368009536419395}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.14450697049999905,y:.052237309536419474},{x:.46379767049999976,y:.052237309536419474}],color:"primary",fill:!1},"path12-6":{type:"path",points:[{x:.13965347050000032,y:-.14937819046358025},{x:.13854747050000027,y:.2538388095364199}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.212703829500001,y:.2732984095364195},{x:-.2147708295000006,y:-.1493854904635803},{x:.13782137049999887,y:.050231709536419755},{x:-.2087893295000005,y:.27442980953642016}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.08906882950000083,y:.38011220953641867},bottom1:{type:"text",text:"{VAL}",x:-.0685314901614209,y:-.38011220953641844},right1:{type:"text",text:"",x:.5884896704999998,y:-.3288545904635811}},refblocks:{left1:{x:-.5603312294999999,y:.04351520953641885},right1:{x:.47524967049999955,y:.05238090953641872}},bounds:{minX:-.5884896704999999,maxX:.5884896704999998,minY:-.38011220953641844,maxY:.38011220953641867,width:1.1769793409999996,height:.7602244190728371,centerX:-5551115123125783e-32,centerY:11102230246251565e-32},circles:{}},filled_diode_horz_default=modifySymbol(filled_diode_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),filled_diode_vert_default=rotateSymbol(filled_diode_horz_default),frequency_meter_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Hz",x:0,y:-.035}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths16,texts:texts18,bounds:bounds16,refblocks:refblocks16,circles:circles16}=frequency_meter_default,frequency_meter_horz_default={primitives:[...Object.values(paths16),...Object.values(circles16),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts18.left1,x:0,y:.01,anchor:"center",fontSize:.2}],ports:[{...refblocks16.left1,labels:["1"]},{...refblocks16.right1,labels:["2"]}],size:{width:bounds16.width,height:bounds16.height},center:{x:bounds16.centerX,y:bounds16.centerY}},{5:letter3,...rest3}=frequency_meter_horz_default.primitives;function isPrimitive3(lV){return typeof lV=="object"}var rotatedSymbol7=rotateSymbol({...frequency_meter_horz_default,primitives:Object.values(rest3).filter(isPrimitive3)}),frequency_meter_vert_default={...rotatedSymbol7,primitives:[...rotatedSymbol7.primitives,letter3]},fuse_default={paths:{path10:{type:"path",points:[{x:-.5283037500000001,y:.036413650000000075},{x:.5300302500000003,y:.036413650000000075}],color:"primary",fill:!1},path14:{type:"path",points:[{x:.0008652499999994845,y:.16870534999999975},{x:.2654482499999995,y:.16870534999999975},{x:.2654482499999995,y:-.0958780499999996},{x:-.2637187499999998,y:-.0958780499999996},{x:-.2637187499999998,y:.16870534999999975},{x:.0008652499999994845,y:.16870534999999975}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.008263949999999909,y:.23591724999999997},bottom1:{type:"text",text:"{VAL}",x:-.1716539500000005,y:-.23591724999999997}},refblocks:{left1:{x:-.5345548500000001,y:.03946054999999937},right1:{x:.5345548500000001,y:.0352561499999986}},bounds:{minX:-.5627132910000001,maxX:.5627132910000001,minY:-.23591724999999997,maxY:.23591724999999997,width:1.1254265820000002,height:.47183449999999993,centerX:0,centerY:0},circles:{}},{paths:paths17,texts:texts19,bounds:bounds17,refblocks:refblocks17}=fuse_default,fuse_horz_default={primitives:[...Object.values(paths17),{...texts19.top1,anchor:"middle_bottom"},{type:"text",text:"{VAL}",x:0,y:-.2,anchor:"middle_top"}],ports:[{...refblocks17.left1,labels:["1"]},{...refblocks17.right1,labels:["2"]}],size:{width:bounds17.width,height:bounds17.height},center:{x:bounds17.centerX,y:bounds17.centerY}},fuse_vert_default=rotateSymbol(fuse_horz_default),ground_default={paths:{path1:{type:"path",points:[{x:-.33997010000000016,y:.4545300000000001},{x:-.03997010000000012,y:.4545300000000001}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.02032289999999981,y:.25053000000000014},{x:-.020322900000000033,y:.65053}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.050000000000000044,y:.3005300000000002},{x:.050000000000000044,y:.60053}],color:"primary",fill:!1},path4:{type:"path",points:[{x:.1499999999999997,y:.40053000000000005},{x:.1499999999999997,y:.5005300000000001}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{REF}",x:-.44999999999999996,y:-.6505299999999998},right1:{type:"text",text:"{VAL}",x:.44999999999999973,y:.35053}},refblocks:{top1:{x:-.33997010000000016,y:.4545300000000001},top2:{x:.17000000000000015,y:.4535300000000002}},bounds:{minX:-.44999999999999996,maxX:.44999999999999973,minY:-.6505299999999998,maxY:.65053,width:.8999999999999997,height:1.3010599999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:paths18,circles:circles17,bounds:bounds18,refblocks:refblocks18}=ground_default,horizontalSymbol={primitives:[...Object.values(paths18),...Object.values(circles17),{type:"text",text:"{REF}",x:-.1,y:.8,anchor:"middle_bottom"},{type:"text",text:"{VAL}",x:-.1,y:.1,anchor:"middle_top"}],ports:[{...refblocks18.top1,labels:["1"]}],size:{width:1,height:1},center:{x:0,y:.4}},ground_horz_default=horizontalSymbol,ground_vert_default=modifySymbol(ground_horz_default).rotateRightFacingSymbol("down").build(),gunn_diode_default={paths:{path11:{type:"path",points:[{x:-.49895505000000084,y:.035186950000000605},{x:-.177441850000001,y:.035186950000000605}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.18704774999999918,y:.043056250000000684},{x:.5063384499999999,y:.043056250000000684}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.3067105499999998,y:.19836805000000046},{x:-.3084575500000002,y:-.10569684999999973},{x:-.01040014999999972,y:.03790115000000038},{x:-.3034011499999991,y:.1991819500000005}],color:"primary",fill:!0},"path11-0-9-5":{type:"path",points:[{x:.3324594500000002,y:.19920585000000046},{x:.33420945000000013,y:-.10485904999999973},{x:.03615254999999973,y:.03873895000000038},{x:.32915344999999974,y:.2000197500000005}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.042716749999999415,y:.3158462499999999},bottom1:{type:"text",text:"{VAL}",x:.035355149999999336,y:-.3158462499999999}},refblocks:{left1:{x:-.5177904499999998,y:.03433415000000006},right1:{x:.5177904499999997,y:.04319984999999993}},bounds:{minX:-.5459488909999998,maxX:.5459488909999997,minY:-.3158462499999999,maxY:.3158462499999999,width:1.0918977819999993,height:.6316924999999998,centerX:-5551115123125783e-32,centerY:0},circles:{}},gunn_diode_horz_default=modifySymbol(gunn_diode_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),gunn_diode_vert_default=modifySymbol(gunn_diode_default).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),igbt_transistor_default={paths:{path11:{type:"path",points:[{x:-.3850944445000005,y:.0010025000000009054},{x:-.006525044499999799,y:-.0016204999999989145}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:.19027400000000116},{x:.07322065550000101,y:-.17787549999999852}],color:"primary",fill:!1},path42:{type:"path",points:[{x:.01002445549999953,y:-.12022799999999911},{x:.01002445549999953,y:.1443554000000009}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.28374995550000004,y:-.2462579999999992},{x:.2831499554999999,y:-.5425888999999995}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:.5370061000000012},{x:.2836366555000003,y:.2678117000000011}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.1731829554999995,y:-.2153930999999989},{x:.2780310554999992,y:-.23045039999999894},{x:.2324710554999987,y:-.14155709999999888}],color:"primary",fill:!0},path17:{type:"path",points:[{x:.07704605550000054,y:-.08544359999999895},{x:.2325688555000005,y:-.19774119999999895}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:.11255990000000127},{x:.28369465549999884,y:.2606293000000013}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.006566644499999885,y:.35624680000000075},bottom1:{type:"text",text:"{VAL}",x:.020614555499999687,y:-.4202180999999998}},refblocks:{top1:{x:.2843894554999997,y:.5566011000000001},bottom1:{x:.2823318555000005,y:-.5566010999999997},left1:{x:-.3990097444999998,y:.00014970000000036343}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5847595409999997,maxY:.584759541,width:.8543363709999996,height:1.1695190819999999,centerX:27755575615628914e-33,centerY:16653345369377348e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:.008130800000000438,radius:.28854213,color:"primary",fill:!1}}},igbt_transistor_horz_default=modifySymbol(igbt_transistor_default).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_right").build(),rotated2=rotateSymbol(igbt_transistor_horz_default),ref4=rotated2.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val4=rotated2.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref4.anchor="middle_left",val4.anchor="middle_right",ref4.x=.45,ref4.y+=.065,val4.y+=.065;var igbt_transistor_vert_default=rotated2,illuminated_push_button_normally_open_default={paths:{"path12-1-8-6-9":{type:"path",points:[{x:.023137150000000162,y:-.022408499999999165},{x:.023137150000000162,y:-.10240850000000101}],color:"primary",fill:!1},"path12-1-5-6":{type:"path",points:[{x:-.48740694999999956,y:-.18547949999999958},{x:-.1731006500000003,y:-.18547949999999958}],color:"primary",fill:!1},"path12-1-5-6-8":{type:"path",points:[{x:.023792949999999813,y:.17183650000000128},{x:.023792949999999813,y:.10518850000000057}],color:"primary",fill:!1},"path12-1-8-0":{type:"path",points:[{x:-.14922445000000018,y:-.032671500000001075},{x:.19549865000000022,y:-.18509050000000116}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.19549885000000078,y:-.18509050000000116},{x:.4881437499999999,y:-.18509050000000116}],color:"primary",fill:!1},"path12-1-8-6-9-4":{type:"path",points:[{x:.023137150000000162,y:.11939749999999982},{x:.023137150000000162,y:.017597499999999044}],color:"primary",fill:!1},"path12-1-8-6-9-4-3":{type:"path",points:[{x:.08312335000000015,y:.10724749999999972},{x:.08312335000000015,y:.050463500000001105}],color:"primary",fill:!1},"path12-1-8-6-9-4-3-1":{type:"path",points:[{x:-.03684904999999983,y:.10724749999999972},{x:-.03684904999999983,y:.050463500000001105}],color:"primary",fill:!1},"path12-1-8-6-9-4-4":{type:"path",points:[{x:.08312335000000015,y:.10724749999999972},{x:-.03684904999999983,y:.10724749999999972}],color:"primary",fill:!1},"path14-5":{type:"path",points:[{x:-.011640198644880861,y:.2824489119921765},{x:.01182744133211866,y:.25421423950368016},{x:.035295081309120846,y:.22597956701517674},{x:.05876272128612037,y:.19774489452667865}],color:"primary",fill:!0},"path14-5-3":{type:"path",points:[{x:-.011818241440559873,y:.19775449269853418},{x:.01171692178543804,y:.22592735480803405},{x:.03525208501144128,y:.25410021691753926},{x:.058787248237439194,y:.2822730790270338}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.010987250000000337,y:.3808714999999978},bottom1:{type:"text",text:"{VAL}",x:.05578094999999994,y:-.3808714999999996}},refblocks:{left1:{x:-.4717985499999999,y:-.1854504999999982},right1:{x:.4717985499999999,y:-.18547650000000182}},bounds:{minX:-.4999569909999999,maxX:.4999569909999999,minY:-.3808714999999996,maxY:.3808714999999978,width:.9999139819999998,height:.7617429999999974,centerX:0,centerY:-8881784197001252e-31},circles:{path9:{type:"circle",x:.02379285000000042,y:.24000550000000054,radius:.059920847,color:"primary",fill:!1}}},illuminated_push_button_normally_open_horz_default=modifySymbol(illuminated_push_button_normally_open_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol8=rotateSymbol(illuminated_push_button_normally_open_horz_default),texts21=rotatedSymbol8.primitives.filter(lV=>lV.type==="text"),val5=texts21.find(lV=>lV.text==="{VAL}");val5.x=-.35,val5.y=0,val5.anchor="middle_right";var ref5=texts21.find(lV=>lV.text==="{REF}");ref5.y=0,ref5.x=.35,ref5.anchor="middle_left";var illuminated_push_button_normally_open_vert_default=rotatedSymbol8,inductor_default={paths:{path8698:{type:"path",points:[{x:-.20003504999999944,y:-.023826854587889912},{x:-.20252458999999945,y:-.018993393814014044},{x:-.20501412999999943,y:-.014174384106555204},{x:-.2075036699999995,y:-.009384187436300498},{x:-.20999320999999949,y:-.004636988132081332},{x:-.2124827499999995,y:5329457033053167e-20},{x:-.2149722899999995,y:.004673092344940186},{x:-.2174618299999995,y:.009209271428771242},{x:-.21995136999999956,y:.013649213595881985},{x:-.22244090999999955,y:.01798089395292432},{x:-.22493044999999956,y:.022192955076609913},{x:-.22741998999999957,y:.02627477703600152},{x:-.22990952999999958,y:.030216542867918667},{x:-.2323990699999996,y:.03400929910178016},{x:-.2348886099999996,y:.03764501096072756},{x:-.23737814999999962,y:.04111661189869628},{x:-.23986768999999963,y:.04441804716802203},{x:-.24235722999999965,y:.04754431114897349},{x:-.24484676999999966,y:.05049147821106258},{x:-.24733630999999967,y:.053256726915861724},{x:-.24982584999999968,y:.05583835741211009},{x:-.2523153899999997,y:.05823580191586174},{x:-.2548049299999997,y:.060449628211062575},{x:-.2572944699999997,y:.0624815361489735},{x:-.25978400999999973,y:.06433434716802203},{x:-.26227354999999974,y:.06601198689869628},{x:-.26476308999999976,y:.06751946096072757},{x:-.26725262999999977,y:.06886282410178016},{x:-.2697421699999998,y:.07004914286791866},{x:-.2722317099999998,y:.0710864520360015},{x:-.2747212499999998,y:.07198370507660991},{x:-.2772107899999998,y:.07275071895292433},{x:-.27970032999999983,y:.07339811359588198},{x:-.28218986999999984,y:.07393724642877124},{x:-.28467940999999986,y:.07438014234494018},{x:-.28716894999999987,y:.07473941957033053},{x:-.2896584899999999,y:.07502821186791866},{x:-.2921480299999999,y:.07526008756369952},{x:-.2946375699999999,y:.07544896589344477},{x:-.2971271099999999,y:.07560903118598594},{x:-.29961664999999993,y:.07575464541211008},{x:-.3021061874999999,y:.07560903118598594},{x:-.30459572499999993,y:.07544896589344477},{x:-.3070852624999999,y:.07526008756369951},{x:-.30957479999999993,y:.07502821186791866},{x:-.31206433749999984,y:.07473941957033052},{x:-.3145538749999998,y:.07438014234494018},{x:-.31704341249999984,y:.07393724642877124},{x:-.31953294999999987,y:.07339811359588198},{x:-.32202248749999984,y:.07275071895292431},{x:-.3245120249999998,y:.07198370507660991},{x:-.3270015624999998,y:.0710864520360015},{x:-.32949109999999976,y:.07004914286791866},{x:-.33198063749999984,y:.06886282410178016},{x:-.33447017499999976,y:.06751946096072757},{x:-.3369597124999998,y:.06601198689869628},{x:-.33944924999999976,y:.06433434716802203},{x:-.34193878749999973,y:.06248153614897349},{x:-.34442832499999976,y:.06044962821106258},{x:-.3469178624999997,y:.05823580191586174},{x:-.3494073999999997,y:.05583835741211009},{x:-.35189693749999973,y:.053256726915861724},{x:-.35438647499999965,y:.050491478211062576},{x:-.3568760124999997,y:.0475443111489735},{x:-.35936554999999964,y:.04441804716802203},{x:-.3618550874999996,y:.04111661189869628},{x:-.36434462499999964,y:.03764501096072756},{x:-.36683416249999967,y:.03400929910178016},{x:-.3693236999999996,y:.030216542867918673},{x:-.3718132374999996,y:.02627477703600152},{x:-.3743027749999996,y:.022192955076609917},{x:-.37679231249999956,y:.017980893952924324},{x:-.3792818499999996,y:.013649213595881985},{x:-.3817713874999995,y:.00920927142877125},{x:-.38426092499999953,y:.004673092344940191},{x:-.38675046249999956,y:5329457033053514e-20},{x:-.38923999999999953,y:-.004636988132081328},{x:-.39172953749999956,y:-.009384187436300498},{x:-.3942190749999995,y:-.014174384106555197},{x:-.3967086124999995,y:-.01899339381401404},{x:-.3991981499999995,y:-.023826854587889912}],color:"primary",fill:!1},path8700:{type:"path",points:[{x:-.000872049999999458,y:-.02382615458789039},{x:-.0033615874999994412,y:-.01899269131401453},{x:-.0058511249999994245,y:-.014173679106555696},{x:-.008340662499999407,y:-.009383479936300985},{x:-.010830199999999391,y:-.004636278132081827},{x:-.013319737499999373,y:5400707033003174e-20},{x:-.015809274999999356,y:.004673807344939683},{x:-.018298812499999338,y:.009209988928770731},{x:-.020788349999999324,y:.013649933595881476},{x:-.023277887499999306,y:.017981616452923805},{x:-.02576742499999929,y:.022193680076609393},{x:-.02825696249999927,y:.026275504536001},{x:-.030746499999999254,y:.030217272867918137},{x:-.03323603749999924,y:.034010031601779636},{x:-.03572557499999922,y:.03764574596072702},{x:-.038215112499999204,y:.04111734939869574},{x:-.04070464999999919,y:.04441878716802149},{x:-.04319418749999917,y:.04754505364897295},{x:-.045683724999999155,y:.05049222321106203},{x:-.048173262499999134,y:.05325747441586117},{x:-.05066279999999912,y:.055839107412109526},{x:-.053152337499999106,y:.05823655441586117},{x:-.055641874999999084,y:.06045038321106201},{x:-.05813141249999907,y:.06248229364897292},{x:-.06062094999999905,y:.06433510716802145},{x:-.06311048749999904,y:.0660127493986957},{x:-.06560002499999902,y:.06752022596072697},{x:-.068089562499999,y:.06886359160177957},{x:-.07057909999999898,y:.07004991286791806},{x:-.07306863749999896,y:.07108722453600091},{x:-.07555817499999895,y:.0719844800766093},{x:-.07804771249999894,y:.07275149645292371},{x:-.08053724999999892,y:.07339889359588138},{x:-.0830267874999989,y:.07393802892877062},{x:-.08551632499999888,y:.07438092734493956},{x:-.08800586249999887,y:.07474020707032991},{x:-.09049539999999885,y:.07502900186791804},{x:-.09298493749999884,y:.07526088006369888},{x:-.09547447499999881,y:.07544976089344414},{x:-.0979640124999988,y:.0756098286859853},{x:-.10045354999999878,y:.07575544541210943},{x:-.1029430899999988,y:.0756098286859853},{x:-.1054326299999988,y:.07544976089344414},{x:-.10792216999999882,y:.07526088006369887},{x:-.11041170999999883,y:.07502900186791804},{x:-.11290124999999884,y:.0747402070703299},{x:-.11539078999999886,y:.07438092734493956},{x:-.11788032999999885,y:.07393802892877062},{x:-.1203698699999989,y:.07339889359588138},{x:-.12285940999999889,y:.07275149645292371},{x:-.1253489499999989,y:.0719844800766093},{x:-.12783848999999892,y:.07108722453600091},{x:-.13032802999999893,y:.07004991286791806},{x:-.13281756999999894,y:.06886359160177957},{x:-.13530710999999895,y:.06752022596072697},{x:-.13779664999999897,y:.0660127493986957},{x:-.14028618999999898,y:.06433510716802145},{x:-.142775729999999,y:.06248229364897291},{x:-.145265269999999,y:.06045038321106202},{x:-.14775480999999901,y:.05823655441586117},{x:-.15024434999999903,y:.055839107412109526},{x:-.15273388999999904,y:.05325747441586117},{x:-.15522342999999905,y:.05049222321106202},{x:-.15771296999999906,y:.047545053648972956},{x:-.16020250999999908,y:.04441878716802149},{x:-.1626920499999991,y:.04111734939869574},{x:-.1651815899999991,y:.03764574596072702},{x:-.16767112999999914,y:.034010031601779636},{x:-.1701606699999991,y:.03021727286791814},{x:-.17265020999999914,y:.026275504536001},{x:-.17513974999999915,y:.022193680076609396},{x:-.17762928999999916,y:.017981616452923805},{x:-.1801188299999992,y:.013649933595881474},{x:-.18260836999999916,y:.00920998892877074},{x:-.1850979099999992,y:.0046738073449396865},{x:-.1875874499999992,y:5400707033003521e-20},{x:-.19007698999999922,y:-.004636278132081827},{x:-.19256652999999926,y:-.009383479936300985},{x:-.19505606999999922,y:-.01417367910655569},{x:-.19754560999999926,y:-.018992691314014522},{x:-.20003514999999927,y:-.02382615458789039}],color:"primary",fill:!1},path8702:{type:"path",points:[{x:.19829105000000036,y:-.02382615458789039},{x:.19580151000000035,y:-.01899269131401453},{x:.1933119700000003,y:-.014173679106555696},{x:.19082243000000035,y:-.009383479936300985},{x:.1883328900000003,y:-.004636278132081827},{x:.1858433500000003,y:5400707033003174e-20},{x:.18335381000000028,y:.004673807344939683},{x:.18086427000000024,y:.009209988928770731},{x:.1783747300000003,y:.013649933595881476},{x:.17588519000000025,y:.017981616452923805},{x:.17339565000000023,y:.022193680076609393},{x:.17090611000000022,y:.026275504536001},{x:.16841657000000018,y:.030217272867918137},{x:.16592703000000023,y:.034010031601779636},{x:.16343749000000019,y:.03764574596072702},{x:.16094795000000017,y:.04111734939869574},{x:.15845841000000016,y:.04441878716802149},{x:.15596887000000015,y:.04754505364897295},{x:.15347933000000014,y:.05049222321106203},{x:.15098979000000012,y:.05325747441586117},{x:.1485002500000001,y:.055839107412109526},{x:.1460107100000001,y:.05823655441586117},{x:.1435211700000001,y:.06045038321106201},{x:.14103163000000007,y:.06248229364897292},{x:.13854209000000006,y:.06433510716802145},{x:.13605255000000005,y:.0660127493986957},{x:.13356301000000004,y:.06752022596072697},{x:.13107347000000003,y:.06886359160177957},{x:.12858393,y:.07004991286791806},{x:.12609439,y:.07108722453600091},{x:.12360484999999999,y:.0719844800766093},{x:.12111530999999998,y:.07275149645292371},{x:.11862576999999996,y:.07339889359588138},{x:.11613622999999995,y:.07393802892877062},{x:.11364668999999994,y:.07438092734493956},{x:.11115714999999993,y:.07474020707032991},{x:.10866760999999991,y:.07502900186791804},{x:.1061780699999999,y:.07526088006369888},{x:.10368852999999989,y:.07544976089344414},{x:.10119898999999988,y:.0756098286859853},{x:.09870944999999987,y:.07575544541210943},{x:.09621991249999988,y:.0756098286859853},{x:.0937303749999999,y:.07544976089344414},{x:.09124083749999992,y:.07526088006369887},{x:.08875129999999994,y:.07502900186791804},{x:.08626176249999995,y:.0747402070703299},{x:.08377222499999996,y:.07438092734493956},{x:.08128268749999998,y:.07393802892877062},{x:.07879315,y:.07339889359588138},{x:.07630361250000002,y:.07275149645292371},{x:.07381407500000003,y:.0719844800766093},{x:.07132453750000005,y:.07108722453600091},{x:.06883500000000006,y:.07004991286791806},{x:.06634546250000009,y:.06886359160177957},{x:.0638559250000001,y:.06752022596072697},{x:.06136638750000012,y:.0660127493986957},{x:.05887685000000013,y:.06433510716802145},{x:.05638731250000015,y:.06248229364897291},{x:.053897775000000175,y:.06045038321106202},{x:.05140823750000019,y:.05823655441586117},{x:.048918700000000204,y:.055839107412109526},{x:.04642916250000022,y:.05325747441586117},{x:.04393962500000023,y:.05049222321106202},{x:.04145008750000026,y:.047545053648972956},{x:.038960550000000274,y:.04441878716802149},{x:.03647101250000029,y:.04111734939869574},{x:.0339814750000003,y:.03764574596072702},{x:.03149193750000032,y:.034010031601779636},{x:.02900240000000034,y:.03021727286791814},{x:.02651286250000036,y:.026275504536001},{x:.024023325000000373,y:.022193680076609396},{x:.021533787500000387,y:.017981616452923805},{x:.019044250000000405,y:.013649933595881474},{x:.016554712500000426,y:.00920998892877074},{x:.014065175000000442,y:.0046738073449396865},{x:.011575637500000457,y:5400707033003521e-20},{x:.009086100000000473,y:-.004636278132081827},{x:.006596562500000487,y:-.009383479936300985},{x:.004107025000000513,y:-.01417367910655569},{x:.0016174875000005274,y:-.018992691314014522},{x:-.000872049999999458,y:-.02382615458789039}],color:"primary",fill:!1},path8704:{type:"path",points:[{x:.39745405000000034,y:-.02382615458789039},{x:.3949645125000003,y:-.01899269131401453},{x:.39247497500000034,y:-.014173679106555696},{x:.3899854375000004,y:-.009383479936300985},{x:.38749590000000045,y:-.004636278132081827},{x:.3850063625000004,y:5400707033003174e-20},{x:.3825168250000004,y:.004673807344939683},{x:.3800272875000004,y:.009209988928770731},{x:.3775377500000005,y:.013649933595881476},{x:.37504821250000053,y:.017981616452923805},{x:.3725586750000005,y:.022193680076609393},{x:.3700691375000005,y:.026275504536001},{x:.3675796000000005,y:.030217272867918137},{x:.3650900625000006,y:.034010031601779636},{x:.3626005250000006,y:.03764574596072702},{x:.3601109875000006,y:.04111734939869574},{x:.35762145000000056,y:.04441878716802149},{x:.3551319125000006,y:.04754505364897295},{x:.3526423750000007,y:.05049222321106203},{x:.3501528375000007,y:.05325747441586117},{x:.3476633000000007,y:.055839107412109526},{x:.34517376250000065,y:.05823655441586117},{x:.34268422500000073,y:.06045038321106201},{x:.3401946875000007,y:.06248229364897292},{x:.3377051500000008,y:.06433510716802145},{x:.33521561250000076,y:.0660127493986957},{x:.33272607500000073,y:.06752022596072697},{x:.3302365375000008,y:.06886359160177957},{x:.3277470000000008,y:.07004991286791806},{x:.3252574625000008,y:.07108722453600091},{x:.32276792500000084,y:.0719844800766093},{x:.32027838750000087,y:.07275149645292371},{x:.3177888500000009,y:.07339889359588138},{x:.3152993125000009,y:.07393802892877062},{x:.3128097750000009,y:.07438092734493956},{x:.31032023750000093,y:.07474020707032991},{x:.30783070000000096,y:.07502900186791804},{x:.305341162500001,y:.07526088006369888},{x:.30285162500000096,y:.07544976089344414},{x:.300362087500001,y:.0756098286859853},{x:.297872550000001,y:.07575544541210943},{x:.29538301000000095,y:.0756098286859853},{x:.292893470000001,y:.07544976089344414},{x:.290403930000001,y:.07526088006369887},{x:.287914390000001,y:.07502900186791804},{x:.28542485000000095,y:.0747402070703299},{x:.2829353100000009,y:.07438092734493956},{x:.2804457700000009,y:.07393802892877062},{x:.2779562300000009,y:.07339889359588138},{x:.2754666900000009,y:.07275149645292371},{x:.2729771500000009,y:.0719844800766093},{x:.2704876100000009,y:.07108722453600091},{x:.26799807000000087,y:.07004991286791806},{x:.26550853000000085,y:.06886359160177957},{x:.26301899000000084,y:.06752022596072697},{x:.26052945000000083,y:.0660127493986957},{x:.2580399100000008,y:.06433510716802145},{x:.2555503700000008,y:.06248229364897291},{x:.2530608300000008,y:.06045038321106202},{x:.2505712900000008,y:.05823655441586117},{x:.24808175000000077,y:.055839107412109526},{x:.24559221000000075,y:.05325747441586117},{x:.24310267000000074,y:.05049222321106202},{x:.24061313000000073,y:.047545053648972956},{x:.23812359000000072,y:.04441878716802149},{x:.2356340500000007,y:.04111734939869574},{x:.2331445100000007,y:.03764574596072702},{x:.23065497000000068,y:.034010031601779636},{x:.22816543000000067,y:.03021727286791814},{x:.22567589000000066,y:.026275504536001},{x:.22318635000000064,y:.022193680076609396},{x:.22069681000000063,y:.017981616452923805},{x:.21820727000000062,y:.013649933595881474},{x:.2157177300000006,y:.00920998892877074},{x:.2132281900000006,y:.0046738073449396865},{x:.21073865000000058,y:5400707033003521e-20},{x:.20824911000000057,y:-.004636278132081827},{x:.20575957000000056,y:-.009383479936300985},{x:.20327003000000055,y:-.01417367910655569},{x:.20078049000000053,y:-.018992691314014522},{x:.19829095000000052,y:-.02382615458789039}],color:"primary",fill:!1},path8706:{type:"path",points:[{x:-.4023286499999996,y:-.022544054587890106},{x:-.5293590499999994,y:-.022544054587890106}],color:"primary",fill:!1},"path8706-5":{type:"path",points:[{x:.5261604500000003,y:-.027111054587890093},{x:.39913004999999946,y:-.027111054587890093}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0040821499999992295,y:.22997364541210996},bottom1:{type:"text",text:"{VAL}",x:-.004252755294839927,y:-.22997364541210996}},refblocks:{left1:{x:-.5504428500000003,y:-.021272154587890446},right1:{x:.5504428500000005,y:-.026521254587889898}},bounds:{minX:-.5786012910000002,maxX:.5786012910000005,minY:-.22997364541210996,maxY:.22997364541210996,width:1.1572025820000007,height:.4599472908242199,centerX:11102230246251565e-32,centerY:0},circles:{}},{paths:paths20,texts:texts22,bounds:bounds20,refblocks:refblocks20,circles:circles19}=inductor_default,inductor_right_default={primitives:[...Object.values(paths20),...Object.values(circles19),{...texts22.top1,anchor:"middle_bottom"},{...texts22.bottom1,anchor:"middle_top"}],ports:[{...refblocks20.left1,labels:["1"]},{...refblocks20.right1,labels:["2"]}],size:{width:bounds20.width,height:bounds20.height},center:{x:bounds20.centerX,y:bounds20.centerY}},inductor_up_default=rotateSymbol(inductor_right_default,"up"),inductor_down_default=flipSymbolOverXAxis(inductor_up_default),inductor_left_default=flipSymbolOverYAxis(inductor_right_default),laser_diode_default={paths:{path11:{type:"path",points:[{x:-.5274831500000006,y:-.05991764999999982},{x:-.14891374999999996,y:-.06254064999999964}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.13221874999999983,y:-.048856449999999496},{x:-.13236425000000063,y:-.18114814999999918}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.13236425000000063,y:.08343525000000018},{x:.13221874999999983,y:-.048856449999999496}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.13236425000000063,y:-.18114814999999984},{x:-.13236425000000063,y:.08343525000000018}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.13221874999999983,y:.08343525000000018},{x:.13221874999999983,y:-.18114814999999984}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.13582535000000018,y:-.04942524999999942},{x:.533952450000001,y:-.059917649999999156}],color:"primary",fill:!1},"path25-0-9-8":{type:"path",points:[{x:-.02944535000000048,y:.39378525000000053},{x:-.05325954999999993,y:.4660362500000006},{x:-.07725114999999949,y:.39386225000000086}],color:"primary",fill:!0},"path78-6-5-5":{type:"path",points:[{x:-.05361965000000035,y:.27387525000000035},{x:-.053592050000000446,y:.2865022500000003},{x:-.05330205000000077,y:.41436425000000066},{x:-.05311205000000019,y:.4152642500000008}],color:"primary",fill:!1},"path25-0-9-8-2":{type:"path",points:[{x:.06865195000000024,y:.39378525000000053},{x:.044837750000000565,y:.4660362500000006},{x:.02084615000000123,y:.39386225000000086}],color:"primary",fill:!0},"path78-6-5-5-7":{type:"path",points:[{x:.044477650000000146,y:.27387525000000035},{x:.044505250000000274,y:.2865022500000003},{x:.04479524999999995,y:.41436425000000066},{x:.04498525000000053,y:.4152642500000008}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:.03124844999999965,y:.05895145000000013},{x:.03124844999999965,y:-.16452955000000036}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.25206924999999947,y:.3769550499999994},bottom1:{type:"text",text:"{VAL}",x:-.006614550000000552,y:-.4660362500000004}},refblocks:{left1:{x:-.54139845,y:-.060770450000000364},right1:{x:.5413984499999995,y:-.0597740500000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.4660362500000004,maxY:.4660362500000006,width:1.1391137819999995,height:.932072500000001,centerX:-2220446049250313e-31,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000003116,y:-.05278935000000051,radius:.28854213,color:"primary",fill:!1}}};laser_diode_default.bounds.width+=.2;var laser_diode_horz_default=modifySymbol(laser_diode_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol9=rotateSymbol(laser_diode_horz_default),texts23=rotatedSymbol9.primitives.filter(lV=>lV.type==="text"),ref6=texts23.find(lV=>lV.text==="{VAL}");ref6.x=-.52,ref6.anchor="middle_right";var laser_diode_vert_default=rotatedSymbol9,led_default={paths:{path45:{type:"path",points:[{x:.13585750000000063,y:-.003696399999999045},{x:-.12872579999999934,y:-.13598810000000228}],color:"primary",fill:!1},"path1-8":{type:"path",points:[{x:.12763670000000094,y:-.003920199999999596},{x:.5265564000000009,y:-.003920199999999596}],color:"primary",fill:!1},path46:{type:"path",points:[{x:-.12872579999999934,y:.12859530000000063},{x:.13585750000000063,y:-.003696399999999045}],color:"primary",fill:!1},path47:{type:"path",points:[{x:-.12872579999999934,y:-.13598810000000228},{x:-.12872579999999934,y:.12859530000000063}],color:"primary",fill:!1},path48:{type:"path",points:[{x:.13585750000000063,y:.12859530000000063},{x:.13585750000000063,y:-.13598810000000228}],color:"primary",fill:!1},path49:{type:"path",points:[{x:-.13076959999999938,y:-.003696399999999045},{x:-.5256007999999994,y:-.003696399999999045}],color:"primary",fill:!1},path25:{type:"path",points:[{x:-.1557438999999996,y:.28545279999999806},{x:-.2530861999999994,y:.3023319999999998},{x:-.21878339999999952,y:.20956920000000068}],color:"primary",fill:!0},path78:{type:"path",points:[{x:-.08000449999999937,y:.16590799999999817},{x:-.09202799999999911,y:.1748410000000007},{x:-.2137844999999996,y:.26529680000000155},{x:-.2144144999999993,y:.2662468000000011}],color:"primary",fill:!1},"path25-0":{type:"path",points:[{x:.021722400000000697,y:.30658939999999646},{x:-.07561989999999952,y:.3234685999999982},{x:-.04131709999999922,y:.23070579999999907}],color:"primary",fill:!0},"path78-6":{type:"path",points:[{x:.09746180000000093,y:.18704459999999656},{x:.08543830000000074,y:.19597759999999909},{x:-.0363181999999993,y:.28643339999999995},{x:-.03694819999999943,y:.2873833999999995}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{VAL}",x:-.009561699999999451,y:-.3234685999999982},right1:{type:"text",text:"{REF}",x:.31464070000000044,y:.22386570000000106}},refblocks:{left1:{x:-.5362092999999997,y:-.004432900000001183},right1:{x:.5362093000000003,y:-.004886400000003732}},bounds:{minX:-.5643677409999996,maxX:.5643677410000003,minY:-.3234685999999982,maxY:.3234685999999982,width:1.128735482,height:.6469371999999964,centerX:33306690738754696e-32,centerY:0},circles:{}},{paths:paths21,texts:texts24,bounds:bounds21,refblocks:refblocks21,circles:circles20}=led_default,led_right_default={primitives:[...Object.values(paths21),...Object.values(circles20),{...texts24.bottom1,anchor:"middle_top"},{...texts24.right1,anchor:"middle_bottom"}],ports:[{...refblocks21.left1,labels:["1"]},{...refblocks21.right1,labels:["2"]}],size:{width:bounds21.width,height:bounds21.height},center:{x:bounds21.centerX,y:bounds21.centerY}},led_down_default=rotateSymbol(led_right_default,"down"),led_left_default=flipSymbolOverYAxis(led_right_default),baseSymbol=rotateSymbol(led_right_default,"up"),modifiedSymbol={...baseSymbol,primitives:baseSymbol.primitives.map(lV=>lV.type==="path"&&(lV.points.length===3||lV.points.length===4)?{...lV,points:lV.points.map(J=>({x:J.x,y:-J.y+2*baseSymbol.center.y}))}:lV)},led_up_default=modifiedSymbol,light_dependent_resistor_default={paths:{path11:{type:"path",points:[{x:-.5053201665812097,y:-.010839730805804138},{x:-.1829962316128657,y:-.010839730805804138}],color:"primary",fill:!1},"path11-2":{type:"path",points:[{x:-.1674747072814866,y:-.11471502212593476},{x:-.1674747072814866,y:.07736981415388478}],color:"primary",fill:!1},"path11-5":{type:"path",points:[{x:-.1674747072814866,y:-.11632056223474518},{x:.16018133830019532,y:-.11632056223474518}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:-.1674747072814866,y:.07736981415388478},{x:.16018133830019532,y:.07736981415388478}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.17205869804197382,y:-.010839950577224311},{x:.5116721586832798,y:-.010839950577224311}],color:"primary",fill:!1},"path11-2-1":{type:"path",points:[{x:.16064490317338742,y:-.11622177498145403},{x:.16064490317338742,y:.07727135655772521}],color:"primary",fill:!1},"path25-0-9":{type:"path",points:[{x:-.40391896081308554,y:-.2111951150487743},{x:-.32538818309991635,y:-.1776462385858042},{x:-.33843942905204627,y:-.26928059146906413}],color:"primary",fill:!0},"path78-6-5":{type:"path",points:[{x:-.4470989190253618,y:-.3351265263866847},{x:-.4385525777085817,y:-.32468848279378437},{x:-.3520048317368336,y:-.21897414423109507},{x:-.3516268465799328,y:-.21798517284109487}],color:"primary",fill:!1},"path25-0-9-0":{type:"path",points:[{x:-.30220674110432255,y:-.3403193953841548},{x:-.22367596339115314,y:-.30677051892118534},{x:-.23672720934328306,y:-.3984048718044453}],color:"primary",fill:!0},"path78-6-5-9":{type:"path",points:[{x:-.3453866993165988,y:-.464250806722065},{x:-.3368403579998187,y:-.45381276312916397},{x:-.2502926120280704,y:-.34809842456647466},{x:-.24991462687116983,y:-.34710945317647446}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.1679477702432366,y:-.40859918889256375},bottom1:{type:"text",text:"{VAL}",x:-.006410773639930811,y:.464250806722065}},refblocks:{left1:{x:-.5247194309452994,y:-.009902515585214156},right1:{x:.5247194309452992,y:-.010997416799653603}},bounds:{minX:-.5520103866874645,maxX:.5520103866874643,minY:-.5085991888925637,maxY:.464250806722065,width:1.1040207733749288,height:.6228499956146287,centerX:-11102230246251565e-32,centerY:-.022174191085249373},circles:{path1:{type:"circle",x:-.003646732950281173,y:-.018672603986024328,radius:.2796529289238723,color:"primary",fill:!1}}},{paths:paths22,texts:texts25,bounds:bounds22,refblocks:refblocks22,circles:circles21}=light_dependent_resistor_default,light_dependent_resistor_horz_default={primitives:[...Object.values(paths22),...Object.values(circles21),{...texts25.top1,anchor:"middle_left",x:0},{...texts25.bottom1,anchor:"middle_left",x:0}],ports:[{...refblocks22.left1,labels:["1"]},{...refblocks22.right1,labels:["2"]}],size:{width:bounds22.width,height:bounds22.height},center:{x:bounds22.centerX,y:bounds22.centerY}},rotatedSymbol10=rotateSymbol(light_dependent_resistor_horz_default),texts26=rotatedSymbol10.primitives.filter(lV=>lV.type==="text"),val6=texts26.find(lV=>lV.text==="{VAL}");val6.x=-.35,val6.y=0,val6.anchor="middle_right";var ref7=texts26.find(lV=>lV.text==="{REF}");ref7.y=0,ref7.x=.35,ref7.anchor="middle_left";var light_dependent_resistor_vert_default=rotatedSymbol10,mosfet_depletion_normally_on_default={paths:{path208:{type:"path",points:[{x:.3843021704999998,y:.13154093999999894},{x:.5165938705000004,y:-.13304206000000107}],color:"primary",fill:!1},path209:{type:"path",points:[{x:.25201047050000014,y:-.13304206000000107},{x:.3843021704999998,y:.13154093999999894}],color:"primary",fill:!1},path210:{type:"path",points:[{x:.5165938705000004,y:-.13304206000000107},{x:.25201047050000014,y:-.13304206000000107}],color:"primary",fill:!1},path211:{type:"path",points:[{x:.25201047050000014,y:.13154093999999894},{x:.5165938705000004,y:.13154093999999894}],color:"primary",fill:!1},path212:{type:"path",points:[{x:.11971887050000074,y:-.39762406000000006},{x:.3843021704999998,y:-.39762406000000006}],color:"primary",fill:!1},path213:{type:"path",points:[{x:.3843021704999998,y:.39612494},{x:.11971887050000074,y:.39612494}],color:"primary",fill:!1},path214:{type:"path",points:[{x:.11971887050000074,y:.5284169399999996},{x:.11971887050000074,y:.18445994}],color:"primary",fill:!1},path215:{type:"path",points:[{x:.11971887050000074,y:-.5299150600000004},{x:.11971887050000074,y:-.0007480600000011606}],color:"primary",fill:!1},path216:{type:"path",points:[{x:.3843021704999998,y:-.39762469000000067},{x:.3843021704999998,y:.3961256399999993}],color:"primary",fill:!1},path217:{type:"path",points:[{x:-.1448644295000001,y:.2638359399999999},{x:-.1448644295000001,y:-.26533006000000015}],color:"primary",fill:!1},path218:{type:"path",points:[{x:-.22423942949999898,y:-.2653310599999994},{x:-.22423942949999898,y:.26383493999999885}],color:"primary",fill:!1},path219:{type:"path",points:[{x:-.5417394294999998,y:-.26533006000000015},{x:-.22423942949999898,y:-.2653320600000004}],color:"primary",fill:!1},path220:{type:"path",points:[{x:-.1448644295000001,y:-.18595506000000128},{x:.11971897050000013,y:-.18595506000000128}],color:"primary",fill:!1},path221:{type:"path",points:[{x:-.1448644295000001,y:.18446093999999924},{x:.11971897050000013,y:.18446093999999924}],color:"primary",fill:!1},path222:{type:"path",points:[{x:-.06548942950000036,y:-.0007480600000011606},{x:.11971887050000074,y:-.0007480600000011606}],color:"primary",fill:!1}},texts:{right1:{type:"text",text:"{VAL}",x:.5715500704999998,y:.02044358999999929},right2:{type:"text",text:"{REF}",x:.5701646705000005,y:.2085436499999993}},refblocks:{top1:{x:.12018067049999992,y:.5432738300000004},bottom1:{x:.11982247050000083,y:-.5432738300000004},left1:{x:-.5433916295000003,y:-.2663988600000007}},bounds:{minX:-.5715500705000003,maxX:.5715500704999998,minY:-.5714322710000004,maxY:.5714322710000004,width:1.1431001410000001,height:1.1428645420000008,centerX:-2220446049250313e-31,centerY:0},circles:{}},{paths:paths23,texts:texts27,bounds:bounds23,refblocks:refblocks23}=mosfet_depletion_normally_on_default,mosfet_depletion_normally_on_horz_default={primitives:[...Object.values(paths23),{...texts27.right1,anchor:"middle_left"},{...texts27.right2,anchor:"middle_left"}],ports:[{...refblocks23.top1,labels:["1"]},{...refblocks23.bottom1,labels:["2"]},{...refblocks23.left1,labels:["3"]}],size:{width:bounds23.width+.4,height:bounds23.height},center:{x:bounds23.centerX+.2,y:bounds23.centerY}},rotated3=rotateSymbol(mosfet_depletion_normally_on_horz_default),ref8=rotated3.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val7=rotated3.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref8.anchor="middle_top",val7.anchor="middle_top",ref8.x=val7.x,val7.y+=.15;var mosfet_depletion_normally_on_vert_default=rotated3,mushroom_head_normally_open_momentary_default={paths:{"path12-1-8-6-9":{type:"path",points:[{x:.005962250000000502,y:.06921149999999976},{x:.005962250000000502,y:-.005086499999999106}],color:"primary",fill:!1},"path12-1-5-6":{type:"path",points:[{x:-.48740705000000073,y:-.09299450000000142},{x:-.17310075000000058,y:-.09299450000000142}],color:"primary",fill:!1},"path12-1-8-0":{type:"path",points:[{x:-.16008695000000017,y:-.010660500000000184},{x:.1719709499999995,y:-.010660500000000184}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.1954987499999996,y:-.09260549999999945},{x:.4881436499999996,y:-.09260549999999945}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.09950044999999985,y:.05839450000000035},{x:-.09950104999999976,y:.06197449999999982},{x:-.09932044999999956,y:.06550449999999941},{x:-.09896044999999987,y:.0690104999999992},{x:-.09860045000000017,y:.07250049999999852},{x:-.09806045000000019,y:.07593049999999835},{x:-.09735344999999995,y:.07929949999999941},{x:-.09663345000000056,y:.08265950000000011},{x:-.09578045000000035,y:.08599949999999978},{x:-.09475245000000054,y:.08924949999999932},{x:-.09379245000000047,y:.09255949999999835},{x:-.09254545000000025,y:.09567949999999925},{x:-.09120844999999989,y:.09877950000000091},{x:-.08986644999999971,y:.10186950000000117},{x:-.08839545000000015,y:.10492949999999901},{x:-.08675845000000049,y:.10783949999999898},{x:-.08506245000000057,y:.11069950000000084},{x:-.08334244999999996,y:.11360950000000081},{x:-.08146945000000017,y:.11638949999999859},{x:-.0795824500000002,y:.11916949999999993},{x:-.07752845000000086,y:.12180949999999946},{x:-.07546944999999994,y:.12442949999999975},{x:-.07325945000000011,y:.12693950000000065},{x:-.07104145000000006,y:.129449499999998},{x:-.06867544999999975,y:.13182950000000027},{x:-.06628845000000005,y:.1341695000000005},{x:-.06379544999999975,y:.1364194999999988},{x:-.06114145000000004,y:.13848950000000038},{x:-.05848745000000033,y:.1405694999999998},{x:-.05584345000000024,y:.14261950000000034},{x:-.05306845000000049,y:.14449950000000022},{x:-.05029345000000074,y:.14639950000000113},{x:-.04738844999999969,y:.14811950000000174},{x:-.04437445000000029,y:.14969949999999876},{x:-.04134744999999995,y:.1513194999999996},{x:-.038316449999999946,y:.15275949999999838},{x:-.03515645000000056,y:.15407949999999992},{x:-.03204444999999989,y:.15536950000000083},{x:-.028770450000000558,y:.15655950000000018},{x:-.025468450000000864,y:.15757949999999887},{x:-.02213745000000067,y:.15863950000000138},{x:-.018790450000000014,y:.15942949999999811},{x:-.01536325000000005,y:.16012949999999826},{x:-.011980249999999693,y:.16082950000000018},{x:-.008442250000000762,y:.16141949999999916},{x:-.004890650000000107,y:.1617494999999991},{x:-.0013406500000003874,y:.16204949999999663},{x:.002252350000000014,y:.16214949999999817},{x:.005893849999999645,y:.16214949999999817},{x:.009534849999998762,y:.16214949999999817},{x:.013136849999999534,y:.16204949999999663},{x:.016683149999999536,y:.1617494999999991},{x:.020231149999998976,y:.1614494999999998},{x:.023727149999999142,y:.16104949999999896},{x:.02715474999999934,y:.16012949999999826},{x:.03057874999999921,y:.15952949999999966},{x:.03395574999999962,y:.15867949999999986},{x:.03725995000000015,y:.15758950000000027},{x:.0405679499999998,y:.15652949999999954},{x:.04379994999999948,y:.15541949999999893},{x:.04695294999999966,y:.15409950000000094},{x:.050101949999999285,y:.15280950000000004},{x:.053191949999999544,y:.1513194999999996},{x:.05617794999999948,y:.1497395000000008},{x:.05916694999999983,y:.14811950000000174},{x:.06206694999999929,y:.14639950000000113},{x:.06487294999999982,y:.1445595000000015},{x:.06767095000000012,y:.14269950000000264},{x:.07038294999999994,y:.14069950000000198},{x:.07299194999999958,y:.1385795000000023},{x:.07560095000000011,y:.13645950000000262},{x:.07809294999999938,y:.13420950000000254},{x:.08047994999999997,y:.13187950000000193},{x:.08287894999999956,y:.1295395000000017},{x:.08515495000000062,y:.12706950000000106},{x:.08729294999999926,y:.12451950000000167},{x:.08944594999999911,y:.12192950000000202},{x:.0914679499999993,y:.11930950000000173},{x:.09337295000000001,y:.1165295000000004},{x:.0971669499999992,y:.11101949999999938},{x:.10043494999999947,y:.10512450000000229},{x:.10311494999999926,y:.09890950000000132},{x:.10444094999999987,y:.09581950000000106},{x:.10564094999999973,y:.09262950000000103},{x:.10667494999999949,y:.08935950000000226},{x:.10769994999999977,y:.08610950000000273},{x:.1085699499999997,y:.08279950000000369},{x:.10927795000000007,y:.07942950000000337},{x:.10999794999999946,y:.07605950000000128},{x:.11051994999999959,y:.07262950000000146},{x:.11088394999999984,y:.06913950000000213},{x:.11124394999999954,y:.0656495000000028},{x:.11142394999999983,y:.062099500000002195},{x:.11142394999999983,y:.05854350000000075},{x:.10483595000000001,y:.05853049999999982},{x:.0982479500000002,y:.058516500000001415},{x:.09164495000000006,y:.058518500000001694},{x:.08505695000000024,y:.05850850000000207},{x:.078453950000001,y:.058509500000001324},{x:.07186595000000029,y:.058496500000000395},{x:.06526295000000104,y:.05849750000000142},{x:.058674950000001225,y:.058485499999999746},{x:.05208695000000052,y:.058473499999999845},{x:.04548395000000127,y:.058475500000000125},{x:.038895950000001456,y:.05846150000000172},{x:.03230795000000075,y:.058448499999999015},{x:.025704950000001503,y:.058453499999998826},{x:.019101950000001366,y:.05845449999999808},{x:.01251395000000155,y:.05844149999999715},{x:.005925950000001734,y:.058427499999998744},{x:-.0006560499999990199,y:.05842149999999968},{x:-.007240049999999165,y:.05841449999999959},{x:-.01382404999999931,y:.05840850000000053},{x:-.020406049999999176,y:.05840250000000147},{x:-.02699004999999932,y:.058394500000002125},{x:-.03357404999999947,y:.05838950000000409},{x:-.04015604999999933,y:.05838350000000503},{x:-.04674004999999948,y:.05837450000000466},{x:-.05332205000000023,y:.058368500000005596},{x:-.05990605000000038,y:.058360500000006255},{x:-.06649005000000052,y:.058355500000006444},{x:-.07307205000000039,y:.05834950000000738},{x:-.07965605000000053,y:.05834150000000804},{x:-.08624005000000068,y:.05833550000000898},{x:-.09282205000000143,y:.05833050000001094}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.01254745000000046,y:.26612850000000243},bottom1:{type:"text",text:"{VAL}",x:-.16130964999999975,y:-.2661284999999989}},refblocks:{left1:{x:-.4717985499999999,y:-.09296750000000031},right1:{x:.4717985499999999,y:-.09299249999999937}},bounds:{minX:-.4999569909999999,maxX:.4999569909999999,minY:-.2661284999999989,maxY:.26612850000000243,width:.9999139819999998,height:.5322570000000013,centerX:0,centerY:17763568394002505e-31},circles:{}},{paths:paths24,texts:texts28,bounds:bounds24,refblocks:refblocks24,circles:circles22}=mushroom_head_normally_open_momentary_default,mushroom_head_normally_open_momentary_horz_default={primitives:[...Object.values(paths24),...Object.values(circles22),{...texts28.top1,anchor:"middle_bottom",x:0},{...texts28.bottom1,anchor:"middle_top",x:0}],ports:[{...refblocks24.left1,labels:["1"]},{...refblocks24.right1,labels:["2"]}],size:{width:bounds24.width,height:bounds24.height},center:{x:bounds24.centerX+.006,y:bounds24.centerY+.06}},rotated4=rotateSymbol(mushroom_head_normally_open_momentary_horz_default),ref9=rotated4.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val8=rotated4.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref9.anchor="middle_left",val8.anchor="middle_right",ref9.x=ref9.x-.03,ref9.y=ref9.y,val8.x=val8.x,val8.y=0;var mushroom_head_normally_open_momentary_vert_default=rotated4,n_channel_d_mosfet_transistor_default={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.09373835550000087,y:-.18559775000000034},{x:.09280835550000122,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.27419885550000034,y:.04077644999999963},{x:.27419885550000034,y:-.030615650000000327},{x:.2024438555000001,y:.004662050000000084}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.16715385000000005},{x:.05111245550000065,y:.10592255000000006}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths25,texts:texts29,bounds:bounds25,refblocks:refblocks25,circles:circles23}=n_channel_d_mosfet_transistor_default,n_channel_d_mosfet_transistor_horz_default={primitives:[...Object.values(paths25),...Object.values(circles23),{...texts29.top1,anchor:"middle_right",x:0},{...texts29.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks25.top1,labels:["1","drain"]},{...refblocks25.bottom1,labels:["2","source"]},{...refblocks25.left1,labels:["3","gate"]}],size:{width:bounds25.width,height:bounds25.height},center:{x:bounds25.centerX,y:bounds25.centerY}},rotatedSymbol11=rotateSymbol(n_channel_d_mosfet_transistor_horz_default),texts30=rotatedSymbol11.primitives.filter(lV=>lV.type==="text"),val9=texts30.find(lV=>lV.text==="{VAL}");val9.x=-.35,val9.y=0,val9.anchor="middle_right";var ref10=texts30.find(lV=>lV.text==="{REF}");ref10.y=0,ref10.x=.35,ref10.anchor="middle_left";var n_channel_d_mosfet_transistor_vert_default=rotatedSymbol11,n_channel_e_mosfet_transistor_default={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-8-3-7":{type:"path",points:[{x:.09448295549999952,y:-.14677165000000048},{x:.09319295549999951,y:-.06899565000000041}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},"path2-8-3":{type:"path",points:[{x:.09440455549999993,y:.07703174999999951},{x:.09311455549999992,y:.15480774999999958}],color:"primary",fill:!1},"path2-8-3-2":{type:"path",points:[{x:.09448295549999952,y:-.03486995000000048},{x:.09319295549999951,y:.042906049999999585}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.2741991554999996,y:.040776550000000134},{x:.2741991554999996,y:-.030615549999999825},{x:.2024441554999994,y:.004662350000000037}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.10847375000000059},{x:.05111245550000065,y:.1059225499999994}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths26,texts:texts31,bounds:bounds26,refblocks:refblocks26,circles:circles24}=n_channel_e_mosfet_transistor_default,n_channel_e_mosfet_transistor_horz_default={primitives:[...Object.values(paths26),...Object.values(circles24),{...texts31.top1,anchor:"middle_right",x:0},{...texts31.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks26.top1,labels:["1","drain"]},{...refblocks26.bottom1,labels:["2","source"]},{...refblocks26.left1,labels:["3","gate"]}],size:{width:bounds26.width,height:bounds26.height},center:{x:bounds26.centerX,y:bounds26.centerY}},rotatedSymbol12=rotateSymbol(n_channel_e_mosfet_transistor_horz_default),texts32=rotatedSymbol12.primitives.filter(lV=>lV.type==="text"),val10=texts32.find(lV=>lV.text==="{VAL}");val10.x=-.35,val10.y=0,val10.anchor="middle_right";var ref11=texts32.find(lV=>lV.text==="{REF}");ref11.y=0,ref11.x=.35,ref11.anchor="middle_left";var n_channel_e_mosfet_transistor_vert_default=rotatedSymbol12,njfet_transistor_default={paths:{path11:{type:"path",points:[{x:-.38509374449999945,y:.00367374999999992},{x:.05876225550000025,y:.00629674999999974}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:-.18559775000000034},{x:.07322065550000101,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:-.53233025},{x:.2836366555000003,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2912404555000001,y:.5298821500000002},{x:.29184045550000004,y:.10355795000000012}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:-.10788365000000044},{x:.29146205549999915,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.07425025549999931,y:.10232114999999986},{x:.29146205549999915,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:-.0829488445000004,y:-.06153284999999986},{x:-.0829488445000004,y:.06535114999999969},{x:.005945155500000077,y:.0026521499999998532}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.15156024449999927,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.0393233555000001,y:.42489435000000064}},refblocks:{top1:{x:.2843894554999997,y:-.5519248499999992},bottom1:{x:.29108805550000105,y:.5519248499999994},left1:{x:-.3990097444999998,y:.004526550000000462}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:27755575615628914e-33,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths27,texts:texts33,bounds:bounds27,refblocks:refblocks27,circles:circles25}=njfet_transistor_default,njfet_transistor_horz_default={primitives:[...Object.values(paths27),...Object.values(circles25),{...texts33.top1,anchor:"middle_right",x:0},{...texts33.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks27.top1,labels:["1","drain"]},{...refblocks27.bottom1,labels:["2","source"]},{...refblocks27.left1,labels:["3","gate"]}],size:{width:bounds27.width,height:bounds27.height},center:{x:bounds27.centerX,y:bounds27.centerY}},rotatedSymbol13=rotateSymbol(njfet_transistor_horz_default),texts34=rotatedSymbol13.primitives.filter(lV=>lV.type==="text"),val11=texts34.find(lV=>lV.text==="{VAL}");val11.x=-.35,val11.y=0,val11.anchor="middle_right";var ref12=texts34.find(lV=>lV.text==="{REF}");ref12.y=0,ref12.x=.35,ref12.anchor="middle_left";var njfet_transistor_vert_default=rotatedSymbol13,npn_bipolar_transistor_default={paths:{path11:{type:"path",points:[{x:-.3850939444999988,y:-.0036735999999999436},{x:.0587620555000008,y:-.0062965999999997635}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:.07400475550000118,y:.2689528999999997},{x:.07335475550000092,y:-.2789230000000007}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:.2754149555000005,y:.24180210000000013},{x:.07955815550000045,y:.10822479999999968}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:.2868554555000009,y:-.24134789999999984},{x:.09194705550000082,y:-.10807689999999992}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2851204555,y:.25311099999999964},{x:.2860204555000001,y:.5377640999999995}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:.2851204555,y:-.5376890000000012},{x:.2860204555000001,y:-.25303590000000065}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.1882816555000013,y:-.10097660000000008},{x:.11555775550000158,y:-.20483720000000027},{x:.22425775550000182,y:-.20446720000000007}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.07802354449999971,y:.3596647999999991},bottom1:{type:"text",text:"{VAL}",x:-.0679100444999996,y:-.4129789000000006}},refblocks:{top1:{x:.28556045550000064,y:.5519250999999994},bottom1:{x:.285560455500002,y:-.5519250999999992},left1:{x:-.3990097444999998,y:-.004526300000000871}},bounds:{minX:-.4271681854999998,maxX:.4271681855000001,minY:-.5800835409999991,maxY:.5800835409999994,width:.8543363709999998,height:1.1601670819999985,centerX:13877787807814457e-32,centerY:11102230246251565e-32},circles:{"path1-0":{type:"circle",x:.13862605550000007,y:.003454799999999203,radius:.28854213,color:"primary",fill:!1}}},npn_bipolar_transistor_horz_default=modifySymbol(npn_bipolar_transistor_default).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_right").build(),rotatedSymbol14=rotateSymbol(npn_bipolar_transistor_horz_default),texts36=rotatedSymbol14.primitives.filter(lV=>lV.type==="text"),ref13=texts36.find(lV=>lV.text==="{REF}");ref13.anchor="middle_left";var npn_bipolar_transistor_vert_default=modifySymbol(npn_bipolar_transistor_default).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_left").build(),p_channel_d_mosfet_transistor_default={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.09373835550000087,y:-.18559775000000034},{x:.09280835550000122,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.20244405549999955,y:-.03061555000000049},{x:.20244405549999955,y:.04077654999999947},{x:.2741990554999998,y:.0054987499999992195}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.16715385000000005},{x:.05111245550000065,y:.10592255000000006}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths29,texts:texts37,bounds:bounds29,refblocks:refblocks29,circles:circles27}=p_channel_d_mosfet_transistor_default,p_channel_d_mosfet_transistor_horz_default={primitives:[...Object.values(paths29),...Object.values(circles27),{...texts37.top1,anchor:"middle_right",x:0},{...texts37.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks29.top1,labels:["1","drain"]},{...refblocks29.bottom1,labels:["2","source"]},{...refblocks29.left1,labels:["3","gate"]}],size:{width:bounds29.width,height:bounds29.height},center:{x:bounds29.centerX,y:bounds29.centerY}},rotatedSymbol15=rotateSymbol(p_channel_d_mosfet_transistor_horz_default),texts38=rotatedSymbol15.primitives.filter(lV=>lV.type==="text"),val12=texts38.find(lV=>lV.text==="{VAL}");val12.x=-.35,val12.y=0,val12.anchor="middle_right";var ref14=texts38.find(lV=>lV.text==="{REF}");ref14.y=0,ref14.x=.35,ref14.anchor="middle_left";var p_channel_d_mosfet_transistor_vert_default=rotatedSymbol15,p_channel_e_mosfet_transistor_default={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-8-3-7":{type:"path",points:[{x:.09448295549999952,y:-.14677165000000048},{x:.09319295549999951,y:-.06899565000000041}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},"path2-8-3":{type:"path",points:[{x:.09440455549999993,y:.07703174999999951},{x:.09311455549999992,y:.15480774999999958}],color:"primary",fill:!1},"path2-8-3-2":{type:"path",points:[{x:.09448295549999952,y:-.03486995000000048},{x:.09319295549999951,y:.042906049999999585}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.20244405549999955,y:-.03061555000000049},{x:.20244405549999955,y:.04077654999999947},{x:.2741990554999998,y:.0054987499999992195}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.10847375000000059},{x:.05111245550000065,y:.1059225499999994}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths30,texts:texts39,bounds:bounds30,refblocks:refblocks30,circles:circles28}=p_channel_e_mosfet_transistor_default,p_channel_e_mosfet_transistor_horz_default={primitives:[...Object.values(paths30),...Object.values(circles28),{...texts39.top1,anchor:"middle_right",x:0},{...texts39.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks30.top1,labels:["1","drain"]},{...refblocks30.bottom1,labels:["2","source"]},{...refblocks30.left1,labels:["3","gate"]}],size:{width:bounds30.width,height:bounds30.height},center:{x:bounds30.centerX,y:bounds30.centerY}},rotatedSymbol16=rotateSymbol(p_channel_e_mosfet_transistor_horz_default),texts40=rotatedSymbol16.primitives.filter(lV=>lV.type==="text"),val13=texts40.find(lV=>lV.text==="{VAL}");val13.x=-.35,val13.y=0,val13.anchor="middle_right";var ref15=texts40.find(lV=>lV.text==="{REF}");ref15.y=0,ref15.x=.35,ref15.anchor="middle_left";var p_channel_e_mosfet_transistor_vert_default=rotatedSymbol16,photodiode_default={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:-.012413549999999773},{x:-.14891374999999973,y:-.015036549999999593}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.13221874999999983,y:-.001352349999999447},{x:-.1323642500000004,y:-.13364404999999913}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1323642500000004,y:.13093935000000023},{x:.13221874999999983,y:-.001352349999999447}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1323642500000004,y:-.1336440499999998},{x:-.1323642500000004,y:.13093935000000023}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.13221874999999983,y:.13093935000000023},{x:.13221874999999983,y:-.1336440499999998}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1358253500000004,y:-.001921149999999372},{x:.533952450000001,y:-.012413549999999107}],color:"primary",fill:!1},"path25-0":{type:"path",points:[{x:.19839785000000076,y:.37576625000000075},{x:.16262485000000027,y:.28367475000000053},{x:.26033484999999956,y:.2989800500000006}],color:"primary",fill:!0},"path78-6":{type:"path",points:[{x:.3305468500000004,y:.4264014500000006},{x:.31941585000000017,y:.4163797500000006},{x:.20669285000000048,y:.3148875500000008},{x:.20564285000000115,y:.31448755000000084}],color:"primary",fill:!1},"path25-0-9":{type:"path",points:[{x:.34573984999999974,y:.3493283500000002},{x:.30996684999999946,y:.25723684999999996},{x:.40767644999999963,y:.27254215000000004}],color:"primary",fill:!0},"path78-6-5":{type:"path",points:[{x:.47788845000000046,y:.39996355000000006},{x:.46675745000000024,y:.38994185000000003},{x:.35403445000000033,y:.2884496500000002},{x:.352984450000001,y:.2880496500000005}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.10246254999999982,y:.34693914999999986},bottom1:{type:"text",text:"{VAL}",x:.0012544500000004621,y:-.4264014500000004}},refblocks:{left1:{x:-.5413984499999998,y:-.013266350000000315},right1:{x:.54139845,y:-.012269950000000529}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.4264014500000004,maxY:.4264014500000006,width:1.1391137819999997,height:.852802900000001,centerX:11102230246251565e-32,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000000895,y:-.005285250000000241,radius:.28854213,color:"primary",fill:!1}}},photodiode_horz_default=modifySymbol(photodiode_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol17=rotateSymbol(photodiode_horz_default),texts41=rotatedSymbol17.primitives.filter(lV=>lV.type==="text"),ref16=texts41.find(lV=>lV.text==="{REF}");ref16.y=0,ref16.anchor="middle_left";var photodiode_vert_default=rotatedSymbol17,pjfet_transistor_default={paths:{path11:{type:"path",points:[{x:-.38509374449999945,y:.00367374999999992},{x:.05876225550000025,y:.00629674999999974}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:-.18559775000000034},{x:.07322065550000101,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:-.53233025},{x:.2836366555000003,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2912404555000001,y:.5298821500000002},{x:.29184045550000004,y:.10355795000000012}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:-.10788365000000044},{x:.29146205549999915,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.07425025549999931,y:.10232114999999986},{x:.29146205549999915,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.005945155500000077,y:.06535114999999969},{x:.005945155500000077,y:-.06153284999999986},{x:-.0829488445000004,y:.001166149999999977}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.15156024449999927,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.0393233555000001,y:.42489435000000064}},refblocks:{top1:{x:.2843894554999997,y:-.5519248499999992},bottom1:{x:.29108805550000105,y:.5519248499999994},left1:{x:-.3990097444999998,y:.004526550000000462}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:27755575615628914e-33,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths31,texts:texts42,bounds:bounds31,refblocks:refblocks31,circles:circles29}=pjfet_transistor_default,pjfet_transistor_horz_default={primitives:[...Object.values(paths31),...Object.values(circles29),{...texts42.top1,anchor:"middle_right",x:0},{...texts42.bottom1,anchor:"middle_right"}],ports:[{...refblocks31.top1,labels:["1","drain"]},{...refblocks31.bottom1,labels:["2","source"]},{...refblocks31.left1,labels:["3","gate"]}],size:{width:bounds31.width,height:bounds31.height},center:{x:bounds31.centerX,y:bounds31.centerY}},rotatedSymbol18=rotateSymbol(pjfet_transistor_horz_default),texts43=rotatedSymbol18.primitives.filter(lV=>lV.type==="text"),val14=texts43.find(lV=>lV.text==="{VAL}");val14.x=-.35,val14.y=0,val14.anchor="middle_right";var ref17=texts43.find(lV=>lV.text==="{REF}");ref17.y=0,ref17.x=.35,ref17.anchor="middle_left";var pjfet_transistor_vert_default=rotatedSymbol18,pnp_bipolar_transistor_default={paths:{path11:{type:"path",points:[{x:-.3850939444999988,y:-.0036735999999999436},{x:.0587620555000008,y:-.0062965999999997635}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:.07400475550000118,y:.2689528999999997},{x:.07335475550000092,y:-.2789230000000007}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:.2754149555000005,y:.24180210000000013},{x:.07955815550000045,y:.10822479999999968}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:.2868554555000009,y:-.24134789999999984},{x:.09194705550000082,y:-.10807689999999992}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2851204555,y:.25311099999999964},{x:.2860204555000001,y:.5377640999999995}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:.2851204555,y:-.5376890000000012},{x:.2860204555000001,y:-.25303590000000065}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.15155145550000038,y:-.2268796000000004},{x:.2242753555000001,y:-.12301900000000021},{x:.11557535549999942,y:-.12338900000000042}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.08351674449999891,y:.37335419999999897},bottom1:{type:"text",text:"{VAL}",x:-.0679100444999996,y:-.4129789000000006}},refblocks:{top1:{x:.28556045550000064,y:.5519250999999994},bottom1:{x:.285560455500002,y:-.5519250999999992},left1:{x:-.3990097444999998,y:-.004526300000000871}},bounds:{minX:-.4271681854999998,maxX:.4271681855000001,minY:-.5800835409999991,maxY:.5800835409999994,width:.8543363709999998,height:1.1601670819999985,centerX:13877787807814457e-32,centerY:11102230246251565e-32},circles:{"path1-0":{type:"circle",x:.13862605550000007,y:.003454799999999203,radius:.28854213,color:"primary",fill:!1}}},pnp_bipolar_transistor_horz_default=modifySymbol(pnp_bipolar_transistor_default).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("bottom1",["2"]).labelPort("top1",["1"]).changeTextAnchor("{REF}","middle_right").build(),rotatedSymbol19=rotateSymbol(pnp_bipolar_transistor_horz_default),texts44=rotatedSymbol19.primitives.filter(lV=>lV.type==="text"),ref18=texts44.find(lV=>lV.text==="{REF}");ref18.anchor="middle_left";var pnp_bipolar_transistor_vert_default=modifySymbol(pnp_bipolar_transistor_default).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("bottom1",["2"]).labelPort("top1",["1"]).changeTextAnchor("{REF}","middle_left").build(),potentiometer_default={paths:{path40:{type:"path",points:[{x:-.19250837381256392,y:.32749349347032286},{x:-.25568957329611974,y:.13794979950157282}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.38205206778131373,y:.26431229398676837},{x:-.19250837381256392,y:.32749349347032286}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.2556895732961204,y:.13794979950157416},{x:-.38205206778131373,y:.26431229398676837}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.2556896210551609,y:.39067474071292196},{x:-.12932712656996737,y:.26431224622772653}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199237641156438,y:.2000781031672434},{x:-.5084145145074668,y:.011587352775420667}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:-.011560829633404435,y:.5083596562436202},{x:-.19004023433272543,y:.3298802515442989}],color:"primary",fill:!1},"path40-4":{type:"path",points:[{x:-.19250813152967883,y:-.3220463011874377},{x:-.38205182549842887,y:-.2588651017038819}],color:"primary",fill:!1},"path41-1":{type:"path",points:[{x:-.2556893310132333,y:-.13250260721868767},{x:-.19250813152967883,y:-.3220463011874377}],color:"primary",fill:!1},"path42-7":{type:"path",points:[{x:-.38205182549842753,y:-.258865101703881},{x:-.2556893310132333,y:-.13250260721868767}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:-.12932688428707984,y:-.2588650539448407},{x:-.25568937877227516,y:-.38522754843003404}],color:"primary",fill:!1},"path44-8":{type:"path",points:[{x:-.3199235218327583,y:-.19463091088435758},{x:-.508414272224581,y:-.006140160492534852}],color:"primary",fill:!1},"path44-0-7":{type:"path",points:[{x:-.011641968756381349,y:-.5029938453665972},{x:-.1901213734557028,y:-.3245144406672762}],color:"primary",fill:!1},"path40-4-0":{type:"path",points:[{x:.322578868470321,y:.19315369881256328},{x:.13303517450157099,y:.2563348982961191}],color:"primary",fill:!1},"path41-1-2":{type:"path",points:[{x:.2593976689867663,y:.3826973927813131},{x:.322578868470321,y:.19315369881256328}],color:"primary",fill:!1},"path42-7-1":{type:"path",points:[{x:.13303517450157232,y:.2563348982961198},{x:.2593976689867663,y:.3826973927813131}],color:"primary",fill:!1},"path43-1-8":{type:"path",points:[{x:.38576011571292,y:.2563349460551603},{x:.2593976212277247,y:.12997245156996673}],color:"primary",fill:!1},"path44-8-7":{type:"path",points:[{x:.19516347816724133,y:.3205690891156432},{x:.006672727775418608,y:.509059839507466}],color:"primary",fill:!1},"path44-0-7-1":{type:"path",points:[{x:.5034450312436185,y:.012206154633403798},{x:.32496562654429706,y:.19068555933272457}],color:"primary",fill:!1},"path40-4-8":{type:"path",points:[{x:.3220220261874358,y:-.19326390652967795},{x:.25884082670387976,y:-.382807600498428}],color:"primary",fill:!1},"path41-1-4":{type:"path",points:[{x:.13247833221868577,y:-.25644510601323245},{x:.3220220261874358,y:-.19326390652967795}],color:"primary",fill:!1},"path42-7-0":{type:"path",points:[{x:.2588408267038793,y:-.38280760049842666},{x:.13247833221868577,y:-.25644510601323245}],color:"primary",fill:!1},"path43-1-0":{type:"path",points:[{x:.2588407789448386,y:-.13008265928707896},{x:.38520327343003213,y:-.2564451537722743}],color:"primary",fill:!1},"path44-8-9":{type:"path",points:[{x:.19460663588435567,y:-.3206792968327574},{x:.0061158854925329464,y:-.5091700472245801}],color:"primary",fill:!1},"path44-0-7-3":{type:"path",points:[{x:.5029695703665951,y:-.012397743756380697},{x:.3244901656672745,y:-.19087714845570192}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.2872803000000015,y:.4564494249999992},bottom1:{type:"text",text:"{VAL}",x:-.2872803000000015,y:-.4960514750000007}},refblocks:{top1:{x:.0005126999999993664,y:.5191475},bottom1:{x:-.0005123000000009093,y:-.5191475000000001},left1:{x:-.5191472999999998,y:.0005123250000014234},right1:{x:.5191473000000002,y:-.0005123749999977889}},bounds:{minX:-.5473057409999997,maxX:.5473057410000002,minY:-.5473059410000001,maxY:.547305941,width:1.094611482,height:1.0946118820000001,centerX:2220446049250313e-31,centerY:-5551115123125783e-32},circles:{}},{paths:paths32,texts:texts45,bounds:bounds32,refblocks:refblocks32}=potentiometer_default,potentiometer_horz_default={primitives:[...Object.values(paths32),{...texts45.bottom1,y:.35,anchor:"middle_top"},{...texts45.top1,anchor:"middle_left"}],ports:[{...refblocks32.left1,labels:["1"]},{...refblocks32.right1,labels:["2"]}],size:{width:bounds32.width+.05,height:bounds32.height},center:{x:bounds32.centerX,y:bounds32.centerY}},rotated5=rotateSymbol(potentiometer_horz_default),potentiometer_vert_default=rotated5,potentiometer2_default={paths:{path18:{type:"path",points:[{x:-.53224045,y:-.0008545000000008685},{x:-.26765715000000023,y:-.0008545000000008685}],color:"primary",fill:!1},path19:{type:"path",points:[{x:.2615098499999995,y:-.0008545000000008685},{x:.5260934499999994,y:-.0008545000000008685}],color:"primary",fill:!1},path20:{type:"path",points:[{x:-.0030722500000006647,y:.1314371999999988},{x:.2615107499999998,y:.1314371999999988},{x:.2615107499999998,y:-.13314619999999877},{x:-.26765624999999993,y:-.13314619999999877},{x:-.26765624999999993,y:.1314371999999988},{x:-.0030722499999988884,y:.1314371999999988}],color:"primary",fill:!1},path23:{type:"path",points:[{x:.2782993499999993,y:-.2822274},{x:.17598844999999885,y:-.25486950000000164},{x:.25094144999999823,y:-.1799165000000027}],color:"primary",fill:!0},path24:{type:"path",points:[{x:.2882692499999995,y:-.2921307000000013},{x:.25467554999999953,y:-.16634940000000142},{x:.16229264999999948,y:-.25853690000000284}],color:"primary",fill:!0},path26:{type:"path",points:[{x:-.2985911500000009,y:.2921307000000013},{x:.22988164999999938,y:-.2328032000000011}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.055041669999999154,y:.2009376800000009},bottom1:{type:"text",text:"{VAL}",x:-.10019643000000089,y:-.27857531999999985}},refblocks:{left1:{x:-.5346914500000006,y:-.0013439000000019519},right1:{x:.5346914500000004,y:-.001956599999999753}},bounds:{minX:-.5628498910000006,maxX:.5628498910000004,minY:-.2921307000000013,maxY:.2921307000000013,width:1.125699782000001,height:.5842614000000026,centerX:-11102230246251565e-32,centerY:0},circles:{}},{paths:paths33,texts:texts46,bounds:bounds33,refblocks:refblocks33}=potentiometer2_default,potentiometer2_horz_default={primitives:[...Object.values(paths33),{...texts46.bottom1,anchor:"middle_top"},{...texts46.top1,anchor:"middle_bottom"}],ports:[{...refblocks33.left1,labels:["1"]},{...refblocks33.right1,labels:["2"]}],size:{width:bounds33.width,height:bounds33.height},center:{x:bounds33.centerX,y:bounds33.centerY}},rotated6=rotateSymbol(potentiometer2_horz_default),texts47=rotated6.primitives.filter(lV=>lV.type==="text"),val15=texts47.find(lV=>lV.text==="{VAL}");val15.anchor="middle_right";var ref19=texts47.find(lV=>lV.text==="{REF}");ref19.anchor="middle_left";var potentiometer2_vert_default=rotated6,power_factor_meter_default={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.02812460000000061},{x:-.30105415000000013,y:.02812460000000061}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.02812460000000061},{x:.5339524499999997,y:.02812460000000061}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.16215344999999948,y:.39517610000000025},bottom1:{type:"text",text:"{VAL}",x:-.003375049999999602,y:-.39517610000000003},left1:{type:"text",text:"COS φ",x:-.1453603499999998,y:.013845600000000235}},refblocks:{left1:{x:-.5413984499999998,y:.027271800000000068},right1:{x:.54139845,y:.028268199999999855}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.39517610000000003,maxY:.39517610000000025,width:1.1391137819999997,height:.7903522000000003,centerX:11102230246251565e-32,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03525290000000014,radius:.28854213,color:"primary",fill:!1}}},{paths:paths34,texts:texts48,bounds:bounds34,refblocks:refblocks34,circles:circles30}=power_factor_meter_default,power_factor_meter_horz_default={primitives:[...Object.values(paths34),...Object.values(circles30),{type:"text",text:"{REF}",x:-.15,y:-.42330070000000064,anchor:"middle_top"},{type:"text",text:"{VAL}",x:-.15,y:.42330070000000064,anchor:"middle_bottom"},{type:"text",text:"COS φ",x:0,y:.014279000000000375,anchor:"center"}],ports:[{...refblocks34.left1,labels:["1"]},{...refblocks34.right1,labels:["2"]}],size:{width:bounds34.width,height:bounds34.height},center:{x:bounds34.centerX,y:bounds34.centerY}},rotatedSymbol20=rotateSymbol(power_factor_meter_horz_default),texts49=rotatedSymbol20.primitives.filter(lV=>lV.type==="text"),ref20=texts49.find(lV=>lV.text==="{REF}"),val16=texts49.find(lV=>lV.text==="{VAL}"),text_cos=texts49.find(lV=>lV.text==="COS φ");ref20.x=.35,ref20.y=0,ref20.anchor="middle_left",val16.anchor="middle_right",val16.x=-.35,val16.y=0,text_cos.x=0,text_cos.y=0,text_cos.anchor="center";var power_factor_meter_vert_default=rotatedSymbol20,push_button_normally_closed_momentary_default={paths:{"path12-1-8-6-9-9":{type:"path",points:[{x:.013196749999999646,y:.030446500000000043},{x:.013196749999999646,y:-.0859464999999986}],color:"primary",fill:!1},"path12-1-5-6-4":{type:"path",points:[{x:-.4867871500000014,y:-.0510704999999998},{x:-.17248085000000124,y:-.0510704999999998}],color:"primary",fill:!1},"path12-1-8-0-0":{type:"path",points:[{x:-.15916995000000078,y:-.0915204999999979},{x:.1810634499999999,y:-.0915204999999979}],color:"primary",fill:!1},"path12-1-0-1":{type:"path",points:[{x:.19611864999999984,y:-.05109549999999885},{x:.48876354999999894,y:-.05109549999999885}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.007320949999999549,y:.22461850000000005},bottom1:{type:"text",text:"{VAL}",x:-.1606897500000004,y:-.22461849999999828}},refblocks:{left1:{x:-.47241845000000104,y:-.05104349999999869},right1:{x:.47241845000000016,y:-.051482499999998765}},bounds:{minX:-.500576891000001,maxX:.5005768910000001,minY:-.22461849999999828,maxY:.22461850000000005,width:1.0011537820000012,height:.44923699999999833,centerX:-4440892098500626e-31,centerY:8881784197001252e-31},circles:{"circle-2":{type:"circle",x:-.14387115000000072,y:-.05130149999999922,radius:.023193523,color:"primary",fill:!1},circle:{type:"circle",x:.16803074999999978,y:-.05007949999999717,radius:.023193523,color:"primary",fill:!1}}},{paths:paths35,texts:texts50,bounds:bounds35,refblocks:refblocks35,circles:circles31}=push_button_normally_closed_momentary_default,push_button_normally_closed_momentary_horz_default={primitives:[...Object.values(paths35),...Object.values(circles31),{...texts50.top1,anchor:"middle_left"},{...texts50.bottom1,anchor:"middle_left"}],ports:[{...refblocks35.left1,labels:["1"]},{...refblocks35.right1,labels:["2"]}],size:{width:bounds35.width,height:bounds35.height},center:{x:bounds35.centerX,y:bounds35.centerY}},push_button_normally_closed_momentary_vert_default=rotateSymbol(push_button_normally_closed_momentary_horz_default,"up"),push_button_normally_open_momentary_default={paths:{"path12-1-8-6-9-9":{type:"path",points:[{x:.013196749999999646,y:.15281650000000013},{x:.013196749999999646,y:.036423500000001496}],color:"primary",fill:!1},"path12-1-5-6-4":{type:"path",points:[{x:-.4867871500000014,y:-.0510704999999998},{x:-.17248085000000124,y:-.0510704999999998}],color:"primary",fill:!1},"path12-1-8-0-0":{type:"path",points:[{x:-.15916995000000078,y:.030849500000000418},{x:.1810634499999999,y:.030849500000000418}],color:"primary",fill:!1},"path12-1-0-1":{type:"path",points:[{x:.19611864999999984,y:-.05109549999999885},{x:.48876354999999894,y:-.05109549999999885}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.007320949999999549,y:.22461850000000005},bottom1:{type:"text",text:"{VAL}",x:-.1606897500000004,y:-.22461849999999828}},refblocks:{left1:{x:-.47241845000000104,y:-.05104349999999869},right1:{x:.47241845000000016,y:-.051482499999998765}},bounds:{minX:-.500576891000001,maxX:.5005768910000001,minY:-.22461849999999828,maxY:.22461850000000005,width:1.0011537820000012,height:.44923699999999833,centerX:-4440892098500626e-31,centerY:8881784197001252e-31},circles:{"circle-2":{type:"circle",x:-.14387115000000072,y:-.05130149999999922,radius:.023193523,color:"primary",fill:!1},circle:{type:"circle",x:.16803074999999978,y:-.05007949999999717,radius:.023193523,color:"primary",fill:!1}}},{paths:paths36,texts:texts51,bounds:bounds36,refblocks:refblocks36,circles:circles32}=push_button_normally_open_momentary_default,push_button_normally_open_momentary_horz_default={primitives:[...Object.values(paths36),...Object.values(circles32),{...texts51.top1,anchor:"middle_left"},{...texts51.bottom1,anchor:"middle_left"}],ports:[{...refblocks36.left1,labels:["1"]},{...refblocks36.right1,labels:["2"]}],size:{width:bounds36.width,height:bounds36.height},center:{x:bounds36.centerX,y:bounds36.centerY}},push_button_normally_open_momentary_vert_default=rotateSymbol(push_button_normally_open_momentary_horz_default,"up"),rectifier_diode_default={paths:{path40:{type:"path",points:[{x:-.19250837381256392,y:-.32749349347032286},{x:-.25568957329611974,y:-.13794979950157282}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.38205206778131373,y:-.26431229398676837},{x:-.19250837381256392,y:-.32749349347032286}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.2556895732961204,y:-.13794979950157416},{x:-.38205206778131373,y:-.26431229398676837}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.2556896210551609,y:-.39067474071292196},{x:-.12932712656996737,y:-.26431224622772653}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199237641156438,y:-.2000781031672434},{x:-.5084145145074668,y:-.011587352775420667}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:-.011560829633404435,y:-.5083596562436202},{x:-.19004023433272543,y:-.3298802515442989}],color:"primary",fill:!1},"path40-4":{type:"path",points:[{x:-.19250813152967883,y:.3220463011874377},{x:-.38205182549842887,y:.2588651017038819}],color:"primary",fill:!1},"path41-1":{type:"path",points:[{x:-.2556893310132333,y:.13250260721868767},{x:-.19250813152967883,y:.3220463011874377}],color:"primary",fill:!1},"path42-7":{type:"path",points:[{x:-.38205182549842753,y:.258865101703881},{x:-.2556893310132333,y:.13250260721868767}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:-.12932688428707984,y:.2588650539448407},{x:-.25568937877227516,y:.38522754843003404}],color:"primary",fill:!1},"path44-8":{type:"path",points:[{x:-.3199235218327583,y:.19463091088435758},{x:-.508414272224581,y:.006140160492534852}],color:"primary",fill:!1},"path44-0-7":{type:"path",points:[{x:-.011641968756381349,y:.5029938453665972},{x:-.1901213734557028,y:.3245144406672762}],color:"primary",fill:!1},"path40-4-0":{type:"path",points:[{x:.322578868470321,y:-.19315369881256328},{x:.13303517450157099,y:-.2563348982961191}],color:"primary",fill:!1},"path41-1-2":{type:"path",points:[{x:.2593976689867663,y:-.3826973927813131},{x:.322578868470321,y:-.19315369881256328}],color:"primary",fill:!1},"path42-7-1":{type:"path",points:[{x:.13303517450157232,y:-.2563348982961198},{x:.2593976689867663,y:-.3826973927813131}],color:"primary",fill:!1},"path43-1-8":{type:"path",points:[{x:.38576011571292,y:-.2563349460551603},{x:.2593976212277247,y:-.12997245156996673}],color:"primary",fill:!1},"path44-8-7":{type:"path",points:[{x:.19516347816724133,y:-.3205690891156432},{x:.006672727775418608,y:-.509059839507466}],color:"primary",fill:!1},"path44-0-7-1":{type:"path",points:[{x:.5034450312436185,y:-.012206154633403798},{x:.32496562654429706,y:-.19068555933272457}],color:"primary",fill:!1},"path40-4-8":{type:"path",points:[{x:.3220220261874358,y:.19326390652967795},{x:.25884082670387976,y:.382807600498428}],color:"primary",fill:!1},"path41-1-4":{type:"path",points:[{x:.13247833221868577,y:.25644510601323245},{x:.3220220261874358,y:.19326390652967795}],color:"primary",fill:!1},"path42-7-0":{type:"path",points:[{x:.2588408267038793,y:.38280760049842666},{x:.13247833221868577,y:.25644510601323245}],color:"primary",fill:!1},"path43-1-0":{type:"path",points:[{x:.2588407789448386,y:.13008265928707896},{x:.38520327343003213,y:.2564451537722743}],color:"primary",fill:!1},"path44-8-9":{type:"path",points:[{x:.19460663588435567,y:.3206792968327574},{x:.0061158854925329464,y:.5091700472245801}],color:"primary",fill:!1},"path44-0-7-3":{type:"path",points:[{x:.5029695703665951,y:.012397743756380697},{x:.3244901656672745,y:.19087714845570192}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.2872803000000015,y:-.4564494249999992},bottom1:{type:"text",text:"{VAL}",x:-.2872803000000015,y:.4960514750000007}},refblocks:{top1:{x:.0005126999999993664,y:-.5191475},bottom1:{x:-.0005123000000009093,y:.5191475000000001},left1:{x:-.5191472999999998,y:-.0005123250000014234},right1:{x:.5191473000000002,y:.0005123749999977889}},bounds:{minX:-.5473057409999997,maxX:.5473057410000002,minY:-.5564494249999992,maxY:.5473059410000001,width:1.094611482,height:1.1037553659999992,centerX:2220446049250313e-31,centerY:-.004571741999999546},circles:{}},{paths:paths37,texts:texts52,bounds:bounds37,refblocks:refblocks37,circles:circles33}=rectifier_diode_default,rectifier_diode_horz_default={primitives:[...Object.values(paths37),...Object.values(circles33),{...texts52.top1,anchor:"middle_right"},{...texts52.bottom1,anchor:"middle_right"}],ports:[{...refblocks37.top1,labels:["1"]},{...refblocks37.bottom1,labels:["2"]},{...refblocks37.left1,labels:["3"]},{...refblocks37.right1,labels:["4"]}],size:{width:bounds37.width,height:bounds37.height},center:{x:bounds37.centerX,y:bounds37.centerY}},rotated7=rotateSymbol(rectifier_diode_horz_default),ref21=rotated7.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val17=rotated7.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref21.anchor="middle_left",val17.anchor="middle_right";var rectifier_diode_vert_default=rotated7,resonator_default={paths:{path27:{type:"path",points:[{x:.7635944500000007,y:-.2799544500000035},{x:.3138028500000005,y:-.2799544500000035}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.301017949999999,y:-.01524775000000389},{x:-.7508096499999994,y:-.01524775000000389}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.3010179499999994,y:.3480486499999973},{x:-.301017949999999,y:-.2798310500000021}],color:"primary",fill:!1},"path27-3":{type:"path",points:[{x:.7729788499999999,y:.3512451499999969},{x:.32318725000000015,y:.3512451499999969}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.07279374999999932,y:-.27981925000000274},{x:-.2983350499999995,y:-.27981925000000274}],color:"primary",fill:!1},"path29-5-7":{type:"path",points:[{x:.33114835000000076,y:-.2798404500000018},{x:.10560705000000059,y:-.2798404500000018}],color:"primary",fill:!1},"path29-5-7-6":{type:"path",points:[{x:-.055820049999999455,y:-.1676584500000029},{x:-.055820049999999455,y:-.3931997500000026}],color:"primary",fill:!1},"path29-5-7-6-6":{type:"path",points:[{x:.09396265000000081,y:-.16768285000000382},{x:.09396265000000081,y:-.39322415000000355}],color:"primary",fill:!1},"path29-5-9":{type:"path",points:[{x:-.07296184999999955,y:.3513701499999957},{x:-.2985031499999997,y:.3513701499999957}],color:"primary",fill:!1},"path29-5-7-2":{type:"path",points:[{x:.33098025000000053,y:.35134894999999844},{x:.10543895000000036,y:.35134894999999844}],color:"primary",fill:!1},"path29-5-7-6-0":{type:"path",points:[{x:-.05598814999999968,y:.46353094999999733},{x:-.05598814999999968,y:.23798964999999583}],color:"primary",fill:!1},"path29-5-7-6-6-2":{type:"path",points:[{x:.09379455000000014,y:.4635065499999982},{x:.09379455000000014,y:.23796524999999846}],color:"primary",fill:!1},"path29-5-92":{type:"path",points:[{x:.3315317500000008,y:.12563884999999786},{x:.33153175000000035,y:.3511801499999976}],color:"primary",fill:!1},"path29-5-7-28":{type:"path",points:[{x:.3315105500000004,y:-.2783032500000022},{x:.3315105500000004,y:-.0527619500000025}],color:"primary",fill:!1},"path29-5-7-6-9":{type:"path",points:[{x:.44369255000000063,y:.10866514999999843},{x:.21815125000000046,y:.10866514999999843}],color:"primary",fill:!1},"path29-5-7-6-6-7":{type:"path",points:[{x:.4436681500000006,y:-.04111755000000272},{x:.21812685000000043,y:-.04111755000000272}],color:"primary",fill:!1},"path29-5-7-6-9-2":{type:"path",points:[{x:.44235445000000073,y:.07167004999999627},{x:.21681315000000057,y:.07167004999999627}],color:"primary",fill:!1},"path29-5-7-6-9-2-4":{type:"path",points:[{x:.4429695500000004,y:-.0025598500000008073},{x:.4430214500000007,y:.07134914999999609}],color:"primary",fill:!1},"path29-5-7-6-9-2-4-6":{type:"path",points:[{x:.21634305000000031,y:-.0035468500000046532},{x:.21639495000000064,y:.07036214999999935}],color:"primary",fill:!1},"path29-5-7-6-9-2-9":{type:"path",points:[{x:.4429537500000005,y:-.004130850000002795},{x:.21741245000000076,y:-.004130850000002795}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.01596175000000022,y:.5358501499999981},bottom1:{type:"text",text:"{VAL}",x:.013116750000000454,y:-.5358501500000017}},refblocks:{left1:{x:-.7666234499999998,y:-.01615045000000137},right1:{x:.7572390499999999,y:-.28185235000000297},right2:{x:.7666234500000004,y:.3493472499999992}},bounds:{minX:-.7947818909999997,maxX:.7947818910000004,minY:-.5358501500000017,maxY:.5358501499999981,width:1.5895637820000001,height:1.0717002999999998,centerX:33306690738754696e-32,centerY:-17763568394002505e-31},circles:{}},{paths:paths38,texts:texts53,bounds:bounds38,refblocks:refblocks38,circles:circles34}=resonator_default,resonator_horz_default={primitives:[...Object.values(paths38),...Object.values(circles34),{type:"text",text:"{REF}",x:.01596175000000022,y:-.5308501500000009,anchor:"middle_top"},{type:"text",text:"{VAL}",x:.013116750000000454,y:.5408501499999989,anchor:"middle_bottom"}],ports:[{...refblocks38.left1,labels:["1"]},{...refblocks38.right1,labels:["2"]},{...refblocks38.right2,labels:["3"]}],size:{width:bounds38.width,height:bounds38.height},center:{x:bounds38.centerX,y:bounds38.centerY}},resonator_vert_default=rotateSymbol(resonator_horz_default),schottky_diode_default={paths:{path40:{type:"path",points:[{x:.14458930000000048,y:.04403649999999937},{x:-.11999399999999905,y:-.0882552000000012}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.11999400000000038,y:.1763281999999997},{x:.14458929999999914,y:.04403649999999937}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.11999400000000038,y:-.0882552000000012},{x:-.11999400000000038,y:.17632819999999816}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.1435300000000006,y:.17844679999999968},{x:.14458899999999986,y:-.08825519999999965}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219870000000044,y:.04403649999999937},{x:-.5168690000000005,y:.04403649999999937}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233800999999991,y:.043951299999999804},{x:.14967199999999892,y:.043951299999999804}],color:"primary",fill:!1},"path43-7":{type:"path",points:[{x:.2075533999999999,y:.17973149999999904},{x:.14341080000000028,y:.17864949999999946}],color:"primary",fill:!1},"path43-7-9":{type:"path",points:[{x:.2093444999999996,y:.1301679},{x:.20797049999999984,y:.17950350000000048}],color:"primary",fill:!1},"path43-7-2":{type:"path",points:[{x:.07978989999999953,y:-.09023340000000024},{x:.14313979999999948,y:-.09001340000000013}],color:"primary",fill:!1},"path43-7-9-3":{type:"path",points:[{x:.07764390000000043,y:-.04104850000000004},{x:.0790179000000002,y:-.09038410000000074}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999994495,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384530000000007}},refblocks:{left1:{x:-.5191471,y:.044920799999999206},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.547305541,maxX:.5473055409999998,minY:-.27384530000000007,maxY:.27384530000000007,width:1.0946110819999997,height:.5476906000000001,centerX:-5551115123125783e-32,centerY:0},circles:{}},schottky_diode_horz_default=modifySymbol(schottky_diode_default).labelPort("left1",["1","pos"]).labelPort("right1",["2","neg"]).changeTextAnchor("{VAL}","middle_top").changeTextAnchor("{REF}","middle_bottom").build(),rotated8=rotateSymbol(schottky_diode_horz_default),ref22=rotated8.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val18=rotated8.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref22.anchor="middle_left",val18.anchor="middle_right";var schottky_diode_vert_default=rotated8,silicon_controlled_rectifier_default={paths:{path11:{type:"path",points:[{x:-.49895505000000084,y:.04174485000000061},{x:-.177441850000001,y:.04174485000000061}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.18704774999999918,y:.04961415000000069},{x:.5063384499999999,y:.04961415000000069}],color:"primary",fill:!1},"path12-6":{type:"path",points:[{x:.18219425000000045,y:-.15200134999999904},{x:.1810882500000004,y:.2512156500000011}],color:"primary",fill:!1},"path12-2":{type:"path",points:[{x:.18646324999999986,y:.0047866500000004475},{x:.34602244999999954,y:-.13539324999999924}],color:"primary",fill:!1},"path12-2-9":{type:"path",points:[{x:.3463884499999992,y:-.14077354999999936},{x:.3447284499999994,y:-.3343437499999993}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.17016305000000087,y:.2706752500000007},{x:-.17223005000000047,y:-.15200864999999908},{x:.180362149999999,y:.04760855000000097},{x:-.16624855000000038,y:.27180665000000137}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.22312565000000006,y:.38273545},bottom1:{type:"text",text:"{VAL}",x:.11142554999999987,y:-.38273544999999976}},refblocks:{bottom1:{x:.3445824499999999,y:-.34953845000000006},left1:{x:-.5177904499999998,y:.04089205000000007},right1:{x:.5177904499999997,y:.049757749999999934}},bounds:{minX:-.5459488909999998,maxX:.5459488909999997,minY:-.38273544999999976,maxY:.38273545,width:1.0918977819999993,height:.7654708999999997,centerX:-5551115123125783e-32,centerY:11102230246251565e-32},circles:{}},silicon_controlled_rectifier_horz_default=modifySymbol(silicon_controlled_rectifier_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).labelPort("bottom1",["3"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol21=rotateSymbol(silicon_controlled_rectifier_horz_default),texts55=rotatedSymbol21.primitives.filter(lV=>lV.type==="text"),ref23=texts55.find(lV=>lV.text==="{REF}");ref23.y=0,ref23.anchor="middle_left";var silicon_controlled_rectifier_vert_default=rotatedSymbol21,SPDT_switch_default={paths:{path1:{type:"path",points:[{x:-.3543583500000005,y:.03204385000000087},{x:-.12792935000000005,y:.03204385000000087}],color:"primary",fill:!1},"path-1-3":{type:"path",points:[{x:-.1133669500000003,y:.0321987500000005},{x:.11208324999999997,y:.14600155000000048}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.1043477500000003,y:-.0645130499999993},{x:.34508875000000017,y:-.0645130499999993}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.12008575000000055,y:.17214665000000062},{x:.3608267500000004,y:.17214665000000062}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17853294999999947,y:.39716265000000006},bottom1:{type:"text",text:"{VAL}",x:-.011861250000000378,y:-.39716264999999984}},refblocks:{top1:{x:.10744654999999947,y:.17214664999999973},left1:{x:-.3682737499999995,y:.03204385000000021},left2:{x:-.11569114999999996,y:.03204385000000021},right1:{x:.3682737499999995,y:-.06451304999999996},right2:{x:.10744725000000055,y:-.06451304999999996},right3:{x:.3682737499999995,y:.17214664999999973}},bounds:{minX:-.3964321909999995,maxX:.3964321909999995,minY:-.39716264999999984,maxY:.39716265000000006,width:.792864381999999,height:.7943252999999999,centerX:0,centerY:11102230246251565e-32},circles:{}};SPDT_switch_default.bounds.width+=.2;var{paths:paths40,texts:texts56,bounds:bounds40,refblocks:refblocks40,circles:circles36}=SPDT_switch_default,SPDT_switch_horz_default={primitives:[...Object.values(paths40),...Object.values(circles36),{...texts56.top1,anchor:"middle_bottom",x:-.01},{...texts56.bottom1,anchor:"middle_top",x:-.01}],ports:[{...refblocks40.left1,labels:["1"]},{...refblocks40.right1,labels:["3"]},{...refblocks40.right2,labels:["2"]}],size:{width:bounds40.width,height:bounds40.height},center:{x:bounds40.centerX,y:bounds40.centerY}},rotatedSymbol22=rotateSymbol(SPDT_switch_horz_default),texts57=rotatedSymbol22.primitives.filter(lV=>lV.type==="text"),val19=texts57.find(lV=>lV.text==="{VAL}");val19.anchor="middle_right",val19.x=-.3,val19.y=0;var ref24=texts57.find(lV=>lV.text==="{REF}");ref24.anchor="middle_left",ref24.x=.3,ref24.y=0;var SPDT_switch_vert_default=rotatedSymbol22,SPST_switch_default={paths:{path11:{type:"path",points:[{x:-.3622273500000006,y:-.0018583499999986763},{x:-.13579835000000018,y:-.0018583499999986763}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.12010005000000046,y:-.0033888499999992217},{x:.10307834999999987,y:.13630055000000119}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.12795584999999932,y:-.0018583499999986763},{x:.3686967499999996,y:-.0018583499999986763}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.03688484999999986,y:.25026835000000003},bottom1:{type:"text",text:"{VAL}",x:-.02235315000000071,y:-.25026835000000003}},refblocks:{left1:{x:-.12356015000000009,y:-.006648049999999239},left2:{x:-.37614274999999964,y:-.002711249999999721},right1:{x:.11531695000000042,y:-.006648049999999239},right2:{x:.37614274999999964,y:-.0017148499999992683}},bounds:{minX:-.4043011909999996,maxX:.4043011909999996,minY:-.25026835000000003,maxY:.25026835000000003,width:.8086023819999992,height:.5005367000000001,centerX:0,centerY:0},circles:{}};delete SPST_switch_default.refblocks.left1,delete SPST_switch_default.refblocks.right1,SPST_switch_default.bounds.width+=.2;var SPST_switch_horz_default=modifySymbol(SPST_switch_default).changeTextAnchor("{VAL}","middle_top").labelPort("left2",["1"]).labelPort("right2",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol23=rotateSymbol(SPST_switch_horz_default),texts58=rotatedSymbol23.primitives.filter(lV=>lV.type==="text"),val20=texts58.find(lV=>lV.text==="{VAL}");val20.anchor="middle_right",val20.x=-.3,val20.y=0;var ref25=texts58.find(lV=>lV.text==="{REF}");ref25.anchor="middle_left",ref25.x=.3,ref25.y=0;var SPST_switch_vert_default=rotatedSymbol23,step_recovery_diode_default={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999836},{x:-.1199943999999995,y:-.08825540000000132}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.1763280000000016},{x:.14458890000000002,y:.04403629999999836}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.08825539999999776},{x:-.1199943999999995,y:.1763280000000016}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.1763280000000016},{x:.14458890000000002,y:-.08825539999999776}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999836},{x:-.5168693999999996,y:.04403629999999836}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797,y:.04395110000000102},{x:.14967160000000002,y:.04395110000000102}],color:"primary",fill:!1},"path43-5":{type:"path",points:[{x:.19156529999999972,y:-.0884020999999997},{x:.14591529999999908,y:-.08876210000000029}],color:"primary",fill:!1},"path43-5-2":{type:"path",points:[{x:.19233440000000046,y:-.1355493999999986},{x:.19197439999999988,y:-.08989940000000018}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384529999999785},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999999524,y:-.2738453000000014}},refblocks:{left1:{x:-.5191471000000001,y:.0449206999999987},right1:{x:.5191471000000001,y:.043896100000001326}},bounds:{minX:-.5473055410000001,maxX:.5473055410000001,minY:-.2738453000000014,maxY:.27384529999999785,width:1.0946110820000001,height:.5476905999999993,centerX:0,centerY:-17763568394002505e-31},circles:{}},step_recovery_diode_horz_default=modifySymbol(step_recovery_diode_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),step_recovery_diode_vert_default=rotateSymbol(step_recovery_diode_horz_default),tachometer_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"RPM",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths42,texts:texts60,bounds:bounds42,refblocks:refblocks42,circles:circles38}=tachometer_default,tachometer_horz_default={primitives:[...Object.values(paths42),...Object.values(circles38),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts60.left1,y:.01,anchor:"center",fontSize:.2}],ports:[{...refblocks42.left1,labels:["1"]},{...refblocks42.right1,labels:["2"]}],size:{width:bounds42.width,height:bounds42.height},center:{x:bounds42.centerX,y:bounds42.centerY}},{5:letter4,...rest4}=tachometer_horz_default.primitives;function isPrimitive4(lV){return typeof lV=="object"}var rotatedSymbol24=rotateSymbol({...tachometer_horz_default,primitives:Object.values(rest4).filter(isPrimitive4)}),tachometer_vert_default={...rotatedSymbol24,primitives:[...rotatedSymbol24.primitives,letter4]},triac_default={paths:{path11:{type:"path",points:[{x:-.5176700499999997,y:.041745050000000505},{x:-.10888805000000024,y:.041745050000000505}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1031184499999993,y:.041745050000000505},{x:.5246894499999994,y:.041745050000000505}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.09343985000000021,y:-.14620634999999882},{x:-.0930998500000002,y:.2583405500000009}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.08519034999999908,y:-.14503384999999902},{x:.08553034999999909,y:.2595130500000007}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.08315755000000014,y:.055934450000000524},{x:-.08415755000000047,y:-.14678124999999964},{x:.08653524999999984,y:-.05104664999999953},{x:-.08126175000000035,y:.05647715000000031}],color:"primary",fill:!0},"path11-0-9-0":{type:"path",points:[{x:.07661224999999927,y:.256654450000001},{x:.07761224999999983,y:.05393885000000109},{x:-.0930805500000007,y:.1496734500000012},{x:.07471644999999949,y:.25719715000000143}],color:"primary",fill:!0},"path12-2":{type:"path",points:[{x:.09001085000000009,y:-.05964874999999914},{x:.2707999499999998,y:-.1711147499999992}],color:"primary",fill:!1},"path12-2-9":{type:"path",points:[{x:.27291134999999955,y:-.17591894999999935},{x:.27124034999999935,y:-.30168314999999923}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.0077081499999991365,y:.41683614999999996},bottom1:{type:"text",text:"{VAL}",x:-.03022294999999975,y:-.41683614999999996}},refblocks:{bottom1:{x:.27223905000000026,y:-.3087962499999999},left1:{x:-.54139845,y:.04089205000000051},right1:{x:.5413984499999995,y:.04188845000000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.41683614999999996,maxY:.41683614999999996,width:1.1391137819999995,height:.8336722999999999,centerX:-2220446049250313e-31,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000003116,y:.048873150000000365,radius:.28854213,color:"primary",fill:!1}}},triac_horz_default=modifySymbol(triac_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).labelPort("bottom1",["3"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol25=rotateSymbol(triac_horz_default),texts62=rotatedSymbol25.primitives.filter(lV=>lV.type==="text"),ref26=texts62.find(lV=>lV.text==="{REF}"),val21=texts62.find(lV=>lV.text==="{VAL}");ref26.y=0,val21.y=0;var triac_vert_default=rotatedSymbol25,tunnel_diode_default={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999992},{x:-.1199943999999995,y:-.08825540000000043}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17632800000000026},{x:.14458890000000002,y:.04403629999999992}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.0882553999999991},{x:-.1199943999999995,y:.17632800000000026}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17632800000000026},{x:.14458890000000002,y:-.0882553999999991}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999992},{x:-.5168693999999996,y:.04403629999999992}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.043951100000000354},{x:.1496715999999998,y:.043951100000000354}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17681090000000044},{x:.07728679999999954,y:.17632089999999967}],color:"primary",fill:!1},"path43-8-8":{type:"path",points:[{x:.1446069000000001,y:-.08908179999999888},{x:.0785024999999997,y:-.08957179999999942}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384529999999985}},refblocks:{left1:{x:-.5191471000000001,y:.044920700000000924},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.27384529999999985,maxY:.27384530000000007,width:1.094611082,height:.5476905999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:paths44,texts:texts63,bounds:bounds44,refblocks:refblocks44,circles:circles40}=tunnel_diode_default,tunnel_diode_horz_default={primitives:[...Object.values(paths44),...Object.values(circles40),{...texts63.top1,anchor:"middle_bottom"},{...texts63.bottom1,anchor:"middle_top"}],ports:[{...refblocks44.left1,labels:["1"]},{...refblocks44.right1,labels:["2"]}],size:{width:bounds44.width,height:bounds44.height},center:{x:bounds44.centerX,y:bounds44.centerY}},rotated9=rotateSymbol(tunnel_diode_horz_default),ref27=rotated9.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val22=rotated9.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref27.anchor="middle_left",val22.anchor="middle_right";var tunnel_diode_vert_default=rotated9,unijunction_transistor_default={paths:{path11:{type:"path",points:[{x:-.3274461945,y:.20527883627037657},{x:-.021085194500000348,y:.007570136270376837}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2331163055000003,y:.1251673362703769},{x:.2320633055000001,y:.3759855362703768}],color:"primary",fill:!1},"path12-2":{type:"path",points:[{x:.23221610549999938,y:-.0818845637296235},{x:.2311631054999992,y:-.33270276372962315}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.013263894499999873,y:-.1792007637296229},{x:-.012923894499999866,y:.2253461362703768}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.23222970550000066,y:.12047013627037662},{x:-.011307094499999115,y:.11996013627037683}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.1124341944999998,y:.131359936270377},{x:-.16993279449999954,y:.039004036270377185},{x:-.05822649449999928,y:.03212003627037707},{x:-.11133889449999979,y:.13104553627037707}],color:"primary",fill:!0},"path11-0-3-8":{type:"path",points:[{x:.23230320549999983,y:-.08329316372962325},{x:-.011233594499999944,y:-.07900616372962332}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.19541139450000045,y:.389088136270376},bottom1:{type:"text",text:"{VAL}",x:-.031363394499999364,y:-.42359956372962415}},refblocks:{top1:{x:.2317438004035266,y:.3954411227296242},bottom1:{x:.2308431668082036,y:-.35215823360635445},left1:{x:-.34055979449999985,y:.21512343627037622}},bounds:{minX:-.3687182354999998,maxX:.3687182354999999,minY:-.42359956372962415,maxY:.42359956372962415,width:.7374364709999996,height:.8471991274592483,centerX:27755575615628914e-33,centerY:0},circles:{path1:{type:"circle",x:.08017610549999987,y:.006746336270376352,radius:.28854213,color:"primary",fill:!1}}},{paths:paths45,texts:texts64,bounds:bounds45,refblocks:refblocks45,circles:circles41}=unijunction_transistor_default,unijunction_transistor_horz_default={primitives:[...Object.values(paths45),...Object.values(circles41),{...texts64.top1,anchor:"middle_left"},{...texts64.bottom1,anchor:"middle_right"}],ports:[{...refblocks45.top1,labels:["1"]},{...refblocks45.bottom1,labels:["2"]},{...refblocks45.left1,labels:["3"]}],size:{width:bounds45.width,height:bounds45.height},center:{x:bounds45.centerX,y:bounds45.centerY}},rotatedSymbol26=rotateSymbol(unijunction_transistor_horz_default),texts65=rotatedSymbol26.primitives.filter(lV=>lV.type==="text"),ref28=texts65.find(lV=>lV.text==="{REF}");ref28.y=.1;var val23=texts65.find(lV=>lV.text==="{VAL}");val23.y=.1,val23.x=-.4;var unijunction_transistor_vert_default=rotatedSymbol26,var_meter_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Var",x:-.19436529999999896,y:.07249430000000023}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths46,texts:texts66,bounds:bounds46,refblocks:refblocks46,circles:circles42}=var_meter_default,var_meter_horz_default={primitives:[...Object.values(paths46),...Object.values(circles42),{...texts66.top1,x:0,y:-.3594553499999995,anchor:"middle_top"},{...texts66.bottom1,x:0,y:.35,anchor:"middle_bottom"},{...texts66.left1,x:-.02,y:.01,fontSize:.2,anchor:"center"}],ports:[{...refblocks46.left1,labels:["1"]},{...refblocks46.right1,labels:["2"]}],size:{width:bounds46.width,height:bounds46.height},center:{x:bounds46.centerX,y:bounds46.centerY}},var_meter_vert_default=rotateSymbol(var_meter_horz_default),varactor_diode_default={paths:{path40:{type:"path",points:[{x:.08342510000000014,y:.04403649999999937},{x:-.18115819999999938,y:-.0882552000000012}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1811582000000007,y:.1763281999999997},{x:.08342509999999881,y:.04403649999999937}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1811582000000007,y:-.0882552000000012},{x:-.1811582000000007,y:.17632819999999816}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.0949504999999995,y:.17485119999999976},{x:.09600949999999897,y:-.09185079999999957}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.1954338999999996,y:.04403649999999937},{x:-.5191807000000004,y:.04403649999999937}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5253116,y:.043951299999999804},{x:.20527070000000047,y:.043951299999999804}],color:"primary",fill:!1},"path43-6":{type:"path",points:[{x:.1854899999999995,y:.1748848999999999},{x:.18654899999999874,y:-.09181709999999943}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999994495,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384530000000007}},refblocks:{left1:{x:-.5191471,y:.044920799999999206},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.547305541,maxX:.5473055409999998,minY:-.27384530000000007,maxY:.27384530000000007,width:1.0946110819999997,height:.5476906000000001,centerX:-5551115123125783e-32,centerY:0},circles:{}},{paths:paths47,texts:texts67,bounds:bounds47,refblocks:refblocks47,circles:circles43}=varactor_diode_default,varactor_diode_horz_default={primitives:[...Object.values(paths47),...Object.values(circles43),{...texts67.top1,anchor:"middle_bottom"},{...texts67.bottom1,anchor:"middle_top"}],ports:[{...refblocks47.left1,labels:["1"]},{...refblocks47.right1,labels:["2"]}],size:{width:bounds47.width,height:bounds47.height},center:{x:bounds47.centerX,y:bounds47.centerY}},rotated10=rotateSymbol(varactor_diode_horz_default),ref29=rotated10.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val24=rotated10.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref29.anchor="middle_left",val24.anchor="middle_right";var varactor_diode_vert_default=rotated10,varistor_default={paths:{path5:{type:"path",points:[{x:-.5245830500000004,y:.004659100000001359},{x:-.25999975000000086,y:.004659100000001359}],color:"primary",fill:!1},path6:{type:"path",points:[{x:.2691672500000002,y:.004659100000001359},{x:.5337505499999997,y:.004659100000001359}],color:"primary",fill:!1},path7:{type:"path",points:[{x:.2691672500000002,y:-.23346590000000056},{x:-.25999974999999953,y:.2427841000000015}],color:"primary",fill:!1},path8:{type:"path",points:[{x:.37500025000000026,y:-.23346590000000056},{x:.2691672500000002,y:-.23346590000000056}],color:"primary",fill:!1},path9:{type:"path",points:[{x:.004585150000000482,y:.13695090000000043},{x:.26916815000000094,y:.13695090000000043},{x:.26916815000000094,y:-.1276325000000007},{x:-.2599988499999988,y:-.1276325000000007},{x:-.2599988499999988,y:.13695090000000043},{x:.004585150000001814,y:.13695090000000043}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.05849044999999986,y:.25166549999999965},bottom1:{type:"text",text:"{VAL}",x:.008507150000000685,y:-.25166549999999965}},refblocks:{left1:{x:-.5392315500000002,y:.002969399999999567},right1:{x:.5392315500000002,y:.005339799999999784}},bounds:{minX:-.5673899910000002,maxX:.5673899910000002,minY:-.25166549999999965,maxY:.25166549999999965,width:1.1347799820000004,height:.5033309999999993,centerX:0,centerY:0},circles:{}},{paths:paths48,texts:texts68,bounds:bounds48,refblocks:refblocks48}=varistor_default,varistor_horz_default={primitives:[...Object.values(paths48),{...texts68.top1,anchor:"middle_left"},{...texts68.bottom1,anchor:"middle_right"}],ports:[{...refblocks48.left1,labels:["1","-"]},{...refblocks48.right1,labels:["2","+"]}],size:{width:bounds48.width,height:bounds48.height},center:{x:bounds48.centerX,y:bounds48.centerY}},varistor_vert_default=rotateSymbol(varistor_horz_default),varmeter_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Var",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths49,texts:texts69,bounds:bounds49,refblocks:refblocks49,circles:circles44}=varmeter_default,varmeter_horz_default={primitives:[...Object.values(paths49),...Object.values(circles44),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts69.left1,anchor:"center",y:.02,fontSize:.2}],ports:[{...refblocks49.left1,labels:["1"]},{...refblocks49.right1,labels:["2"]}],size:{width:bounds49.width,height:bounds49.height},center:{x:bounds49.centerX,y:bounds49.centerY}},{5:letter5,...rest5}=varmeter_horz_default.primitives;function isPrimitive5(lV){return typeof lV=="object"}var rotatedSymbol27=rotateSymbol({...varmeter_horz_default,primitives:Object.values(rest5).filter(isPrimitive5)}),varmeter_vert_default={...rotatedSymbol27,primitives:[...rotatedSymbol27.primitives,letter5]},volt_meter_default={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.031252300000000455},{x:-.30105415000000013,y:.031252300000000455}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09765764999999949,y:.1295162000000003},{x:-.0011297500000011507,y:-.061970899999999496},{x:-.10778645000000164,y:.1295162000000003}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.031252300000000455},{x:.5339524499999997,y:.031252300000000455}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.021146249999999478,y:.4010973},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.4010973}},refblocks:{left1:{x:-.5413984499999998,y:.030399499999999913},right1:{x:.54139845,y:.0313958999999997}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.4010973,maxY:.4010973,width:1.1391137819999997,height:.8021946,centerX:11102230246251565e-32,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03838059999999999,radius:.28854213,color:"primary",fill:!1}}},volt_meter_horz_default=modifySymbol(volt_meter_default).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),volt_meter_vert_default=rotateSymbol(volt_meter_horz_default),watt_hour_meter_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Wh",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths51,texts:texts71,bounds:bounds51,refblocks:refblocks51,circles:circles46}=watt_hour_meter_default,watt_hour_meter_horz_default={primitives:[...Object.values(paths51),...Object.values(circles46),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts71.left1,anchor:"center",y:.01,fontSize:.2}],ports:[{...refblocks51.left1,labels:["1"]},{...refblocks51.right1,labels:["2"]}],size:{width:bounds51.width,height:bounds51.height},center:{x:bounds51.centerX,y:bounds51.centerY}},{5:letter6,...rest6}=watt_hour_meter_horz_default.primitives;function isPrimitive6(lV){return typeof lV=="object"}var rotatedSymbol28=rotateSymbol({...watt_hour_meter_horz_default,primitives:Object.values(rest6).filter(isPrimitive6)}),watt_hour_meter_vert_default={...rotatedSymbol28,primitives:[...rotatedSymbol28.primitives,letter6]},wattmeter_default={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"W",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths52,texts:texts72,bounds:bounds52,refblocks:refblocks52,circles:circles47}=wattmeter_default,wattmeter_horz_default={primitives:[...Object.values(paths52),...Object.values(circles47),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts72.left1,anchor:"center",y:.01,fontSize:.3}],ports:[{...refblocks52.left1,labels:["1"]},{...refblocks52.right1,labels:["2"]}],size:{width:bounds52.width,height:bounds52.height},center:{x:bounds52.centerX,y:bounds52.centerY}},{5:letter7,...rest7}=wattmeter_horz_default.primitives;function isPrimitive7(lV){return typeof lV=="object"}var rotatedSymbol29=rotateSymbol({...wattmeter_horz_default,primitives:Object.values(rest7).filter(isPrimitive7)}),wattmeter_vert_default={...rotatedSymbol29,primitives:[...rotatedSymbol29.primitives,letter7]},zener_diode_default={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999992},{x:-.1199943999999995,y:-.08825540000000043}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17632800000000026},{x:.14458890000000002,y:.04403629999999992}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.0882553999999991},{x:-.1199943999999995,y:.17632800000000026}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17632800000000026},{x:.14458890000000002,y:-.0882553999999991}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999992},{x:-.5168693999999996,y:.04403629999999992}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.043951100000000354},{x:.1496715999999998,y:.043951100000000354}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17681090000000044},{x:.07728679999999954,y:.17632089999999967}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384529999999985}},refblocks:{left1:{x:-.5191471000000001,y:.044920700000000924},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.27384529999999985,maxY:.27384530000000007,width:1.094611082,height:.5476905999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:paths53,texts:texts73,bounds:bounds53,refblocks:refblocks53,circles:circles48}=zener_diode_default,zener_diode_horz_default={primitives:[...Object.values(paths53),...Object.values(circles48),{...texts73.top1,anchor:"middle_bottom"},{...texts73.bottom1,anchor:"middle_top"}],ports:[{...refblocks53.left1,labels:["1"]},{...refblocks53.right1,labels:["2"]}],size:{width:bounds53.width,height:bounds53.height},center:{x:bounds53.centerX,y:bounds53.centerY}},rotated11=rotateSymbol(zener_diode_horz_default),ref30=rotated11.primitives.find(lV=>lV.type==="text"&&lV.text==="{REF}"),val25=rotated11.primitives.find(lV=>lV.type==="text"&&lV.text==="{VAL}");ref30.anchor="middle_left",val25.anchor="middle_right";var zener_diode_vert_default=rotated11,symbols_index_default={ac_voltmeter_horz:ac_voltmeter_horz_default,ac_voltmeter_vert:ac_voltmeter_vert_default,avalanche_diode_horz:avalanche_diode_horz_default,avalanche_diode_vert:avalanche_diode_vert_default,battery_horz:battery_horz_default,battery_vert:battery_vert_default,boxresistor_down:boxresistor_down_default,boxresistor_left:boxresistor_left_default,boxresistor_right:boxresistor_right_default,boxresistor_up:boxresistor_up_default,capacitor_down:capacitor_down_default,capacitor_left:capacitor_left_default,capacitor_polarized_down:capacitor_polarized_down_default,capacitor_polarized_left:capacitor_polarized_left_default,capacitor_polarized_right:capacitor_polarized_right_default,capacitor_polarized_up:capacitor_polarized_up_default,capacitor_right:capacitor_right_default,capacitor_up:capacitor_up_default,constant_current_diode_horz:constant_current_diode_horz_default,constant_current_diode_vert:constant_current_diode_vert_default,crystal_4pin_horz:crystal_4pin_horz_default,crystal_4pin_vert:crystal_4pin_vert_default,crystal_horz:crystal_horz_default,crystal_vert:crystal_vert_default,darlington_pair_transistor_horz:darlington_pair_transistor_horz_default,darlington_pair_transistor_vert:darlington_pair_transistor_vert_default,dc_ammeter_horz:dc_ammeter_horz_default,dc_ammeter_vert:dc_ammeter_vert_default,dc_voltmeter_horz:dc_voltmeter_horz_default,dc_voltmeter_vert:dc_voltmeter_vert_default,diac_horz:diac_horz_default,diac_vert:diac_vert_default,diode_down:diode_down_default,diode_left:diode_left_default,diode_right:diode_right_default,diode_up:diode_up_default,dpdt_switch_horz:dpdt_switch_horz_default,dpdt_switch_vert:dpdt_switch_vert_default,dpst_switch_horz:dpst_switch_horz_default,dpst_switch_vert:dpst_switch_vert_default,filled_diode_horz:filled_diode_horz_default,filled_diode_vert:filled_diode_vert_default,frequency_meter_horz:frequency_meter_horz_default,frequency_meter_vert:frequency_meter_vert_default,fuse_horz:fuse_horz_default,fuse_vert:fuse_vert_default,ground_horz:ground_horz_default,ground_vert:ground_vert_default,gunn_diode_horz:gunn_diode_horz_default,gunn_diode_vert:gunn_diode_vert_default,igbt_transistor_horz:igbt_transistor_horz_default,igbt_transistor_vert:igbt_transistor_vert_default,illuminated_push_button_normally_open_horz:illuminated_push_button_normally_open_horz_default,illuminated_push_button_normally_open_vert:illuminated_push_button_normally_open_vert_default,inductor_down:inductor_down_default,inductor_left:inductor_left_default,inductor_right:inductor_right_default,inductor_up:inductor_up_default,laser_diode_horz:laser_diode_horz_default,laser_diode_vert:laser_diode_vert_default,led_down:led_down_default,led_left:led_left_default,led_right:led_right_default,led_up:led_up_default,light_dependent_resistor_horz:light_dependent_resistor_horz_default,light_dependent_resistor_vert:light_dependent_resistor_vert_default,mosfet_depletion_normally_on_horz:mosfet_depletion_normally_on_horz_default,mosfet_depletion_normally_on_vert:mosfet_depletion_normally_on_vert_default,mushroom_head_normally_open_momentary_horz:mushroom_head_normally_open_momentary_horz_default,mushroom_head_normally_open_momentary_vert:mushroom_head_normally_open_momentary_vert_default,n_channel_d_mosfet_transistor_horz:n_channel_d_mosfet_transistor_horz_default,n_channel_d_mosfet_transistor_vert:n_channel_d_mosfet_transistor_vert_default,n_channel_e_mosfet_transistor_horz:n_channel_e_mosfet_transistor_horz_default,n_channel_e_mosfet_transistor_vert:n_channel_e_mosfet_transistor_vert_default,njfet_transistor_horz:njfet_transistor_horz_default,njfet_transistor_vert:njfet_transistor_vert_default,npn_bipolar_transistor_horz:npn_bipolar_transistor_horz_default,npn_bipolar_transistor_vert:npn_bipolar_transistor_vert_default,p_channel_d_mosfet_transistor_horz:p_channel_d_mosfet_transistor_horz_default,p_channel_d_mosfet_transistor_vert:p_channel_d_mosfet_transistor_vert_default,p_channel_e_mosfet_transistor_horz:p_channel_e_mosfet_transistor_horz_default,p_channel_e_mosfet_transistor_vert:p_channel_e_mosfet_transistor_vert_default,photodiode_horz:photodiode_horz_default,photodiode_vert:photodiode_vert_default,pjfet_transistor_horz:pjfet_transistor_horz_default,pjfet_transistor_vert:pjfet_transistor_vert_default,pnp_bipolar_transistor_horz:pnp_bipolar_transistor_horz_default,pnp_bipolar_transistor_vert:pnp_bipolar_transistor_vert_default,potentiometer_horz:potentiometer_horz_default,potentiometer_vert:potentiometer_vert_default,potentiometer2_horz:potentiometer2_horz_default,potentiometer2_vert:potentiometer2_vert_default,power_factor_meter_horz:power_factor_meter_horz_default,power_factor_meter_vert:power_factor_meter_vert_default,push_button_normally_closed_momentary_horz:push_button_normally_closed_momentary_horz_default,push_button_normally_closed_momentary_vert:push_button_normally_closed_momentary_vert_default,push_button_normally_open_momentary_horz:push_button_normally_open_momentary_horz_default,push_button_normally_open_momentary_vert:push_button_normally_open_momentary_vert_default,rectifier_diode_horz:rectifier_diode_horz_default,rectifier_diode_vert:rectifier_diode_vert_default,resonator_horz:resonator_horz_default,resonator_vert:resonator_vert_default,schottky_diode_horz:schottky_diode_horz_default,schottky_diode_vert:schottky_diode_vert_default,silicon_controlled_rectifier_horz:silicon_controlled_rectifier_horz_default,silicon_controlled_rectifier_vert:silicon_controlled_rectifier_vert_default,SPDT_switch_horz:SPDT_switch_horz_default,SPDT_switch_vert:SPDT_switch_vert_default,SPST_switch_horz:SPST_switch_horz_default,SPST_switch_vert:SPST_switch_vert_default,step_recovery_diode_horz:step_recovery_diode_horz_default,step_recovery_diode_vert:step_recovery_diode_vert_default,tachometer_horz:tachometer_horz_default,tachometer_vert:tachometer_vert_default,triac_horz:triac_horz_default,triac_vert:triac_vert_default,tunnel_diode_horz:tunnel_diode_horz_default,tunnel_diode_vert:tunnel_diode_vert_default,unijunction_transistor_horz:unijunction_transistor_horz_default,unijunction_transistor_vert:unijunction_transistor_vert_default,var_meter_horz:var_meter_horz_default,var_meter_vert:var_meter_vert_default,varactor_diode_horz:varactor_diode_horz_default,varactor_diode_vert:varactor_diode_vert_default,varistor_horz:varistor_horz_default,varistor_vert:varistor_vert_default,varmeter_horz:varmeter_horz_default,varmeter_vert:varmeter_vert_default,volt_meter_horz:volt_meter_horz_default,volt_meter_vert:volt_meter_vert_default,watt_hour_meter_horz:watt_hour_meter_horz_default,watt_hour_meter_vert:watt_hour_meter_vert_default,wattmeter_horz:wattmeter_horz_default,wattmeter_vert:wattmeter_vert_default,zener_diode_horz:zener_diode_horz_default,zener_diode_vert:zener_diode_vert_default};Object.fromEntries(Object.keys(symbols_index_default).map(lV=>[lV,lV]));var lodash__objecttypes,hasRequiredLodash__objecttypes;function requireLodash__objecttypes(){if(hasRequiredLodash__objecttypes)return lodash__objecttypes;hasRequiredLodash__objecttypes=1;var lV={boolean:!1,function:!0,object:!0,number:!1,string:!1,undefined:!1};return lodash__objecttypes=lV,lodash__objecttypes}var lodash_isobject,hasRequiredLodash_isobject;function requireLodash_isobject(){if(hasRequiredLodash_isobject)return lodash_isobject;hasRequiredLodash_isobject=1;var lV=requireLodash__objecttypes();function J(VV){return!!(VV&&lV[typeof VV])}return lodash_isobject=J,lodash_isobject}var lodash__renative,hasRequiredLodash__renative;function requireLodash__renative(){if(hasRequiredLodash__renative)return lodash__renative;hasRequiredLodash__renative=1;var lV=Object.prototype,J=lV.toString,VV=RegExp("^"+String(J).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$");return lodash__renative=VV,lodash__renative}var lodash__shimkeys,hasRequiredLodash__shimkeys;function requireLodash__shimkeys(){if(hasRequiredLodash__shimkeys)return lodash__shimkeys;hasRequiredLodash__shimkeys=1;var lV=requireLodash__objecttypes(),J=Object.prototype,VV=J.hasOwnProperty,RV=function(UV){var ZV,WV=UV,IV=[];if(!WV||!lV[typeof UV])return IV;for(ZV in WV)VV.call(WV,ZV)&&IV.push(ZV);return IV};return lodash__shimkeys=RV,lodash__shimkeys}var lodash_keys,hasRequiredLodash_keys;function requireLodash_keys(){if(hasRequiredLodash_keys)return lodash_keys;hasRequiredLodash_keys=1;var lV=requireLodash_isobject(),J=requireLodash__renative(),VV=requireLodash__shimkeys(),RV=J.test(RV=Object.keys)&&RV,UV=RV?function(ZV){return lV(ZV)?RV(ZV):[]}:VV;return lodash_keys=UV,lodash_keys}var lodash_noop,hasRequiredLodash_noop;function requireLodash_noop(){if(hasRequiredLodash_noop)return lodash_noop;hasRequiredLodash_noop=1;function lV(){}return lodash_noop=lV,lodash_noop}var lodash__basecreate,hasRequiredLodash__basecreate;function requireLodash__basecreate(){if(hasRequiredLodash__basecreate)return lodash__basecreate;hasRequiredLodash__basecreate=1;var lV={process:{env:{}}},J=requireLodash_isobject();requireLodash_noop();var VV=requireLodash__renative(),RV=VV.test(RV=Object.create)&&RV;function UV(ZV,WV){return J(ZV)?RV(ZV):{}}return RV||(UV=function(){function ZV(){}return function(WV){if(J(WV)){ZV.prototype=WV;var IV=new ZV;ZV.prototype=null}return IV||lV.Object()}}()),lodash__basecreate=UV,lodash__basecreate}var lodash__setbinddata,hasRequiredLodash__setbinddata;function requireLodash__setbinddata(){if(hasRequiredLodash__setbinddata)return lodash__setbinddata;hasRequiredLodash__setbinddata=1;var lV=requireLodash_noop(),J=requireLodash__renative(),VV={configurable:!1,enumerable:!1,value:null,writable:!1},RV=function(){try{var ZV={},WV=J.test(WV=Object.defineProperty)&&WV,IV=WV(ZV,ZV,ZV)&&WV}catch{}return IV}(),UV=RV?function(ZV,WV){VV.value=WV,RV(ZV,"__bindData__",VV)}:lV;return lodash__setbinddata=UV,lodash__setbinddata}var lodash__basebind,hasRequiredLodash__basebind;function requireLodash__basebind(){if(hasRequiredLodash__basebind)return lodash__basebind;hasRequiredLodash__basebind=1;var lV=requireLodash__basecreate(),J=requireLodash_isobject(),VV=requireLodash__setbinddata(),RV=[],UV=RV.push;function ZV(WV){var IV=WV[0],dV=WV[2],CV=WV[4];function FV(){if(dV){var NV=dV.slice();UV.apply(NV,arguments)}if(this instanceof FV){var gV=lV(IV.prototype),eV=IV.apply(gV,NV||arguments);return J(eV)?eV:gV}return IV.apply(CV,NV||arguments)}return VV(FV,WV),FV}return lodash__basebind=ZV,lodash__basebind}var lodash__slice,hasRequiredLodash__slice;function requireLodash__slice(){if(hasRequiredLodash__slice)return lodash__slice;hasRequiredLodash__slice=1;function lV(J,VV,RV){VV||(VV=0),typeof RV>"u"&&(RV=J?J.length:0);for(var UV=-1,ZV=RV-VV||0,WV=Array(ZV<0?0:ZV);++UV<ZV;)WV[UV]=J[VV+UV];return WV}return lodash__slice=lV,lodash__slice}var lodash__basecreatewrapper,hasRequiredLodash__basecreatewrapper;function requireLodash__basecreatewrapper(){if(hasRequiredLodash__basecreatewrapper)return lodash__basecreatewrapper;hasRequiredLodash__basecreatewrapper=1;var lV=requireLodash__basecreate(),J=requireLodash_isobject(),VV=requireLodash__setbinddata(),RV=requireLodash__slice(),UV=[],ZV=UV.push;function WV(IV){var dV=IV[0],CV=IV[1],FV=IV[2],NV=IV[3],gV=IV[4],eV=IV[5],JV=CV&1,nV=CV&2,aV=CV&4,GV=CV&8,cV=dV;function TV(){var iV=JV?gV:this;if(FV){var tV=FV.slice();ZV.apply(tV,arguments)}if((NV||aV)&&(tV||(tV=RV(arguments)),NV&&ZV.apply(tV,NV),aV&&tV.length<eV))return CV|=16,WV([dV,GV?CV:CV&-4,tV,null,gV,eV]);if(tV||(tV=arguments),nV&&(dV=iV[cV]),this instanceof TV){iV=lV(dV.prototype);var MV=dV.apply(iV,tV);return J(MV)?MV:iV}return dV.apply(iV,tV)}return VV(TV,IV),TV}return lodash__basecreatewrapper=WV,lodash__basecreatewrapper}var lodash_isfunction,hasRequiredLodash_isfunction;function requireLodash_isfunction(){if(hasRequiredLodash_isfunction)return lodash_isfunction;hasRequiredLodash_isfunction=1;function lV(J){return typeof J=="function"}return lodash_isfunction=lV,lodash_isfunction}var lodash__createwrapper,hasRequiredLodash__createwrapper;function requireLodash__createwrapper(){if(hasRequiredLodash__createwrapper)return lodash__createwrapper;hasRequiredLodash__createwrapper=1;var lV=requireLodash__basebind(),J=requireLodash__basecreatewrapper(),VV=requireLodash_isfunction(),RV=[],UV=RV.push;function ZV(WV,IV,dV,CV,FV,NV){var gV=IV&1,eV=IV&2,JV=IV&4,nV=IV&16,aV=IV&32;if(!eV&&!VV(WV))throw new TypeError;nV&&!dV.length&&(IV&=-17,nV=dV=!1),aV&&!CV.length&&(IV&=-33,aV=CV=!1);var GV=WV&&WV.__bindData__;if(GV&&GV!==!0)return GV=GV.slice(),gV&&!(GV[1]&1)&&(GV[4]=FV),!gV&&GV[1]&1&&(IV|=8),JV&&!(GV[1]&4)&&(GV[5]=NV),nV&&UV.apply(GV[2]||(GV[2]=[]),dV),aV&&UV.apply(GV[3]||(GV[3]=[]),CV),GV[1]|=IV,ZV.apply(null,GV);var cV=IV==1||IV===17?lV:J;return cV([WV,IV,dV,CV,FV,NV])}return lodash__createwrapper=ZV,lodash__createwrapper}var lodash_bind,hasRequiredLodash_bind;function requireLodash_bind(){if(hasRequiredLodash_bind)return lodash_bind;hasRequiredLodash_bind=1;var lV=requireLodash__createwrapper();requireLodash__renative();var J=requireLodash__slice();function VV(RV,UV){return arguments.length>2?lV(RV,17,J(arguments,2),null,UV):lV(RV,1,null,null,UV)}return lodash_bind=VV,lodash_bind}var lodash_identity,hasRequiredLodash_identity;function requireLodash_identity(){if(hasRequiredLodash_identity)return lodash_identity;hasRequiredLodash_identity=1;function lV(J){return J}return lodash_identity=lV,lodash_identity}var lodash_support,hasRequiredLodash_support;function requireLodash_support(){if(hasRequiredLodash_support)return lodash_support;hasRequiredLodash_support=1;var lV={process:{env:{}}},J=requireLodash__renative(),VV=/\bthis\b/,RV={};return RV.funcDecomp=!J.test(lV.WinRTError)&&VV.test(function(){return this}),RV.funcNames=typeof Function.name=="string",lodash_support=RV,lodash_support}var lodash__basecreatecallback,hasRequiredLodash__basecreatecallback;function requireLodash__basecreatecallback(){if(hasRequiredLodash__basecreatecallback)return lodash__basecreatecallback;hasRequiredLodash__basecreatecallback=1;var lV=requireLodash_bind(),J=requireLodash_identity(),VV=requireLodash__setbinddata(),RV=requireLodash_support(),UV=/^\s*function[ \n\r\t]+\w/,ZV=/\bthis\b/,WV=Function.prototype.toString;function IV(dV,CV,FV){if(typeof dV!="function")return J;if(typeof CV>"u"||!("prototype"in dV))return dV;var NV=dV.__bindData__;if(typeof NV>"u"&&(RV.funcNames&&(NV=!dV.name),NV=NV||!RV.funcDecomp,!NV)){var gV=WV.call(dV);RV.funcNames||(NV=!UV.test(gV)),NV||(NV=ZV.test(gV),VV(dV,NV))}if(NV===!1||NV!==!0&&NV[1]&1)return dV;switch(FV){case 1:return function(eV){return dV.call(CV,eV)};case 2:return function(eV,JV){return dV.call(CV,eV,JV)};case 3:return function(eV,JV,nV){return dV.call(CV,eV,JV,nV)};case 4:return function(eV,JV,nV,aV){return dV.call(CV,eV,JV,nV,aV)}}return lV(dV,CV)}return lodash__basecreatecallback=IV,lodash__basecreatecallback}var lodash_forown,hasRequiredLodash_forown;function requireLodash_forown(){if(hasRequiredLodash_forown)return lodash_forown;hasRequiredLodash_forown=1;var lV=requireLodash__basecreatecallback(),J=requireLodash_keys(),VV=requireLodash__objecttypes(),RV=function(UV,ZV,WV){var IV,dV=UV,CV=dV;if(!dV||!VV[typeof dV])return CV;ZV=ZV&&typeof WV>"u"?ZV:lV(ZV,WV,3);for(var FV=-1,NV=VV[typeof dV]&&J(dV),gV=NV?NV.length:0;++FV<gV;)if(IV=NV[FV],ZV(dV[IV],IV,UV)===!1)return CV;return CV};return lodash_forown=RV,lodash_forown}var lodash_foreach,hasRequiredLodash_foreach;function requireLodash_foreach(){if(hasRequiredLodash_foreach)return lodash_foreach;hasRequiredLodash_foreach=1;var lV=requireLodash__basecreatecallback(),J=requireLodash_forown();function VV(RV,UV,ZV){var WV=-1,IV=RV?RV.length:0;if(UV=UV&&typeof ZV>"u"?UV:lV(UV,ZV,3),typeof IV=="number")for(;++WV<IV&&UV(RV[WV],WV,RV)!==!1;);else J(RV,UV);return RV}return lodash_foreach=VV,lodash_foreach}var length$2,hasRequiredLength$3;function requireLength$3(){if(hasRequiredLength$3)return length$2;hasRequiredLength$3=1;var lV,J;return lV={mm:{name:{singular:"Millimeter",plural:"Millimeters"},to_anchor:1/1e3},cm:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/100},m:{name:{singular:"Meter",plural:"Meters"},to_anchor:1},km:{name:{singular:"Kilometer",plural:"Kilometers"},to_anchor:1e3}},J={in:{name:{singular:"Inch",plural:"Inches"},to_anchor:1/12},yd:{name:{singular:"Yard",plural:"Yards"},to_anchor:3},"ft-us":{name:{singular:"US Survey Foot",plural:"US Survey Feet"},to_anchor:1.000002},ft:{name:{singular:"Foot",plural:"Feet"},to_anchor:1},mi:{name:{singular:"Mile",plural:"Miles"},to_anchor:5280}},length$2={metric:lV,imperial:J,_anchors:{metric:{unit:"m",ratio:3.28084},imperial:{unit:"ft",ratio:1/3.28084}}},length$2}var area$1,hasRequiredArea$1;function requireArea$1(){if(hasRequiredArea$1)return area$1;hasRequiredArea$1=1;var lV,J;return lV={mm2:{name:{singular:"Square Millimeter",plural:"Square Millimeters"},to_anchor:1/1e6},cm2:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/1e4},m2:{name:{singular:"Square Meter",plural:"Square Meters"},to_anchor:1},ha:{name:{singular:"Hectare",plural:"Hectares"},to_anchor:1e4},km2:{name:{singular:"Square Kilometer",plural:"Square Kilometers"},to_anchor:1e6}},J={in2:{name:{singular:"Square Inch",plural:"Square Inches"},to_anchor:1/144},yd2:{name:{singular:"Square Yard",plural:"Square Yards"},to_anchor:9},ft2:{name:{singular:"Square Foot",plural:"Square Feet"},to_anchor:1},ac:{name:{singular:"Acre",plural:"Acres"},to_anchor:43560},mi2:{name:{singular:"Square Mile",plural:"Square Miles"},to_anchor:27878400}},area$1={metric:lV,imperial:J,_anchors:{metric:{unit:"m2",ratio:10.7639},imperial:{unit:"ft2",ratio:1/10.7639}}},area$1}var mass,hasRequiredMass;function requireMass(){if(hasRequiredMass)return mass;hasRequiredMass=1;var lV,J;return lV={mcg:{name:{singular:"Microgram",plural:"Micrograms"},to_anchor:1/1e6},mg:{name:{singular:"Milligram",plural:"Milligrams"},to_anchor:1/1e3},g:{name:{singular:"Gram",plural:"Grams"},to_anchor:1},kg:{name:{singular:"Kilogram",plural:"Kilograms"},to_anchor:1e3},mt:{name:{singular:"Metric Tonne",plural:"Metric Tonnes"},to_anchor:1e6}},J={oz:{name:{singular:"Ounce",plural:"Ounces"},to_anchor:1/16},lb:{name:{singular:"Pound",plural:"Pounds"},to_anchor:1},t:{name:{singular:"Ton",plural:"Tons"},to_anchor:2e3}},mass={metric:lV,imperial:J,_anchors:{metric:{unit:"g",ratio:1/453.592},imperial:{unit:"lb",ratio:453.592}}},mass}var volume,hasRequiredVolume;function requireVolume(){if(hasRequiredVolume)return volume;hasRequiredVolume=1;var lV,J;return lV={mm3:{name:{singular:"Cubic Millimeter",plural:"Cubic Millimeters"},to_anchor:1/1e6},cm3:{name:{singular:"Cubic Centimeter",plural:"Cubic Centimeters"},to_anchor:1/1e3},ml:{name:{singular:"Millilitre",plural:"Millilitres"},to_anchor:1/1e3},cl:{name:{singular:"Centilitre",plural:"Centilitres"},to_anchor:1/100},dl:{name:{singular:"Decilitre",plural:"Decilitres"},to_anchor:1/10},l:{name:{singular:"Litre",plural:"Litres"},to_anchor:1},kl:{name:{singular:"Kilolitre",plural:"Kilolitres"},to_anchor:1e3},m3:{name:{singular:"Cubic meter",plural:"Cubic meters"},to_anchor:1e3},km3:{name:{singular:"Cubic kilometer",plural:"Cubic kilometers"},to_anchor:1e12},krm:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:1/1e3},tsk:{name:{singular:"Tesked",plural:"Teskedar"},to_anchor:5/1e3},msk:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:15/1e3},kkp:{name:{singular:"Kaffekopp",plural:"Kaffekoppar"},to_anchor:150/1e3},glas:{name:{singular:"Glas",plural:"Glas"},to_anchor:200/1e3},kanna:{name:{singular:"Kanna",plural:"Kannor"},to_anchor:2.617}},J={tsp:{name:{singular:"Teaspoon",plural:"Teaspoons"},to_anchor:1/6},Tbs:{name:{singular:"Tablespoon",plural:"Tablespoons"},to_anchor:1/2},in3:{name:{singular:"Cubic inch",plural:"Cubic inches"},to_anchor:.55411},"fl-oz":{name:{singular:"Fluid Ounce",plural:"Fluid Ounces"},to_anchor:1},cup:{name:{singular:"Cup",plural:"Cups"},to_anchor:8},pnt:{name:{singular:"Pint",plural:"Pints"},to_anchor:16},qt:{name:{singular:"Quart",plural:"Quarts"},to_anchor:32},gal:{name:{singular:"Gallon",plural:"Gallons"},to_anchor:128},ft3:{name:{singular:"Cubic foot",plural:"Cubic feet"},to_anchor:957.506},yd3:{name:{singular:"Cubic yard",plural:"Cubic yards"},to_anchor:25852.7}},volume={metric:lV,imperial:J,_anchors:{metric:{unit:"l",ratio:33.8140226},imperial:{unit:"fl-oz",ratio:1/33.8140226}}},volume}var each$1,hasRequiredEach;function requireEach(){if(hasRequiredEach)return each$1;hasRequiredEach=1;var lV;return lV={ea:{name:{singular:"Each",plural:"Each"},to_anchor:1},dz:{name:{singular:"Dozen",plural:"Dozens"},to_anchor:12}},each$1={metric:lV,imperial:{},_anchors:{metric:{unit:"ea",ratio:1}}},each$1}var temperature,hasRequiredTemperature;function requireTemperature(){if(hasRequiredTemperature)return temperature;hasRequiredTemperature=1;var lV,J;return lV={C:{name:{singular:"degree Celsius",plural:"degrees Celsius"},to_anchor:1,anchor_shift:0},K:{name:{singular:"degree Kelvin",plural:"degrees Kelvin"},to_anchor:1,anchor_shift:273.15}},J={F:{name:{singular:"degree Fahrenheit",plural:"degrees Fahrenheit"},to_anchor:1},R:{name:{singular:"degree Rankine",plural:"degrees Rankine"},to_anchor:1,anchor_shift:459.67}},temperature={metric:lV,imperial:J,_anchors:{metric:{unit:"C",transform:function(VV){return VV/(5/9)+32}},imperial:{unit:"F",transform:function(VV){return(VV-32)*(5/9)}}}},temperature}var time_1,hasRequiredTime;function requireTime(){if(hasRequiredTime)return time_1;hasRequiredTime=1;var lV,J=365.25;return lV={ns:{name:{singular:"Nanosecond",plural:"Nanoseconds"},to_anchor:1/1e9},mu:{name:{singular:"Microsecond",plural:"Microseconds"},to_anchor:1/1e6},ms:{name:{singular:"Millisecond",plural:"Milliseconds"},to_anchor:1/1e3},s:{name:{singular:"Second",plural:"Seconds"},to_anchor:1},min:{name:{singular:"Minute",plural:"Minutes"},to_anchor:60},h:{name:{singular:"Hour",plural:"Hours"},to_anchor:60*60},d:{name:{singular:"Day",plural:"Days"},to_anchor:60*60*24},week:{name:{singular:"Week",plural:"Weeks"},to_anchor:60*60*24*7},month:{name:{singular:"Month",plural:"Months"},to_anchor:60*60*24*J/12},year:{name:{singular:"Year",plural:"Years"},to_anchor:60*60*24*J}},time_1={metric:lV,_anchors:{metric:{unit:"s",ratio:1}}},time_1}var digital,hasRequiredDigital;function requireDigital(){if(hasRequiredDigital)return digital;hasRequiredDigital=1;var lV,J;return lV={b:{name:{singular:"Bit",plural:"Bits"},to_anchor:1},Kb:{name:{singular:"Kilobit",plural:"Kilobits"},to_anchor:1024},Mb:{name:{singular:"Megabit",plural:"Megabits"},to_anchor:1048576},Gb:{name:{singular:"Gigabit",plural:"Gigabits"},to_anchor:1073741824},Tb:{name:{singular:"Terabit",plural:"Terabits"},to_anchor:1099511627776}},J={B:{name:{singular:"Byte",plural:"Bytes"},to_anchor:1},KB:{name:{singular:"Kilobyte",plural:"Kilobytes"},to_anchor:1024},MB:{name:{singular:"Megabyte",plural:"Megabytes"},to_anchor:1048576},GB:{name:{singular:"Gigabyte",plural:"Gigabytes"},to_anchor:1073741824},TB:{name:{singular:"Terabyte",plural:"Terabytes"},to_anchor:1099511627776}},digital={bits:lV,bytes:J,_anchors:{bits:{unit:"b",ratio:1/8},bytes:{unit:"B",ratio:8}}},digital}var partsPer,hasRequiredPartsPer;function requirePartsPer(){if(hasRequiredPartsPer)return partsPer;hasRequiredPartsPer=1;var lV;return lV={ppm:{name:{singular:"Part-per Million",plural:"Parts-per Million"},to_anchor:1},ppb:{name:{singular:"Part-per Billion",plural:"Parts-per Billion"},to_anchor:.001},ppt:{name:{singular:"Part-per Trillion",plural:"Parts-per Trillion"},to_anchor:1e-6},ppq:{name:{singular:"Part-per Quadrillion",plural:"Parts-per Quadrillion"},to_anchor:1e-9}},partsPer={metric:lV,imperial:{},_anchors:{metric:{unit:"ppm",ratio:1e-6}}},partsPer}var speed,hasRequiredSpeed;function requireSpeed(){if(hasRequiredSpeed)return speed;hasRequiredSpeed=1;var lV,J;return lV={"m/s":{name:{singular:"Metre per second",plural:"Metres per second"},to_anchor:3.6},"km/h":{name:{singular:"Kilometre per hour",plural:"Kilometres per hour"},to_anchor:1}},J={"m/h":{name:{singular:"Mile per hour",plural:"Miles per hour"},to_anchor:1},knot:{name:{singular:"Knot",plural:"Knots"},to_anchor:1.150779},"ft/s":{name:{singular:"Foot per second",plural:"Feet per second"},to_anchor:.681818}},speed={metric:lV,imperial:J,_anchors:{metric:{unit:"km/h",ratio:1/1.609344},imperial:{unit:"m/h",ratio:1.609344}}},speed}var pace,hasRequiredPace;function requirePace(){if(hasRequiredPace)return pace;hasRequiredPace=1;var lV,J;return lV={"min/km":{name:{singular:"Minute per kilometre",plural:"Minutes per kilometre"},to_anchor:.06},"s/m":{name:{singular:"Second per metre",plural:"Seconds per metre"},to_anchor:1}},J={"min/mi":{name:{singular:"Minute per mile",plural:"Minutes per mile"},to_anchor:.0113636},"s/ft":{name:{singular:"Second per foot",plural:"Seconds per foot"},to_anchor:1}},pace={metric:lV,imperial:J,_anchors:{metric:{unit:"s/m",ratio:.3048},imperial:{unit:"s/ft",ratio:1/.3048}}},pace}var pressure,hasRequiredPressure;function requirePressure(){if(hasRequiredPressure)return pressure;hasRequiredPressure=1;var lV,J;return lV={Pa:{name:{singular:"pascal",plural:"pascals"},to_anchor:1/1e3},kPa:{name:{singular:"kilopascal",plural:"kilopascals"},to_anchor:1},MPa:{name:{singular:"megapascal",plural:"megapascals"},to_anchor:1e3},hPa:{name:{singular:"hectopascal",plural:"hectopascals"},to_anchor:1/10},bar:{name:{singular:"bar",plural:"bar"},to_anchor:100},torr:{name:{singular:"torr",plural:"torr"},to_anchor:101325/76e4}},J={psi:{name:{singular:"pound per square inch",plural:"pounds per square inch"},to_anchor:1/1e3},ksi:{name:{singular:"kilopound per square inch",plural:"kilopound per square inch"},to_anchor:1}},pressure={metric:lV,imperial:J,_anchors:{metric:{unit:"kPa",ratio:.00014503768078},imperial:{unit:"psi",ratio:1/.00014503768078}}},pressure}var current_1,hasRequiredCurrent;function requireCurrent(){if(hasRequiredCurrent)return current_1;hasRequiredCurrent=1;var lV;return lV={A:{name:{singular:"Ampere",plural:"Amperes"},to_anchor:1},mA:{name:{singular:"Milliampere",plural:"Milliamperes"},to_anchor:.001},kA:{name:{singular:"Kiloampere",plural:"Kiloamperes"},to_anchor:1e3}},current_1={metric:lV,_anchors:{metric:{unit:"A",ratio:1}}},current_1}var voltage_1,hasRequiredVoltage;function requireVoltage(){if(hasRequiredVoltage)return voltage_1;hasRequiredVoltage=1;var lV;return lV={V:{name:{singular:"Volt",plural:"Volts"},to_anchor:1},mV:{name:{singular:"Millivolt",plural:"Millivolts"},to_anchor:.001},kV:{name:{singular:"Kilovolt",plural:"Kilovolts"},to_anchor:1e3}},voltage_1={metric:lV,_anchors:{metric:{unit:"V",ratio:1}}},voltage_1}var power_1,hasRequiredPower;function requirePower(){if(hasRequiredPower)return power_1;hasRequiredPower=1;var lV;return lV={W:{name:{singular:"Watt",plural:"Watts"},to_anchor:1},mW:{name:{singular:"Milliwatt",plural:"Milliwatts"},to_anchor:.001},kW:{name:{singular:"Kilowatt",plural:"Kilowatts"},to_anchor:1e3},MW:{name:{singular:"Megawatt",plural:"Megawatts"},to_anchor:1e6},GW:{name:{singular:"Gigawatt",plural:"Gigawatts"},to_anchor:1e9}},power_1={metric:lV,_anchors:{metric:{unit:"W",ratio:1}}},power_1}var reactivePower_1,hasRequiredReactivePower;function requireReactivePower(){if(hasRequiredReactivePower)return reactivePower_1;hasRequiredReactivePower=1;var lV;return lV={VAR:{name:{singular:"Volt-Ampere Reactive",plural:"Volt-Amperes Reactive"},to_anchor:1},mVAR:{name:{singular:"Millivolt-Ampere Reactive",plural:"Millivolt-Amperes Reactive"},to_anchor:.001},kVAR:{name:{singular:"Kilovolt-Ampere Reactive",plural:"Kilovolt-Amperes Reactive"},to_anchor:1e3},MVAR:{name:{singular:"Megavolt-Ampere Reactive",plural:"Megavolt-Amperes Reactive"},to_anchor:1e6},GVAR:{name:{singular:"Gigavolt-Ampere Reactive",plural:"Gigavolt-Amperes Reactive"},to_anchor:1e9}},reactivePower_1={metric:lV,_anchors:{metric:{unit:"VAR",ratio:1}}},reactivePower_1}var apparentPower_1,hasRequiredApparentPower;function requireApparentPower(){if(hasRequiredApparentPower)return apparentPower_1;hasRequiredApparentPower=1;var lV;return lV={VA:{name:{singular:"Volt-Ampere",plural:"Volt-Amperes"},to_anchor:1},mVA:{name:{singular:"Millivolt-Ampere",plural:"Millivolt-Amperes"},to_anchor:.001},kVA:{name:{singular:"Kilovolt-Ampere",plural:"Kilovolt-Amperes"},to_anchor:1e3},MVA:{name:{singular:"Megavolt-Ampere",plural:"Megavolt-Amperes"},to_anchor:1e6},GVA:{name:{singular:"Gigavolt-Ampere",plural:"Gigavolt-Amperes"},to_anchor:1e9}},apparentPower_1={metric:lV,_anchors:{metric:{unit:"VA",ratio:1}}},apparentPower_1}var energy_1,hasRequiredEnergy;function requireEnergy(){if(hasRequiredEnergy)return energy_1;hasRequiredEnergy=1;var lV;return lV={Wh:{name:{singular:"Watt-hour",plural:"Watt-hours"},to_anchor:3600},mWh:{name:{singular:"Milliwatt-hour",plural:"Milliwatt-hours"},to_anchor:3.6},kWh:{name:{singular:"Kilowatt-hour",plural:"Kilowatt-hours"},to_anchor:36e5},MWh:{name:{singular:"Megawatt-hour",plural:"Megawatt-hours"},to_anchor:36e8},GWh:{name:{singular:"Gigawatt-hour",plural:"Gigawatt-hours"},to_anchor:36e11},J:{name:{singular:"Joule",plural:"Joules"},to_anchor:1},kJ:{name:{singular:"Kilojoule",plural:"Kilojoules"},to_anchor:1e3}},energy_1={metric:lV,_anchors:{metric:{unit:"J",ratio:1}}},energy_1}var reactiveEnergy_1,hasRequiredReactiveEnergy;function requireReactiveEnergy(){if(hasRequiredReactiveEnergy)return reactiveEnergy_1;hasRequiredReactiveEnergy=1;var lV;return lV={VARh:{name:{singular:"Volt-Ampere Reactive Hour",plural:"Volt-Amperes Reactive Hour"},to_anchor:1},mVARh:{name:{singular:"Millivolt-Ampere Reactive Hour",plural:"Millivolt-Amperes Reactive Hour"},to_anchor:.001},kVARh:{name:{singular:"Kilovolt-Ampere Reactive Hour",plural:"Kilovolt-Amperes Reactive Hour"},to_anchor:1e3},MVARh:{name:{singular:"Megavolt-Ampere Reactive Hour",plural:"Megavolt-Amperes Reactive Hour"},to_anchor:1e6},GVARh:{name:{singular:"Gigavolt-Ampere Reactive Hour",plural:"Gigavolt-Amperes Reactive Hour"},to_anchor:1e9}},reactiveEnergy_1={metric:lV,_anchors:{metric:{unit:"VARh",ratio:1}}},reactiveEnergy_1}var volumeFlowRate,hasRequiredVolumeFlowRate;function requireVolumeFlowRate(){if(hasRequiredVolumeFlowRate)return volumeFlowRate;hasRequiredVolumeFlowRate=1;var lV,J;return lV={"mm3/s":{name:{singular:"Cubic Millimeter per second",plural:"Cubic Millimeters per second"},to_anchor:1/1e6},"cm3/s":{name:{singular:"Cubic Centimeter per second",plural:"Cubic Centimeters per second"},to_anchor:1/1e3},"ml/s":{name:{singular:"Millilitre per second",plural:"Millilitres per second"},to_anchor:1/1e3},"cl/s":{name:{singular:"Centilitre per second",plural:"Centilitres per second"},to_anchor:1/100},"dl/s":{name:{singular:"Decilitre per second",plural:"Decilitres per second"},to_anchor:1/10},"l/s":{name:{singular:"Litre per second",plural:"Litres per second"},to_anchor:1},"l/min":{name:{singular:"Litre per minute",plural:"Litres per minute"},to_anchor:1/60},"l/h":{name:{singular:"Litre per hour",plural:"Litres per hour"},to_anchor:1/3600},"kl/s":{name:{singular:"Kilolitre per second",plural:"Kilolitres per second"},to_anchor:1e3},"kl/min":{name:{singular:"Kilolitre per minute",plural:"Kilolitres per minute"},to_anchor:50/3},"kl/h":{name:{singular:"Kilolitre per hour",plural:"Kilolitres per hour"},to_anchor:5/18},"m3/s":{name:{singular:"Cubic meter per second",plural:"Cubic meters per second"},to_anchor:1e3},"m3/min":{name:{singular:"Cubic meter per minute",plural:"Cubic meters per minute"},to_anchor:50/3},"m3/h":{name:{singular:"Cubic meter per hour",plural:"Cubic meters per hour"},to_anchor:5/18},"km3/s":{name:{singular:"Cubic kilometer per second",plural:"Cubic kilometers per second"},to_anchor:1e12}},J={"tsp/s":{name:{singular:"Teaspoon per second",plural:"Teaspoons per second"},to_anchor:1/6},"Tbs/s":{name:{singular:"Tablespoon per second",plural:"Tablespoons per second"},to_anchor:1/2},"in3/s":{name:{singular:"Cubic inch per second",plural:"Cubic inches per second"},to_anchor:.55411},"in3/min":{name:{singular:"Cubic inch per minute",plural:"Cubic inches per minute"},to_anchor:.55411/60},"in3/h":{name:{singular:"Cubic inch per hour",plural:"Cubic inches per hour"},to_anchor:.55411/3600},"fl-oz/s":{name:{singular:"Fluid Ounce per second",plural:"Fluid Ounces per second"},to_anchor:1},"fl-oz/min":{name:{singular:"Fluid Ounce per minute",plural:"Fluid Ounces per minute"},to_anchor:1/60},"fl-oz/h":{name:{singular:"Fluid Ounce per hour",plural:"Fluid Ounces per hour"},to_anchor:1/3600},"cup/s":{name:{singular:"Cup per second",plural:"Cups per second"},to_anchor:8},"pnt/s":{name:{singular:"Pint per second",plural:"Pints per second"},to_anchor:16},"pnt/min":{name:{singular:"Pint per minute",plural:"Pints per minute"},to_anchor:4/15},"pnt/h":{name:{singular:"Pint per hour",plural:"Pints per hour"},to_anchor:1/225},"qt/s":{name:{singular:"Quart per second",plural:"Quarts per second"},to_anchor:32},"gal/s":{name:{singular:"Gallon per second",plural:"Gallons per second"},to_anchor:128},"gal/min":{name:{singular:"Gallon per minute",plural:"Gallons per minute"},to_anchor:32/15},"gal/h":{name:{singular:"Gallon per hour",plural:"Gallons per hour"},to_anchor:8/225},"ft3/s":{name:{singular:"Cubic foot per second",plural:"Cubic feet per second"},to_anchor:957.506},"ft3/min":{name:{singular:"Cubic foot per minute",plural:"Cubic feet per minute"},to_anchor:957.506/60},"ft3/h":{name:{singular:"Cubic foot per hour",plural:"Cubic feet per hour"},to_anchor:957.506/3600},"yd3/s":{name:{singular:"Cubic yard per second",plural:"Cubic yards per second"},to_anchor:25852.7},"yd3/min":{name:{singular:"Cubic yard per minute",plural:"Cubic yards per minute"},to_anchor:25852.7/60},"yd3/h":{name:{singular:"Cubic yard per hour",plural:"Cubic yards per hour"},to_anchor:25852.7/3600}},volumeFlowRate={metric:lV,imperial:J,_anchors:{metric:{unit:"l/s",ratio:33.8140227},imperial:{unit:"fl-oz/s",ratio:1/33.8140227}}},volumeFlowRate}var illuminance,hasRequiredIlluminance;function requireIlluminance(){if(hasRequiredIlluminance)return illuminance;hasRequiredIlluminance=1;var lV,J;return lV={lx:{name:{singular:"Lux",plural:"Lux"},to_anchor:1}},J={"ft-cd":{name:{singular:"Foot-candle",plural:"Foot-candles"},to_anchor:1}},illuminance={metric:lV,imperial:J,_anchors:{metric:{unit:"lx",ratio:1/10.76391},imperial:{unit:"ft-cd",ratio:10.76391}}},illuminance}var frequency_1,hasRequiredFrequency;function requireFrequency(){if(hasRequiredFrequency)return frequency_1;hasRequiredFrequency=1;var lV;return lV={mHz:{name:{singular:"millihertz",plural:"millihertz"},to_anchor:1/1e3},Hz:{name:{singular:"hertz",plural:"hertz"},to_anchor:1},kHz:{name:{singular:"kilohertz",plural:"kilohertz"},to_anchor:1e3},MHz:{name:{singular:"megahertz",plural:"megahertz"},to_anchor:1e3*1e3},GHz:{name:{singular:"gigahertz",plural:"gigahertz"},to_anchor:1e3*1e3*1e3},THz:{name:{singular:"terahertz",plural:"terahertz"},to_anchor:1e3*1e3*1e3*1e3},rpm:{name:{singular:"rotation per minute",plural:"rotations per minute"},to_anchor:1/60},"deg/s":{name:{singular:"degree per second",plural:"degrees per second"},to_anchor:1/360},"rad/s":{name:{singular:"radian per second",plural:"radians per second"},to_anchor:1/(Math.PI*2)}},frequency_1={metric:lV,_anchors:{frequency:{unit:"hz",ratio:1}}},frequency_1}var angle_1$1,hasRequiredAngle$2;function requireAngle$2(){if(hasRequiredAngle$2)return angle_1$1;hasRequiredAngle$2=1;var lV;return lV={rad:{name:{singular:"radian",plural:"radians"},to_anchor:180/Math.PI},deg:{name:{singular:"degree",plural:"degrees"},to_anchor:1},grad:{name:{singular:"gradian",plural:"gradians"},to_anchor:9/10},arcmin:{name:{singular:"arcminute",plural:"arcminutes"},to_anchor:1/60},arcsec:{name:{singular:"arcsecond",plural:"arcseconds"},to_anchor:1/3600}},angle_1$1={metric:lV,_anchors:{metric:{unit:"deg",ratio:1}}},angle_1$1}var lib,hasRequiredLib;function requireLib(){if(hasRequiredLib)return lib;hasRequiredLib=1;var lV,J=requireLodash_keys(),VV=requireLodash_foreach(),RV={length:requireLength$3(),area:requireArea$1(),mass:requireMass(),volume:requireVolume(),each:requireEach(),temperature:requireTemperature(),time:requireTime(),digital:requireDigital(),partsPer:requirePartsPer(),speed:requireSpeed(),pace:requirePace(),pressure:requirePressure(),current:requireCurrent(),voltage:requireVoltage(),power:requirePower(),reactivePower:requireReactivePower(),apparentPower:requireApparentPower(),energy:requireEnergy(),reactiveEnergy:requireReactiveEnergy(),volumeFlowRate:requireVolumeFlowRate(),illuminance:requireIlluminance(),frequency:requireFrequency(),angle:requireAngle$2()},UV;UV=function(WV,IV){IV?this.val=WV/IV:this.val=WV},UV.prototype.from=function(WV){if(this.destination)throw new Error(".from must be called before .to");return this.origin=this.getUnit(WV),this.origin||this.throwUnsupportedUnitError(WV),this},UV.prototype.to=function(WV){if(!this.origin)throw new Error(".to must be called after .from");this.destination=this.getUnit(WV);var IV,dV;if(this.destination||this.throwUnsupportedUnitError(WV),this.origin.abbr===this.destination.abbr)return this.val;if(this.destination.measure!=this.origin.measure)throw new Error("Cannot convert incompatible measures of "+this.destination.measure+" and "+this.origin.measure);return IV=this.val*this.origin.unit.to_anchor,this.origin.unit.anchor_shift&&(IV-=this.origin.unit.anchor_shift),this.origin.system!=this.destination.system&&(dV=RV[this.origin.measure]._anchors[this.origin.system].transform,typeof dV=="function"?IV=dV(IV):IV*=RV[this.origin.measure]._anchors[this.origin.system].ratio),this.destination.unit.anchor_shift&&(IV+=this.destination.unit.anchor_shift),IV/this.destination.unit.to_anchor},UV.prototype.toBest=function(IV){if(!this.origin)throw new Error(".toBest must be called after .from");var IV=Object.assign({exclude:[],cutOffNumber:1},IV),dV;return VV(this.possibilities(),(function(CV){var FV=this.describe(CV),NV=IV.exclude.indexOf(CV)===-1;if(NV&&FV.system===this.origin.system){var gV=this.to(CV);(!dV||gV>=IV.cutOffNumber&&gV<dV.val)&&(dV={val:gV,unit:CV,singular:FV.singular,plural:FV.plural})}}).bind(this)),dV},UV.prototype.getUnit=function(WV){var IV;return VV(RV,function(dV,CV){if(VV(dV,function(FV,NV){if(NV=="_anchors"||(VV(FV,function(gV,eV){if(eV==WV)return IV={abbr:WV,measure:CV,system:NV,unit:gV},!1}),IV))return!1}),IV)return!1}),IV};var ZV=function(WV){return{abbr:WV.abbr,measure:WV.measure,system:WV.system,singular:WV.unit.name.singular,plural:WV.unit.name.plural}};return UV.prototype.describe=function(WV){var IV=UV.prototype.getUnit(WV),dV=null;try{dV=ZV(IV)}catch{this.throwUnsupportedUnitError(WV)}return dV},UV.prototype.list=function(WV){var IV=[];return VV(RV,function(dV,CV){WV&&WV!==CV||VV(dV,function(FV,NV){if(NV=="_anchors")return!1;VV(FV,function(gV,eV){IV=IV.concat(ZV({abbr:eV,measure:CV,system:NV,unit:gV}))})})}),IV},UV.prototype.throwUnsupportedUnitError=function(WV){var IV=[];throw VV(RV,function(dV,CV){VV(dV,function(FV,NV){if(NV=="_anchors")return!1;IV=IV.concat(J(FV))})}),new Error("Unsupported unit "+WV+", use one of: "+IV.join(", "))},UV.prototype.possibilities=function(WV){var IV=[];return!this.origin&&!WV?VV(J(RV),function(dV){VV(RV[dV],function(CV,FV){if(FV=="_anchors")return!1;IV=IV.concat(J(CV))})}):(WV=WV||this.origin.measure,VV(RV[WV],function(dV,CV){if(CV=="_anchors")return!1;IV=IV.concat(J(dV))})),IV},UV.prototype.measures=function(){return J(RV)},lV=function(WV){return new UV(WV)},lib=lV,lib}const require$$2$2=getAugmentedNamespace(index_browser);var dist$a,hasRequiredDist$7;function requireDist$7(){if(hasRequiredDist$7)return dist$a;hasRequiredDist$7=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(wZ,EI)=>{for(var XW in EI)J(wZ,XW,{get:EI[XW],enumerable:!0})},IV=(wZ,EI,XW,kI)=>{if(EI&&typeof EI=="object"||typeof EI=="function")for(let gI of RV(EI))!ZV.call(wZ,gI)&&gI!==XW&&J(wZ,gI,{get:()=>EI[gI],enumerable:!(kI=VV(EI,gI))||kI.enumerable});return wZ},dV=(wZ,EI,XW)=>(XW=wZ!=null?lV(UV(wZ)):{},IV(!wZ||!wZ.__esModule?J(XW,"default",{value:wZ,enumerable:!0}):XW,wZ)),CV=wZ=>IV(J({},"__esModule",{value:!0}),wZ),FV={};WV(FV,{all_layers:()=>cW,any_circuit_element:()=>qU,any_soup_element:()=>aW,any_source_component:()=>TR,cad_component:()=>jU,capacitance:()=>TV,current:()=>pV,distance:()=>AV,inductance:()=>iV,layer_ref:()=>HW,layer_string:()=>DW,length:()=>MV,pcb_board:()=>$Z,pcb_component:()=>DU,pcb_fabrication_note_path:()=>ZI,pcb_fabrication_note_text:()=>AW,pcb_hole:()=>ol,pcb_keepout:()=>zU,pcb_placement_error:()=>iZ,pcb_plated_hole:()=>wR,pcb_port:()=>tU,pcb_port_not_matched_error:()=>WU,pcb_route_hint:()=>gW,pcb_route_hints:()=>TW,pcb_silkscreen_circle:()=>fZ,pcb_silkscreen_line:()=>KZ,pcb_silkscreen_oval:()=>bW,pcb_silkscreen_path:()=>II,pcb_silkscreen_rect:()=>LU,pcb_silkscreen_text:()=>NU,pcb_smtpad:()=>yU,pcb_text:()=>mZ,pcb_trace:()=>ZW,pcb_trace_error:()=>IZ,pcb_trace_hint:()=>yZ,pcb_via:()=>VZ,point:()=>wV,point3:()=>nl,position:()=>_V,position3:()=>Il,resistance:()=>cV,rotation:()=>oV,route_hint_point:()=>lZ,schematic_box:()=>VR,schematic_component:()=>lU,schematic_error:()=>nW,schematic_line:()=>GR,schematic_net_label:()=>kW,schematic_path:()=>YR,schematic_pin_styles:()=>$R,schematic_port:()=>jZ,schematic_text:()=>hZ,schematic_trace:()=>FU,size:()=>OV,source_component_base:()=>pl,source_group:()=>DR,source_led:()=>hR,source_net:()=>CU,source_port:()=>pR,source_simple_bug:()=>Dl,source_simple_capacitor:()=>ml,source_simple_chip:()=>JR,source_simple_diode:()=>Pl,source_simple_ground:()=>Tl,source_simple_power_source:()=>AR,source_simple_resistor:()=>jl,source_trace:()=>SU,supplier_name:()=>Zl,time:()=>HV,visible_layer:()=>FZ,voltage:()=>tV}),dist$a=CV(FV);var NV=dV(requireLib()),gV={tera:1e13,T:1e13,giga:1e10,G:1e10,mega:1e7,M:1e7,kilo:1e4,k:1e4,deci:1,d:1,centi:.1,c:.1,milli:.01,m:.01,micro:1e-5,u:1e-5,µ:1e-5,nano:1e-8,n:1e-8,pico:1e-11,p:1e-11},eV=Object.keys(gV),JV={mass:"g",length:"mm",time:"ms",volume:"ml",angle:"deg"};function nV(wZ){for(const EI of eV)if(wZ.startsWith(EI))return gV[EI];return 1}var aV=wZ=>{var $W,id;if(typeof wZ>"u")return{unit:null,value:null};if(typeof wZ=="string"&&wZ.match(/^[\d\.]+$/))return{value:parseFloat(wZ),unit:null};if(typeof wZ=="number")return{value:wZ,unit:null};if(typeof wZ=="object"&&"x"in wZ&&"y"in wZ)return{unit:aV(wZ.x).unit,value:{x:aV(wZ.x).value,y:aV(wZ.y).value}};const EI=($W=wZ.split("").reverse().join("").match(/[a-zA-Z]+/))==null?void 0:$W[0];if(!EI)throw new Error(`Could not determine unit: "${wZ}"`);const XW=EI.split("").reverse().join(""),kI=wZ.slice(0,-XW.length);let gI;try{gI=(id=(0,NV.default)().describe(XW))==null?void 0:id.measure}catch{}if(gI){const KI=JV[gI];if(!KI)throw new Error(`Could not determine target unit for measure: "${gI}"`);return{unit:XW,value:(0,NV.default)(parseFloat(kI)).from(XW).to(KI)}}else return{unit:XW,value:nV(XW)*parseFloat(kI)}},GV=requireLib$2(),cV=GV.z.string().or(GV.z.number()).transform(wZ=>aV(wZ).value),TV=GV.z.string().or(GV.z.number()).transform(wZ=>aV(wZ).value),iV=GV.z.string().or(GV.z.number()).transform(wZ=>aV(wZ).value),tV=GV.z.string().or(GV.z.number()).transform(wZ=>aV(wZ).value),MV=GV.z.string().or(GV.z.number()).transform(wZ=>aV(wZ).value),AV=MV,pV=GV.z.string().or(GV.z.number()).transform(wZ=>aV(wZ).value),HV=GV.z.string().or(GV.z.number()).transform(wZ=>aV(wZ).value),oV=GV.z.string().or(GV.z.number()).transform(wZ=>typeof wZ=="number"?wZ:wZ.endsWith("deg")?Number.parseFloat(wZ.split("deg")[0]):wZ.endsWith("rad")?Number.parseFloat(wZ.split("rad")[0])*180/Math.PI:Number.parseFloat(wZ)),DV=requireLib$2(),wV=DV.z.object({x:AV,y:AV}),_V=wV,dl=requireLib$2(),nl=dl.z.object({x:AV,y:AV,z:AV}),Il=nl,LV=requireLib$2(),OV=LV.z.object({width:LV.z.number(),height:LV.z.number()}),$V=requireLib$2(),Cl=requireLib$2(),Zl=Cl.z.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),el=requireLib$2(),pl=el.z.object({type:el.z.literal("source_component"),ftype:el.z.string().optional(),source_component_id:el.z.string(),name:el.z.string(),manufacturer_part_number:el.z.string().optional(),supplier_part_numbers:el.z.record(Zl,el.z.array(el.z.string())).optional()}),ml=pl.extend({ftype:$V.z.literal("simple_capacitor"),capacitance:TV}),Bl=requireLib$2(),jl=pl.extend({ftype:Bl.z.literal("simple_resistor"),resistance:cV}),rl=requireLib$2(),Pl=pl.extend({ftype:rl.z.literal("simple_diode")}),Hl=requireLib$2(),Tl=pl.extend({ftype:Hl.z.literal("simple_ground")}),kl=requireLib$2(),Dl=pl.extend({ftype:kl.z.literal("simple_bug")}).describe("@deprecated"),ZR=requireLib$2(),JR=pl.extend({ftype:ZR.z.literal("simple_chip")}),FR=requireLib$2();pl.extend({ftype:FR.z.literal("simple_inductor"),inductance:iV});var QR=requireLib$2(),hR=Pl.extend({ftype:QR.z.literal("led")}),kR=requireLib$2(),AR=pl.extend({ftype:kR.z.literal("simple_power_source"),voltage:tV}),aR=requireLib$2(),TR=aR.z.union([jl,ml,Pl,Tl,JR,Dl,hR,AR]),xR=requireLib$2(),pR=xR.z.object({type:xR.z.literal("source_port"),pin_number:xR.z.number().optional(),port_hints:xR.z.array(xR.z.string()).optional(),name:xR.z.string(),source_port_id:xR.z.string(),source_component_id:xR.z.string()}),UU=requireLib$2(),SU=UU.z.object({type:UU.z.literal("source_trace"),source_trace_id:UU.z.string(),connected_source_port_ids:UU.z.array(UU.z.string()),connected_source_net_ids:UU.z.array(UU.z.string())}),xU=requireLib$2(),DR=xU.z.object({type:xU.z.literal("source_group"),source_group_id:xU.z.string(),name:xU.z.string().optional()}),BR=requireLib$2(),CU=BR.z.object({type:BR.z.literal("source_net"),source_net_id:BR.z.string(),name:BR.z.string(),member_source_group_ids:BR.z.array(BR.z.string()),is_power:BR.z.boolean().optional(),is_ground:BR.z.boolean().optional(),is_digital_signal:BR.z.boolean().optional(),is_analog_signal:BR.z.boolean().optional(),trace_width:BR.z.number().optional()}),bR=requireLib$2(),VR=bR.z.object({type:bR.z.literal("schematic_box"),schematic_component_id:bR.z.string(),width:AV,height:AV,x:AV,y:AV}).describe("Draws a box on the schematic"),mR=requireLib$2(),YR=mR.z.object({type:mR.z.literal("schematic_path"),schematic_component_id:mR.z.string(),fill_color:mR.z.enum(["red","blue"]).optional(),is_filled:mR.z.boolean().optional(),points:mR.z.array(wV)}),iR=requireLib$2(),$R=iR.z.record(iR.z.object({left_margin:MV.optional(),right_margin:MV.optional(),top_margin:MV.optional(),bottom_margin:MV.optional()})),lU=iR.z.object({type:iR.z.literal("schematic_component"),rotation:oV.default(0),size:OV,center:wV,source_component_id:iR.z.string(),schematic_component_id:iR.z.string(),pin_spacing:MV.optional(),pin_styles:$R.optional(),box_width:MV.optional(),symbol_name:iR.z.string().optional(),port_arrangement:iR.z.union([iR.z.object({left_size:iR.z.number(),right_size:iR.z.number(),top_size:iR.z.number().optional(),bottom_size:iR.z.number().optional()}),iR.z.object({left_side:iR.z.object({pins:iR.z.array(iR.z.number()),direction:iR.z.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:iR.z.object({pins:iR.z.array(iR.z.number()),direction:iR.z.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:iR.z.object({pins:iR.z.array(iR.z.number()),direction:iR.z.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:iR.z.object({pins:iR.z.array(iR.z.number()),direction:iR.z.enum(["left-to-right","right-to-left"]).optional()}).optional()})]).optional(),port_labels:iR.z.record(iR.z.string()).optional()}),hU=requireLib$2(),GR=hU.z.object({type:hU.z.literal("schematic_line"),schematic_component_id:hU.z.string(),x1:AV,x2:AV,y1:AV,y2:AV}),IU=requireLib$2(),FU=IU.z.object({type:IU.z.literal("schematic_trace"),schematic_trace_id:IU.z.string(),source_trace_id:IU.z.string(),edges:IU.z.array(IU.z.object({from:IU.z.object({x:IU.z.number(),y:IU.z.number()}),to:IU.z.object({x:IU.z.number(),y:IU.z.number()}),from_schematic_port_id:IU.z.string().optional(),to_schematic_port_id:IU.z.string().optional()}))}),PU=requireLib$2(),hZ=PU.z.object({type:PU.z.literal("schematic_text"),schematic_component_id:PU.z.string(),schematic_text_id:PU.z.string(),text:PU.z.string(),position:PU.z.object({x:AV,y:AV}),rotation:PU.z.number().default(0),anchor:PU.z.enum(["center","left","right","top","bottom"]).default("center")}),zZ=requireLib$2(),jZ=zZ.z.object({type:zZ.z.literal("schematic_port"),schematic_port_id:zZ.z.string(),source_port_id:zZ.z.string(),schematic_component_id:zZ.z.string().optional(),center:wV,facing_direction:zZ.z.enum(["up","down","left","right"]).optional()}).describe("Defines a port on a schematic component"),DZ=requireLib$2(),kW=DZ.z.object({type:DZ.z.literal("schematic_net_label"),source_net_id:DZ.z.string(),center:wV,anchor_side:DZ.z.enum(["top","bottom","left","right"]),text:DZ.z.string()}),fU=requireLib$2(),nW=fU.z.object({schematic_error_id:fU.z.string(),type:fU.z.literal("schematic_error"),error_type:fU.z.literal("schematic_port_not_found"),message:fU.z.string()}).describe("Defines a schematic error on the schematic"),NW=requireLib$2(),cW=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],DW=NW.z.enum(cW),HW=DW.or(NW.z.object({name:DW})).transform(wZ=>typeof wZ=="string"?wZ:wZ.name),FZ=NW.z.enum(["top","bottom"]),CW=requireLib$2(),gW=CW.z.object({x:AV,y:AV,via:CW.z.boolean().optional(),via_to_layer:HW.optional()}),TW=CW.z.array(gW),pW=requireLib$2(),lZ=pW.z.object({x:AV,y:AV,via:pW.z.boolean().optional(),to_layer:HW.optional(),trace_width:AV.optional()}),wU=requireLib$2(),LR=requireLib$2(),TU=require$$2$2,vR=wZ=>LR.z.string().optional().default(()=>`${wZ}_${(0,TU.nanoid)(10)}`),DU=wU.z.object({type:wU.z.literal("pcb_component"),pcb_component_id:vR("pcb_component"),source_component_id:wU.z.string(),center:wV,layer:HW,rotation:oV,width:MV,height:MV}).describe("Defines a component on the PCB"),$U=requireLib$2(),ol=$U.z.object({pcb_hole_id:$U.z.string(),type:$U.z.literal("pcb_hole"),hole_shape:$U.z.enum(["circle","square","round"]).default("circle").transform(wZ=>wZ==="round"?"circle":wZ),hole_diameter:$U.z.number(),x:AV,y:AV}).or($U.z.object({pcb_hole_id:$U.z.string(),type:$U.z.literal("pcb_hole"),hole_shape:$U.z.literal("oval"),hole_width:$U.z.number(),hole_height:$U.z.number(),x:AV,y:AV})).describe("Defines a hole on the PCB"),vl=requireLib$2(),wR=vl.z.object({type:vl.z.literal("pcb_plated_hole"),shape:vl.z.literal("circle"),outer_diameter:vl.z.number(),hole_diameter:vl.z.number(),x:AV,y:AV,layers:vl.z.array(HW),port_hints:vl.z.array(vl.z.string()).optional(),pcb_component_id:vl.z.string().optional(),pcb_port_id:vl.z.string().optional(),pcb_plated_hole_id:vl.z.string()}).or(vl.z.object({type:vl.z.literal("pcb_plated_hole"),shape:vl.z.enum(["oval","pill"]),outer_width:vl.z.number(),outer_height:vl.z.number(),hole_width:vl.z.number(),hole_height:vl.z.number(),x:AV,y:AV,layers:vl.z.array(HW),port_hints:vl.z.array(vl.z.string()).optional(),pcb_component_id:vl.z.string().optional(),pcb_port_id:vl.z.string().optional(),pcb_plated_hole_id:vl.z.string()})).describe("Defines a plated hole on the PCB"),ZU=requireLib$2(),tU=ZU.z.object({type:ZU.z.literal("pcb_port"),pcb_port_id:ZU.z.string(),source_port_id:ZU.z.string(),pcb_component_id:ZU.z.string(),x:AV,y:AV,layers:ZU.z.array(HW)}).describe("Defines a port on the PCB"),uU=requireLib$2(),yU=uU.z.union([uU.z.object({pcb_smtpad_id:uU.z.string(),type:uU.z.literal("pcb_smtpad"),shape:uU.z.literal("circle"),x:AV,y:AV,radius:uU.z.number(),layer:HW,port_hints:uU.z.array(uU.z.string()).optional(),pcb_component_id:uU.z.string().optional(),pcb_port_id:uU.z.string().optional()}),uU.z.object({pcb_smtpad_id:uU.z.string(),type:uU.z.literal("pcb_smtpad"),shape:uU.z.literal("rect"),x:AV,y:AV,width:uU.z.number(),height:uU.z.number(),layer:HW,port_hints:uU.z.array(uU.z.string()).optional(),pcb_component_id:uU.z.string().optional(),pcb_port_id:uU.z.string().optional()})]).describe("Defines an SMT pad on the PCB"),XZ=requireLib$2(),mZ=XZ.z.object({type:XZ.z.literal("pcb_text"),text:XZ.z.string(),x:AV,y:AV,align:XZ.z.enum(["bottom-left"]),width:AV,height:AV,lines:XZ.z.number()}).describe("Defines text on the PCB"),QZ=requireLib$2(),ZW=QZ.z.object({type:QZ.z.literal("pcb_trace"),source_trace_id:QZ.z.string().optional(),pcb_component_id:QZ.z.string().optional(),pcb_trace_id:QZ.z.string(),route_thickness_mode:QZ.z.enum(["constant","interpolated"]).default("constant").optional(),should_round_corners:QZ.z.boolean().optional(),route:QZ.z.array(QZ.z.union([QZ.z.object({route_type:QZ.z.literal("wire"),x:AV,y:AV,width:AV,start_pcb_port_id:QZ.z.string().optional(),end_pcb_port_id:QZ.z.string().optional(),layer:HW}),QZ.z.object({route_type:QZ.z.literal("via"),x:AV,y:AV,from_layer:QZ.z.string(),to_layer:QZ.z.string()})]))}),JW=requireLib$2(),IZ=JW.z.object({pcb_error_id:JW.z.string(),type:JW.z.literal("pcb_error"),error_type:JW.z.literal("pcb_trace_error"),message:JW.z.string(),center:wV.optional(),pcb_trace_id:JW.z.string(),source_trace_id:JW.z.string(),pcb_component_ids:JW.z.array(JW.z.string()),pcb_port_ids:JW.z.array(JW.z.string())}).describe("Defines a trace error on the PCB"),MR=requireLib$2(),WU=MR.z.object({pcb_error_id:MR.z.string(),type:MR.z.literal("pcb_error"),error_type:MR.z.literal("pcb_port_not_matched_error"),message:MR.z.string(),pcb_component_ids:MR.z.array(MR.z.string())}).describe("Defines a trace error on the PCB"),MU=requireLib$2(),VZ=MU.z.object({type:MU.z.literal("pcb_via"),x:AV,y:AV,outer_diameter:AV.default("0.6mm"),hole_diameter:AV.default("0.25mm"),from_layer:HW.optional(),to_layer:HW.optional(),layers:MU.z.array(HW)}).describe("Defines a via on the PCB"),GZ=requireLib$2(),$Z=GZ.z.object({type:GZ.z.literal("pcb_board"),pcb_board_id:GZ.z.string().default("pcb_board_0").optional(),width:MV,height:MV,center:wV,outline:GZ.z.array(wV).optional()}).describe("Defines the board outline of the PCB"),eW=requireLib$2(),iZ=eW.z.object({pcb_error_id:eW.z.string(),type:eW.z.literal("pcb_error"),error_type:eW.z.literal("pcb_placement_error"),message:eW.z.string()}).describe("Defines a placement error on the PCB"),KU=requireLib$2(),yZ=KU.z.object({pcb_trace_hint_id:KU.z.string(),type:KU.z.literal("pcb_trace_hint"),pcb_port_id:KU.z.string(),pcb_component_id:KU.z.string(),route:KU.z.array(lZ.optional())}).describe("A hint that can be used to generate a PCB trace"),dW=requireLib$2(),KZ=dW.z.object({type:dW.z.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:dW.z.string(),pcb_component_id:dW.z.string(),stroke_width:AV.default("0.1mm"),x1:AV,y1:AV,x2:AV,y2:AV,layer:FZ}).describe("Defines a silkscreen line on the PCB"),tW=requireLib$2(),II=tW.z.object({type:tW.z.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:tW.z.string(),pcb_component_id:tW.z.string(),layer:FZ,route:tW.z.array(wV),stroke_width:MV}).describe("Defines a silkscreen path on the PCB"),nU=requireLib$2(),NU=nU.z.object({type:nU.z.literal("pcb_silkscreen_text"),font:nU.z.literal("tscircuit2024").default("tscircuit2024"),font_size:AV.default("0.2mm"),pcb_component_id:nU.z.string(),text:nU.z.string(),layer:FZ,anchor_position:wV.default({x:0,y:0}),anchor_alignment:nU.z.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),cU=requireLib$2(),LU=cU.z.object({type:cU.z.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:cU.z.string(),pcb_component_id:cU.z.string(),center:wV,width:AV,height:AV,layer:FZ}).describe("Defines a silkscreen rect on the PCB"),oZ=requireLib$2(),fZ=oZ.z.object({type:oZ.z.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:oZ.z.string(),pcb_component_id:oZ.z.string(),center:wV,radius:AV,layer:FZ}).describe("Defines a silkscreen circle on the PCB"),BW=requireLib$2(),bW=BW.z.object({type:BW.z.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:BW.z.string(),pcb_component_id:BW.z.string(),center:wV,radius_x:AV,radius_y:AV,layer:FZ}).describe("Defines a silkscreen oval on the PCB"),qW=requireLib$2(),AW=qW.z.object({type:qW.z.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:vR("pcb_fabrication_note_text"),font:qW.z.literal("tscircuit2024").default("tscircuit2024"),font_size:AV.default("1mm"),pcb_component_id:qW.z.string(),text:qW.z.string(),layer:FZ,anchor_position:wV.default({x:0,y:0}),anchor_alignment:qW.z.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:qW.z.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),FI=requireLib$2(),ZI=FI.z.object({type:FI.z.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:vR("pcb_fabrication_note_path"),pcb_component_id:FI.z.string(),layer:FZ,route:FI.z.array(wV),stroke_width:MV,color:FI.z.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),cI=requireLib$2(),zU=cI.z.object({type:cI.z.literal("pcb_keepout"),shape:cI.z.literal("rect"),center:wV,width:AV,height:AV,pcb_keepout_id:cI.z.string(),layers:cI.z.array(cI.z.string()),description:cI.z.string().optional()}).or(cI.z.object({type:cI.z.literal("pcb_keepout"),shape:cI.z.literal("circle"),center:wV,radius:AV,pcb_keepout_id:cI.z.string(),layers:cI.z.array(cI.z.string()),description:cI.z.string().optional()})),EU=requireLib$2(),jU=EU.z.object({type:EU.z.literal("cad_component"),cad_component_id:EU.z.string(),pcb_component_id:EU.z.string(),source_component_id:EU.z.string(),position:nl,rotation:nl.optional(),size:nl.optional(),layer:HW.optional(),footprinter_string:EU.z.string().optional(),model_obj_url:EU.z.string().optional(),model_stl_url:EU.z.string().optional(),model_3mf_url:EU.z.string().optional(),model_jscad:EU.z.any().optional()}).describe("Defines a component on the PCB"),_U=requireLib$2(),qU=_U.z.union([SU,pR,TR,hR,CU,DR,Dl,JR,ml,Pl,jl,AR,DU,ol,wR,zU,tU,mZ,ZW,VZ,yU,$Z,yZ,KZ,II,NU,LU,fZ,bW,IZ,iZ,WU,ZI,AW,VR,hZ,GR,lU,jZ,FU,YR,nW,kW,jU]),aW=qU;return dist$a}const require$$2$1=getAugmentedNamespace(parsel);var dist$9,hasRequiredDist$6;function requireDist$6(){if(hasRequiredDist$6)return dist$9;hasRequiredDist$6=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(el,pl)=>{for(var ml in pl)J(el,ml,{get:pl[ml],enumerable:!0})},IV=(el,pl,ml,Bl)=>{if(pl&&typeof pl=="object"||typeof pl=="function")for(let jl of RV(pl))!ZV.call(el,jl)&&jl!==ml&&J(el,jl,{get:()=>pl[jl],enumerable:!(Bl=VV(pl,jl))||Bl.enumerable});return el},dV=(el,pl,ml)=>(ml=el!=null?lV(UV(el)):{},IV(J(ml,"default",{value:el,enumerable:!0}),el)),CV=el=>IV(J({},"__esModule",{value:!0}),el),FV={};WV(FV,{applySelector:()=>_V,applySelectorAST:()=>nl,directionToVec:()=>nV,getElementById:()=>LV,getElementId:()=>Il,getReadableNameForElement:()=>Zl,getReadableNameForPcbPort:()=>$V,getReadableNameForPcbSmtpad:()=>Cl,getReadableNameForPcbTrace:()=>OV,oppositeDirection:()=>iV,oppositeSide:()=>tV,rotateClockwise:()=>GV,rotateCounterClockwise:()=>cV,rotateDirection:()=>TV,su:()=>eV,transformPCBElement:()=>pV,transformPCBElements:()=>HV,transformSchematicElement:()=>MV,transformSchematicElements:()=>AV,vecToDirection:()=>aV}),dist$9=CV(FV);var NV=dV(requireDist$7()),gV=(el,pl={})=>{let ml=el._internal_store;if(!ml){ml={counts:{}},el._internal_store=ml;for(const jl of el){const rl=jl.type,Pl=jl[`${rl}_id`];if(!Pl)continue;const Hl=Number.parseInt(Pl.split("_").pop());Number.isNaN(Hl)||(ml.counts[rl]=Math.max(ml.counts[rl]??0,Hl))}}return new Proxy({},{get:(jl,rl)=>rl==="toArray"?()=>el:{get:Pl=>el.find(Hl=>Hl.type===rl&&Hl[`${rl}_id`]===Pl),getUsing:Pl=>{const Hl=Object.keys(Pl);if(Hl.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Tl=Hl[0],kl=Tl.replace("_id",""),Dl=el.find(ZR=>ZR.type===kl&&ZR[Tl]===Pl[Tl]);return Dl?el.find(ZR=>ZR.type===rl&&ZR[`${rl}_id`]===Dl[`${rl}_id`]):null},getWhere:Pl=>{const Hl=Object.keys(Pl);return el.find(Tl=>Tl.type===rl&&Hl.every(kl=>Tl[kl]===Pl[kl]))},list:Pl=>{const Hl=Pl?Object.keys(Pl):[];return el.filter(Tl=>Tl.type===rl&&Hl.every(kl=>Tl[kl]===Pl[kl]))},insert:Pl=>{var kl;(kl=ml.counts)[rl]??(kl[rl]=-1),ml.counts[rl]++;const Hl=ml.counts[rl],Tl={type:rl,[`${rl}_id`]:`${rl}_${Hl}`,...Pl};return pl.validateInserts&&(NV[rl]??NV.any_soup_element).parse(Tl),el.push(Tl),Tl},delete:Pl=>{const Hl=el.find(Tl=>Tl[`${rl}_id`]===Pl);Hl&&el.splice(el.indexOf(Hl),1)},update:(Pl,Hl)=>{const Tl=el.find(kl=>kl[`${rl}_id`]===Pl);if(Tl)return Object.assign(Tl,Hl),Tl},select:Pl=>{if(rl==="source_component")return el.find(Hl=>Hl.type==="source_component"&&Hl.name===Pl.replace(/\./g,""));if(rl==="pcb_port"||rl==="source_port"||rl==="schematic_port"){const[Hl,Tl]=Pl.replace(/\./g,"").split(/[\s\>]+/),kl=el.find(ZR=>ZR.type==="source_component"&&ZR.name===Hl);if(!kl)return null;const Dl=el.find(ZR=>ZR.type==="source_port"&&ZR.source_component_id===kl.source_component_id&&(ZR.name===Tl||(ZR.port_hints??[]).includes(Tl)));if(!Dl)return null;if(rl==="source_port")return Dl;if(rl==="pcb_port")return el.find(ZR=>ZR.type==="pcb_port"&&ZR.source_port_id===Dl.source_port_id);if(rl==="schematic_port")return el.find(ZR=>ZR.type==="schematic_port"&&ZR.source_port_id===Dl.source_port_id)}}}})};gV.unparsed=gV;var eV=gV,JV=require$$0,nV=el=>{if(el==="up")return{x:0,y:1};if(el==="down")return{x:0,y:-1};if(el==="left")return{x:-1,y:0};if(el==="right")return{x:1,y:0};throw new Error("Invalid direction")},aV=({x:el,y:pl})=>{if(el>pl&&(pl=0),pl>el&&(el=0),el>0&&pl===0)return"right";if(el<0&&pl===0)return"left";if(el===0&&pl>0)return"up";if(el===0&&pl<0)return"down";throw new Error(`Invalid vector for direction conversion (${el}, ${pl})`)},GV=el=>{if(el==="up")return"right";if(el==="right")return"down";if(el==="down")return"left";if(el==="left")return"up";throw new Error(`Invalid direction: ${el}`)},cV=el=>{if(el==="up")return"left";if(el==="left")return"down";if(el==="down")return"right";if(el==="right")return"up";throw new Error(`Invalid direction: ${el}`)},TV=(el,pl)=>{for(;pl>0;)el=GV(el),pl--;for(;pl<0;)el=cV(el),pl++;return el},iV=el=>{if(el==="up")return"down";if(el==="down")return"up";if(el==="left")return"right";if(el==="right")return"left";throw new Error(`Invalid direction: ${el}`)},tV=el=>{if(el==="top"||el==="up")return"bottom";if(el==="bottom"||el==="down")return"top";if(el==="left")return"right";if(el==="right")return"left";throw new Error(`Invalid sideOrDir: ${el}`)},MV=(el,pl)=>{if(el.type==="schematic_component")el.center=(0,JV.applyToPoint)(pl,el.center);else if(el.type==="schematic_port")el.center=(0,JV.applyToPoint)(pl,el.center),el.facing_direction&&(el.facing_direction=TV(el.facing_direction,-(Math.atan2(pl.b,pl.a)/Math.PI)*2));else if(el.type==="schematic_text")el.position=(0,JV.applyToPoint)(pl,el.position);else if(el.type!=="schematic_trace"){if(el.type==="schematic_box"){const{x:ml,y:Bl}=(0,JV.applyToPoint)(pl,{x:el.x,y:el.y});el.x=ml,el.y=Bl}else if(el.type==="schematic_line"){const{x:ml,y:Bl}=(0,JV.applyToPoint)(pl,{x:el.x1,y:el.y1}),{x:jl,y:rl}=(0,JV.applyToPoint)(pl,{x:el.x2,y:el.y2});el.x1=ml,el.y1=Bl,el.x2=jl,el.y2=rl}}return el},AV=(el,pl)=>el.map(ml=>MV(ml,pl)),pV=(el,pl)=>{if(el.type==="pcb_plated_hole"||el.type==="pcb_hole"||el.type==="pcb_via"||el.type==="pcb_smtpad"||el.type==="pcb_port"){const{x:ml,y:Bl}=(0,JV.applyToPoint)(pl,{x:el.x,y:el.y});el.x=ml,el.y=Bl}else if(el.type==="pcb_keepout")el.center=(0,JV.applyToPoint)(pl,el.center);else if(el.type==="pcb_silkscreen_text"||el.type==="pcb_fabrication_note_text")el.anchor_position=(0,JV.applyToPoint)(pl,el.anchor_position);else if(el.type==="pcb_silkscreen_circle"||el.type==="pcb_silkscreen_rect"||el.type==="pcb_component")el.center=(0,JV.applyToPoint)(pl,el.center);else if(el.type==="pcb_silkscreen_path"||el.type==="pcb_trace"||el.type==="pcb_fabrication_note_path")el.route=el.route.map(ml=>{const Bl=(0,JV.applyToPoint)(pl,ml);return ml.x=Bl.x,ml.y=Bl.y,ml});else if(el.type==="pcb_silkscreen_line"){const ml={x:el.x1,y:el.y1},Bl={x:el.x2,y:el.y2},jl=(0,JV.applyToPoint)(pl,ml),rl=(0,JV.applyToPoint)(pl,Bl);el.x1=jl.x,el.y1=jl.y,el.x2=rl.x,el.y2=rl.y}else if(el.type==="cad_component"){const ml=(0,JV.applyToPoint)(pl,{x:el.position.x,y:el.position.y});el.position.x=ml.x,el.position.y=ml.y}return el},HV=(el,pl)=>{const ml=(0,JV.decomposeTSR)(pl),Bl=Math.round(ml.rotation.angle/(Math.PI/2))%2===1;let jl=el.map(rl=>pV(rl,pl));return Bl&&(jl=jl.map(rl=>(rl.type==="pcb_smtpad"&&rl.shape==="rect"&&([rl.width,rl.height]=[rl.height,rl.width]),rl))),jl},oV=dV(require$$2$1),DV=el=>{switch(el){case"port":return"source_port";case"net":return"source_net";case"power":return"simple_power_source"}return el},wV=(el,pl)=>(pl=DV(pl),el.filter(ml=>"ftype"in ml&&ml.ftype===pl||ml.type===pl)),_V=(el,pl)=>{const ml=oV.parse(pl);return nl(el,ml)},dl=(el,pl)=>{var ml;return"name"in el&&el.name===pl||"port_hints"in el&&((ml=el.port_hints)==null?void 0:ml.includes(pl))},nl=(el,pl)=>{switch(pl.type){case"complex":{switch(pl.combinator){case" ":case">":{const{left:ml,right:Bl}=pl;if(ml.type==="class"||ml.type==="type"){let jl;ml.type==="class"?jl=el.filter(Pl=>dl(Pl,ml.name)):ml.type==="type"?jl=wV(el,ml.name):jl=[];const rl=jl.flatMap(Pl=>el.filter(Hl=>Hl[`${Pl.type}_id`]===Pl[`${Pl.type}_id`]&&Hl!==Pl));return nl(rl,Bl)}else throw new Error(`unsupported selector type "${ml.type}" `)}default:throw new Error(`Couldn't apply selector AST for complex combinator "${pl.combinator}"`)}return[]}case"compound":{const ml=pl.list.map(Bl=>{switch(Bl.type){case"class":return jl=>dl(jl,Bl.name);case"type":{const jl=DV(Bl.name);return rl=>rl.type===jl}}});return el.filter(Bl=>ml.every(jl=>jl==null?void 0:jl(Bl)))}case"type":return wV(el,pl.name);case"class":return el.filter(ml=>dl(ml,pl.name));default:throw new Error(`Couldn't apply selector AST for type: "${pl.type}" ${JSON.stringify(pl,null," ")}`)}},Il=el=>{const pl=el.type;return el[`${pl}_id`]},LV=(el,pl)=>el.find(ml=>Il(ml)===pl)??null;function OV(el,pl){const ml=gV(el).pcb_trace.get(pl);if(!ml)return`trace[${pl}]`;const Bl=ml.route.flatMap(Pl=>[Pl.start_pcb_port_id,Pl.end_pcb_port_id]).filter(Boolean);if(Bl.length===0)return`trace[${pl}]`;function jl(Pl){const Hl=gV(el).pcb_port.get(Pl);if(!Hl)return null;const Tl=gV(el).pcb_component.get(Hl.pcb_component_id);if(!Tl)return null;const kl=gV(el).source_component.get(Tl.source_component_id);if(!kl)return null;const Dl=gV(el).source_port.get(Hl.source_port_id),ZR=Dl!=null&&Dl.port_hints?Dl.port_hints[1]:"";return{componentName:kl.name,portHint:ZR}}return`trace[${Bl.map(Pl=>{const Hl=jl(Pl);return Hl?`.${Hl.componentName} > port.${Hl.portHint}`:`port[${Pl}]`}).join(", ")}]`}var $V=(el,pl)=>{const ml=gV(el).pcb_port.get(pl);if(!ml)return`pcb_port[#${pl}]`;const Bl=gV(el).pcb_component.get(ml==null?void 0:ml.pcb_component_id);if(!Bl)return`pcb_port[#${pl}]`;const jl=gV(el).source_component.get(Bl.source_component_id);if(!jl)return`pcb_port[#${pl}]`;const rl=gV(el).source_port.get(ml.source_port_id);if(!rl)return`pcb_port[#${pl}]`;let Pl;return rl!=null&&rl.port_hints&&rl.port_hints.length>0||rl.port_hints&&rl.port_hints.length>0?Pl=rl.port_hints[0]:Pl=pl,`pcb_port[.${jl.name} > .${Pl}]`};function Cl(el,pl){const ml=gV(el).pcb_smtpad.get(pl);return!ml||!ml.pcb_port_id?`smtpad[${pl}]`:$V(el,ml.pcb_port_id)}var Zl=(el,pl)=>{if(typeof pl=="string"){const ml=LV(el,pl);return Zl(el,ml)}switch(pl.type){case"pcb_port":return $V(el,pl.pcb_port_id);case"pcb_smtpad":return Cl(el,pl.pcb_smtpad_id);case"pcb_trace":return OV(el,pl.pcb_trace_id);case"source_component":return`source_component[${pl.name}]`;default:return`${pl.type}[#${Il(pl)}]`}};return dist$9}var distExports$4=requireDist$6(),performanceNow$1={exports:{}},performanceNow=performanceNow$1.exports,hasRequiredPerformanceNow;function requirePerformanceNow(){return hasRequiredPerformanceNow||(hasRequiredPerformanceNow=1,(function(){var lV,J,VV,RV,UV,ZV;typeof performance<"u"&&performance!==null&&performance.now?performanceNow$1.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(performanceNow$1.exports=function(){return(lV()-UV)/1e6},J=process.hrtime,lV=function(){var WV;return WV=J(),WV[0]*1e9+WV[1]},RV=lV(),ZV=process.uptime()*1e9,UV=RV-ZV):Date.now?(performanceNow$1.exports=function(){return Date.now()-VV},VV=Date.now()):(performanceNow$1.exports=function(){return new Date().getTime()-VV},VV=new Date().getTime())}).call(performanceNow)),performanceNow$1.exports}requirePerformanceNow();function doesLineIntersectLine$2([lV,J],[VV,RV],{lineThickness:UV=0}={}){return UV===0?doSegmentsIntersect$2(lV,J,VV,RV):segmentsDistance$2(lV,J,VV,RV)<=UV}function doSegmentsIntersect$2(lV,J,VV,RV){const UV=orientation$2(lV,J,VV),ZV=orientation$2(lV,J,RV),WV=orientation$2(VV,RV,lV),IV=orientation$2(VV,RV,J);return!!(UV!==ZV&&WV!==IV||UV===0&&onSegment$3(lV,VV,J)||ZV===0&&onSegment$3(lV,RV,J)||WV===0&&onSegment$3(VV,lV,RV)||IV===0&&onSegment$3(VV,J,RV))}function orientation$2(lV,J,VV){const RV=(J.y-lV.y)*(VV.x-J.x)-(J.x-lV.x)*(VV.y-J.y);return RV===0?0:RV>0?1:2}function onSegment$3(lV,J,VV){return J.x<=Math.max(lV.x,VV.x)&&J.x>=Math.min(lV.x,VV.x)&&J.y<=Math.max(lV.y,VV.y)&&J.y>=Math.min(lV.y,VV.y)}function segmentsDistance$2(lV,J,VV,RV){if(lV.x===J.x&&lV.y===J.y)return pointToSegmentDistance$2(lV,VV,RV);if(VV.x===RV.x&&VV.y===RV.y)return pointToSegmentDistance$2(VV,lV,J);if(doSegmentsIntersect$2(lV,J,VV,RV))return 0;const UV=[pointToSegmentDistance$2(lV,VV,RV),pointToSegmentDistance$2(J,VV,RV),pointToSegmentDistance$2(VV,lV,J),pointToSegmentDistance$2(RV,lV,J)];return Math.min(...UV)}function pointToSegmentDistance$2(lV,J,VV){const RV=(VV.x-J.x)**2+(VV.y-J.y)**2;if(RV===0)return distance$3(lV,J);let UV=((lV.x-J.x)*(VV.x-J.x)+(lV.y-J.y)*(VV.y-J.y))/RV;UV=Math.max(0,Math.min(1,UV));const ZV={x:J.x+UV*(VV.x-J.x),y:J.y+UV*(VV.y-J.y)};return distance$3(lV,ZV)}function distance$3(lV,J){const VV=lV.x-J.x,RV=lV.y-J.y;return Math.sqrt(VV*VV+RV*RV)}function findConnectedNetworks$1(lV){const J=new Map;let VV=0;function RV(UV){for(const[,WV]of J)if(WV.has(UV))return WV;const ZV=new Set;return J.set(`connectivity_net${VV++}`,ZV),ZV}for(const UV of lV){let ZV=null;for(const WV of UV){if(!ZV)ZV=RV(WV);else if(!ZV.has(WV)){const IV=RV(WV);if(IV!==ZV){for(const dV of IV)ZV.add(dV);J.delete(Array.from(J.entries()).find(([,dV])=>dV===IV)[0])}}ZV.add(WV)}}return Object.fromEntries(Array.from(J.entries()).map(([UV,ZV])=>[UV,Array.from(ZV)]))}var ConnectivityMap$1=class{constructor(J){MI(this,"netMap");MI(this,"idToNetMap");this.netMap=J,this.idToNetMap={};for(const[VV,RV]of Object.entries(J))for(const UV of RV)this.idToNetMap[UV]=VV}addConnections(J){for(const VV of J){const RV=new Set;for(const ZV of VV){const WV=this.idToNetMap[ZV];WV&&RV.add(WV)}let UV;if(RV.size===0)UV=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[UV]=[];else if(RV.size===1)UV=RV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{UV=RV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const ZV of RV)if(ZV!==UV){this.netMap[UV].push(...this.netMap[ZV]),this.netMap[ZV]=this.netMap[UV];for(const WV of this.netMap[UV])this.idToNetMap[WV]=UV}}for(const ZV of VV)this.netMap[UV].includes(ZV)||this.netMap[UV].push(ZV),this.idToNetMap[ZV]=UV}}getIdsConnectedToNet(J){return this.netMap[J]||[]}getNetConnectedToId(J){return this.idToNetMap[J]}areIdsConnected(J,VV){const RV=this.getNetConnectedToId(J),UV=this.getNetConnectedToId(VV);return RV===UV||UV===J||UV===J}areAllIdsConnected(J){const VV=this.getNetConnectedToId(J[0]);for(const RV of J){const UV=this.getNetConnectedToId(RV);if(UV===void 0||UV!==VV)return!1}return!0}},getFullConnectivityMapFromCircuitJson$1=lV=>{const J=[];for(const RV of lV)if(RV.type==="source_trace")J.push([RV.source_trace_id,...RV.connected_source_port_ids??[],...RV.connected_source_net_ids??[]].filter(Boolean));else if(RV.type==="pcb_port"){const{pcb_port_id:UV,source_port_id:ZV}=RV;ZV&&UV&&J.push([ZV,UV])}else if(RV.type==="pcb_smtpad"){const{pcb_smtpad_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_plated_hole"){const{pcb_plated_hole_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_trace"){const{pcb_trace_id:UV,source_trace_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}const VV=findConnectedNetworks$1(J);return new ConnectivityMap$1(VV)},PcbConnectivityMap$1=class{constructor(J){MI(this,"circuitJson");MI(this,"traceIdToElm");MI(this,"portIdToElm");MI(this,"connMap");this.circuitJson=J||[],this.traceIdToElm=new Map,this.portIdToElm=new Map,J?(this._buildTraceMap(),this._buildPortMap(),this.connMap=this._buildTraceConnectivityMap()):this.connMap=new ConnectivityMap$1({})}_buildPortMap(){for(const J of this.circuitJson)J.type==="pcb_port"&&this.portIdToElm.set(J.pcb_port_id,J)}_buildTraceMap(){for(const J of this.circuitJson)J.type==="pcb_trace"&&this.traceIdToElm.set(J.pcb_trace_id,J)}_buildTraceConnectivityMap(){const J=[],VV=Array.from(this.traceIdToElm.keys());for(let RV=0;RV<VV.length;RV++)for(let UV=RV+1;UV<VV.length;UV++){const ZV=this.traceIdToElm.get(VV[RV]),WV=this.traceIdToElm.get(VV[UV]);this._arePcbTracesConnected(ZV,WV)&&J.push([VV[RV],VV[UV]])}for(const RV of this.portIdToElm.values())for(const UV of this.traceIdToElm.values())for(const ZV of UV.route)ZV.route_type==="wire"&&(ZV.start_pcb_port_id===RV.pcb_port_id?J.push([RV.pcb_port_id,UV.pcb_trace_id]):ZV.end_pcb_port_id===RV.pcb_port_id&&J.push([UV.pcb_trace_id,RV.pcb_port_id]));return new ConnectivityMap$1(findConnectedNetworks$1(J))}addTrace(J){this.traceIdToElm.set(J.pcb_trace_id,J);const VV=[];for(const RV of J.route)RV.route_type==="wire"&&(RV.start_pcb_port_id&&VV.push([RV.start_pcb_port_id,J.pcb_trace_id]),RV.end_pcb_port_id&&VV.push([RV.end_pcb_port_id,J.pcb_trace_id]));this.connMap.addConnections(VV)}_arePcbTracesConnected(J,VV){for(let RV=0;RV<J.route.length-1;RV++){const UV=J.route[RV],ZV=J.route[RV+1];if(UV.route_type==="wire"&&ZV.route_type==="wire")for(let WV=0;WV<VV.route.length-1;WV++){const IV=VV.route[WV],dV=VV.route[WV+1];if(IV.route_type!=="wire"||dV.route_type!=="wire")continue;if(doesLineIntersectLine$2([UV,ZV],[IV,dV],{lineThickness:(UV.width+IV.width)/2}))return!0}}return!1}areTracesConnected(J,VV){return this.connMap.areIdsConnected(J,VV)}getAllTracesConnectedToTrace(J){const VV=this.connMap.getNetConnectedToId(J);return VV?this.connMap.getIdsConnectedToNet(VV).filter(RV=>this.traceIdToElm.has(RV)).map(RV=>this.traceIdToElm.get(RV)):[]}getAllTracesConnectedToPort(J){const VV=this.connMap.getNetConnectedToId(J);return VV?this.connMap.getIdsConnectedToNet(VV).filter(RV=>this.traceIdToElm.has(RV)).map(RV=>this.traceIdToElm.get(RV)):[]}};function getBoundingBox(lV){const J=lV.width/2,VV=lV.height/2;return{minX:lV.center.x-J,maxX:lV.center.x+J,minY:lV.center.y-VV,maxY:lV.center.y+VV}}function computeDistanceBetweenBoxes(lV,J){const VV=getBoundingBox(lV),RV=getBoundingBox(J),UV=Math.max(VV.minX-RV.maxX,RV.minX-VV.maxX,0),ZV=Math.max(VV.minY-RV.maxY,RV.minY-VV.maxY,0),WV={x:0,y:0},IV={x:0,y:0};return UV===0&&ZV===0?{distance:0,pointA:lV.center,pointB:J.center}:(WV.x=clamp$7(lV.center.x,RV.minX,RV.maxX),WV.y=clamp$7(lV.center.y,RV.minY,RV.maxY),IV.x=clamp$7(J.center.x,VV.minX,VV.maxX),IV.y=clamp$7(J.center.y,VV.minY,VV.maxY),{distance:Math.hypot(WV.x-IV.x,WV.y-IV.y),pointA:WV,pointB:IV})}function clamp$7(lV,J,VV){return Math.max(J,Math.min(VV,lV))}function findNearestPointsBetweenBoxSets(lV,J){let VV=Number.POSITIVE_INFINITY,RV={x:0,y:0},UV={x:0,y:0};for(const ZV of lV)for(const WV of J){const{distance:IV,pointA:dV,pointB:CV}=computeDistanceBetweenBoxes(ZV,WV);IV<VV&&(VV=IV,RV=dV,UV=CV)}return{pointA:RV,pointB:UV,distance:VV}}var manDist=(lV,J)=>Math.abs(lV.x-J.x)+Math.abs(lV.y-J.y),dirFromAToB=(lV,J)=>{const VV=J.x-lV.x,RV=J.y-lV.y;return Math.abs(VV)>Math.abs(RV)?{dx:Math.sign(VV),dy:0}:{dx:0,dy:Math.sign(RV)}},distAlongDir=(lV,J,VV)=>Math.abs(lV.x-J.x)*Math.abs(VV.dx)+Math.abs(lV.y-J.y)*Math.abs(VV.dy),nodeName=(lV,J=.1)=>`${Math.round(lV.x/J)},${Math.round(lV.y/J)}`,isCloseTo=(lV,J)=>Math.abs(lV-J)<1e-4,getObstaclesFromRoute=(lV,J,{viaDiameter:VV=.5}={})=>{const RV=[];for(let UV=0;UV<lV.length-1;UV++){const[ZV,WV]=[lV[UV],lV[UV+1]],IV=UV-1>=0?lV[UV-1]:null,dV=isCloseTo(ZV.y,WV.y),CV=isCloseTo(ZV.x,WV.x);if(!dV&&!CV)throw new Error(`getObstaclesFromTrace currently only supports horizontal and vertical traces (not diagonals) Conflicting trace: ${J}, start: (${ZV.x}, ${ZV.y}), end: (${WV.x}, ${WV.y})`);const FV={type:"rect",layers:[ZV.layer],center:{x:(ZV.x+WV.x)/2,y:(ZV.y+WV.y)/2},width:dV?Math.abs(ZV.x-WV.x):.1,height:CV?Math.abs(ZV.y-WV.y):.1,connectedTo:[J]};if(RV.push(FV),IV&&IV.layer===ZV.layer&&ZV.layer!==WV.layer){const NV={type:"rect",layers:[ZV.layer,WV.layer],center:{x:ZV.x,y:ZV.y},connectedTo:[J],width:VV,height:VV};RV.push(NV)}}return RV},ObstacleList=class{constructor(lV){MI(this,"obstacles");MI(this,"GRID_STEP",.1);this.obstacles=lV.map(J=>({...J,left:J.center.x-J.width/2,right:J.center.x+J.width/2,top:J.center.y+J.height/2,bottom:J.center.y-J.height/2}))}getObstacleAt(lV,J,VV){VV??(VV=this.GRID_STEP);for(const RV of this.obstacles){const UV=RV.width/2+VV,ZV=RV.height/2+VV;if(lV>=RV.center.x-UV&&lV<=RV.center.x+UV&&J>=RV.center.y-ZV&&J<=RV.center.y+ZV)return RV}return null}isObstacleAt(lV,J,VV){return this.getObstacleAt(lV,J,VV)!==null}getDirectionDistancesToNearestObstacle(lV,J){const{GRID_STEP:VV}=this,RV={left:1/0,top:1/0,bottom:1/0,right:1/0};for(const UV of this.obstacles)if(UV.type==="rect"){const ZV=UV.center.x-UV.width/2-VV,WV=UV.center.x+UV.width/2+VV,IV=UV.center.y+UV.height/2+VV,dV=UV.center.y-UV.height/2-VV;J>=dV&&J<=IV&&lV>ZV&&(RV.left=Math.min(RV.left,lV-WV)),J>=dV&&J<=IV&&lV<WV&&(RV.right=Math.min(RV.right,ZV-lV)),lV>=ZV&&lV<=WV&&J<IV&&(RV.top=Math.min(RV.top,dV-J)),lV>=ZV&&lV<=WV&&J>dV&&(RV.bottom=Math.min(RV.bottom,J-IV))}return RV}getOrthoDirectionCollisionInfo(lV,J,{margin:VV=0}={}){const{x:RV,y:UV}=lV,{dx:ZV,dy:WV}=J;let IV=1/0,dV=null;for(const CV of this.obstacles){const FV=CV.left-VV,NV=CV.right+VV,gV=CV.top+VV,eV=CV.bottom-VV;let JV=null;ZV===1&&WV===0?UV>eV&&UV<gV&&RV<CV.left&&(JV=CV.left-RV):ZV===-1&&WV===0?UV>eV&&UV<gV&&RV>CV.right&&(JV=RV-CV.right):ZV===0&&WV===1?RV>FV&&RV<NV&&UV<CV.bottom&&(JV=CV.bottom-UV):ZV===0&&WV===-1&&RV>FV&&RV<NV&&UV>CV.top&&(JV=UV-CV.top),JV!==null&&JV<IV&&(IV=JV,dV=CV)}return{dx:ZV,dy:WV,wallDistance:IV,obstacle:dV}}getObstaclesOverlappingRegion(lV){const J=[];for(const VV of this.obstacles){const{left:RV,right:UV,top:ZV,bottom:WV}=VV;RV>=lV.minX&&UV<=lV.maxX&&ZV>=lV.minY&&WV<=lV.maxY&&J.push(VV)}return J}};function removePathLoops(lV){if(lV.length<4)return lV;const J=[{...lV[0]}];let VV=lV[0].layer;for(let RV=1;RV<lV.length;RV++){const UV={start:lV[RV-1],end:lV[RV]},ZV=lV[RV].route_type==="via"||lV[RV-1].route_type==="via";if(lV[RV].layer!==VV||ZV){J.push({...lV[RV]}),VV=lV[RV].layer;continue}let WV=!1,IV=null,dV=-1;for(let FV=0;FV<J.length-1;FV++){const NV={start:J[FV],end:J[FV+1]};if(NV.start.layer===UV.start.layer&&NV.start.layer===UV.start.layer){const gV=findIntersection(NV,UV);if(gV){WV=!0,IV={...gV,layer:VV},dV=FV;break}}}WV&&IV&&(J.splice(dV+1),J.push(IV));const CV=J[J.length-1];(CV.x!==lV[RV].x||CV.y!==lV[RV].y)&&J.push(lV[RV])}return J}function findIntersection(lV,J){if(lV.start.x===lV.end.x&&J.start.x===J.end.x||lV.start.y===lV.end.y&&J.start.y===J.end.y)return null;let VV;if(lV.start.x===lV.end.x){const RV=lV.start.x,UV=J.start.y;VV={...lV.start,x:RV,y:UV}}else{const RV=J.start.x,UV=lV.start.y;VV={...lV.start,x:RV,y:UV}}return isPointInSegment(VV,lV)&&isPointInSegment(VV,J)?VV:null}function isPointInSegment(lV,J){return lV.x>=Math.min(J.start.x,J.end.x)&&lV.x<=Math.max(J.start.x,J.end.x)&&lV.y>=Math.min(J.start.y,J.end.y)&&lV.y<=Math.max(J.start.y,J.end.y)}function addViasWhenLayerChanges(lV){const J=[lV[0]];for(let VV=1;VV<lV.length-1;VV++){const[RV,UV,ZV]=[lV[VV-1],lV[VV],lV[VV+1]];J.push(UV),!(UV.route_type!=="wire"||RV.route_type!=="wire"||ZV.route_type!=="wire")&&RV.layer===UV.layer&&UV.layer!==ZV.layer&&J.push({route_type:"via",from_layer:UV.layer,to_layer:ZV.layer,x:UV.x,y:UV.y})}return J.push(lV[lV.length-1]),J}var debug$7=Debug$1("autorouting-dataset:astar"),GeneralizedAstarAutorouter=class{constructor(lV){MI(this,"openSet",[]);MI(this,"closedSet",new Set);MI(this,"debug",!1);MI(this,"debugSolutions");MI(this,"debugMessage",null);MI(this,"debugTraceCount",0);MI(this,"input");MI(this,"obstacles");MI(this,"allObstacles");MI(this,"startNode");MI(this,"goalPoint");MI(this,"GRID_STEP");MI(this,"OBSTACLE_MARGIN");MI(this,"MAX_ITERATIONS");MI(this,"isRemovePathLoopsEnabled");MI(this,"GREEDY_MULTIPLIER",1.1);MI(this,"iterations",-1);this.input=lV.input,this.allObstacles=lV.input.obstacles,this.startNode=lV.startNode,this.goalPoint=lV.goalPoint?{l:0,...lV.goalPoint}:void 0,this.GRID_STEP=lV.GRID_STEP??.1,this.OBSTACLE_MARGIN=lV.OBSTACLE_MARGIN??.15,this.MAX_ITERATIONS=lV.MAX_ITERATIONS??100,this.debug=lV.debug??debug$7.enabled,this.isRemovePathLoopsEnabled=lV.isRemovePathLoopsEnabled??!1,this.debug&&(debug$7.enabled=!0),debug$7.enabled&&(this.debugSolutions={},this.debugMessage="")}getNeighbors(lV){return[]}isSameNode(lV,J){return manDist(lV,J)<this.GRID_STEP}computeG(lV,J){return lV.g+manDist(lV,J)}computeH(lV){return manDist(lV,this.goalPoint)}getNodeName(lV){return nodeName(lV,this.GRID_STEP)}solveOneStep(){this.iterations+=1;const{openSet:lV,closedSet:J,GRID_STEP:VV,goalPoint:RV}=this;lV.sort((IV,dV)=>IV.f-dV.f);const UV=lV.shift();if(this.computeH(UV)<=VV*2)return{solved:!0,current:UV,newNeighbors:[]};this.closedSet.add(this.getNodeName(UV));let WV=[];for(const IV of this.getNeighbors(UV)){if(J.has(this.getNodeName(IV)))continue;const dV=this.computeG(UV,IV),CV=this.openSet.find(FV=>this.isSameNode(FV,IV));if(!CV||dV<CV.g){const FV=this.computeH(IV),NV=dV+FV*this.GREEDY_MULTIPLIER,gV={...IV,g:dV,h:FV,f:NV,obstacleHit:IV.obstacleHit??void 0,manDistFromParent:manDist(UV,IV),nodesInPath:UV.nodesInPath+1,parent:UV,enterMarginCost:IV.enterMarginCost,travelMarginCostFactor:IV.travelMarginCostFactor};lV.push(gV),WV.push(gV)}}return debug$7.enabled&&(lV.sort((IV,dV)=>IV.f-dV.f),this.drawDebugSolution({current:UV,newNeighbors:WV})),{solved:!1,current:UV,newNeighbors:WV}}getStartNode(lV){return{x:lV.pointsToConnect[0].x,y:lV.pointsToConnect[0].y,manDistFromParent:0,f:0,g:0,h:0,nodesInPath:0,parent:null}}layerToIndex(lV){return 0}indexToLayer(lV){return"top"}preprocessConnectionBeforeSolving(lV){return lV}solveConnection(lV){if(lV.pointsToConnect.length>2)throw new Error("GeneralizedAstarAutorouter doesn't currently support 2+ points in a connection");lV=this.preprocessConnectionBeforeSolving(lV);const{pointsToConnect:J}=lV;for(this.iterations=0,this.closedSet=new Set,this.startNode=this.getStartNode(lV),this.goalPoint={...J[J.length-1],l:this.layerToIndex(J[J.length-1].layer)},this.openSet=[this.startNode];this.iterations<this.MAX_ITERATIONS;){const{solved:VV,current:RV}=this.solveOneStep();if(VV){let UV=[],ZV=RV;for(;ZV;){const WV=ZV.l;UV.unshift({x:ZV.x,y:ZV.y,layer:WV!==void 0?this.indexToLayer(WV):J[0].layer}),ZV=ZV.parent}return debug$7.enabled&&(this.debugMessage+=`t${this.debugTraceCount}: ${this.iterations} iterations
7291
7291
  `),this.isRemovePathLoopsEnabled&&(UV=removePathLoops(UV)),{solved:!0,route:UV,connectionName:lV.name}}if(this.openSet.length===0)break}return debug$7.enabled&&(this.debugMessage+=`t${this.debugTraceCount}: ${this.iterations} iterations (failed)
7292
- `),{solved:!1,connectionName:lV.name}}createObstacleList({dominantLayer:lV,connection:J,obstaclesFromTraces:VV}){return new ObstacleList(this.allObstacles.filter(RV=>!RV.connectedTo.includes(J.name)).filter(RV=>RV.layers.includes(lV)).concat(VV??[]))}postprocessConnectionSolveResult(lV,J){return J}solve(){const lV=[],J=[];this.debugTraceCount=0;for(const VV of this.input.connections){const RV=VV.pointsToConnect[0].layer??"top";this.debugTraceCount+=1,this.obstacles=this.createObstacleList({dominantLayer:RV,connection:VV,obstaclesFromTraces:J});let UV=this.solveConnection(VV);UV=this.postprocessConnectionSolveResult(VV,UV),lV.push(UV),debug$7.enabled&&this.drawDebugTraceObstacles(J),UV.solved&&J.push(...getObstaclesFromRoute(UV.route.map(ZV=>({x:ZV.x,y:ZV.y,layer:ZV.layer??RV})),VV.name))}return lV}solveAndMapToTraces(){return this.solve().flatMap(J=>J.solved?[{type:"pcb_trace",pcb_trace_id:`pcb_trace_for_${J.connectionName}`,route:addViasWhenLayerChanges(J.route.map(VV=>({route_type:"wire",x:VV.x,y:VV.y,width:this.input.minTraceWidth,layer:VV.layer})))}]:[])}getDebugGroup(){const lV=`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?lV:null}drawDebugTraceObstacles(lV){const{debugTraceCount:J,debugSolutions:VV}=this;for(const RV in VV)RV.startsWith(`t${J}_`)&&VV[RV].push(...lV.map((UV,ZV)=>({type:"pcb_smtpad",pcb_component_id:"",layer:UV.layers[0],width:UV.width,shape:"rect",x:UV.center.x,y:UV.center.y,pcb_smtpad_id:`trace_obstacle_${ZV}`,height:UV.height})))}drawDebugSolution({current:lV,newNeighbors:J}){const VV=this.getDebugGroup();if(!VV)return;const{openSet:RV,debugTraceCount:UV,debugSolutions:ZV}=this;ZV[VV]??(ZV[VV]=[]);const WV=ZV[VV];WV.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${lV.x}_${lV.y}`,font:"tscircuit2024",font_size:.25,text:"X"+(lV.l!==void 0?lV.l:""),pcb_component_id:"",layer:"top",anchor_position:{x:lV.x,y:lV.y},anchor_alignment:"center"});for(let IV=0;IV<RV.length;IV++){const dV=RV[IV];WV.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${dV.x}_${dV.y}`,layer:"top",route:[[0,.05],[.05,0],[0,-.05],[-.05,0],[0,.05]].map(([CV,FV])=>({x:dV.x+CV,y:dV.y+FV})),stroke_width:.01}),WV.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${dV.x}_${dV.y}`,font:"tscircuit2024",font_size:.03,text:IV.toString(),pcb_component_id:"",layer:"top",anchor_position:{x:dV.x,y:dV.y},anchor_alignment:"center"})}if(lV.parent){const IV=[];let dV=lV;for(;dV;)IV.unshift(dV),dV=dV.parent;WV.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${lV.x}_${lV.y}`,layer:"top",route:IV,stroke_width:.01})}}},debug2$2=Debug$1("autorouting-dataset:infinite-grid-ijump-astar:get-distance-to-overcome-obstacle");function getDistanceToOvercomeObstacle({node:lV,travelDir:J,wallDir:VV,obstacle:RV,obstacles:UV,obstaclesInRow:ZV=0,OBSTACLE_MARGIN:WV=.15,SHOULD_DETECT_CONJOINED_OBSTACLES:IV=!1,MAX_CONJOINED_OBSTACLES:dV=20}){let CV;if(J.dx===0?J.dy>0?CV=RV.center.y+RV.height/2-lV.y:CV=lV.y-(RV.center.y-RV.height/2):J.dx>0?CV=RV.center.x+RV.width/2-lV.x:CV=lV.x-(RV.center.x-RV.width/2),CV+=WV,IV&&ZV<dV){const FV=UV.getObstacleAt(lV.x+J.dx*CV+VV.dx*(VV.wallDistance+.001),lV.y+J.dy*CV+VV.dy*(VV.wallDistance+.001));if(FV===RV)return CV;if(FV&&FV.type==="rect"){const NV=J.dy===0,gV=NV?RV.height:RV.width;if((NV?FV.height:FV.width)>gV)return debug2$2("next obstacle on path is bigger, not trying to overcome it"),CV;const JV=getDistanceToOvercomeObstacle({node:{x:lV.x+J.dx*CV,y:lV.y+J.dy*CV},travelDir:J,wallDir:VV,obstacle:FV,obstacles:UV,obstaclesInRow:ZV+1,SHOULD_DETECT_CONJOINED_OBSTACLES:IV,MAX_CONJOINED_OBSTACLES:dV,OBSTACLE_MARGIN:WV});CV+=JV}}return CV}var IJumpAutorouter=class extends GeneralizedAstarAutorouter{constructor(){super(...arguments);MI(this,"MAX_ITERATIONS",200)}getNeighbors(J){const VV=this.obstacles,RV=this.goalPoint;let UV;J.parent?UV=dirFromAToB(J.parent,J):UV=dirFromAToB(J,RV);const ZV=[{dx:0,dy:1},{dx:1,dy:0},{dx:0,dy:-1},{dx:-1,dy:0}].filter(IV=>{var dV;return IV.dx===UV.dx*-1&&IV.dy===UV.dy*-1?!1:!(IV.dx===UV.dx&&IV.dy===UV.dy&&((dV=J.parent)!=null&&dV.obstacleHit))}).map(IV=>VV.getOrthoDirectionCollisionInfo(J,IV,{margin:this.OBSTACLE_MARGIN})).filter(IV=>IV.wallDistance>=this.OBSTACLE_MARGIN),WV=[];for(const IV of ZV){let dV=null;J!=null&&J.obstacleHit&&(dV=getDistanceToOvercomeObstacle({node:J,travelDir:IV,wallDir:{...UV,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:VV,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const CV=distAlongDir(J,RV,IV),FV=(IV.dx===0||Math.sign(RV.x-J.x)===IV.dx)&&(IV.dy===0||Math.sign(RV.y-J.y)===IV.dy);CV<IV.wallDistance&&CV>0&&FV?WV.push({...IV,travelDistance:CV}):dV!==null&&dV<IV.wallDistance?WV.push({...IV,travelDistance:dV}):IV.wallDistance!==1/0&&WV.push({...IV,travelDistance:IV.wallDistance-this.OBSTACLE_MARGIN})}return WV.filter(IV=>!VV.isObstacleAt(J.x+IV.dx*IV.travelDistance,J.y+IV.dy*IV.travelDistance)).map(IV=>({x:J.x+IV.dx*IV.travelDistance,y:J.y+IV.dy*IV.travelDistance,obstacleHit:IV.obstacle}))}};function generateApproximatingRects(lV,J=4){const{center:VV,width:RV,height:UV,rotation:ZV}=lV,WV=[],IV=ZV*Math.PI/180,dV=Math.cos(IV),CV=Math.sin(IV),FV=(ZV%360+360)%360;if(UV<=RV?FV>=45&&FV<135||FV>=225&&FV<315:FV>=135&&FV<225||FV>=315||FV<45){const gV=RV/J;for(let eV=0;eV<J;eV++){const JV=(eV-J/2+.5)*gV,nV=-JV*dV,aV=-JV*CV,GV=gV*1.1,cV=Math.abs(UV*dV)+Math.abs(gV*CV);WV.push({center:{x:VV.x+nV,y:VV.y+aV},width:GV,height:cV})}}else{const gV=UV/J;for(let eV=0;eV<J;eV++){const JV=(eV-J/2+.5)*gV,nV=-JV*CV,aV=JV*dV,GV=Math.abs(RV*dV)+Math.abs(gV*CV),cV=gV*1.1;WV.push({center:{x:VV.x+nV,y:VV.y+aV},width:GV,height:cV})}}return WV}var EVERY_LAYER=["top","inner1","inner2","bottom"],getObstaclesFromCircuitJson=(lV,J)=>{const VV=UV=>J?UV.concat(UV.map(ZV=>J==null?void 0:J.getNetConnectedToId(ZV)).filter(Boolean)):UV,RV=[];for(const UV of lV)if(UV.type==="pcb_smtpad"){if(UV.shape==="circle")RV.push({type:"oval",layers:[UV.layer],center:{x:UV.x,y:UV.y},width:UV.radius*2,height:UV.radius*2,connectedTo:VV([UV.pcb_smtpad_id])});else if(UV.shape==="rect")RV.push({type:"rect",layers:[UV.layer],center:{x:UV.x,y:UV.y},width:UV.width,height:UV.height,connectedTo:VV([UV.pcb_smtpad_id])});else if(UV.shape==="rotated_rect"){const ZV={center:{x:UV.x,y:UV.y},width:UV.width,height:UV.height,rotation:UV.ccw_rotation},WV=generateApproximatingRects(ZV);for(const IV of WV)RV.push({type:"rect",layers:[UV.layer],center:IV.center,width:IV.width,height:IV.height,connectedTo:VV([UV.pcb_smtpad_id])})}}else if(UV.type==="pcb_keepout")UV.shape==="circle"?RV.push({type:"oval",layers:UV.layers,center:{x:UV.center.x,y:UV.center.y},width:UV.radius*2,height:UV.radius*2,connectedTo:[]}):UV.shape==="rect"&&RV.push({type:"rect",layers:UV.layers,center:{x:UV.center.x,y:UV.center.y},width:UV.width,height:UV.height,connectedTo:[]});else if(UV.type==="pcb_hole")UV.hole_shape==="oval"?RV.push({type:"oval",center:{x:UV.x,y:UV.y},width:UV.hole_width,height:UV.hole_height,connectedTo:[]}):UV.hole_shape==="square"?RV.push({type:"rect",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.hole_diameter,height:UV.hole_diameter,connectedTo:[]}):(UV.hole_shape==="round"||UV.hole_shape==="circle")&&RV.push({type:"rect",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.hole_diameter,height:UV.hole_diameter,connectedTo:[]});else if(UV.type==="pcb_plated_hole")UV.shape==="circle"?RV.push({type:"oval",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.outer_diameter,height:UV.outer_diameter,connectedTo:VV([UV.pcb_plated_hole_id])}):(UV.shape==="oval"||UV.shape==="pill")&&RV.push({type:"oval",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.outer_width,height:UV.outer_height,connectedTo:VV([UV.pcb_plated_hole_id])});else if(UV.type==="pcb_trace"){const ZV=getObstaclesFromRoute(UV.route.map(WV=>({x:WV.x,y:WV.y,layer:"layer"in WV?WV.layer:WV.from_layer})),UV.source_trace_id);RV.push(...ZV)}else UV.type==="pcb_via"&&RV.push({type:"rect",layers:UV.layers,center:{x:UV.x,y:UV.y},connectedTo:[],width:UV.outer_diameter,height:UV.outer_diameter});return RV};function getAlternativeGoalBoxes(lV){const{pcbConnMap:J,goalElementId:VV}=lV;if(!VV.startsWith("pcb_port_"))throw new Error(`Currently alternative goal boxes must have a goal id with prefix "pcb_port_" (got ${VV})`);const RV=J.getAllTracesConnectedToPort(VV);return getObstaclesFromCircuitJson(RV).map(UV=>({...UV,connectedTo:[VV]}))}var getConnectionWithAlternativeGoalBoxes=lV=>{let{connection:J,pcbConnMap:VV}=lV;if(J.pointsToConnect.length!==2)throw new Error(`Connection must have exactly 2 points for alternative goal boxes (got ${J.pointsToConnect.length})`);const[RV,UV]=J.pointsToConnect;if(!RV.pcb_port_id||!UV.pcb_port_id)throw new Error(`Connection points must have pcb_port_id for alternative goal box calculation (got ${RV.pcb_port_id} and ${UV.pcb_port_id})`);const ZV=getAlternativeGoalBoxes({goalElementId:RV.pcb_port_id,pcbConnMap:VV}).concat([{center:RV,width:.01,height:.01,connectedTo:[RV.pcb_port_id],layers:[RV.layer],type:"rect"}]),WV=getAlternativeGoalBoxes({goalElementId:UV.pcb_port_id,pcbConnMap:VV}).concat([{center:UV,width:.01,height:.01,connectedTo:[UV.pcb_port_id],layers:[UV.layer],type:"rect"}]);if(ZV.length<=1&&WV.length<=1)return{...J,startPoint:RV,endPoint:UV,goalBoxes:[]};const IV=findNearestPointsBetweenBoxSets(ZV,WV);let dV,CV,FV;return ZV.length>=WV.length?(dV={...UV,...IV.pointB},CV={...RV,...IV.pointA},FV=ZV):(dV={...RV,...IV.pointA},CV={...UV,...IV.pointB},FV=WV),{startPoint:dV,endPoint:CV,goalBoxes:FV,name:J.name,pointsToConnect:[dV,CV]}},getSimpleRouteJson=(lV,J={})=>{const VV={minTraceWidth:.1};VV.layerCount=J.layerCount??1,VV.obstacles=getObstaclesFromCircuitJson(lV,J.connMap),VV.connections=[];for(const UV of lV)if(UV.type==="source_trace"){let ZV={name:UV.source_trace_id,pointsToConnect:UV.connected_source_port_ids.map(WV=>{var dV;const IV=distExports$4.su(lV).pcb_port.getWhere({source_port_id:WV});if(!IV)throw new Error(`Could not find pcb_port for source_port_id "${WV}"`);return{x:IV.x,y:IV.y,layer:((dV=IV.layers)==null?void 0:dV[0])??"top",pcb_port_id:IV.pcb_port_id}})};if(J.optimizeWithGoalBoxes){const WV=new PcbConnectivityMap$1(lV);ZV=getConnectionWithAlternativeGoalBoxes({connection:ZV,pcbConnMap:WV})}VV.connections.push(ZV),markObstaclesAsConnected(VV.obstacles,ZV.pointsToConnect,ZV.name)}const RV={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0};for(const UV of VV.obstacles)RV.minX=Math.min(RV.minX,UV.center.x-UV.width/2),RV.maxX=Math.max(RV.maxX,UV.center.x+UV.width/2),RV.minY=Math.min(RV.minY,UV.center.y-UV.height/2),RV.maxY=Math.max(RV.maxY,UV.center.y+UV.height/2);for(const UV of VV.connections)for(const ZV of UV.pointsToConnect)RV.minX=Math.min(RV.minX,ZV.x),RV.maxX=Math.max(RV.maxX,ZV.x),RV.minY=Math.min(RV.minY,ZV.y),RV.maxY=Math.max(RV.maxY,ZV.y);return VV.bounds=RV,VV},markObstaclesAsConnected=(lV,J,VV)=>{for(const RV of J)for(const UV of lV)isPointInsideObstacle(RV,UV)&&UV.connectedTo.push(VV)};function isPointInsideObstacle(lV,J){const VV=J.width/2,RV=J.height/2;if(J.type==="rect")return lV.x>=J.center.x-VV&&lV.x<=J.center.x+VV&&lV.y>=J.center.y-RV&&lV.y<=J.center.y+RV;if(J.type==="oval"){const UV=(lV.x-J.center.x)/VV,ZV=(lV.y-J.center.y)/RV;return UV*UV+ZV*ZV<=1}return!1}function dirFromAToB2(lV,J){const VV=J.x>lV.x?1:J.x<lV.x?-1:0,RV=J.y>lV.y?1:J.y<lV.y?-1:0,UV=J.l>lV.l?1:J.l<lV.l?-1:0;return{dx:VV,dy:RV,dl:UV}}var LAYER_COUNT_INDEX_MAP={1:["top"],2:["top","bottom"],4:["top","inner1","inner2","bottom"]},getLayerNamesForLayerCount=lV=>LAYER_COUNT_INDEX_MAP[lV];function getLayerIndex(lV,J){const RV=LAYER_COUNT_INDEX_MAP[lV].indexOf(J);if(RV===-1)throw new Error(`Invalid layer for getLayerIndex (for layerCount === ${lV}): "${J}"`);return RV}function indexToLayer(lV,J){const RV=LAYER_COUNT_INDEX_MAP[lV][J];if(!RV)throw new Error(`Invalid index for indexToLayer (for layerCount === ${lV}): "${J}"`);return RV}var ObstacleList3d=class extends ObstacleList{constructor(J,VV){super([]);MI(this,"obstacles");MI(this,"GRID_STEP",.1);MI(this,"layerCount");this.layerCount=J;const RV=getLayerNamesForLayerCount(J);this.obstacles=VV.flatMap(UV=>UV.layers.filter(ZV=>RV.includes(ZV)).map(ZV=>({...UV,left:UV.center.x-UV.width/2,right:UV.center.x+UV.width/2,top:UV.center.y+UV.height/2,bottom:UV.center.y-UV.height/2,l:getLayerIndex(J,ZV)})))}getObstacleAt(J,VV,RV,UV){UV??(UV=this.GRID_STEP);for(const ZV of this.obstacles){if(ZV.l!==RV)continue;const WV=ZV.width/2+UV,IV=ZV.height/2+UV;if(J>=ZV.center.x-WV&&J<=ZV.center.x+WV&&VV>=ZV.center.y-IV&&VV<=ZV.center.y+IV)return ZV}return null}isObstacleAt(J,VV,RV,UV){return this.getObstacleAt(J,VV,RV,UV)!==null}getDirectionDistancesToNearestObstacle3d(J,VV,RV){const{GRID_STEP:UV}=this,ZV={left:1/0,top:1/0,bottom:1/0,right:1/0};for(const WV of this.obstacles)if(WV.l===RV&&WV.type==="rect"){const IV=WV.center.x-WV.width/2-UV,dV=WV.center.x+WV.width/2+UV,CV=WV.center.y+WV.height/2+UV,FV=WV.center.y-WV.height/2-UV;VV>=FV&&VV<=CV&&J>IV&&(ZV.left=Math.min(ZV.left,J-dV)),VV>=FV&&VV<=CV&&J<dV&&(ZV.right=Math.min(ZV.right,IV-J)),J>=IV&&J<=dV&&VV<CV&&(ZV.top=Math.min(ZV.top,FV-VV)),J>=IV&&J<=dV&&VV>FV&&(ZV.bottom=Math.min(ZV.bottom,VV-CV))}return ZV}getOrthoDirectionCollisionInfo(J,VV,{margin:RV=0}={}){const{x:UV,y:ZV,l:WV}=J,{dx:IV,dy:dV,dl:CV}=VV;let FV=1/0,NV=null;if(CV!==0){const gV=WV+CV;return this.isObstacleAt(UV,ZV,gV,RV)?(FV=1,NV=this.getObstacleAt(UV,ZV,gV,RV)):FV=1,{dx:IV,dy:dV,dl:CV,wallDistance:FV,obstacle:NV}}else{for(const gV of this.obstacles){if(gV.l!==WV)continue;const eV=gV.left-RV,JV=gV.right+RV,nV=gV.top+RV,aV=gV.bottom-RV;let GV=null;IV===1&&dV===0?ZV>aV&&ZV<nV&&UV<gV.left&&(GV=gV.left-UV):IV===-1&&dV===0?ZV>aV&&ZV<nV&&UV>gV.right&&(GV=UV-gV.right):IV===0&&dV===1?UV>eV&&UV<JV&&ZV<gV.bottom&&(GV=gV.bottom-ZV):IV===0&&dV===-1&&UV>eV&&UV<JV&&ZV>gV.top&&(GV=ZV-gV.top),GV!==null&&GV<FV&&(FV=GV,NV=gV)}return{dx:IV,dy:dV,dl:0,wallDistance:FV,obstacle:NV}}}getObstaclesOverlappingRegion(J){const VV=[];for(const RV of this.obstacles){if(RV.l!==J.l)continue;const{left:UV,right:ZV,top:WV,bottom:IV}=RV;UV<=J.maxX&&ZV>=J.minX&&WV>=J.minY&&IV<=J.maxY&&VV.push(RV)}return VV}},MultilayerIjump=class extends GeneralizedAstarAutorouter{constructor(J){super(J);MI(this,"MAX_ITERATIONS",500);MI(this,"VIA_COST",4);MI(this,"VIA_DIAMETER",.5);MI(this,"allowLayerChange",!0);MI(this,"layerCount");MI(this,"obstacles");MI(this,"optimizeWithGoalBoxes");MI(this,"connMap");MI(this,"pcbConnMap");MI(this,"GOAL_RUSH_FACTOR",1.1);MI(this,"defaultGoalViaMargin",.5);MI(this,"marginsWithCosts");this.layerCount=J.input.layerCount??2,this.VIA_COST=J.VIA_COST??this.VIA_COST,this.connMap=J.connMap,this.pcbConnMap=J.pcbConnMap??new PcbConnectivityMap$1,this.optimizeWithGoalBoxes=J.optimizeWithGoalBoxes??!1,this.obstacles=null,this.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,VV){if(!VV.solved)return VV;if(this.optimizeWithGoalBoxes){const RV=VV.route.map(UV=>({x:UV.x,y:UV.y,route_type:"wire",layer:UV.layer,width:this.input.minTraceWidth}));RV[0].start_pcb_port_id=J.pointsToConnect[0].pcb_port_id,RV[RV.length-1].end_pcb_port_id=J.pointsToConnect[1].pcb_port_id,this.pcbConnMap.addTrace({type:"pcb_trace",pcb_trace_id:`postprocess_trace_${nanoid(8)}`,route:RV})}return VV}createObstacleList({dominantLayer:J,connection:VV,obstaclesFromTraces:RV}){const UV=this.connMap?this.connMap.getNetConnectedToId(VV.name):VV.name;if(!UV)throw new Error(`The connection.name "${VV.name}" wasn't present in the full connectivity map`);return new ObstacleList3d(this.layerCount,this.allObstacles.filter(ZV=>!ZV.connectedTo.includes(UV)).concat(RV??[]))}computeG(J,VV){let RV=J.g+manDist(J,VV)*(J.travelMarginCostFactor??1)+(VV.enterMarginCost??0);return(VV.l??J.l!==-1??-1)&&(RV+=this.VIA_COST),RV}computeH(J){const VV=Math.abs(J.x-this.goalPoint.x),RV=Math.abs(J.y-this.goalPoint.y),UV=Math.abs(J.l-this.goalPoint.l);return(VV+RV)**this.GOAL_RUSH_FACTOR+UV*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,VV){return J.every(RV=>this.obstacles.getObstaclesOverlappingRegion({minX:VV.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:VV.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:VV.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:VV.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:RV}).length===0)}getNeighborsSurroundingGoal(J){this.obstacles;const VV=this.goalPoint,RV=[],UV=[{dx:1,dy:0,dl:0},{dx:-1,dy:0,dl:0},{dx:0,dy:1,dl:0},{dx:0,dy:-1,dl:0}],ZV=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin;for(const WV of UV){const IV={x:J.x+WV.dx*ZV,y:J.y+WV.dy*ZV,l:J.l+WV.dl,obstacleHit:null};this.hasSpaceForVia([J.l,VV.l],IV)&&RV.push(IV)}return RV}getNeighbors(J){const VV=this.obstacles,RV=this.goalPoint,UV=manDist(J,RV);if(UV<=this.OBSTACLE_MARGIN)return this.getNeighborsSurroundingGoal(J);let ZV;J.parent?ZV=dirFromAToB2(J.parent,J):ZV=dirFromAToB2(J,RV);const WV=[{dx:0,dy:1,dl:0},{dx:1,dy:0,dl:0},{dx:0,dy:-1,dl:0},{dx:-1,dy:0,dl:0}],IV=UV>this.VIA_DIAMETER+this.OBSTACLE_MARGIN,dV=manDist(J,this.startNode)>this.VIA_DIAMETER+this.OBSTACLE_MARGIN;this.allowLayerChange&&IV&&dV&&(J.l<this.layerCount-1&&WV.push({dx:0,dy:0,dl:1}),J.l>0&&WV.push({dx:0,dy:0,dl:-1}));const CV=WV.filter(NV=>{var gV;return NV.dx===ZV.dx*-1&&NV.dy===ZV.dy*-1&&NV.dl===ZV.dl*-1?!1:!(NV.dx===ZV.dx&&NV.dy===ZV.dy&&NV.dl===ZV.dl&&((gV=J.parent)!=null&&gV.obstacleHit))}).map(NV=>VV.getOrthoDirectionCollisionInfo(J,NV,{margin:this.OBSTACLE_MARGIN})).filter(NV=>!(NV.wallDistance<this.OBSTACLE_MARGIN)),FV=[];for(const NV of CV){const gV=NV.dx===0&&NV.dy===0&&NV.dl===1,eV=NV.dx===0&&NV.dy===0&&NV.dl===-1;if((gV||eV)&&![J.l,J.l+NV.dl].every(cV=>VV.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:cV}).length===0))continue;if(gV){J.l<this.layerCount-1&&FV.push({...NV,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}if(eV){J.l>0&&FV.push({...NV,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}let JV=null;J!=null&&J.obstacleHit&&(JV=getDistanceToOvercomeObstacle({node:J,travelDir:NV,wallDir:{...ZV,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:VV,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const nV=distAlongDir(J,RV,NV),aV=(NV.dx===0||Math.sign(RV.x-J.x)===NV.dx)&&(NV.dy===0||Math.sign(RV.y-J.y)===NV.dy);if(nV<NV.wallDistance&&nV>0&&aV){const GV=J.l===RV.l;let cV=0;!GV&&Math.abs(nV-UV)<this.GRID_STEP&&(cV=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin),FV.push({...NV,travelDistance:nV-cV,enterMarginCost:0,travelMarginCostFactor:1})}else if(JV!==null&&JV<NV.wallDistance){for(const{margin:GV,enterCost:cV,travelCostFactor:TV}of this.marginsWithCosts)JV-this.OBSTACLE_MARGIN+GV*2<NV.wallDistance&&FV.push({...NV,travelDistance:JV-this.OBSTACLE_MARGIN+GV,enterMarginCost:cV,travelMarginCostFactor:TV});if(NV.wallDistance===1/0)FV.push({...NV,travelDistance:nV,enterMarginCost:0,travelMarginCostFactor:1});else if(NV.wallDistance>this.largestMargin)for(const{margin:GV,enterCost:cV,travelCostFactor:TV}of this.marginsWithCosts)NV.wallDistance>this.largestMargin+GV&&FV.push({...NV,travelDistance:NV.wallDistance-GV,enterMarginCost:cV,travelMarginCostFactor:TV})}else if(NV.wallDistance!==1/0)for(const{margin:GV,enterCost:cV,travelCostFactor:TV}of this.marginsWithCosts)NV.wallDistance>GV&&FV.push({...NV,travelDistance:NV.wallDistance-GV,enterMarginCost:cV,travelMarginCostFactor:TV})}return FV.map(NV=>({x:J.x+NV.dx*NV.travelDistance,y:J.y+NV.dy*NV.travelDistance,l:J.l+NV.dl,obstacleHit:NV.obstacle,travelMarginCostFactor:NV.travelMarginCostFactor,enterMarginCost:NV.enterMarginCost}))}};function autoroute2(lV){const J=getSimpleRouteJson(lV),VV=new IJumpAutorouter({input:J});return{solution:VV.solveAndMapToTraces(),debugSolutions:VV.debugSolutions,debugMessage:VV.debugMessage}}var getObstaclesFromSoup=getObstaclesFromCircuitJson,direction$1=z$1.enum(["up","down","left","right"]);z$1.enum(["top-to-bottom","left-to-right","bottom-to-top","right-to-left"]);var portHints=z$1.array(z$1.string().or(z$1.number())),point3$1=z$1.object({x:distance$4,y:distance$4,z:distance$4}),rotationPoint3=z$1.object({x:z$1.union([z$1.number(),z$1.string()]),y:z$1.union([z$1.number(),z$1.string()]),z:z$1.union([z$1.number(),z$1.string()])}),cadModelBase=z$1.object({rotationOffset:z$1.number().or(rotationPoint3).optional(),positionOffset:point3$1.optional(),size:point3$1.optional()}),cadModelStl=cadModelBase.extend({stlUrl:z$1.string()}),cadModelObj=cadModelBase.extend({objUrl:z$1.string(),mtlUrl:z$1.string().optional()}),cadModelJscad=cadModelBase.extend({jscad:z$1.record(z$1.any())}),cadModelProp=z$1.union([z$1.string(),cadModelStl,cadModelObj,cadModelJscad]),footprintProp=z$1.custom(lV=>!0),pcbLayoutProps=z$1.object({pcbX:distance$4.optional(),pcbY:distance$4.optional(),pcbRotation:rotation$3.optional(),layer:layer_ref$1.optional()}),commonLayoutProps=z$1.object({pcbX:distance$4.optional(),pcbY:distance$4.optional(),pcbRotation:rotation$3.optional(),schX:distance$4.optional(),schY:distance$4.optional(),schRotation:rotation$3.optional(),layer:layer_ref$1.optional(),footprint:footprintProp.optional()}),supplierProps=z$1.object({supplierPartNumbers:z$1.record(supplier_name$1,z$1.array(z$1.string())).optional()}),commonComponentProps=commonLayoutProps.merge(supplierProps).extend({key:z$1.any().optional(),name:z$1.string(),cadModel:cadModelProp.optional(),children:z$1.any().optional(),symbolName:z$1.string().optional()}),lrPins=["pin1","left","pin2","right"],lrPolarPins=["pin1","left","anode","pos","pin2","right","cathode","neg"];distance$4.or(z$1.enum(["2x","3x","4x"]));var explicitPinSideDefinition=z$1.object({pins:z$1.array(z$1.union([z$1.number(),z$1.string()])),direction:z$1.union([z$1.literal("top-to-bottom"),z$1.literal("left-to-right"),z$1.literal("bottom-to-top"),z$1.literal("right-to-left")])}),schematicPortArrangement=z$1.object({leftSize:z$1.number().optional().describe("@deprecated, use leftPinCount"),topSize:z$1.number().optional().describe("@deprecated, use topPinCount"),rightSize:z$1.number().optional().describe("@deprecated, use rightPinCount"),bottomSize:z$1.number().optional().describe("@deprecated, use bottomPinCount"),leftPinCount:z$1.number().optional(),rightPinCount:z$1.number().optional(),topPinCount:z$1.number().optional(),bottomPinCount:z$1.number().optional(),leftSide:explicitPinSideDefinition.optional(),rightSide:explicitPinSideDefinition.optional(),topSide:explicitPinSideDefinition.optional(),bottomSide:explicitPinSideDefinition.optional()}),schematicPinStyle=z$1.record(z$1.object({leftMargin:distance$4.optional(),rightMargin:distance$4.optional(),topMargin:distance$4.optional(),bottomMargin:distance$4.optional()})),point$1=z$1.object({x:distance$4,y:distance$4}),base_manual_edit_event=z$1.object({edit_event_id:z$1.string(),in_progress:z$1.boolean().optional(),created_at:z$1.number()}),edit_pcb_component_location_event=base_manual_edit_event.extend({pcb_edit_event_type:z$1.literal("edit_component_location").describe("deprecated"),edit_event_type:z$1.literal("edit_pcb_component_location"),pcb_component_id:z$1.string(),original_center:z$1.object({x:z$1.number(),y:z$1.number()}),new_center:z$1.object({x:z$1.number(),y:z$1.number()})}),edit_trace_hint_event=base_manual_edit_event.extend({pcb_edit_event_type:z$1.literal("edit_trace_hint").describe("deprecated"),edit_event_type:z$1.literal("edit_pcb_trace_hint").optional(),pcb_port_id:z$1.string(),pcb_trace_hint_id:z$1.string().optional(),route:z$1.array(z$1.object({x:z$1.number(),y:z$1.number(),via:z$1.boolean().optional()}))}),edit_schematic_component_location_event=base_manual_edit_event.extend({edit_event_type:z$1.literal("edit_schematic_component_location"),schematic_component_id:z$1.string(),original_center:z$1.object({x:z$1.number(),y:z$1.number()}),new_center:z$1.object({x:z$1.number(),y:z$1.number()})});z$1.union([edit_pcb_component_location_event,edit_trace_hint_event,edit_schematic_component_location_event]);var manual_pcb_placement=z$1.object({selector:z$1.string(),relative_to:z$1.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$2}),manual_trace_hint=z$1.object({pcb_port_selector:z$1.string(),offsets:z$1.array(route_hint_point$1)}),manual_schematic_placement=z$1.object({selector:z$1.string(),relative_to:z$1.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$2}),manual_edits_file=z$1.object({pcb_placements:z$1.array(manual_pcb_placement).optional(),manual_trace_hints:z$1.array(manual_trace_hint).optional(),schematic_placements:z$1.array(manual_schematic_placement).optional()}),autorouterConfig=z$1.object({serverUrl:z$1.string().optional(),inputFormat:z$1.enum(["simplified","circuit-json"]).optional(),serverMode:z$1.enum(["job","solve-endpoint"]).optional(),cache:z$1.custom(lV=>!0).optional()}),autorouterProp=z$1.union([autorouterConfig,z$1.literal("sequential-trace"),z$1.literal("subcircuit"),z$1.literal("auto"),z$1.literal("auto-local"),z$1.literal("auto-cloud")]),baseGroupProps=commonLayoutProps.extend({name:z$1.string().optional(),children:z$1.any().optional()}),subcircuitGroupProps=baseGroupProps.extend({layout:z$1.custom(lV=>!0).optional(),manualEdits:manual_edits_file.optional(),schAutoLayoutEnabled:z$1.boolean().optional(),routingDisabled:z$1.boolean().optional(),defaultTraceWidth:length$3.optional(),minTraceWidth:length$3.optional(),partsEngine:z$1.custom(lV=>"findPart"in lV).optional(),pcbRouteCache:z$1.custom(lV=>!0).optional(),autorouter:autorouterProp.optional()}),subcircuitGroupPropsWithBool=subcircuitGroupProps.extend({subcircuit:z$1.literal(!0)}),groupProps=z$1.discriminatedUnion("subcircuit",[baseGroupProps.extend({subcircuit:z$1.literal(!1).optional()}),subcircuitGroupPropsWithBool]),boardProps=subcircuitGroupProps.extend({width:distance$4.optional(),height:distance$4.optional(),outline:z$1.array(point$1).optional()});z$1.record(z$1.number().or(z$1.string()),z$1.string().or(z$1.array(z$1.string()).readonly()).or(z$1.array(z$1.string())));var chipProps=commonComponentProps.extend({manufacturerPartNumber:z$1.string().optional(),pinLabels:z$1.record(z$1.number().or(z$1.string()),z$1.string().or(z$1.array(z$1.string()).readonly())).optional(),schPortArrangement:schematicPortArrangement.optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$4.optional(),schWidth:distance$4.optional(),schHeight:distance$4.optional(),noSchematicRepresentation:z$1.boolean().optional()}),jumperProps=commonComponentProps.extend({manufacturerPartNumber:z$1.string().optional(),pinLabels:z$1.record(z$1.number().or(z$1.string()),z$1.string().or(z$1.array(z$1.string()))).optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$4.optional(),schWidth:distance$4.optional(),schHeight:distance$4.optional(),schDirection:z$1.enum(["left","right"]).optional(),schPortArrangement:schematicPortArrangement.optional()}),platedHoleProps=z$1.discriminatedUnion("shape",[pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$1.string().optional(),shape:z$1.literal("circle"),holeDiameter:distance$4,outerDiameter:distance$4,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$1.string().optional(),shape:z$1.literal("oval"),outerWidth:distance$4,outerHeight:distance$4,innerWidth:distance$4,innerHeight:distance$4,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$1.string().optional(),shape:z$1.literal("pill"),outerWidth:distance$4,outerHeight:distance$4,innerWidth:distance$4,innerHeight:distance$4,portHints:portHints.optional()})]),resistorProps=commonComponentProps.extend({resistance:resistance$1,pullupFor:z$1.string().optional(),pullupTo:z$1.string().optional(),pulldownFor:z$1.string().optional(),pulldownTo:z$1.string().optional()}),resistorPins=lrPins,potentiometerProps=commonComponentProps.extend({maxResistance:resistance$1}),crystalProps=commonComponentProps.extend({frequency,loadCapacitance:capacitance$1,pinVariant:z$1.enum(["2pin","4pin"]).optional()}),resonatorProps=commonComponentProps.extend({frequency,loadCapacitance:capacitance$1,pinVariant:z$1.enum(["no_ground","ground_pin","two_ground_pins"]).optional()}),capacitorProps=commonComponentProps.extend({capacitance:capacitance$1,polarized:z$1.boolean().optional().default(!1),decouplingFor:z$1.string().optional(),decouplingTo:z$1.string().optional(),bypassFor:z$1.string().optional(),bypassTo:z$1.string().optional(),maxDecouplingTraceLength:z$1.number().optional()}),capacitorPins=lrPolarPins;z$1.object({name:z$1.string()}),z$1.object({name:z$1.string().optional(),pcbOnly:z$1.boolean().optional(),schOnly:z$1.boolean().optional()});var pcbXDistConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),xDist:distance$4,left:z$1.string(),right:z$1.string(),edgeToEdge:z$1.literal(!0).optional(),centerToCenter:z$1.literal(!0).optional()}),pcbYDistConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),yDist:distance$4,top:z$1.string(),bottom:z$1.string(),edgeToEdge:z$1.literal(!0).optional(),centerToCenter:z$1.literal(!0).optional()}),pcbSameYConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),sameY:z$1.literal(!0).optional(),for:z$1.array(z$1.string())}),pcbSameXConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),sameX:z$1.literal(!0).optional(),for:z$1.array(z$1.string())}),constraintProps=z$1.union([pcbXDistConstraintProps,pcbYDistConstraintProps,pcbSameYConstraintProps,pcbSameXConstraintProps]),rectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("rect"),width:distance$4,height:distance$4,portHints:portHints.optional()}),rotatedRectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("rotated_rect"),width:distance$4,height:distance$4,ccwRotation:z$1.number(),portHints:portHints.optional()}),circleSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("circle"),radius:distance$4,portHints:portHints.optional()}),smtPadProps=z$1.union([circleSmtPadProps,rectSmtPadProps,rotatedRectSmtPadProps]),rectSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("rect"),width:distance$4,height:distance$4}),circleSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("circle"),radius:distance$4});z$1.union([circleSolderPasteProps,rectSolderPasteProps]);var holeProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({name:z$1.string().optional(),diameter:distance$4.optional(),radius:distance$4.optional()}).transform(lV=>({...lV,diameter:lV.diameter??2*lV.radius,radius:lV.radius??lV.diameter/2})),portRef=z$1.union([z$1.string(),z$1.custom(lV=>!!lV.getPortSelector)]),baseTraceProps=z$1.object({key:z$1.string().optional(),thickness:distance$4.optional(),schematicRouteHints:z$1.array(point$1).optional(),pcbRouteHints:z$1.array(route_hint_point$1).optional(),schDisplayLabel:z$1.string().optional(),maxLength:z$1.number().optional()}),traceProps=z$1.union([baseTraceProps.extend({path:z$1.array(portRef)}),baseTraceProps.extend({from:portRef,to:portRef})]),footprintProps=z$1.object({originalLayer:layer_ref$1.default("top").optional()}),capacity=z$1.number().or(z$1.string().endsWith("mAh")).transform(lV=>{if(typeof lV=="string"){const J=lV.replace("mAh",""),VV=Number.parseFloat(J);if(Number.isNaN(VV))throw new Error("Invalid capacity");return VV}return lV}).describe("Battery capacity in mAh"),batteryProps=commonComponentProps.extend({capacity:capacity.optional()}),pinHeaderProps=commonComponentProps.extend({pinCount:z$1.number(),pitch:distance$4.optional(),gender:z$1.enum(["male","female"]).optional().default("male"),showSilkscreenPinLabels:z$1.boolean().optional(),doubleRow:z$1.boolean().optional(),holeDiameter:distance$4.optional(),platedDiameter:distance$4.optional(),pinLabels:z$1.array(z$1.string()).optional(),facingDirection:z$1.enum(["left","right"]).optional()}),netAliasProps=z$1.object({net:z$1.string().optional(),schX:distance$4.optional(),schY:distance$4.optional(),schRotation:rotation$3.optional(),anchorSide:z$1.enum(["left","up","right","down"]).optional()}),pushButtonProps=commonComponentProps.extend({}),transistorProps=commonComponentProps.extend({transistorType:z$1.enum(["npn","pnp"])}),inductorProps=commonComponentProps.extend({inductance:inductance$1}),diodeProps=commonComponentProps.extend({}),diodePins=lrPolarPins,ledProps=commonComponentProps.extend({color:z$1.string().optional()}),ledPins=lrPolarPins;commonComponentProps.extend({ftype:z$1.literal("switch"),switchType:z$1.enum(["spst"]).default("spst"),isNormallyClosed:z$1.boolean().default(!1)}),distance$4.or(z$1.enum(["2x","3x","4x"]));var viaProps=commonLayoutProps.extend({fromLayer:layer_ref$1,toLayer:layer_ref$1,holeDiameter:distance$4,outerDiameter:distance$4}),pcbKeepoutProps=z$1.union([pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("circle"),radius:distance$4}),pcbLayoutProps.extend({shape:z$1.literal("rect"),width:distance$4,height:distance$4})]);z$1.object({schX:distance$4,schY:distance$4,width:distance$4,height:distance$4}),z$1.object({schX:distance$4,schY:distance$4,text:z$1.string()}),z$1.object({x1:distance$4,y1:distance$4,x2:distance$4,y2:distance$4}),z$1.object({points:z$1.array(point$2),isFilled:z$1.boolean().optional().default(!1),fillColor:z$1.enum(["red","blue"]).optional()});var powerSourceProps=commonComponentProps.extend({voltage:voltage$1});commonLayoutProps.extend({name:z$1.string(),pinNumber:z$1.number().optional(),aliases:z$1.array(z$1.string()).optional(),direction:direction$1});var silkscreenTextProps=pcbLayoutProps.extend({text:z$1.string(),anchorAlignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$1.enum(["tscircuit2024"]).optional(),fontSize:length$3.optional()}),silkscreenPathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$1.array(route_hint_point$1),strokeWidth:length$3.optional()}),silkscreenLineProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({strokeWidth:distance$4,x1:distance$4,y1:distance$4,x2:distance$4,y2:distance$4}),silkscreenRectProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$1.boolean().optional(),isOutline:z$1.boolean().optional(),strokeWidth:distance$4.optional(),width:distance$4,height:distance$4}),silkscreenCircleProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$1.boolean().optional(),isOutline:z$1.boolean().optional(),strokeWidth:distance$4.optional(),radius:distance$4}),routeHintPointProps=z$1.object({x:distance$4,y:distance$4,via:z$1.boolean().optional(),toLayer:layer_ref$1.optional()}),traceHintProps=z$1.object({for:z$1.string().optional().describe("Selector for the port you're targeting, not required if you're inside a trace"),order:z$1.number().optional(),offset:route_hint_point$1.or(routeHintPointProps).optional(),offsets:z$1.array(route_hint_point$1).or(z$1.array(routeHintPointProps)).optional(),traceWidth:z$1.number().optional()});z$1.object({layer:z$1.string().optional(),thickness:distance$4.optional(),route:z$1.array(route_hint_point$1)});var fabricationNoteTextProps=pcbLayoutProps.extend({text:z$1.string(),anchorAlignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$1.enum(["tscircuit2024"]).optional(),fontSize:length$3.optional(),color:z$1.string().optional()}),fabricationNotePathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$1.array(route_hint_point$1),strokeWidth:length$3.optional(),color:z$1.string().optional()});function createMap(){return new IndexedMap}class IndexedMap{constructor(){MI(this,"index",{});MI(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 VV=this.index[J.id()];return VV===void 0?void 0:this.array[VV]}setDefault(J,VV){const RV=this.index[J.id()];if(RV===void 0){const UV=new Pair(J,VV());return this.index[J.id()]=this.array.length,this.array.push(UV),UV}else return this.array[RV]}insert(J,VV){const RV=new Pair(J,VV),UV=this.index[J.id()];return UV===void 0?(this.index[J.id()]=this.array.length,this.array.push(RV)):this.array[UV]=RV,RV}erase(J){const VV=this.index[J.id()];if(VV===void 0)return;this.index[J.id()]=void 0;const RV=this.array[VV],UV=this.array.pop();return RV!==UV&&(this.array[VV]=UV,this.index[UV.first.id()]=VV),RV}copy(){const J=new IndexedMap;for(let VV=0;VV<this.array.length;VV++){const RV=this.array[VV].copy();J.array[VV]=RV,J.index[RV.first.id()]=VV}return J}}class Pair{constructor(J,VV){MI(this,"first");MI(this,"second");this.first=J,this.second=VV}copy(){return new Pair(this.first,this.second)}}class Variable{constructor(J=""){MI(this,"_name");MI(this,"_value",0);MI(this,"_context",null);MI(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(){MI(this,"_terms");MI(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 VV=0,RV=this._terms.size();VV<RV;VV++){let UV=this._terms.itemAt(VV);J+=UV.first.value()*UV.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(VV){return VV.second+"*"+VV.first.toString()}).join(" + ");return!this.isConstant()&&this._constant!==0&&(J+=" + "),J+=this._constant,J}}function parseArgs(lV){let J=0,VV=()=>0,RV=createMap();for(let UV=0,ZV=lV.length;UV<ZV;++UV){let WV=lV[UV];if(typeof WV=="number")J+=WV;else if(WV instanceof Variable)RV.setDefault(WV,VV).second+=1;else if(WV instanceof Expression){J+=WV.constant();let IV=WV.terms();for(let dV=0,CV=IV.size();dV<CV;dV++){let FV=IV.itemAt(dV);RV.setDefault(FV.first,VV).second+=FV.second}}else if(WV instanceof Array){if(WV.length!==2)throw new Error("array must have length 2");let IV=WV[0],dV=WV[1];if(typeof IV!="number")throw new Error("array item 0 must be a number");if(dV instanceof Variable)RV.setDefault(dV,VV).second+=IV;else if(dV instanceof Expression){J+=dV.constant()*IV;let CV=dV.terms();for(let FV=0,NV=CV.size();FV<NV;FV++){let gV=CV.itemAt(FV);RV.setDefault(gV.first,VV).second+=gV.second*IV}}else throw new Error("array item 1 must be a variable or expression")}else throw new Error("invalid Expression argument: "+WV)}return{terms:RV,constant:J}}const Om=class Om{static create(J,VV,RV,UV=1){let ZV=0;return ZV+=Math.max(0,Math.min(1e3,J*UV))*1e6,ZV+=Math.max(0,Math.min(1e3,VV*UV))*1e3,ZV+=Math.max(0,Math.min(1e3,RV*UV)),ZV}static clip(J){return Math.max(0,Math.min(Om.required,J))}};MI(Om,"required",Om.create(1e3,1e3,1e3)),MI(Om,"strong",Om.create(1,0,0)),MI(Om,"medium",Om.create(0,1,0)),MI(Om,"weak",Om.create(0,0,1));let Strength=Om;var Operator;(function(lV){lV[lV.Le=0]="Le",lV[lV.Ge=1]="Ge",lV[lV.Eq=2]="Eq"})(Operator||(Operator={}));class Constraint{constructor(J,VV,RV,UV=Strength.required){MI(this,"_expression");MI(this,"_operator");MI(this,"_strength");MI(this,"_id",CnId++);this._operator=VV,this._strength=Strength.clip(UV),RV===void 0&&J instanceof Expression?this._expression=J:this._expression=J.minus(RV)}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(){MI(this,"maxIterations",1e3);MI(this,"_cnMap",createCnMap());MI(this,"_rowMap",createRowMap());MI(this,"_varMap",createVarMap());MI(this,"_editMap",createEditMap());MI(this,"_infeasibleRows",[]);MI(this,"_objective",new Row$1);MI(this,"_artificial",null);MI(this,"_idTick",0)}createConstraint(J,VV,RV,UV=Strength.required){let ZV=new Constraint(J,VV,RV,UV);return this.addConstraint(ZV),ZV}addConstraint(J){if(this._cnMap.find(J)!==void 0)throw new Error("duplicate constraint");let RV=this._createRow(J),UV=RV.row,ZV=RV.tag,WV=this._chooseSubject(UV,ZV);if(WV.type()===SymbolType.Invalid&&UV.allDummies())if(nearZero(UV.constant()))WV=ZV.marker;else throw new Error("unsatisfiable constraint");if(WV.type()===SymbolType.Invalid){if(!this._addWithArtificialVariable(UV))throw new Error("unsatisfiable constraint")}else UV.solveFor(WV),this._substitute(WV,UV),this._rowMap.insert(WV,UV);this._cnMap.insert(J,ZV),this._optimize(this._objective)}removeConstraint(J){let VV=this._cnMap.erase(J);if(VV===void 0)throw new Error("unknown constraint");this._removeConstraintEffects(J,VV.second);let RV=VV.second.marker,UV=this._rowMap.erase(RV);if(UV===void 0){let ZV=this._getMarkerLeavingSymbol(RV);if(ZV.type()===SymbolType.Invalid)throw new Error("failed to find leaving row");UV=this._rowMap.erase(ZV),UV.second.solveForEx(ZV,RV),this._substitute(RV,UV.second)}this._optimize(this._objective)}hasConstraint(J){return this._cnMap.contains(J)}getConstraints(){return this._cnMap.array.map(({first:J})=>J)}addEditVariable(J,VV){if(this._editMap.find(J)!==void 0)throw new Error("duplicate edit variable");if(VV=Strength.clip(VV),VV===Strength.required)throw new Error("bad required strength");let UV=new Expression(J),ZV=new Constraint(UV,Operator.Eq,void 0,VV);this.addConstraint(ZV);let IV={tag:this._cnMap.find(ZV).second,constraint:ZV,constant:0};this._editMap.insert(J,IV)}removeEditVariable(J){let VV=this._editMap.erase(J);if(VV===void 0)throw new Error("unknown edit variable");this.removeConstraint(VV.second.constraint)}hasEditVariable(J){return this._editMap.contains(J)}suggestValue(J,VV){let RV=this._editMap.find(J);if(RV===void 0)throw new Error("unknown edit variable");let UV=this._rowMap,ZV=RV.second,WV=VV-ZV.constant;ZV.constant=VV;let IV=ZV.tag.marker,dV=UV.find(IV);if(dV!==void 0){dV.second.add(-WV)<0&&this._infeasibleRows.push(IV),this._dualOptimize();return}let CV=ZV.tag.other;if(dV=UV.find(CV),dV!==void 0){dV.second.add(WV)<0&&this._infeasibleRows.push(CV),this._dualOptimize();return}for(let FV=0,NV=UV.size();FV<NV;++FV){let gV=UV.itemAt(FV),eV=gV.second,JV=eV.coefficientFor(IV);JV!==0&&eV.add(WV*JV)<0&&gV.first.type()!==SymbolType.External&&this._infeasibleRows.push(gV.first)}this._dualOptimize()}updateVariables(){let J=this._varMap,VV=this._rowMap;for(let RV=0,UV=J.size();RV<UV;++RV){let ZV=J.itemAt(RV),WV=VV.find(ZV.second);WV!==void 0?ZV.first.setValue(WV.second.constant()):ZV.first.setValue(0)}}_getVarSymbol(J){let VV=()=>this._makeSymbol(SymbolType.External);return this._varMap.setDefault(J,VV).second}_createRow(J){let VV=J.expression(),RV=new Row$1(VV.constant()),UV=VV.terms();for(let dV=0,CV=UV.size();dV<CV;++dV){let FV=UV.itemAt(dV);if(!nearZero(FV.second)){let NV=this._getVarSymbol(FV.first),gV=this._rowMap.find(NV);gV!==void 0?RV.insertRow(gV.second,FV.second):RV.insertSymbol(NV,FV.second)}}let ZV=this._objective,WV=J.strength(),IV={marker:INVALID_SYMBOL,other:INVALID_SYMBOL};switch(J.op()){case Operator.Le:case Operator.Ge:{let dV=J.op()===Operator.Le?1:-1,CV=this._makeSymbol(SymbolType.Slack);if(IV.marker=CV,RV.insertSymbol(CV,dV),WV<Strength.required){let FV=this._makeSymbol(SymbolType.Error);IV.other=FV,RV.insertSymbol(FV,-dV),ZV.insertSymbol(FV,WV)}break}case Operator.Eq:{if(WV<Strength.required){let dV=this._makeSymbol(SymbolType.Error),CV=this._makeSymbol(SymbolType.Error);IV.marker=dV,IV.other=CV,RV.insertSymbol(dV,-1),RV.insertSymbol(CV,1),ZV.insertSymbol(dV,WV),ZV.insertSymbol(CV,WV)}else{let dV=this._makeSymbol(SymbolType.Dummy);IV.marker=dV,RV.insertSymbol(dV)}break}}return RV.constant()<0&&RV.reverseSign(),{row:RV,tag:IV}}_chooseSubject(J,VV){let RV=J.cells();for(let ZV=0,WV=RV.size();ZV<WV;++ZV){let IV=RV.itemAt(ZV);if(IV.first.type()===SymbolType.External)return IV.first}let UV=VV.marker.type();return(UV===SymbolType.Slack||UV===SymbolType.Error)&&J.coefficientFor(VV.marker)<0?VV.marker:(UV=VV.other.type(),(UV===SymbolType.Slack||UV===SymbolType.Error)&&J.coefficientFor(VV.other)<0?VV.other:INVALID_SYMBOL)}_addWithArtificialVariable(J){let VV=this._makeSymbol(SymbolType.Slack);this._rowMap.insert(VV,J.copy()),this._artificial=J.copy(),this._optimize(this._artificial);let RV=nearZero(this._artificial.constant());this._artificial=null;let UV=this._rowMap.erase(VV);if(UV!==void 0){let WV=UV.second;if(WV.isConstant())return RV;let IV=this._anyPivotableSymbol(WV);if(IV.type()===SymbolType.Invalid)return!1;WV.solveForEx(VV,IV),this._substitute(IV,WV),this._rowMap.insert(IV,WV)}let ZV=this._rowMap;for(let WV=0,IV=ZV.size();WV<IV;++WV)ZV.itemAt(WV).second.removeSymbol(VV);return this._objective.removeSymbol(VV),RV}_substitute(J,VV){let RV=this._rowMap;for(let UV=0,ZV=RV.size();UV<ZV;++UV){let WV=RV.itemAt(UV);WV.second.substitute(J,VV),WV.second.constant()<0&&WV.first.type()!==SymbolType.External&&this._infeasibleRows.push(WV.first)}this._objective.substitute(J,VV),this._artificial&&this._artificial.substitute(J,VV)}_optimize(J){let VV=0;for(;VV<this.maxIterations;){let RV=this._getEnteringSymbol(J);if(RV.type()===SymbolType.Invalid)return;let UV=this._getLeavingSymbol(RV);if(UV.type()===SymbolType.Invalid)throw new Error("the objective is unbounded");let ZV=this._rowMap.erase(UV).second;ZV.solveForEx(UV,RV),this._substitute(RV,ZV),this._rowMap.insert(RV,ZV),VV++}throw new Error("solver iterations exceeded")}_dualOptimize(){let J=this._rowMap,VV=this._infeasibleRows;for(;VV.length!==0;){let RV=VV.pop(),UV=J.find(RV);if(UV!==void 0&&UV.second.constant()<0){let ZV=this._getDualEnteringSymbol(UV.second);if(ZV.type()===SymbolType.Invalid)throw new Error("dual optimize failed");let WV=UV.second;J.erase(RV),WV.solveForEx(RV,ZV),this._substitute(ZV,WV),J.insert(ZV,WV)}}}_getEnteringSymbol(J){let VV=J.cells();for(let RV=0,UV=VV.size();RV<UV;++RV){let ZV=VV.itemAt(RV),WV=ZV.first;if(ZV.second<0&&WV.type()!==SymbolType.Dummy)return WV}return INVALID_SYMBOL}_getDualEnteringSymbol(J){let VV=Number.MAX_VALUE,RV=INVALID_SYMBOL,UV=J.cells();for(let ZV=0,WV=UV.size();ZV<WV;++ZV){let IV=UV.itemAt(ZV),dV=IV.first,CV=IV.second;if(CV>0&&dV.type()!==SymbolType.Dummy){let NV=this._objective.coefficientFor(dV)/CV;NV<VV&&(VV=NV,RV=dV)}}return RV}_getLeavingSymbol(J){let VV=Number.MAX_VALUE,RV=INVALID_SYMBOL,UV=this._rowMap;for(let ZV=0,WV=UV.size();ZV<WV;++ZV){let IV=UV.itemAt(ZV),dV=IV.first;if(dV.type()!==SymbolType.External){let CV=IV.second,FV=CV.coefficientFor(J);if(FV<0){let NV=-CV.constant()/FV;NV<VV&&(VV=NV,RV=dV)}}}return RV}_getMarkerLeavingSymbol(J){let VV=Number.MAX_VALUE,RV=VV,UV=VV,ZV=INVALID_SYMBOL,WV=ZV,IV=ZV,dV=ZV,CV=this._rowMap;for(let FV=0,NV=CV.size();FV<NV;++FV){let gV=CV.itemAt(FV),eV=gV.second,JV=eV.coefficientFor(J);if(JV===0)continue;let nV=gV.first;if(nV.type()===SymbolType.External)dV=nV;else if(JV<0){let aV=-eV.constant()/JV;aV<RV&&(RV=aV,WV=nV)}else{let aV=eV.constant()/JV;aV<UV&&(UV=aV,IV=nV)}}return WV!==ZV?WV:IV!==ZV?IV:dV}_removeConstraintEffects(J,VV){VV.marker.type()===SymbolType.Error&&this._removeMarkerEffects(VV.marker,J.strength()),VV.other.type()===SymbolType.Error&&this._removeMarkerEffects(VV.other,J.strength())}_removeMarkerEffects(J,VV){let RV=this._rowMap.find(J);RV!==void 0?this._objective.insertRow(RV.second,-VV):this._objective.insertSymbol(J,-VV)}_anyPivotableSymbol(J){let VV=J.cells();for(let RV=0,UV=VV.size();RV<UV;++RV){let ZV=VV.itemAt(RV),WV=ZV.first.type();if(WV===SymbolType.Slack||WV===SymbolType.Error)return ZV.first}return INVALID_SYMBOL}_makeSymbol(J){return new Symbol$1(J,this._idTick++)}}function nearZero(lV){let J=1e-8;return lV<0?-lV<J:lV<J}function createCnMap(){return createMap()}function createRowMap(){return createMap()}function createVarMap(){return createMap()}function createEditMap(){return createMap()}var SymbolType;(function(lV){lV[lV.Invalid=0]="Invalid",lV[lV.External=1]="External",lV[lV.Slack=2]="Slack",lV[lV.Error=3]="Error",lV[lV.Dummy=4]="Dummy"})(SymbolType||(SymbolType={}));let Symbol$1=class{constructor(J,VV){MI(this,"_id");MI(this,"_type");this._id=VV,this._type=J}id(){return this._id}type(){return this._type}},INVALID_SYMBOL=new Symbol$1(SymbolType.Invalid,-1),Row$1=class g2{constructor(J=0){MI(this,"_cellMap",createMap());MI(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 VV=0,RV=J.size();VV<RV;++VV)if(J.itemAt(VV).first.type()!==SymbolType.Dummy)return!1;return!0}copy(){let J=new g2(this._constant);return J._cellMap=this._cellMap.copy(),J}add(J){return this._constant+=J}insertSymbol(J,VV=1){let RV=this._cellMap.setDefault(J,()=>0);nearZero(RV.second+=VV)&&this._cellMap.erase(J)}insertRow(J,VV=1){this._constant+=J._constant*VV;let RV=J._cellMap;for(let UV=0,ZV=RV.size();UV<ZV;++UV){let WV=RV.itemAt(UV);this.insertSymbol(WV.first,WV.second*VV)}}removeSymbol(J){this._cellMap.erase(J)}reverseSign(){this._constant=-this._constant;let J=this._cellMap;for(let VV=0,RV=J.size();VV<RV;++VV){let UV=J.itemAt(VV);UV.second=-UV.second}}solveFor(J){let VV=this._cellMap,UV=-1/VV.erase(J).second;this._constant*=UV;for(let ZV=0,WV=VV.size();ZV<WV;++ZV)VV.itemAt(ZV).second*=UV}solveForEx(J,VV){this.insertSymbol(J,-1),this.solveFor(VV)}coefficientFor(J){let VV=this._cellMap.find(J);return VV!==void 0?VV.second:0}substitute(J,VV){let RV=this._cellMap.erase(J);RV!==void 0&&this.insertRow(VV,RV.second)}};var getUnitVectorFromPointAToB=(lV,J)=>{const VV={x:J.x-lV.x,y:J.y-lV.y},RV=Math.sqrt(VV.x**2+VV.y**2);return{x:VV.x/RV,y:VV.y/RV}};function doesLineIntersectLine$1([lV,J],[VV,RV],{lineThickness:UV=0}={}){return UV===0?doSegmentsIntersect$1(lV,J,VV,RV):segmentsDistance$1(lV,J,VV,RV)<=UV}function doSegmentsIntersect$1(lV,J,VV,RV){const UV=orientation$1(lV,J,VV),ZV=orientation$1(lV,J,RV),WV=orientation$1(VV,RV,lV),IV=orientation$1(VV,RV,J);return!!(UV!==ZV&&WV!==IV||UV===0&&onSegment$2(lV,VV,J)||ZV===0&&onSegment$2(lV,RV,J)||WV===0&&onSegment$2(VV,lV,RV)||IV===0&&onSegment$2(VV,J,RV))}function orientation$1(lV,J,VV){const RV=(J.y-lV.y)*(VV.x-J.x)-(J.x-lV.x)*(VV.y-J.y);return RV===0?0:RV>0?1:2}function onSegment$2(lV,J,VV){return J.x<=Math.max(lV.x,VV.x)&&J.x>=Math.min(lV.x,VV.x)&&J.y<=Math.max(lV.y,VV.y)&&J.y>=Math.min(lV.y,VV.y)}function segmentsDistance$1(lV,J,VV,RV){if(lV.x===J.x&&lV.y===J.y)return pointToSegmentDistance$1(lV,VV,RV);if(VV.x===RV.x&&VV.y===RV.y)return pointToSegmentDistance$1(VV,lV,J);if(doSegmentsIntersect$1(lV,J,VV,RV))return 0;const UV=[pointToSegmentDistance$1(lV,VV,RV),pointToSegmentDistance$1(J,VV,RV),pointToSegmentDistance$1(VV,lV,J),pointToSegmentDistance$1(RV,lV,J)];return Math.min(...UV)}function pointToSegmentDistance$1(lV,J,VV){const RV=(VV.x-J.x)**2+(VV.y-J.y)**2;if(RV===0)return distance$2(lV,J);let UV=((lV.x-J.x)*(VV.x-J.x)+(lV.y-J.y)*(VV.y-J.y))/RV;UV=Math.max(0,Math.min(1,UV));const ZV={x:J.x+UV*(VV.x-J.x),y:J.y+UV*(VV.y-J.y)};return distance$2(lV,ZV)}function distance$2(lV,J){const VV=lV.x-J.x,RV=lV.y-J.y;return Math.sqrt(VV*VV+RV*RV)}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(lV){if(lV==null)return"";if(lV===0)return"0";const J=SI_PREFIXES.find(UV=>Math.abs(lV)>=UV.value)||SI_PREFIXES[SI_PREFIXES.length-1];return`${(lV/J.value).toPrecision(3).replace(/\.?0+$/,"")}${J.symbol}`}var su$1=(lV,J={})=>{let VV=lV._internal_store;if(!VV){VV={counts:{}},lV._internal_store=VV;for(const UV of lV){const ZV=UV.type,WV=UV[`${ZV}_id`];if(!WV)continue;const IV=Number.parseInt(WV.split("_").pop());Number.isNaN(IV)||(VV.counts[ZV]=Math.max(VV.counts[ZV]??0,IV))}}return new Proxy({},{get:(UV,ZV)=>ZV==="toArray"?()=>lV:{get:WV=>lV.find(IV=>IV.type===ZV&&IV[`${ZV}_id`]===WV),getUsing:WV=>{const IV=Object.keys(WV);if(IV.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const dV=IV[0],CV=dV.replace("_id",""),FV=lV.find(NV=>NV.type===CV&&NV[dV]===WV[dV]);return FV?lV.find(NV=>NV.type===ZV&&NV[`${ZV}_id`]===FV[`${ZV}_id`]):null},getWhere:WV=>{const IV=Object.keys(WV);return lV.find(dV=>dV.type===ZV&&IV.every(CV=>dV[CV]===WV[CV]))},list:WV=>{const IV=WV?Object.keys(WV):[];return lV.filter(dV=>dV.type===ZV&&IV.every(CV=>dV[CV]===WV[CV]))},insert:WV=>{var CV;(CV=VV.counts)[ZV]??(CV[ZV]=-1),VV.counts[ZV]++;const IV=VV.counts[ZV],dV={type:ZV,[`${ZV}_id`]:`${ZV}_${IV}`,...WV};return J.validateInserts&&(Soup[ZV]??any_soup_element).parse(dV),lV.push(dV),dV},delete:WV=>{const IV=lV.find(dV=>dV[`${ZV}_id`]===WV);IV&&lV.splice(lV.indexOf(IV),1)},update:(WV,IV)=>{const dV=lV.find(CV=>CV.type===ZV&&CV[`${ZV}_id`]===WV);if(dV)return Object.assign(dV,IV),dV},select:WV=>{if(ZV==="source_component")return lV.find(IV=>IV.type==="source_component"&&IV.name===WV.replace(/\./g,""));if(ZV==="pcb_port"||ZV==="source_port"||ZV==="schematic_port"){const[IV,dV]=WV.replace(/\./g,"").split(/[\s\>]+/),CV=lV.find(NV=>NV.type==="source_component"&&NV.name===IV);if(!CV)return null;const FV=lV.find(NV=>NV.type==="source_port"&&NV.source_component_id===CV.source_component_id&&(NV.name===dV||(NV.port_hints??[]).includes(dV)));if(!FV)return null;if(ZV==="source_port")return FV;if(ZV==="pcb_port")return lV.find(NV=>NV.type==="pcb_port"&&NV.source_port_id===FV.source_port_id);if(ZV==="schematic_port")return lV.find(NV=>NV.type==="schematic_port"&&NV.source_port_id===FV.source_port_id)}}}})};su$1.unparsed=su$1;var su_default$1=su$1,__defProp$n=Object.defineProperty,__export$3=(lV,J)=>{for(var VV in J)__defProp$n(lV,VV,{get:J[VV],enumerable:!0})},components_exports={};__export$3(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,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:()=>Trace,TraceHint:()=>TraceHint,Transistor:()=>Transistor,Via:()=>Via});var 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(lV){MI(this,"renderPhaseStates");MI(this,"shouldBeRemoved",!1);MI(this,"children");MI(this,"isPcbPrimitive",!1);MI(this,"isSchematicPrimitive",!1);MI(this,"_renderId");MI(this,"_currentRenderPhase",null);MI(this,"_asyncEffects",[]);this._renderId=`${globalRenderCounter++}`,this.children=[],this.renderPhaseStates={};for(const J of orderedRenderPhases)this.renderPhaseStates[J]={initialized:!1,dirty:!1}}_markDirty(lV){this.renderPhaseStates[lV].dirty=!0;const J=orderedRenderPhases.indexOf(lV);for(let VV=J+1;VV<orderedRenderPhases.length;VV++)this.renderPhaseStates[orderedRenderPhases[VV]].dirty=!0}_queueAsyncEffect(lV,J){const VV={promise:J(),phase:this._currentRenderPhase,effectName:lV,complete:!1};this._asyncEffects.push(VV),VV.promise.then(()=>{VV.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffectComplete",{effectName:lV,componentDisplayName:this.getString(),phase:VV.phase})}).catch(RV=>{console.error(`Async effect error in ${VV.phase} "${lV}":
7292
+ `),{solved:!1,connectionName:lV.name}}createObstacleList({dominantLayer:lV,connection:J,obstaclesFromTraces:VV}){return new ObstacleList(this.allObstacles.filter(RV=>!RV.connectedTo.includes(J.name)).filter(RV=>RV.layers.includes(lV)).concat(VV??[]))}postprocessConnectionSolveResult(lV,J){return J}solve(){const lV=[],J=[];this.debugTraceCount=0;for(const VV of this.input.connections){const RV=VV.pointsToConnect[0].layer??"top";this.debugTraceCount+=1,this.obstacles=this.createObstacleList({dominantLayer:RV,connection:VV,obstaclesFromTraces:J});let UV=this.solveConnection(VV);UV=this.postprocessConnectionSolveResult(VV,UV),lV.push(UV),debug$7.enabled&&this.drawDebugTraceObstacles(J),UV.solved&&J.push(...getObstaclesFromRoute(UV.route.map(ZV=>({x:ZV.x,y:ZV.y,layer:ZV.layer??RV})),VV.name))}return lV}solveAndMapToTraces(){return this.solve().flatMap(J=>J.solved?[{type:"pcb_trace",pcb_trace_id:`pcb_trace_for_${J.connectionName}`,route:addViasWhenLayerChanges(J.route.map(VV=>({route_type:"wire",x:VV.x,y:VV.y,width:this.input.minTraceWidth,layer:VV.layer})))}]:[])}getDebugGroup(){const lV=`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?lV:null}drawDebugTraceObstacles(lV){const{debugTraceCount:J,debugSolutions:VV}=this;for(const RV in VV)RV.startsWith(`t${J}_`)&&VV[RV].push(...lV.map((UV,ZV)=>({type:"pcb_smtpad",pcb_component_id:"",layer:UV.layers[0],width:UV.width,shape:"rect",x:UV.center.x,y:UV.center.y,pcb_smtpad_id:`trace_obstacle_${ZV}`,height:UV.height})))}drawDebugSolution({current:lV,newNeighbors:J}){const VV=this.getDebugGroup();if(!VV)return;const{openSet:RV,debugTraceCount:UV,debugSolutions:ZV}=this;ZV[VV]??(ZV[VV]=[]);const WV=ZV[VV];WV.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${lV.x}_${lV.y}`,font:"tscircuit2024",font_size:.25,text:"X"+(lV.l!==void 0?lV.l:""),pcb_component_id:"",layer:"top",anchor_position:{x:lV.x,y:lV.y},anchor_alignment:"center"});for(let IV=0;IV<RV.length;IV++){const dV=RV[IV];WV.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${dV.x}_${dV.y}`,layer:"top",route:[[0,.05],[.05,0],[0,-.05],[-.05,0],[0,.05]].map(([CV,FV])=>({x:dV.x+CV,y:dV.y+FV})),stroke_width:.01}),WV.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${dV.x}_${dV.y}`,font:"tscircuit2024",font_size:.03,text:IV.toString(),pcb_component_id:"",layer:"top",anchor_position:{x:dV.x,y:dV.y},anchor_alignment:"center"})}if(lV.parent){const IV=[];let dV=lV;for(;dV;)IV.unshift(dV),dV=dV.parent;WV.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${lV.x}_${lV.y}`,layer:"top",route:IV,stroke_width:.01})}}},debug2$2=Debug$1("autorouting-dataset:infinite-grid-ijump-astar:get-distance-to-overcome-obstacle");function getDistanceToOvercomeObstacle({node:lV,travelDir:J,wallDir:VV,obstacle:RV,obstacles:UV,obstaclesInRow:ZV=0,OBSTACLE_MARGIN:WV=.15,SHOULD_DETECT_CONJOINED_OBSTACLES:IV=!1,MAX_CONJOINED_OBSTACLES:dV=20}){let CV;if(J.dx===0?J.dy>0?CV=RV.center.y+RV.height/2-lV.y:CV=lV.y-(RV.center.y-RV.height/2):J.dx>0?CV=RV.center.x+RV.width/2-lV.x:CV=lV.x-(RV.center.x-RV.width/2),CV+=WV,IV&&ZV<dV){const FV=UV.getObstacleAt(lV.x+J.dx*CV+VV.dx*(VV.wallDistance+.001),lV.y+J.dy*CV+VV.dy*(VV.wallDistance+.001));if(FV===RV)return CV;if(FV&&FV.type==="rect"){const NV=J.dy===0,gV=NV?RV.height:RV.width;if((NV?FV.height:FV.width)>gV)return debug2$2("next obstacle on path is bigger, not trying to overcome it"),CV;const JV=getDistanceToOvercomeObstacle({node:{x:lV.x+J.dx*CV,y:lV.y+J.dy*CV},travelDir:J,wallDir:VV,obstacle:FV,obstacles:UV,obstaclesInRow:ZV+1,SHOULD_DETECT_CONJOINED_OBSTACLES:IV,MAX_CONJOINED_OBSTACLES:dV,OBSTACLE_MARGIN:WV});CV+=JV}}return CV}var IJumpAutorouter=class extends GeneralizedAstarAutorouter{constructor(){super(...arguments);MI(this,"MAX_ITERATIONS",200)}getNeighbors(J){const VV=this.obstacles,RV=this.goalPoint;let UV;J.parent?UV=dirFromAToB(J.parent,J):UV=dirFromAToB(J,RV);const ZV=[{dx:0,dy:1},{dx:1,dy:0},{dx:0,dy:-1},{dx:-1,dy:0}].filter(IV=>{var dV;return IV.dx===UV.dx*-1&&IV.dy===UV.dy*-1?!1:!(IV.dx===UV.dx&&IV.dy===UV.dy&&((dV=J.parent)!=null&&dV.obstacleHit))}).map(IV=>VV.getOrthoDirectionCollisionInfo(J,IV,{margin:this.OBSTACLE_MARGIN})).filter(IV=>IV.wallDistance>=this.OBSTACLE_MARGIN),WV=[];for(const IV of ZV){let dV=null;J!=null&&J.obstacleHit&&(dV=getDistanceToOvercomeObstacle({node:J,travelDir:IV,wallDir:{...UV,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:VV,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const CV=distAlongDir(J,RV,IV),FV=(IV.dx===0||Math.sign(RV.x-J.x)===IV.dx)&&(IV.dy===0||Math.sign(RV.y-J.y)===IV.dy);CV<IV.wallDistance&&CV>0&&FV?WV.push({...IV,travelDistance:CV}):dV!==null&&dV<IV.wallDistance?WV.push({...IV,travelDistance:dV}):IV.wallDistance!==1/0&&WV.push({...IV,travelDistance:IV.wallDistance-this.OBSTACLE_MARGIN})}return WV.filter(IV=>!VV.isObstacleAt(J.x+IV.dx*IV.travelDistance,J.y+IV.dy*IV.travelDistance)).map(IV=>({x:J.x+IV.dx*IV.travelDistance,y:J.y+IV.dy*IV.travelDistance,obstacleHit:IV.obstacle}))}};function generateApproximatingRects(lV,J=4){const{center:VV,width:RV,height:UV,rotation:ZV}=lV,WV=[],IV=ZV*Math.PI/180,dV=Math.cos(IV),CV=Math.sin(IV),FV=(ZV%360+360)%360;if(UV<=RV?FV>=45&&FV<135||FV>=225&&FV<315:FV>=135&&FV<225||FV>=315||FV<45){const gV=RV/J;for(let eV=0;eV<J;eV++){const JV=(eV-J/2+.5)*gV,nV=-JV*dV,aV=-JV*CV,GV=gV*1.1,cV=Math.abs(UV*dV)+Math.abs(gV*CV);WV.push({center:{x:VV.x+nV,y:VV.y+aV},width:GV,height:cV})}}else{const gV=UV/J;for(let eV=0;eV<J;eV++){const JV=(eV-J/2+.5)*gV,nV=-JV*CV,aV=JV*dV,GV=Math.abs(RV*dV)+Math.abs(gV*CV),cV=gV*1.1;WV.push({center:{x:VV.x+nV,y:VV.y+aV},width:GV,height:cV})}}return WV}var EVERY_LAYER=["top","inner1","inner2","bottom"],getObstaclesFromCircuitJson=(lV,J)=>{const VV=UV=>J?UV.concat(UV.map(ZV=>J==null?void 0:J.getNetConnectedToId(ZV)).filter(Boolean)):UV,RV=[];for(const UV of lV)if(UV.type==="pcb_smtpad"){if(UV.shape==="circle")RV.push({type:"oval",layers:[UV.layer],center:{x:UV.x,y:UV.y},width:UV.radius*2,height:UV.radius*2,connectedTo:VV([UV.pcb_smtpad_id])});else if(UV.shape==="rect")RV.push({type:"rect",layers:[UV.layer],center:{x:UV.x,y:UV.y},width:UV.width,height:UV.height,connectedTo:VV([UV.pcb_smtpad_id])});else if(UV.shape==="rotated_rect"){const ZV={center:{x:UV.x,y:UV.y},width:UV.width,height:UV.height,rotation:UV.ccw_rotation},WV=generateApproximatingRects(ZV);for(const IV of WV)RV.push({type:"rect",layers:[UV.layer],center:IV.center,width:IV.width,height:IV.height,connectedTo:VV([UV.pcb_smtpad_id])})}}else if(UV.type==="pcb_keepout")UV.shape==="circle"?RV.push({type:"oval",layers:UV.layers,center:{x:UV.center.x,y:UV.center.y},width:UV.radius*2,height:UV.radius*2,connectedTo:[]}):UV.shape==="rect"&&RV.push({type:"rect",layers:UV.layers,center:{x:UV.center.x,y:UV.center.y},width:UV.width,height:UV.height,connectedTo:[]});else if(UV.type==="pcb_hole")UV.hole_shape==="oval"?RV.push({type:"oval",center:{x:UV.x,y:UV.y},width:UV.hole_width,height:UV.hole_height,connectedTo:[]}):UV.hole_shape==="square"?RV.push({type:"rect",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.hole_diameter,height:UV.hole_diameter,connectedTo:[]}):(UV.hole_shape==="round"||UV.hole_shape==="circle")&&RV.push({type:"rect",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.hole_diameter,height:UV.hole_diameter,connectedTo:[]});else if(UV.type==="pcb_plated_hole")UV.shape==="circle"?RV.push({type:"oval",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.outer_diameter,height:UV.outer_diameter,connectedTo:VV([UV.pcb_plated_hole_id])}):(UV.shape==="oval"||UV.shape==="pill")&&RV.push({type:"oval",layers:EVERY_LAYER,center:{x:UV.x,y:UV.y},width:UV.outer_width,height:UV.outer_height,connectedTo:VV([UV.pcb_plated_hole_id])});else if(UV.type==="pcb_trace"){const ZV=getObstaclesFromRoute(UV.route.map(WV=>({x:WV.x,y:WV.y,layer:"layer"in WV?WV.layer:WV.from_layer})),UV.source_trace_id);RV.push(...ZV)}else UV.type==="pcb_via"&&RV.push({type:"rect",layers:UV.layers,center:{x:UV.x,y:UV.y},connectedTo:[],width:UV.outer_diameter,height:UV.outer_diameter});return RV};function getAlternativeGoalBoxes(lV){const{pcbConnMap:J,goalElementId:VV}=lV;if(!VV.startsWith("pcb_port_"))throw new Error(`Currently alternative goal boxes must have a goal id with prefix "pcb_port_" (got ${VV})`);const RV=J.getAllTracesConnectedToPort(VV);return getObstaclesFromCircuitJson(RV).map(UV=>({...UV,connectedTo:[VV]}))}var getConnectionWithAlternativeGoalBoxes=lV=>{let{connection:J,pcbConnMap:VV}=lV;if(J.pointsToConnect.length!==2)throw new Error(`Connection must have exactly 2 points for alternative goal boxes (got ${J.pointsToConnect.length})`);const[RV,UV]=J.pointsToConnect;if(!RV.pcb_port_id||!UV.pcb_port_id)throw new Error(`Connection points must have pcb_port_id for alternative goal box calculation (got ${RV.pcb_port_id} and ${UV.pcb_port_id})`);const ZV=getAlternativeGoalBoxes({goalElementId:RV.pcb_port_id,pcbConnMap:VV}).concat([{center:RV,width:.01,height:.01,connectedTo:[RV.pcb_port_id],layers:[RV.layer],type:"rect"}]),WV=getAlternativeGoalBoxes({goalElementId:UV.pcb_port_id,pcbConnMap:VV}).concat([{center:UV,width:.01,height:.01,connectedTo:[UV.pcb_port_id],layers:[UV.layer],type:"rect"}]);if(ZV.length<=1&&WV.length<=1)return{...J,startPoint:RV,endPoint:UV,goalBoxes:[]};const IV=findNearestPointsBetweenBoxSets(ZV,WV);let dV,CV,FV;return ZV.length>=WV.length?(dV={...UV,...IV.pointB},CV={...RV,...IV.pointA},FV=ZV):(dV={...RV,...IV.pointA},CV={...UV,...IV.pointB},FV=WV),{startPoint:dV,endPoint:CV,goalBoxes:FV,name:J.name,pointsToConnect:[dV,CV]}},getSimpleRouteJson=(lV,J={})=>{const VV={minTraceWidth:.1};VV.layerCount=J.layerCount??1,VV.obstacles=getObstaclesFromCircuitJson(lV,J.connMap),VV.connections=[];for(const UV of lV)if(UV.type==="source_trace"){let ZV={name:UV.source_trace_id,pointsToConnect:UV.connected_source_port_ids.map(WV=>{var dV;const IV=distExports$4.su(lV).pcb_port.getWhere({source_port_id:WV});if(!IV)throw new Error(`Could not find pcb_port for source_port_id "${WV}"`);return{x:IV.x,y:IV.y,layer:((dV=IV.layers)==null?void 0:dV[0])??"top",pcb_port_id:IV.pcb_port_id}})};if(J.optimizeWithGoalBoxes){const WV=new PcbConnectivityMap$1(lV);ZV=getConnectionWithAlternativeGoalBoxes({connection:ZV,pcbConnMap:WV})}VV.connections.push(ZV),markObstaclesAsConnected(VV.obstacles,ZV.pointsToConnect,ZV.name)}const RV={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0};for(const UV of VV.obstacles)RV.minX=Math.min(RV.minX,UV.center.x-UV.width/2),RV.maxX=Math.max(RV.maxX,UV.center.x+UV.width/2),RV.minY=Math.min(RV.minY,UV.center.y-UV.height/2),RV.maxY=Math.max(RV.maxY,UV.center.y+UV.height/2);for(const UV of VV.connections)for(const ZV of UV.pointsToConnect)RV.minX=Math.min(RV.minX,ZV.x),RV.maxX=Math.max(RV.maxX,ZV.x),RV.minY=Math.min(RV.minY,ZV.y),RV.maxY=Math.max(RV.maxY,ZV.y);return VV.bounds=RV,VV},markObstaclesAsConnected=(lV,J,VV)=>{for(const RV of J)for(const UV of lV)isPointInsideObstacle(RV,UV)&&UV.connectedTo.push(VV)};function isPointInsideObstacle(lV,J){const VV=J.width/2,RV=J.height/2;if(J.type==="rect")return lV.x>=J.center.x-VV&&lV.x<=J.center.x+VV&&lV.y>=J.center.y-RV&&lV.y<=J.center.y+RV;if(J.type==="oval"){const UV=(lV.x-J.center.x)/VV,ZV=(lV.y-J.center.y)/RV;return UV*UV+ZV*ZV<=1}return!1}function dirFromAToB2(lV,J){const VV=J.x>lV.x?1:J.x<lV.x?-1:0,RV=J.y>lV.y?1:J.y<lV.y?-1:0,UV=J.l>lV.l?1:J.l<lV.l?-1:0;return{dx:VV,dy:RV,dl:UV}}var LAYER_COUNT_INDEX_MAP={1:["top"],2:["top","bottom"],4:["top","inner1","inner2","bottom"]},getLayerNamesForLayerCount=lV=>LAYER_COUNT_INDEX_MAP[lV];function getLayerIndex(lV,J){const RV=LAYER_COUNT_INDEX_MAP[lV].indexOf(J);if(RV===-1)throw new Error(`Invalid layer for getLayerIndex (for layerCount === ${lV}): "${J}"`);return RV}function indexToLayer(lV,J){const RV=LAYER_COUNT_INDEX_MAP[lV][J];if(!RV)throw new Error(`Invalid index for indexToLayer (for layerCount === ${lV}): "${J}"`);return RV}var ObstacleList3d=class extends ObstacleList{constructor(J,VV){super([]);MI(this,"obstacles");MI(this,"GRID_STEP",.1);MI(this,"layerCount");this.layerCount=J;const RV=getLayerNamesForLayerCount(J);this.obstacles=VV.flatMap(UV=>UV.layers.filter(ZV=>RV.includes(ZV)).map(ZV=>({...UV,left:UV.center.x-UV.width/2,right:UV.center.x+UV.width/2,top:UV.center.y+UV.height/2,bottom:UV.center.y-UV.height/2,l:getLayerIndex(J,ZV)})))}getObstacleAt(J,VV,RV,UV){UV??(UV=this.GRID_STEP);for(const ZV of this.obstacles){if(ZV.l!==RV)continue;const WV=ZV.width/2+UV,IV=ZV.height/2+UV;if(J>=ZV.center.x-WV&&J<=ZV.center.x+WV&&VV>=ZV.center.y-IV&&VV<=ZV.center.y+IV)return ZV}return null}isObstacleAt(J,VV,RV,UV){return this.getObstacleAt(J,VV,RV,UV)!==null}getDirectionDistancesToNearestObstacle3d(J,VV,RV){const{GRID_STEP:UV}=this,ZV={left:1/0,top:1/0,bottom:1/0,right:1/0};for(const WV of this.obstacles)if(WV.l===RV&&WV.type==="rect"){const IV=WV.center.x-WV.width/2-UV,dV=WV.center.x+WV.width/2+UV,CV=WV.center.y+WV.height/2+UV,FV=WV.center.y-WV.height/2-UV;VV>=FV&&VV<=CV&&J>IV&&(ZV.left=Math.min(ZV.left,J-dV)),VV>=FV&&VV<=CV&&J<dV&&(ZV.right=Math.min(ZV.right,IV-J)),J>=IV&&J<=dV&&VV<CV&&(ZV.top=Math.min(ZV.top,FV-VV)),J>=IV&&J<=dV&&VV>FV&&(ZV.bottom=Math.min(ZV.bottom,VV-CV))}return ZV}getOrthoDirectionCollisionInfo(J,VV,{margin:RV=0}={}){const{x:UV,y:ZV,l:WV}=J,{dx:IV,dy:dV,dl:CV}=VV;let FV=1/0,NV=null;if(CV!==0){const gV=WV+CV;return this.isObstacleAt(UV,ZV,gV,RV)?(FV=1,NV=this.getObstacleAt(UV,ZV,gV,RV)):FV=1,{dx:IV,dy:dV,dl:CV,wallDistance:FV,obstacle:NV}}else{for(const gV of this.obstacles){if(gV.l!==WV)continue;const eV=gV.left-RV,JV=gV.right+RV,nV=gV.top+RV,aV=gV.bottom-RV;let GV=null;IV===1&&dV===0?ZV>aV&&ZV<nV&&UV<gV.left&&(GV=gV.left-UV):IV===-1&&dV===0?ZV>aV&&ZV<nV&&UV>gV.right&&(GV=UV-gV.right):IV===0&&dV===1?UV>eV&&UV<JV&&ZV<gV.bottom&&(GV=gV.bottom-ZV):IV===0&&dV===-1&&UV>eV&&UV<JV&&ZV>gV.top&&(GV=ZV-gV.top),GV!==null&&GV<FV&&(FV=GV,NV=gV)}return{dx:IV,dy:dV,dl:0,wallDistance:FV,obstacle:NV}}}getObstaclesOverlappingRegion(J){const VV=[];for(const RV of this.obstacles){if(RV.l!==J.l)continue;const{left:UV,right:ZV,top:WV,bottom:IV}=RV;UV<=J.maxX&&ZV>=J.minX&&WV>=J.minY&&IV<=J.maxY&&VV.push(RV)}return VV}},MultilayerIjump=class extends GeneralizedAstarAutorouter{constructor(J){super(J);MI(this,"MAX_ITERATIONS",500);MI(this,"VIA_COST",4);MI(this,"VIA_DIAMETER",.5);MI(this,"allowLayerChange",!0);MI(this,"layerCount");MI(this,"obstacles");MI(this,"optimizeWithGoalBoxes");MI(this,"connMap");MI(this,"pcbConnMap");MI(this,"GOAL_RUSH_FACTOR",1.1);MI(this,"defaultGoalViaMargin",.5);MI(this,"marginsWithCosts");this.layerCount=J.input.layerCount??2,this.VIA_COST=J.VIA_COST??this.VIA_COST,this.connMap=J.connMap,this.pcbConnMap=J.pcbConnMap??new PcbConnectivityMap$1,this.optimizeWithGoalBoxes=J.optimizeWithGoalBoxes??!1,this.obstacles=null,this.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,VV){if(!VV.solved)return VV;if(this.optimizeWithGoalBoxes){const RV=VV.route.map(UV=>({x:UV.x,y:UV.y,route_type:"wire",layer:UV.layer,width:this.input.minTraceWidth}));RV[0].start_pcb_port_id=J.pointsToConnect[0].pcb_port_id,RV[RV.length-1].end_pcb_port_id=J.pointsToConnect[1].pcb_port_id,this.pcbConnMap.addTrace({type:"pcb_trace",pcb_trace_id:`postprocess_trace_${nanoid(8)}`,route:RV})}return VV}createObstacleList({dominantLayer:J,connection:VV,obstaclesFromTraces:RV}){const UV=this.connMap?this.connMap.getNetConnectedToId(VV.name):VV.name;if(!UV)throw new Error(`The connection.name "${VV.name}" wasn't present in the full connectivity map`);return new ObstacleList3d(this.layerCount,this.allObstacles.filter(ZV=>!ZV.connectedTo.includes(UV)).concat(RV??[]))}computeG(J,VV){let RV=J.g+manDist(J,VV)*(J.travelMarginCostFactor??1)+(VV.enterMarginCost??0);return(VV.l??J.l!==-1??-1)&&(RV+=this.VIA_COST),RV}computeH(J){const VV=Math.abs(J.x-this.goalPoint.x),RV=Math.abs(J.y-this.goalPoint.y),UV=Math.abs(J.l-this.goalPoint.l);return(VV+RV)**this.GOAL_RUSH_FACTOR+UV*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,VV){return J.every(RV=>this.obstacles.getObstaclesOverlappingRegion({minX:VV.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:VV.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:VV.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:VV.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:RV}).length===0)}getNeighborsSurroundingGoal(J){this.obstacles;const VV=this.goalPoint,RV=[],UV=[{dx:1,dy:0,dl:0},{dx:-1,dy:0,dl:0},{dx:0,dy:1,dl:0},{dx:0,dy:-1,dl:0}],ZV=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin;for(const WV of UV){const IV={x:J.x+WV.dx*ZV,y:J.y+WV.dy*ZV,l:J.l+WV.dl,obstacleHit:null};this.hasSpaceForVia([J.l,VV.l],IV)&&RV.push(IV)}return RV}getNeighbors(J){const VV=this.obstacles,RV=this.goalPoint,UV=manDist(J,RV);if(UV<=this.OBSTACLE_MARGIN)return this.getNeighborsSurroundingGoal(J);let ZV;J.parent?ZV=dirFromAToB2(J.parent,J):ZV=dirFromAToB2(J,RV);const WV=[{dx:0,dy:1,dl:0},{dx:1,dy:0,dl:0},{dx:0,dy:-1,dl:0},{dx:-1,dy:0,dl:0}],IV=UV>this.VIA_DIAMETER+this.OBSTACLE_MARGIN,dV=manDist(J,this.startNode)>this.VIA_DIAMETER+this.OBSTACLE_MARGIN;this.allowLayerChange&&IV&&dV&&(J.l<this.layerCount-1&&WV.push({dx:0,dy:0,dl:1}),J.l>0&&WV.push({dx:0,dy:0,dl:-1}));const CV=WV.filter(NV=>{var gV;return NV.dx===ZV.dx*-1&&NV.dy===ZV.dy*-1&&NV.dl===ZV.dl*-1?!1:!(NV.dx===ZV.dx&&NV.dy===ZV.dy&&NV.dl===ZV.dl&&((gV=J.parent)!=null&&gV.obstacleHit))}).map(NV=>VV.getOrthoDirectionCollisionInfo(J,NV,{margin:this.OBSTACLE_MARGIN})).filter(NV=>!(NV.wallDistance<this.OBSTACLE_MARGIN)),FV=[];for(const NV of CV){const gV=NV.dx===0&&NV.dy===0&&NV.dl===1,eV=NV.dx===0&&NV.dy===0&&NV.dl===-1;if((gV||eV)&&![J.l,J.l+NV.dl].every(cV=>VV.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:cV}).length===0))continue;if(gV){J.l<this.layerCount-1&&FV.push({...NV,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}if(eV){J.l>0&&FV.push({...NV,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}let JV=null;J!=null&&J.obstacleHit&&(JV=getDistanceToOvercomeObstacle({node:J,travelDir:NV,wallDir:{...ZV,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:VV,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const nV=distAlongDir(J,RV,NV),aV=(NV.dx===0||Math.sign(RV.x-J.x)===NV.dx)&&(NV.dy===0||Math.sign(RV.y-J.y)===NV.dy);if(nV<NV.wallDistance&&nV>0&&aV){const GV=J.l===RV.l;let cV=0;!GV&&Math.abs(nV-UV)<this.GRID_STEP&&(cV=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin),FV.push({...NV,travelDistance:nV-cV,enterMarginCost:0,travelMarginCostFactor:1})}else if(JV!==null&&JV<NV.wallDistance){for(const{margin:GV,enterCost:cV,travelCostFactor:TV}of this.marginsWithCosts)JV-this.OBSTACLE_MARGIN+GV*2<NV.wallDistance&&FV.push({...NV,travelDistance:JV-this.OBSTACLE_MARGIN+GV,enterMarginCost:cV,travelMarginCostFactor:TV});if(NV.wallDistance===1/0)FV.push({...NV,travelDistance:nV,enterMarginCost:0,travelMarginCostFactor:1});else if(NV.wallDistance>this.largestMargin)for(const{margin:GV,enterCost:cV,travelCostFactor:TV}of this.marginsWithCosts)NV.wallDistance>this.largestMargin+GV&&FV.push({...NV,travelDistance:NV.wallDistance-GV,enterMarginCost:cV,travelMarginCostFactor:TV})}else if(NV.wallDistance!==1/0)for(const{margin:GV,enterCost:cV,travelCostFactor:TV}of this.marginsWithCosts)NV.wallDistance>GV&&FV.push({...NV,travelDistance:NV.wallDistance-GV,enterMarginCost:cV,travelMarginCostFactor:TV})}return FV.map(NV=>({x:J.x+NV.dx*NV.travelDistance,y:J.y+NV.dy*NV.travelDistance,l:J.l+NV.dl,obstacleHit:NV.obstacle,travelMarginCostFactor:NV.travelMarginCostFactor,enterMarginCost:NV.enterMarginCost}))}};function autoroute2(lV){const J=getSimpleRouteJson(lV),VV=new IJumpAutorouter({input:J});return{solution:VV.solveAndMapToTraces(),debugSolutions:VV.debugSolutions,debugMessage:VV.debugMessage}}var getObstaclesFromSoup=getObstaclesFromCircuitJson,direction$1=z$1.enum(["up","down","left","right"]);z$1.enum(["top-to-bottom","left-to-right","bottom-to-top","right-to-left"]);var portHints=z$1.array(z$1.string().or(z$1.number())),point3$1=z$1.object({x:distance$5,y:distance$5,z:distance$5}),rotationPoint3=z$1.object({x:z$1.union([z$1.number(),z$1.string()]),y:z$1.union([z$1.number(),z$1.string()]),z:z$1.union([z$1.number(),z$1.string()])}),cadModelBase=z$1.object({rotationOffset:z$1.number().or(rotationPoint3).optional(),positionOffset:point3$1.optional(),size:point3$1.optional()}),cadModelStl=cadModelBase.extend({stlUrl:z$1.string()}),cadModelObj=cadModelBase.extend({objUrl:z$1.string(),mtlUrl:z$1.string().optional()}),cadModelJscad=cadModelBase.extend({jscad:z$1.record(z$1.any())}),cadModelProp=z$1.union([z$1.string(),cadModelStl,cadModelObj,cadModelJscad]),footprintProp=z$1.custom(lV=>!0),pcbLayoutProps=z$1.object({pcbX:distance$5.optional(),pcbY:distance$5.optional(),pcbRotation:rotation$4.optional(),layer:layer_ref$2.optional()}),commonLayoutProps=z$1.object({pcbX:distance$5.optional(),pcbY:distance$5.optional(),pcbRotation:rotation$4.optional(),schX:distance$5.optional(),schY:distance$5.optional(),schRotation:rotation$4.optional(),layer:layer_ref$2.optional(),footprint:footprintProp.optional()}),supplierProps=z$1.object({supplierPartNumbers:z$1.record(supplier_name$2,z$1.array(z$1.string())).optional()}),commonComponentProps=commonLayoutProps.merge(supplierProps).extend({key:z$1.any().optional(),name:z$1.string(),cadModel:cadModelProp.optional(),children:z$1.any().optional(),symbolName:z$1.string().optional()}),lrPins=["pin1","left","pin2","right"],lrPolarPins=["pin1","left","anode","pos","pin2","right","cathode","neg"];distance$5.or(z$1.enum(["2x","3x","4x"]));var explicitPinSideDefinition=z$1.object({pins:z$1.array(z$1.union([z$1.number(),z$1.string()])),direction:z$1.union([z$1.literal("top-to-bottom"),z$1.literal("left-to-right"),z$1.literal("bottom-to-top"),z$1.literal("right-to-left")])}),schematicPortArrangement=z$1.object({leftSize:z$1.number().optional().describe("@deprecated, use leftPinCount"),topSize:z$1.number().optional().describe("@deprecated, use topPinCount"),rightSize:z$1.number().optional().describe("@deprecated, use rightPinCount"),bottomSize:z$1.number().optional().describe("@deprecated, use bottomPinCount"),leftPinCount:z$1.number().optional(),rightPinCount:z$1.number().optional(),topPinCount:z$1.number().optional(),bottomPinCount:z$1.number().optional(),leftSide:explicitPinSideDefinition.optional(),rightSide:explicitPinSideDefinition.optional(),topSide:explicitPinSideDefinition.optional(),bottomSide:explicitPinSideDefinition.optional()}),schematicPinStyle=z$1.record(z$1.object({leftMargin:distance$5.optional(),rightMargin:distance$5.optional(),topMargin:distance$5.optional(),bottomMargin:distance$5.optional()})),point$1=z$1.object({x:distance$5,y:distance$5}),base_manual_edit_event=z$1.object({edit_event_id:z$1.string(),in_progress:z$1.boolean().optional(),created_at:z$1.number()}),edit_pcb_component_location_event=base_manual_edit_event.extend({pcb_edit_event_type:z$1.literal("edit_component_location").describe("deprecated"),edit_event_type:z$1.literal("edit_pcb_component_location"),pcb_component_id:z$1.string(),original_center:z$1.object({x:z$1.number(),y:z$1.number()}),new_center:z$1.object({x:z$1.number(),y:z$1.number()})}),edit_trace_hint_event=base_manual_edit_event.extend({pcb_edit_event_type:z$1.literal("edit_trace_hint").describe("deprecated"),edit_event_type:z$1.literal("edit_pcb_trace_hint").optional(),pcb_port_id:z$1.string(),pcb_trace_hint_id:z$1.string().optional(),route:z$1.array(z$1.object({x:z$1.number(),y:z$1.number(),via:z$1.boolean().optional()}))}),edit_schematic_component_location_event=base_manual_edit_event.extend({edit_event_type:z$1.literal("edit_schematic_component_location"),schematic_component_id:z$1.string(),original_center:z$1.object({x:z$1.number(),y:z$1.number()}),new_center:z$1.object({x:z$1.number(),y:z$1.number()})});z$1.union([edit_pcb_component_location_event,edit_trace_hint_event,edit_schematic_component_location_event]);var manual_pcb_placement=z$1.object({selector:z$1.string(),relative_to:z$1.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$3}),manual_trace_hint=z$1.object({pcb_port_selector:z$1.string(),offsets:z$1.array(route_hint_point$2)}),manual_schematic_placement=z$1.object({selector:z$1.string(),relative_to:z$1.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$3}),manual_edits_file=z$1.object({pcb_placements:z$1.array(manual_pcb_placement).optional(),manual_trace_hints:z$1.array(manual_trace_hint).optional(),schematic_placements:z$1.array(manual_schematic_placement).optional()}),autorouterConfig=z$1.object({serverUrl:z$1.string().optional(),inputFormat:z$1.enum(["simplified","circuit-json"]).optional(),serverMode:z$1.enum(["job","solve-endpoint"]).optional(),cache:z$1.custom(lV=>!0).optional()}),autorouterProp=z$1.union([autorouterConfig,z$1.literal("sequential-trace"),z$1.literal("subcircuit"),z$1.literal("auto"),z$1.literal("auto-local"),z$1.literal("auto-cloud")]),baseGroupProps=commonLayoutProps.extend({name:z$1.string().optional(),children:z$1.any().optional()}),subcircuitGroupProps=baseGroupProps.extend({layout:z$1.custom(lV=>!0).optional(),manualEdits:manual_edits_file.optional(),schAutoLayoutEnabled:z$1.boolean().optional(),routingDisabled:z$1.boolean().optional(),defaultTraceWidth:length$4.optional(),minTraceWidth:length$4.optional(),partsEngine:z$1.custom(lV=>"findPart"in lV).optional(),pcbRouteCache:z$1.custom(lV=>!0).optional(),autorouter:autorouterProp.optional()}),subcircuitGroupPropsWithBool=subcircuitGroupProps.extend({subcircuit:z$1.literal(!0)}),groupProps=z$1.discriminatedUnion("subcircuit",[baseGroupProps.extend({subcircuit:z$1.literal(!1).optional()}),subcircuitGroupPropsWithBool]),boardProps=subcircuitGroupProps.extend({width:distance$5.optional(),height:distance$5.optional(),outline:z$1.array(point$1).optional()});z$1.record(z$1.number().or(z$1.string()),z$1.string().or(z$1.array(z$1.string()).readonly()).or(z$1.array(z$1.string())));var chipProps=commonComponentProps.extend({manufacturerPartNumber:z$1.string().optional(),pinLabels:z$1.record(z$1.number().or(z$1.string()),z$1.string().or(z$1.array(z$1.string()).readonly())).optional(),schPortArrangement:schematicPortArrangement.optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$5.optional(),schWidth:distance$5.optional(),schHeight:distance$5.optional(),noSchematicRepresentation:z$1.boolean().optional()}),jumperProps=commonComponentProps.extend({manufacturerPartNumber:z$1.string().optional(),pinLabels:z$1.record(z$1.number().or(z$1.string()),z$1.string().or(z$1.array(z$1.string()))).optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$5.optional(),schWidth:distance$5.optional(),schHeight:distance$5.optional(),schDirection:z$1.enum(["left","right"]).optional(),schPortArrangement:schematicPortArrangement.optional()}),platedHoleProps=z$1.discriminatedUnion("shape",[pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$1.string().optional(),shape:z$1.literal("circle"),holeDiameter:distance$5,outerDiameter:distance$5,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$1.string().optional(),shape:z$1.literal("oval"),outerWidth:distance$5,outerHeight:distance$5,innerWidth:distance$5,innerHeight:distance$5,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$1.string().optional(),shape:z$1.literal("pill"),outerWidth:distance$5,outerHeight:distance$5,innerWidth:distance$5,innerHeight:distance$5,portHints:portHints.optional()})]),resistorProps=commonComponentProps.extend({resistance:resistance$2,pullupFor:z$1.string().optional(),pullupTo:z$1.string().optional(),pulldownFor:z$1.string().optional(),pulldownTo:z$1.string().optional()}),resistorPins=lrPins,potentiometerProps=commonComponentProps.extend({maxResistance:resistance$2}),crystalProps=commonComponentProps.extend({frequency:frequency$1,loadCapacitance:capacitance$2,pinVariant:z$1.enum(["2pin","4pin"]).optional()}),resonatorProps=commonComponentProps.extend({frequency:frequency$1,loadCapacitance:capacitance$2,pinVariant:z$1.enum(["no_ground","ground_pin","two_ground_pins"]).optional()}),capacitorProps=commonComponentProps.extend({capacitance:capacitance$2,polarized:z$1.boolean().optional().default(!1),decouplingFor:z$1.string().optional(),decouplingTo:z$1.string().optional(),bypassFor:z$1.string().optional(),bypassTo:z$1.string().optional(),maxDecouplingTraceLength:z$1.number().optional()}),capacitorPins=lrPolarPins;z$1.object({name:z$1.string()}),z$1.object({name:z$1.string().optional(),pcbOnly:z$1.boolean().optional(),schOnly:z$1.boolean().optional()});var pcbXDistConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),xDist:distance$5,left:z$1.string(),right:z$1.string(),edgeToEdge:z$1.literal(!0).optional(),centerToCenter:z$1.literal(!0).optional()}),pcbYDistConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),yDist:distance$5,top:z$1.string(),bottom:z$1.string(),edgeToEdge:z$1.literal(!0).optional(),centerToCenter:z$1.literal(!0).optional()}),pcbSameYConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),sameY:z$1.literal(!0).optional(),for:z$1.array(z$1.string())}),pcbSameXConstraintProps=z$1.object({pcb:z$1.literal(!0).optional(),sameX:z$1.literal(!0).optional(),for:z$1.array(z$1.string())}),constraintProps=z$1.union([pcbXDistConstraintProps,pcbYDistConstraintProps,pcbSameYConstraintProps,pcbSameXConstraintProps]),rectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("rect"),width:distance$5,height:distance$5,portHints:portHints.optional()}),rotatedRectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("rotated_rect"),width:distance$5,height:distance$5,ccwRotation:z$1.number(),portHints:portHints.optional()}),circleSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("circle"),radius:distance$5,portHints:portHints.optional()}),smtPadProps=z$1.union([circleSmtPadProps,rectSmtPadProps,rotatedRectSmtPadProps]),rectSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("rect"),width:distance$5,height:distance$5}),circleSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("circle"),radius:distance$5});z$1.union([circleSolderPasteProps,rectSolderPasteProps]);var holeProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({name:z$1.string().optional(),diameter:distance$5.optional(),radius:distance$5.optional()}).transform(lV=>({...lV,diameter:lV.diameter??2*lV.radius,radius:lV.radius??lV.diameter/2})),portRef=z$1.union([z$1.string(),z$1.custom(lV=>!!lV.getPortSelector)]),baseTraceProps=z$1.object({key:z$1.string().optional(),thickness:distance$5.optional(),schematicRouteHints:z$1.array(point$1).optional(),pcbRouteHints:z$1.array(route_hint_point$2).optional(),schDisplayLabel:z$1.string().optional(),maxLength:z$1.number().optional()}),traceProps=z$1.union([baseTraceProps.extend({path:z$1.array(portRef)}),baseTraceProps.extend({from:portRef,to:portRef})]),footprintProps=z$1.object({originalLayer:layer_ref$2.default("top").optional()}),capacity=z$1.number().or(z$1.string().endsWith("mAh")).transform(lV=>{if(typeof lV=="string"){const J=lV.replace("mAh",""),VV=Number.parseFloat(J);if(Number.isNaN(VV))throw new Error("Invalid capacity");return VV}return lV}).describe("Battery capacity in mAh"),batteryProps=commonComponentProps.extend({capacity:capacity.optional()}),pinHeaderProps=commonComponentProps.extend({pinCount:z$1.number(),pitch:distance$5.optional(),gender:z$1.enum(["male","female"]).optional().default("male"),showSilkscreenPinLabels:z$1.boolean().optional(),doubleRow:z$1.boolean().optional(),holeDiameter:distance$5.optional(),platedDiameter:distance$5.optional(),pinLabels:z$1.array(z$1.string()).optional(),facingDirection:z$1.enum(["left","right"]).optional()}),netAliasProps=z$1.object({net:z$1.string().optional(),schX:distance$5.optional(),schY:distance$5.optional(),schRotation:rotation$4.optional(),anchorSide:z$1.enum(["left","up","right","down"]).optional()}),pushButtonProps=commonComponentProps.extend({}),transistorProps=commonComponentProps.extend({transistorType:z$1.enum(["npn","pnp"])}),mosfetProps=commonComponentProps.extend({channelType:z$1.enum(["n","p"]),mosfetMode:z$1.enum(["enhancement","depletion"])}),inductorProps=commonComponentProps.extend({inductance:inductance$2}),diodeProps=commonComponentProps.extend({}),diodePins=lrPolarPins,ledProps=commonComponentProps.extend({color:z$1.string().optional()}),ledPins=lrPolarPins;commonComponentProps.extend({ftype:z$1.literal("switch"),switchType:z$1.enum(["spst"]).default("spst"),isNormallyClosed:z$1.boolean().default(!1)}),distance$5.or(z$1.enum(["2x","3x","4x"]));var viaProps=commonLayoutProps.extend({fromLayer:layer_ref$2,toLayer:layer_ref$2,holeDiameter:distance$5,outerDiameter:distance$5}),pcbKeepoutProps=z$1.union([pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$1.literal("circle"),radius:distance$5}),pcbLayoutProps.extend({shape:z$1.literal("rect"),width:distance$5,height:distance$5})]);z$1.object({schX:distance$5,schY:distance$5,width:distance$5,height:distance$5}),z$1.object({schX:distance$5,schY:distance$5,text:z$1.string()}),z$1.object({x1:distance$5,y1:distance$5,x2:distance$5,y2:distance$5}),z$1.object({points:z$1.array(point$3),isFilled:z$1.boolean().optional().default(!1),fillColor:z$1.enum(["red","blue"]).optional()});var powerSourceProps=commonComponentProps.extend({voltage:voltage$2});commonLayoutProps.extend({name:z$1.string(),pinNumber:z$1.number().optional(),aliases:z$1.array(z$1.string()).optional(),direction:direction$1});var silkscreenTextProps=pcbLayoutProps.extend({text:z$1.string(),anchorAlignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$1.enum(["tscircuit2024"]).optional(),fontSize:length$4.optional()}),silkscreenPathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$1.array(route_hint_point$2),strokeWidth:length$4.optional()}),silkscreenLineProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({strokeWidth:distance$5,x1:distance$5,y1:distance$5,x2:distance$5,y2:distance$5}),silkscreenRectProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$1.boolean().optional(),isOutline:z$1.boolean().optional(),strokeWidth:distance$5.optional(),width:distance$5,height:distance$5}),silkscreenCircleProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$1.boolean().optional(),isOutline:z$1.boolean().optional(),strokeWidth:distance$5.optional(),radius:distance$5}),routeHintPointProps=z$1.object({x:distance$5,y:distance$5,via:z$1.boolean().optional(),toLayer:layer_ref$2.optional()}),traceHintProps=z$1.object({for:z$1.string().optional().describe("Selector for the port you're targeting, not required if you're inside a trace"),order:z$1.number().optional(),offset:route_hint_point$2.or(routeHintPointProps).optional(),offsets:z$1.array(route_hint_point$2).or(z$1.array(routeHintPointProps)).optional(),traceWidth:z$1.number().optional()});z$1.object({layer:z$1.string().optional(),thickness:distance$5.optional(),route:z$1.array(route_hint_point$2)});var fabricationNoteTextProps=pcbLayoutProps.extend({text:z$1.string(),anchorAlignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$1.enum(["tscircuit2024"]).optional(),fontSize:length$4.optional(),color:z$1.string().optional()}),fabricationNotePathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$1.array(route_hint_point$2),strokeWidth:length$4.optional(),color:z$1.string().optional()});function createMap(){return new IndexedMap}class IndexedMap{constructor(){MI(this,"index",{});MI(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 VV=this.index[J.id()];return VV===void 0?void 0:this.array[VV]}setDefault(J,VV){const RV=this.index[J.id()];if(RV===void 0){const UV=new Pair(J,VV());return this.index[J.id()]=this.array.length,this.array.push(UV),UV}else return this.array[RV]}insert(J,VV){const RV=new Pair(J,VV),UV=this.index[J.id()];return UV===void 0?(this.index[J.id()]=this.array.length,this.array.push(RV)):this.array[UV]=RV,RV}erase(J){const VV=this.index[J.id()];if(VV===void 0)return;this.index[J.id()]=void 0;const RV=this.array[VV],UV=this.array.pop();return RV!==UV&&(this.array[VV]=UV,this.index[UV.first.id()]=VV),RV}copy(){const J=new IndexedMap;for(let VV=0;VV<this.array.length;VV++){const RV=this.array[VV].copy();J.array[VV]=RV,J.index[RV.first.id()]=VV}return J}}class Pair{constructor(J,VV){MI(this,"first");MI(this,"second");this.first=J,this.second=VV}copy(){return new Pair(this.first,this.second)}}class Variable{constructor(J=""){MI(this,"_name");MI(this,"_value",0);MI(this,"_context",null);MI(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(){MI(this,"_terms");MI(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 VV=0,RV=this._terms.size();VV<RV;VV++){let UV=this._terms.itemAt(VV);J+=UV.first.value()*UV.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(VV){return VV.second+"*"+VV.first.toString()}).join(" + ");return!this.isConstant()&&this._constant!==0&&(J+=" + "),J+=this._constant,J}}function parseArgs(lV){let J=0,VV=()=>0,RV=createMap();for(let UV=0,ZV=lV.length;UV<ZV;++UV){let WV=lV[UV];if(typeof WV=="number")J+=WV;else if(WV instanceof Variable)RV.setDefault(WV,VV).second+=1;else if(WV instanceof Expression){J+=WV.constant();let IV=WV.terms();for(let dV=0,CV=IV.size();dV<CV;dV++){let FV=IV.itemAt(dV);RV.setDefault(FV.first,VV).second+=FV.second}}else if(WV instanceof Array){if(WV.length!==2)throw new Error("array must have length 2");let IV=WV[0],dV=WV[1];if(typeof IV!="number")throw new Error("array item 0 must be a number");if(dV instanceof Variable)RV.setDefault(dV,VV).second+=IV;else if(dV instanceof Expression){J+=dV.constant()*IV;let CV=dV.terms();for(let FV=0,NV=CV.size();FV<NV;FV++){let gV=CV.itemAt(FV);RV.setDefault(gV.first,VV).second+=gV.second*IV}}else throw new Error("array item 1 must be a variable or expression")}else throw new Error("invalid Expression argument: "+WV)}return{terms:RV,constant:J}}const Om=class Om{static create(J,VV,RV,UV=1){let ZV=0;return ZV+=Math.max(0,Math.min(1e3,J*UV))*1e6,ZV+=Math.max(0,Math.min(1e3,VV*UV))*1e3,ZV+=Math.max(0,Math.min(1e3,RV*UV)),ZV}static clip(J){return Math.max(0,Math.min(Om.required,J))}};MI(Om,"required",Om.create(1e3,1e3,1e3)),MI(Om,"strong",Om.create(1,0,0)),MI(Om,"medium",Om.create(0,1,0)),MI(Om,"weak",Om.create(0,0,1));let Strength=Om;var Operator;(function(lV){lV[lV.Le=0]="Le",lV[lV.Ge=1]="Ge",lV[lV.Eq=2]="Eq"})(Operator||(Operator={}));class Constraint{constructor(J,VV,RV,UV=Strength.required){MI(this,"_expression");MI(this,"_operator");MI(this,"_strength");MI(this,"_id",CnId++);this._operator=VV,this._strength=Strength.clip(UV),RV===void 0&&J instanceof Expression?this._expression=J:this._expression=J.minus(RV)}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(){MI(this,"maxIterations",1e3);MI(this,"_cnMap",createCnMap());MI(this,"_rowMap",createRowMap());MI(this,"_varMap",createVarMap());MI(this,"_editMap",createEditMap());MI(this,"_infeasibleRows",[]);MI(this,"_objective",new Row$1);MI(this,"_artificial",null);MI(this,"_idTick",0)}createConstraint(J,VV,RV,UV=Strength.required){let ZV=new Constraint(J,VV,RV,UV);return this.addConstraint(ZV),ZV}addConstraint(J){if(this._cnMap.find(J)!==void 0)throw new Error("duplicate constraint");let RV=this._createRow(J),UV=RV.row,ZV=RV.tag,WV=this._chooseSubject(UV,ZV);if(WV.type()===SymbolType.Invalid&&UV.allDummies())if(nearZero(UV.constant()))WV=ZV.marker;else throw new Error("unsatisfiable constraint");if(WV.type()===SymbolType.Invalid){if(!this._addWithArtificialVariable(UV))throw new Error("unsatisfiable constraint")}else UV.solveFor(WV),this._substitute(WV,UV),this._rowMap.insert(WV,UV);this._cnMap.insert(J,ZV),this._optimize(this._objective)}removeConstraint(J){let VV=this._cnMap.erase(J);if(VV===void 0)throw new Error("unknown constraint");this._removeConstraintEffects(J,VV.second);let RV=VV.second.marker,UV=this._rowMap.erase(RV);if(UV===void 0){let ZV=this._getMarkerLeavingSymbol(RV);if(ZV.type()===SymbolType.Invalid)throw new Error("failed to find leaving row");UV=this._rowMap.erase(ZV),UV.second.solveForEx(ZV,RV),this._substitute(RV,UV.second)}this._optimize(this._objective)}hasConstraint(J){return this._cnMap.contains(J)}getConstraints(){return this._cnMap.array.map(({first:J})=>J)}addEditVariable(J,VV){if(this._editMap.find(J)!==void 0)throw new Error("duplicate edit variable");if(VV=Strength.clip(VV),VV===Strength.required)throw new Error("bad required strength");let UV=new Expression(J),ZV=new Constraint(UV,Operator.Eq,void 0,VV);this.addConstraint(ZV);let IV={tag:this._cnMap.find(ZV).second,constraint:ZV,constant:0};this._editMap.insert(J,IV)}removeEditVariable(J){let VV=this._editMap.erase(J);if(VV===void 0)throw new Error("unknown edit variable");this.removeConstraint(VV.second.constraint)}hasEditVariable(J){return this._editMap.contains(J)}suggestValue(J,VV){let RV=this._editMap.find(J);if(RV===void 0)throw new Error("unknown edit variable");let UV=this._rowMap,ZV=RV.second,WV=VV-ZV.constant;ZV.constant=VV;let IV=ZV.tag.marker,dV=UV.find(IV);if(dV!==void 0){dV.second.add(-WV)<0&&this._infeasibleRows.push(IV),this._dualOptimize();return}let CV=ZV.tag.other;if(dV=UV.find(CV),dV!==void 0){dV.second.add(WV)<0&&this._infeasibleRows.push(CV),this._dualOptimize();return}for(let FV=0,NV=UV.size();FV<NV;++FV){let gV=UV.itemAt(FV),eV=gV.second,JV=eV.coefficientFor(IV);JV!==0&&eV.add(WV*JV)<0&&gV.first.type()!==SymbolType.External&&this._infeasibleRows.push(gV.first)}this._dualOptimize()}updateVariables(){let J=this._varMap,VV=this._rowMap;for(let RV=0,UV=J.size();RV<UV;++RV){let ZV=J.itemAt(RV),WV=VV.find(ZV.second);WV!==void 0?ZV.first.setValue(WV.second.constant()):ZV.first.setValue(0)}}_getVarSymbol(J){let VV=()=>this._makeSymbol(SymbolType.External);return this._varMap.setDefault(J,VV).second}_createRow(J){let VV=J.expression(),RV=new Row$1(VV.constant()),UV=VV.terms();for(let dV=0,CV=UV.size();dV<CV;++dV){let FV=UV.itemAt(dV);if(!nearZero(FV.second)){let NV=this._getVarSymbol(FV.first),gV=this._rowMap.find(NV);gV!==void 0?RV.insertRow(gV.second,FV.second):RV.insertSymbol(NV,FV.second)}}let ZV=this._objective,WV=J.strength(),IV={marker:INVALID_SYMBOL,other:INVALID_SYMBOL};switch(J.op()){case Operator.Le:case Operator.Ge:{let dV=J.op()===Operator.Le?1:-1,CV=this._makeSymbol(SymbolType.Slack);if(IV.marker=CV,RV.insertSymbol(CV,dV),WV<Strength.required){let FV=this._makeSymbol(SymbolType.Error);IV.other=FV,RV.insertSymbol(FV,-dV),ZV.insertSymbol(FV,WV)}break}case Operator.Eq:{if(WV<Strength.required){let dV=this._makeSymbol(SymbolType.Error),CV=this._makeSymbol(SymbolType.Error);IV.marker=dV,IV.other=CV,RV.insertSymbol(dV,-1),RV.insertSymbol(CV,1),ZV.insertSymbol(dV,WV),ZV.insertSymbol(CV,WV)}else{let dV=this._makeSymbol(SymbolType.Dummy);IV.marker=dV,RV.insertSymbol(dV)}break}}return RV.constant()<0&&RV.reverseSign(),{row:RV,tag:IV}}_chooseSubject(J,VV){let RV=J.cells();for(let ZV=0,WV=RV.size();ZV<WV;++ZV){let IV=RV.itemAt(ZV);if(IV.first.type()===SymbolType.External)return IV.first}let UV=VV.marker.type();return(UV===SymbolType.Slack||UV===SymbolType.Error)&&J.coefficientFor(VV.marker)<0?VV.marker:(UV=VV.other.type(),(UV===SymbolType.Slack||UV===SymbolType.Error)&&J.coefficientFor(VV.other)<0?VV.other:INVALID_SYMBOL)}_addWithArtificialVariable(J){let VV=this._makeSymbol(SymbolType.Slack);this._rowMap.insert(VV,J.copy()),this._artificial=J.copy(),this._optimize(this._artificial);let RV=nearZero(this._artificial.constant());this._artificial=null;let UV=this._rowMap.erase(VV);if(UV!==void 0){let WV=UV.second;if(WV.isConstant())return RV;let IV=this._anyPivotableSymbol(WV);if(IV.type()===SymbolType.Invalid)return!1;WV.solveForEx(VV,IV),this._substitute(IV,WV),this._rowMap.insert(IV,WV)}let ZV=this._rowMap;for(let WV=0,IV=ZV.size();WV<IV;++WV)ZV.itemAt(WV).second.removeSymbol(VV);return this._objective.removeSymbol(VV),RV}_substitute(J,VV){let RV=this._rowMap;for(let UV=0,ZV=RV.size();UV<ZV;++UV){let WV=RV.itemAt(UV);WV.second.substitute(J,VV),WV.second.constant()<0&&WV.first.type()!==SymbolType.External&&this._infeasibleRows.push(WV.first)}this._objective.substitute(J,VV),this._artificial&&this._artificial.substitute(J,VV)}_optimize(J){let VV=0;for(;VV<this.maxIterations;){let RV=this._getEnteringSymbol(J);if(RV.type()===SymbolType.Invalid)return;let UV=this._getLeavingSymbol(RV);if(UV.type()===SymbolType.Invalid)throw new Error("the objective is unbounded");let ZV=this._rowMap.erase(UV).second;ZV.solveForEx(UV,RV),this._substitute(RV,ZV),this._rowMap.insert(RV,ZV),VV++}throw new Error("solver iterations exceeded")}_dualOptimize(){let J=this._rowMap,VV=this._infeasibleRows;for(;VV.length!==0;){let RV=VV.pop(),UV=J.find(RV);if(UV!==void 0&&UV.second.constant()<0){let ZV=this._getDualEnteringSymbol(UV.second);if(ZV.type()===SymbolType.Invalid)throw new Error("dual optimize failed");let WV=UV.second;J.erase(RV),WV.solveForEx(RV,ZV),this._substitute(ZV,WV),J.insert(ZV,WV)}}}_getEnteringSymbol(J){let VV=J.cells();for(let RV=0,UV=VV.size();RV<UV;++RV){let ZV=VV.itemAt(RV),WV=ZV.first;if(ZV.second<0&&WV.type()!==SymbolType.Dummy)return WV}return INVALID_SYMBOL}_getDualEnteringSymbol(J){let VV=Number.MAX_VALUE,RV=INVALID_SYMBOL,UV=J.cells();for(let ZV=0,WV=UV.size();ZV<WV;++ZV){let IV=UV.itemAt(ZV),dV=IV.first,CV=IV.second;if(CV>0&&dV.type()!==SymbolType.Dummy){let NV=this._objective.coefficientFor(dV)/CV;NV<VV&&(VV=NV,RV=dV)}}return RV}_getLeavingSymbol(J){let VV=Number.MAX_VALUE,RV=INVALID_SYMBOL,UV=this._rowMap;for(let ZV=0,WV=UV.size();ZV<WV;++ZV){let IV=UV.itemAt(ZV),dV=IV.first;if(dV.type()!==SymbolType.External){let CV=IV.second,FV=CV.coefficientFor(J);if(FV<0){let NV=-CV.constant()/FV;NV<VV&&(VV=NV,RV=dV)}}}return RV}_getMarkerLeavingSymbol(J){let VV=Number.MAX_VALUE,RV=VV,UV=VV,ZV=INVALID_SYMBOL,WV=ZV,IV=ZV,dV=ZV,CV=this._rowMap;for(let FV=0,NV=CV.size();FV<NV;++FV){let gV=CV.itemAt(FV),eV=gV.second,JV=eV.coefficientFor(J);if(JV===0)continue;let nV=gV.first;if(nV.type()===SymbolType.External)dV=nV;else if(JV<0){let aV=-eV.constant()/JV;aV<RV&&(RV=aV,WV=nV)}else{let aV=eV.constant()/JV;aV<UV&&(UV=aV,IV=nV)}}return WV!==ZV?WV:IV!==ZV?IV:dV}_removeConstraintEffects(J,VV){VV.marker.type()===SymbolType.Error&&this._removeMarkerEffects(VV.marker,J.strength()),VV.other.type()===SymbolType.Error&&this._removeMarkerEffects(VV.other,J.strength())}_removeMarkerEffects(J,VV){let RV=this._rowMap.find(J);RV!==void 0?this._objective.insertRow(RV.second,-VV):this._objective.insertSymbol(J,-VV)}_anyPivotableSymbol(J){let VV=J.cells();for(let RV=0,UV=VV.size();RV<UV;++RV){let ZV=VV.itemAt(RV),WV=ZV.first.type();if(WV===SymbolType.Slack||WV===SymbolType.Error)return ZV.first}return INVALID_SYMBOL}_makeSymbol(J){return new Symbol$1(J,this._idTick++)}}function nearZero(lV){let J=1e-8;return lV<0?-lV<J:lV<J}function createCnMap(){return createMap()}function createRowMap(){return createMap()}function createVarMap(){return createMap()}function createEditMap(){return createMap()}var SymbolType;(function(lV){lV[lV.Invalid=0]="Invalid",lV[lV.External=1]="External",lV[lV.Slack=2]="Slack",lV[lV.Error=3]="Error",lV[lV.Dummy=4]="Dummy"})(SymbolType||(SymbolType={}));let Symbol$1=class{constructor(J,VV){MI(this,"_id");MI(this,"_type");this._id=VV,this._type=J}id(){return this._id}type(){return this._type}},INVALID_SYMBOL=new Symbol$1(SymbolType.Invalid,-1),Row$1=class g2{constructor(J=0){MI(this,"_cellMap",createMap());MI(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 VV=0,RV=J.size();VV<RV;++VV)if(J.itemAt(VV).first.type()!==SymbolType.Dummy)return!1;return!0}copy(){let J=new g2(this._constant);return J._cellMap=this._cellMap.copy(),J}add(J){return this._constant+=J}insertSymbol(J,VV=1){let RV=this._cellMap.setDefault(J,()=>0);nearZero(RV.second+=VV)&&this._cellMap.erase(J)}insertRow(J,VV=1){this._constant+=J._constant*VV;let RV=J._cellMap;for(let UV=0,ZV=RV.size();UV<ZV;++UV){let WV=RV.itemAt(UV);this.insertSymbol(WV.first,WV.second*VV)}}removeSymbol(J){this._cellMap.erase(J)}reverseSign(){this._constant=-this._constant;let J=this._cellMap;for(let VV=0,RV=J.size();VV<RV;++VV){let UV=J.itemAt(VV);UV.second=-UV.second}}solveFor(J){let VV=this._cellMap,UV=-1/VV.erase(J).second;this._constant*=UV;for(let ZV=0,WV=VV.size();ZV<WV;++ZV)VV.itemAt(ZV).second*=UV}solveForEx(J,VV){this.insertSymbol(J,-1),this.solveFor(VV)}coefficientFor(J){let VV=this._cellMap.find(J);return VV!==void 0?VV.second:0}substitute(J,VV){let RV=this._cellMap.erase(J);RV!==void 0&&this.insertRow(VV,RV.second)}};var getUnitVectorFromPointAToB=(lV,J)=>{const VV={x:J.x-lV.x,y:J.y-lV.y},RV=Math.sqrt(VV.x**2+VV.y**2);return{x:VV.x/RV,y:VV.y/RV}};function doesLineIntersectLine$1([lV,J],[VV,RV],{lineThickness:UV=0}={}){return UV===0?doSegmentsIntersect$1(lV,J,VV,RV):segmentsDistance$1(lV,J,VV,RV)<=UV}function doSegmentsIntersect$1(lV,J,VV,RV){const UV=orientation$1(lV,J,VV),ZV=orientation$1(lV,J,RV),WV=orientation$1(VV,RV,lV),IV=orientation$1(VV,RV,J);return!!(UV!==ZV&&WV!==IV||UV===0&&onSegment$2(lV,VV,J)||ZV===0&&onSegment$2(lV,RV,J)||WV===0&&onSegment$2(VV,lV,RV)||IV===0&&onSegment$2(VV,J,RV))}function orientation$1(lV,J,VV){const RV=(J.y-lV.y)*(VV.x-J.x)-(J.x-lV.x)*(VV.y-J.y);return RV===0?0:RV>0?1:2}function onSegment$2(lV,J,VV){return J.x<=Math.max(lV.x,VV.x)&&J.x>=Math.min(lV.x,VV.x)&&J.y<=Math.max(lV.y,VV.y)&&J.y>=Math.min(lV.y,VV.y)}function segmentsDistance$1(lV,J,VV,RV){if(lV.x===J.x&&lV.y===J.y)return pointToSegmentDistance$1(lV,VV,RV);if(VV.x===RV.x&&VV.y===RV.y)return pointToSegmentDistance$1(VV,lV,J);if(doSegmentsIntersect$1(lV,J,VV,RV))return 0;const UV=[pointToSegmentDistance$1(lV,VV,RV),pointToSegmentDistance$1(J,VV,RV),pointToSegmentDistance$1(VV,lV,J),pointToSegmentDistance$1(RV,lV,J)];return Math.min(...UV)}function pointToSegmentDistance$1(lV,J,VV){const RV=(VV.x-J.x)**2+(VV.y-J.y)**2;if(RV===0)return distance$2(lV,J);let UV=((lV.x-J.x)*(VV.x-J.x)+(lV.y-J.y)*(VV.y-J.y))/RV;UV=Math.max(0,Math.min(1,UV));const ZV={x:J.x+UV*(VV.x-J.x),y:J.y+UV*(VV.y-J.y)};return distance$2(lV,ZV)}function distance$2(lV,J){const VV=lV.x-J.x,RV=lV.y-J.y;return Math.sqrt(VV*VV+RV*RV)}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(lV){if(lV==null)return"";if(lV===0)return"0";const J=SI_PREFIXES.find(UV=>Math.abs(lV)>=UV.value)||SI_PREFIXES[SI_PREFIXES.length-1];return`${(lV/J.value).toPrecision(3).replace(/\.?0+$/,"")}${J.symbol}`}var su$1=(lV,J={})=>{let VV=lV._internal_store;if(!VV){VV={counts:{}},lV._internal_store=VV;for(const UV of lV){const ZV=UV.type,WV=UV[`${ZV}_id`];if(!WV)continue;const IV=Number.parseInt(WV.split("_").pop());Number.isNaN(IV)||(VV.counts[ZV]=Math.max(VV.counts[ZV]??0,IV))}}return new Proxy({},{get:(UV,ZV)=>ZV==="toArray"?()=>lV:{get:WV=>lV.find(IV=>IV.type===ZV&&IV[`${ZV}_id`]===WV),getUsing:WV=>{const IV=Object.keys(WV);if(IV.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const dV=IV[0],CV=dV.replace("_id",""),FV=lV.find(NV=>NV.type===CV&&NV[dV]===WV[dV]);return FV?lV.find(NV=>NV.type===ZV&&NV[`${ZV}_id`]===FV[`${ZV}_id`]):null},getWhere:WV=>{const IV=Object.keys(WV);return lV.find(dV=>dV.type===ZV&&IV.every(CV=>dV[CV]===WV[CV]))},list:WV=>{const IV=WV?Object.keys(WV):[];return lV.filter(dV=>dV.type===ZV&&IV.every(CV=>dV[CV]===WV[CV]))},insert:WV=>{var CV;(CV=VV.counts)[ZV]??(CV[ZV]=-1),VV.counts[ZV]++;const IV=VV.counts[ZV],dV={type:ZV,[`${ZV}_id`]:`${ZV}_${IV}`,...WV};return J.validateInserts&&(Soup[ZV]??any_soup_element).parse(dV),lV.push(dV),dV},delete:WV=>{const IV=lV.find(dV=>dV[`${ZV}_id`]===WV);IV&&lV.splice(lV.indexOf(IV),1)},update:(WV,IV)=>{const dV=lV.find(CV=>CV.type===ZV&&CV[`${ZV}_id`]===WV);if(dV)return Object.assign(dV,IV),dV},select:WV=>{if(ZV==="source_component")return lV.find(IV=>IV.type==="source_component"&&IV.name===WV.replace(/\./g,""));if(ZV==="pcb_port"||ZV==="source_port"||ZV==="schematic_port"){const[IV,dV]=WV.replace(/\./g,"").split(/[\s\>]+/),CV=lV.find(NV=>NV.type==="source_component"&&NV.name===IV);if(!CV)return null;const FV=lV.find(NV=>NV.type==="source_port"&&NV.source_component_id===CV.source_component_id&&(NV.name===dV||(NV.port_hints??[]).includes(dV)));if(!FV)return null;if(ZV==="source_port")return FV;if(ZV==="pcb_port")return lV.find(NV=>NV.type==="pcb_port"&&NV.source_port_id===FV.source_port_id);if(ZV==="schematic_port")return lV.find(NV=>NV.type==="schematic_port"&&NV.source_port_id===FV.source_port_id)}}}})};su$1.unparsed=su$1;var su_default$1=su$1,__defProp$n=Object.defineProperty,__export$3=(lV,J)=>{for(var VV in J)__defProp$n(lV,VV,{get:J[VV],enumerable:!0})},components_exports={};__export$3(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:()=>Trace,TraceHint:()=>TraceHint,Transistor:()=>Transistor,Via:()=>Via});var 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(lV){MI(this,"renderPhaseStates");MI(this,"shouldBeRemoved",!1);MI(this,"children");MI(this,"isPcbPrimitive",!1);MI(this,"isSchematicPrimitive",!1);MI(this,"_renderId");MI(this,"_currentRenderPhase",null);MI(this,"_asyncEffects",[]);this._renderId=`${globalRenderCounter++}`,this.children=[],this.renderPhaseStates={};for(const J of orderedRenderPhases)this.renderPhaseStates[J]={initialized:!1,dirty:!1}}_markDirty(lV){this.renderPhaseStates[lV].dirty=!0;const J=orderedRenderPhases.indexOf(lV);for(let VV=J+1;VV<orderedRenderPhases.length;VV++)this.renderPhaseStates[orderedRenderPhases[VV]].dirty=!0}_queueAsyncEffect(lV,J){const VV={promise:J(),phase:this._currentRenderPhase,effectName:lV,complete:!1};this._asyncEffects.push(VV),VV.promise.then(()=>{VV.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffectComplete",{effectName:lV,componentDisplayName:this.getString(),phase:VV.phase})}).catch(RV=>{console.error(`Async effect error in ${VV.phase} "${lV}":
7293
7293
  ${RV.stack}`),VV.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffectComplete",{effectName:lV,componentDisplayName:this.getString(),phase:VV.phase,error:RV.toString()})})}_emitRenderLifecycleEvent(lV,J){const VV={renderId:this._renderId,componentDisplayName:this.getString()},RV=`renderable:renderLifecycle:${lV}:${J}`;"root"in this&&this.root&&(this.root.emit(RV,{...VV,type:RV}),this.root.emit("renderable:renderLifecycle:anyEvent",{...VV,type:RV}))}getString(){return this.constructor.name}_hasIncompleteAsyncEffects(){return this._asyncEffects.some(lV=>!lV.complete)}getCurrentRenderPhase(){return this._currentRenderPhase}getRenderGraph(){return{id:this._renderId,currentPhase:this._currentRenderPhase,renderPhaseStates:this.renderPhaseStates,shouldBeRemoved:this.shouldBeRemoved,children:this.children.map(lV=>lV.getRenderGraph())}}runRenderCycle(){for(const lV of orderedRenderPhases)this.runRenderPhaseForChildren(lV),this.runRenderPhase(lV)}runRenderPhase(lV){var ZV,WV,IV;this._currentRenderPhase=lV;const J=this.renderPhaseStates[lV],VV=J.initialized,RV=J.dirty;if(!VV&&this.shouldBeRemoved)return;if(this.shouldBeRemoved&&VV){this._emitRenderLifecycleEvent(lV,"start"),(ZV=this==null?void 0:this[`remove${lV}`])==null||ZV.call(this),J.initialized=!1,J.dirty=!1,this._emitRenderLifecycleEvent(lV,"end");return}const UV=orderedRenderPhases.indexOf(lV)-1;if(UV>=0){const dV=orderedRenderPhases[UV];if(this._asyncEffects.filter(FV=>FV.phase===dV).some(FV=>!FV.complete))return}if(this._emitRenderLifecycleEvent(lV,"start"),VV){RV&&((WV=this==null?void 0:this[`update${lV}`])==null||WV.call(this),J.dirty=!1),this._emitRenderLifecycleEvent(lV,"end");return}J.dirty=!1,(IV=this==null?void 0:this[`doInitial${lV}`])==null||IV.call(this),J.initialized=!0,this._emitRenderLifecycleEvent(lV,"end")}runRenderPhaseForChildren(lV){for(const J of this.children)J.runRenderPhaseForChildren(lV),J.runRenderPhase(lV)}renderError(lV){throw typeof lV=="string"?new Error(lV):new Error(JSON.stringify(lV,null,2))}},catalogue$1={},extendCatalogue=lV=>{const J=Object.fromEntries(Object.entries(lV).map(([VV,RV])=>[VV.toLowerCase(),RV]));Object.assign(catalogue$1,lV),Object.assign(catalogue$1,J)};function prepare$1(lV,J){const VV=lV;return VV.__tsci={...J},lV}var hostConfig={supportsMutation:!0,createInstance(lV,J){const VV=catalogue$1[lV];if(!VV)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): "${lV}" See CREATING_NEW_COMPONENTS.md`);return prepare$1(new VV(J),{})},createTextInstance(){return{}},appendInitialChild(lV,J){lV.add(J)},appendChild(lV,J){lV.add(J)},appendChildToContainer(lV,J){lV.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(lV){return lV},preparePortalMount(lV){throw new Error("Function not implemented.")},scheduleTimeout(lV,J){throw new Error("Function not implemented.")},cancelTimeout(lV){throw new Error("Function not implemented.")},noTimeout:void 0,isPrimaryRenderer:!1,getCurrentEventPriority(){throw new Error("Function not implemented.")},getInstanceFromNode(lV){throw new Error("Function not implemented.")},beforeActiveInstanceBlur(){throw new Error("Function not implemented.")},afterActiveInstanceBlur(){throw new Error("Function not implemented.")},prepareScopeUpdate:(lV,J)=>{throw new Error("Function not implemented.")},getInstanceFromScope:lV=>{throw new Error("Function not implemented.")},detachDeletedInstance:lV=>{throw new Error("Function not implemented.")},supportsHydration:!1},reconciler$1=ReactReconciler(hostConfig),createInstanceFromReactElement=lV=>{const J={children:[],props:{name:"$root"},add(UV){UV.parent=this,this.children.push(UV)},computePcbGlobalTransform(){return identity$4()}},VV=reconciler$1.createContainer(J,0,null,!1,null,"tsci",UV=>{console.log("Error in createContainer"),console.error(UV)},null);reconciler$1.updateContainer(lV,VV,null,()=>{});const RV=reconciler$1.getPublicRootInstance(VV);return RV||J.children[0]},parsePinNumberFromLabelsOrThrow=(lV,J)=>{if(typeof lV=="number")return lV;if(lV.startsWith("pin"))return Number(lV.slice(3));if(!J)throw new Error(`No pin labels provided and pin number or label is not a number: "${lV}"`);for(const VV in J)if((Array.isArray(J[VV])?J[VV]:[J[VV]]).includes(lV))return Number(VV.replace("pin",""));throw new Error(`No pin labels provided and pin number or label is not a number: "${lV}"`)},underscorifyPinStyles=(lV,J)=>{if(!lV)return;const VV={},RV={};for(const[UV,ZV]of Object.entries(lV)){const WV=parsePinNumberFromLabelsOrThrow(UV,J);RV[WV]={...RV[WV],...ZV}}for(const[UV,ZV]of Object.entries(RV)){const WV=`pin${UV}`;VV[WV]={bottom_margin:ZV.bottomMargin,left_margin:ZV.leftMargin,right_margin:ZV.rightMargin,top_margin:ZV.topMargin}}return VV},underscorifyPortArrangement=lV=>{if(lV){if("leftSide"in lV||"rightSide"in lV||"topSide"in lV||"bottomSide"in lV)return{left_side:lV.leftSide,right_side:lV.rightSide,top_side:lV.topSide,bottom_side:lV.bottomSide};if("leftPinCount"in lV||"rightPinCount"in lV||"topPinCount"in lV||"bottomPinCount"in lV)return{left_size:lV.leftPinCount,right_size:lV.rightPinCount,top_size:lV.topPinCount,bottom_size:lV.bottomPinCount};if("leftSize"in lV||"rightSize"in lV||"topSize"in lV||"bottomSize"in lV)return{left_size:lV.leftSize,right_size:lV.rightSize,top_size:lV.topSize,bottom_size:lV.bottomSize}}},InvalidProps=class extends Error{constructor(lV,J,VV){let RV;const ZV=Object.keys(VV).filter(WV=>WV!=="_errors").map(WV=>VV[WV]._errors[0]?`${WV} (${VV[WV]._errors[0]})`:`${WV} (${JSON.stringify(VV[WV])})`).join(", ");"name"in J?RV=`Invalid props for ${lV} "${J.name}": ${ZV}`:"footprint"in J&&typeof J.footprint=="string"?RV=`Invalid props for ${lV} (unnamed ${J.footprint} component): ${ZV}`:RV=`Invalid props for ${lV} (unnamed): ${ZV}`,super(RV),this.componentName=lV,this.originalProps=J,this.formattedError=VV}};function isMatchingSelector(lV,J){const VV=J.match(/^#(\w+)/);if(VV)return lV.props.id===VV[1];const RV=J.match(/^\.(\w+)/);if(RV)return lV.isMatchingNameOrAlias(RV[1]);let[UV,...ZV]=J.split(/(?=[#.[])/);return UV==="pin"&&(UV="port"),UV&&UV!=="*"&&lV.lowercaseComponentName!==UV.toLowerCase()?!1:ZV.every(WV=>{if(WV.startsWith("#"))return lV.props.id===WV.slice(1);if(WV.startsWith("."))return lV.isMatchingNameOrAlias(WV.slice(1));const IV=WV.match(/\[(\w+)=['"]?(.+?)['"]?\]/);if(!IV)return!0;const[,dV,CV]=IV;return lV.props[dV].toString()===CV})}var debugSelectAll=Debug$1("tscircuit:primitive-component:selectAll"),PrimitiveComponent=class extends Renderable{constructor(J){super(J);MI(this,"parent",null);MI(this,"children");MI(this,"childrenPendingRemoval");MI(this,"props");MI(this,"_parsedProps");MI(this,"externallyAddedAliases");MI(this,"isPrimitiveContainer",!1);MI(this,"source_group_id",null);MI(this,"source_component_id",null);MI(this,"schematic_component_id",null);MI(this,"pcb_component_id",null);MI(this,"cad_component_id",null);this.children=[],this.childrenPendingRemoval=[],this.props=J??{},this.externallyAddedAliases=[];const VV=this.config.zodProps.safeParse(J??{});if(VV.success)this._parsedProps=VV.data;else throw new InvalidProps(this.lowercaseComponentName,this.props,VV.error.format())}get config(){return{componentName:"",zodProps:z$1.object({}).passthrough()}}get componentName(){return this.config.componentName}getInheritedProperty(J){let VV=this;for(;VV;){if(VV._parsedProps&&J in VV._parsedProps)return VV._parsedProps[J];VV=VV.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 UV,ZV;const VV=this.config.zodProps.parse({...this.props,...J}),RV=this.props;this.props=VV,this._parsedProps=this.config.zodProps.parse(J),this.onPropsChange({oldProps:RV,newProps:VV,changedProps:Object.keys(J)}),(ZV=(UV=this.parent)==null?void 0:UV.onChildChanged)==null||ZV.call(UV,this)}computePcbPropsTransform(){const{_parsedProps:J}=this;return compose(translate(J.pcbX??0,J.pcbY??0),rotate((J.pcbRotation??0)*Math.PI/180))}_computePcbGlobalTransformBeforeLayout(){var RV,UV,ZV;const{_parsedProps:J}=this,VV=this.getSubcircuit()._getPcbManualPlacementForComponent(this);if(VV&&this.props.pcbX===void 0&&this.props.pcbY===void 0)return compose(((RV=this.parent)==null?void 0:RV._computePcbGlobalTransformBeforeLayout())??identity$4(),compose(translate(VV.x,VV.y),rotate((J.pcbRotation??0)*Math.PI/180)));if(this.isPcbPrimitive){const WV=this.getPrimitiveContainer();if(WV){const IV=WV._parsedProps.layer==="bottom",dV=WV._getGlobalPcbPositionBeforeLayout();if(IV)return compose(translate(dV.x,dV.y),flipY(),translate(-dV.x,-dV.y)),compose(((UV=this.parent)==null?void 0:UV._computePcbGlobalTransformBeforeLayout())??identity$4(),flipY(),this.computePcbPropsTransform())}}return compose(((ZV=this.parent)==null?void 0:ZV._computePcbGlobalTransformBeforeLayout())??identity$4(),this.computePcbPropsTransform())}getPrimitiveContainer(){var J,VV;return this.isPrimitiveContainer?this:((VV=(J=this.parent)==null?void 0:J.getPrimitiveContainer)==null?void 0:VV.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(),VV=J?J._parsedProps.layer==="bottom":!1;return{isFlipped:VV,maybeFlipLayer:UV=>VV?UV==="top"?"bottom":"top":UV}}_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 VV,RV;const J=this._getSchematicGlobalManualPlacementTransform(this);return J||compose(((RV=(VV=this.parent)==null?void 0:VV.computeSchematicGlobalTransform)==null?void 0:RV.call(VV))??identity$4(),this.computeSchematicPropsTransform())}_getSchematicSymbolName(){const{_parsedProps:J}=this,VV=this.config.schematicSymbolName,RV=`${VV}_horz`,UV=`${VV}_vert`,ZV=`${VV}_up`,WV=`${VV}_down`,IV=`${VV}_left`,dV=`${VV}_right`;if(dV in symbols_index_default&&(J.schRotation===void 0||J.schRotation===0))return dV;if(ZV in symbols_index_default&&J.schRotation===90)return ZV;if(IV in symbols_index_default&&J.schRotation===180)return IV;if(WV in symbols_index_default&&J.schRotation===270)return WV;if(RV in symbols_index_default&&(J.schRotation===0||J.schRotation===void 0||J.schRotation===180))return RV;if(UV in symbols_index_default&&(J.schRotation===90||J.schRotation===270))return UV;if(VV in symbols_index_default)return VV}_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[J]??null:null}_getPcbManualPlacementForComponent(J){var ZV;if(!this.isSubcircuit)return null;const VV=this.props.layout,RV=this.props.manualEdits;if(!VV&&!RV)return null;const UV=((ZV=VV==null?void 0:VV.manual_pcb_placement_config)==null?void 0:ZV.positions)||(RV==null?void 0:RV.pcb_placements);if(!UV)return null;for(const WV of UV)if(VV&&isMatchingSelector(J,WV.selector)||J.props.name===WV.selector)return applyToPoint(this._computePcbGlobalTransformBeforeLayout(),WV.center);return null}_getSchematicGlobalManualPlacementTransform(J){var RV,UV;const VV=(RV=this.getSubcircuit())==null?void 0:RV._parsedProps.manualEdits;if(!VV)return null;for(const ZV of VV.schematic_placements??[])if((isMatchingSelector(J,ZV.selector)||J.props.name===ZV.selector)&&ZV.relative_to==="group_center")return compose(((UV=this.parent)==null?void 0:UV._computePcbGlobalTransformBeforeLayout())??identity$4(),translate(ZV.center.x,ZV.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 VV,RV;(RV=(VV=this.parent)==null?void 0:VV.onChildChanged)==null||RV.call(VV,J)}add(J){J.onAddToParent(this),J.parent=this,this.children.push(J)}addAll(J){for(const VV of J)this.add(VV)}remove(J){this.children=this.children.filter(VV=>VV!==J),this.childrenPendingRemoval.push(J),J.shouldBeRemoved=!0}getSubcircuitSelector(){const J=this._parsedProps.name,VV=J?`${this.lowercaseComponentName}.${J}`:this.lowercaseComponentName;return!this.parent||this.parent.isSubcircuit?VV:`${this.parent.getSubcircuitSelector()} > ${VV}`}getFullPathSelector(){var UV,ZV;const J=this._parsedProps.name,VV=J?`${this.lowercaseComponentName}.${J}`:this.lowercaseComponentName,RV=(ZV=(UV=this.parent)==null?void 0:UV.getFullPathSelector)==null?void 0:ZV.call(UV);return RV?`${RV} > ${VV}`:VV}getNameAndAliases(){return[this._parsedProps.name,...this._parsedProps.portHints??[]].filter(Boolean)}isMatchingNameOrAlias(J){return this.getNameAndAliases().includes(J)}isMatchingAnyOf(J){return this.getNameAndAliases().some(VV=>J.map(RV=>RV.toString()).includes(VV))}getPcbSize(){throw new Error(`getPcbSize not implemented for ${this.componentName}`)}doesSelectorMatch(J){const VV=[this.componentName,this.lowercaseComponentName],RV=[this._parsedProps.name].filter(Boolean),UV=J.trim().split(/\> /)[0],ZV=UV[0];return UV.length>1?!1:!!(J==="*"||J[0]==="#"&&J.slice(1)===this.props.id||J[0]==="."&&RV.includes(J.slice(1))||/^[a-zA-Z0-9_]/.test(ZV)&&VV.includes(ZV))}getSubcircuit(){var VV,RV;if(this.isSubcircuit)return this;const J=(RV=(VV=this.parent)==null?void 0:VV.getSubcircuit)==null?void 0:RV.call(VV);if(!J)throw new Error("Component is not inside an opaque group (no board?)");return J}selectAll(J){debugSelectAll(`selectAll: "${J}"`);const VV=J.trim().split(/\s+/);let RV=VV[0]===">"?this.children:this.getSelectableDescendants(),UV=[],ZV=!1,WV=-1;for(const IV of VV)if(WV++,debugSelectAll(`
7294
7294
 
7295
- iteration: ${WV}`),debugSelectAll(`part: "${VV[WV]}"`),debugSelectAll(`currentSearch: [${RV.map(dV=>dV.getString()).join(",")}]`),debugSelectAll(`currentResults: [${UV.map(dV=>dV.getString()).join(",")}]`),IV===">")ZV=!0;else{const dV=RV.filter(FV=>isMatchingSelector(FV,IV));RV=dV.flatMap(FV=>ZV?FV.children:FV.getSelectableDescendants()),UV=dV,ZV=!1}return UV}selectOne(J,VV){var UV;let RV=(UV=VV==null?void 0:VV.type)==null?void 0:UV.toLowerCase();return VV!=null&&VV.port&&(RV="port"),RV?this.selectAll(J).find(ZV=>ZV.lowercaseComponentName===RV)??null:VV!=null&&VV.pcbPrimitive?this.selectAll(J).find(ZV=>ZV.isPcbPrimitive)??null:VV!=null&&VV.schematicPrimitive?this.selectAll(J).find(ZV=>ZV.isSchematicPrimitive)??null:this.selectAll(J)[0]??null}getAvailablePcbLayers(){var J,VV;if(this.isPcbPrimitive){const{maybeFlipLayer:RV}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[RV(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((VV=(J=this.root)==null?void 0:J._getBoard())==null?void 0:VV.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const J=[];for(const VV of this.children)J.push(VV),J.push(...VV.getDescendants());return J}getSelectableDescendants(){const J=[];for(const VV of this.children)VV.isSubcircuit?J.push(VV):(J.push(VV),J.push(...VV.getSelectableDescendants()));return J}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}renderError(J){var VV;if(typeof J=="string")return super.renderError(J);(VV=this.root)==null||VV.db.pcb_placement_error.insert(J)}getString(){var UV,ZV;const{lowercaseComponentName:J,_parsedProps:VV,parent:RV}=this;return(VV==null?void 0:VV.pinNumber)!==void 0&&((UV=RV==null?void 0:RV.props)!=null&&UV.name)&&(VV!=null&&VV.name)?`<${J}#${this._renderId}(pin:${VV.pinNumber} .${RV==null?void 0:RV.props.name}>.${VV.name}) />`:(ZV=RV==null?void 0:RV.props)!=null&&ZV.name&&(VV!=null&&VV.name)?`<${J}#${this._renderId}(.${RV==null?void 0:RV.props.name}>.${VV==null?void 0:VV.name}) />`:VV!=null&&VV.from&&(VV!=null&&VV.to)?`<${J}#${this._renderId}(from:${VV.from} to:${VV==null?void 0:VV.to}) />`:VV!=null&&VV.name?`<${J}#${this._renderId} name=".${VV==null?void 0:VV.name}" />`:VV!=null&&VV.portHints?`<${J}#${this._renderId}(${VV.portHints.map(WV=>`.${WV}`).join(", ")}) />`:`<${J}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}};function pairs$1(lV){const J=[];for(let VV=0;VV<lV.length-1;VV++)J.push([lV[VV],lV[VV+1]]);return J}var netProps=z$1.object({name:z$1.string()}),Net=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:netProps}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.source_net.insert({name:VV.name,member_source_group_ids:[]});this.source_net_id=RV.source_net_id}getAllConnectedPorts(){const J=this.getSubcircuit().selectAll("port"),VV=[];for(const RV of J){const UV=RV._getDirectlyConnectedTraces();for(const ZV of UV)if(ZV._isExplicitlyConnectedToNet(this)){VV.push(RV);break}}return VV}_getAllDirectlyConnectedTraces(){const J=this.getSubcircuit().selectAll("trace"),VV=[];for(const RV of J)RV._isExplicitlyConnectedToNet(this)&&VV.push(RV);return VV}doInitialPcbRouteNetIslands(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,VV=this._getAllDirectlyConnectedTraces().filter(WV=>{var IV;return(((IV=WV._portsRoutedOnPcb)==null?void 0:IV.length)??0)>0}),RV=[];for(const WV of VV){const IV=WV._portsRoutedOnPcb,dV=RV.find(CV=>IV.some(FV=>CV.ports.includes(FV)));if(!dV){RV.push({ports:[...IV],traces:[WV]});continue}dV.traces.push(WV),dV.ports.push(...IV)}if(RV.length===0)return;const UV=pairs$1(RV);for(const[WV,IV]of UV){const dV=WV.ports.map(GV=>GV._getGlobalPcbPositionBeforeLayout()),CV=IV.ports.map(GV=>GV._getGlobalPcbPositionBeforeLayout());let FV=1/0,NV=[-1,-1];for(let GV=0;GV<dV.length;GV++){const cV=dV[GV];for(let TV=0;TV<CV.length;TV++){const iV=CV[TV],tV=Math.sqrt((cV.x-iV.x)**2+(cV.y-iV.y)**2);tV<FV&&(FV=tV,NV=[GV,TV])}}const gV=WV.ports[NV[0]],eV=IV.ports[NV[1]],JV=J.toArray().filter(GV=>GV.type==="pcb_smtpad"||GV.type==="pcb_trace"||GV.type==="pcb_plated_hole"||GV.type==="pcb_hole"||GV.type==="source_port"||GV.type==="pcb_port"),{solution:nV}=autoroute2(JV.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[gV.source_port_id,eV.source_port_id]}])),aV=nV[0];if(!aV){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[gV.pcb_component_id,eV.pcb_component_id].filter(Boolean),pcb_port_ids:[gV.pcb_port_id,eV.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(aV)}}renderError(J){var VV;if(typeof J=="string")return super.renderError(J);(VV=this.root)==null||VV.db.pcb_trace_error.insert(J)}},createNetsFromProps=(lV,J)=>{for(const VV of J)typeof VV=="string"&&VV.startsWith("net.")&&(lV.getSubcircuit().selectOne(VV)||lV.getSubcircuit().add(new Net({name:VV.split("net.")[1]})))},SmtPad=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_smtpad_id",null);MI(this,"matchedPort",null);MI(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 VV;const J=(VV=this.getPrimitiveContainer())==null?void 0:VV.selectAll("port");if(this.props.portHints){for(const RV of J)if(RV.isMatchingAnyOf(this.props.portHints)){this.matchedPort=RV,RV.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var NV,gV,eV,JV,nV;if((NV=this.root)!=null&&NV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this;if(!VV.portHints)return;const RV=this.getPrimitiveContainer(),UV=this._getGlobalPcbPositionBeforeLayout();RV==null||RV._getGlobalPcbPositionBeforeLayout();const ZV=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),WV=Math.abs(ZV.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:IV}=this._getPcbPrimitiveFlippedHelpers(),dV=(RV==null?void 0:RV._parsedProps.pcbRotation)??0;let CV=null;const FV=((gV=this.parent)==null?void 0:gV.pcb_component_id)??((eV=this.getPrimitiveContainer())==null?void 0:eV.pcb_component_id);VV.shape==="circle"?(CV=J.pcb_smtpad.insert({pcb_component_id:FV,pcb_port_id:(JV=this.matchedPort)==null?void 0:JV.pcb_port_id,layer:IV(VV.layer??"top"),shape:"circle",radius:VV.radius,port_hints:VV.portHints.map(aV=>aV.toString()),x:UV.x,y:UV.y}),J.pcb_solder_paste.insert({layer:CV.layer,shape:"circle",radius:CV.radius*.7,x:CV.x,y:CV.y,pcb_component_id:CV.pcb_component_id,pcb_smtpad_id:CV.pcb_smtpad_id})):VV.shape==="rect"&&(CV=dV===0||WV?J.pcb_smtpad.insert({pcb_component_id:FV,pcb_port_id:(nV=this.matchedPort)==null?void 0:nV.pcb_port_id,layer:IV(VV.layer??"top"),shape:"rect",width:WV?VV.height:VV.width,height:WV?VV.width:VV.height,port_hints:VV.portHints.map(aV=>aV.toString()),x:UV.x,y:UV.y}):J.pcb_smtpad.insert({pcb_component_id:FV,layer:VV.layer??"top",shape:"rotated_rect",width:VV.width,height:VV.height,x:UV.x,y:UV.y,ccw_rotation:dV,port_hints:VV.portHints.map(aV=>aV.toString())}),CV.shape==="rect"&&J.pcb_solder_paste.insert({layer:CV.layer,shape:"rect",width:CV.width*.7,height:CV.height*.7,x:CV.x,y:CV.y,pcb_component_id:CV.pcb_component_id,pcb_smtpad_id:CV.pcb_smtpad_id})),CV&&(this.pcb_smtpad_id=CV.pcb_smtpad_id)}doInitialPcbPortAttachment(){var VV,RV;if((VV=this.root)!=null&&VV.pcbDisabled)return;const{db:J}=this.root;J.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(RV=this.matchedPort)==null?void 0:RV.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:J}=this.root,VV=J.pcb_smtpad.get(this.pcb_smtpad_id);if(VV.shape==="rect")return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-VV.width/2,top:VV.y-VV.height/2,right:VV.x+VV.width/2,bottom:VV.y+VV.height/2},width:VV.width,height:VV.height};if(VV.shape==="rotated_rect"){const RV=VV.ccw_rotation*Math.PI/180,UV=Math.cos(RV),ZV=Math.sin(RV),WV=VV.width/2,IV=VV.height/2,dV=Math.abs(WV*UV)+Math.abs(IV*ZV),CV=Math.abs(WV*ZV)+Math.abs(IV*UV);return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-dV,right:VV.x+dV,top:VV.y-CV,bottom:VV.y+CV},width:dV*2,height:CV*2}}if(VV.shape==="circle")return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-VV.radius,top:VV.y-VV.radius,right:VV.x+VV.radius,bottom:VV.y+VV.radius},width:VV.radius*2,height:VV.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${VV.shape}"`)}_setPositionFromLayout(J){var UV;const{db:VV}=this.root;VV.pcb_smtpad.update(this.pcb_smtpad_id,{x:J.x,y:J.y});const RV=VV.pcb_solder_paste.list().find(ZV=>ZV.pcb_smtpad_id===this.pcb_smtpad_id);VV.pcb_solder_paste.update(RV==null?void 0:RV.pcb_solder_paste_id,{x:J.x,y:J.y}),(UV=this.matchedPort)==null||UV._setPositionFromLayout(J)}},SilkscreenPath=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_path_id",null)}get config(){return{componentName:"SilkscreenPath",zodProps:silkscreenPathProps}}doInitialPcbPrimitiveRender(){var WV,IV;if((WV=this.root)!=null&&WV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenPath. Must be "top" or "bottom".`);const UV=this._computePcbGlobalTransformBeforeLayout(),ZV=J.pcb_silkscreen_path.insert({pcb_component_id:(IV=this.parent)==null?void 0:IV.pcb_component_id,layer:RV,route:VV.route.map(dV=>{const CV=applyToPoint(UV,{x:dV.x,y:dV.y});return{...dV,x:CV.x,y:CV.y}}),stroke_width:VV.strokeWidth??.1});this.pcb_silkscreen_path_id=ZV.pcb_silkscreen_path_id}},PlatedHole=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_plated_hole_id",null);MI(this,"matchedPort",null);MI(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,VV=J.pcb_plated_hole.get(this.pcb_plated_hole_id),RV=this.getPcbSize();return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-RV.width/2,top:VV.y-RV.height/2,right:VV.x+RV.width/2,bottom:VV.y+RV.height/2},width:RV.width,height:RV.height}}_setPositionFromLayout(J){var RV;const{db:VV}=this.root;VV.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:J.x,y:J.y}),(RV=this.matchedPort)==null||RV._setPositionFromLayout(J)}doInitialPortMatching(){var VV;const J=(VV=this.getPrimitiveContainer())==null?void 0:VV.selectAll("port");if(this.props.portHints){for(const RV of J)if(RV.isMatchingAnyOf(this.props.portHints)){this.matchedPort=RV,RV.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var ZV,WV,IV,dV,CV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=((WV=this.parent)==null?void 0:WV.pcb_component_id)??((IV=this.getPrimitiveContainer())==null?void 0:IV.pcb_component_id);if(VV.shape==="circle"){const FV=J.pcb_plated_hole.insert({pcb_component_id:UV,pcb_port_id:(dV=this.matchedPort)==null?void 0:dV.pcb_port_id,outer_diameter:VV.outerDiameter,hole_diameter:VV.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:RV.x,y:RV.y,layers:["top","bottom"]});this.pcb_plated_hole_id=FV.pcb_plated_hole_id}else if(VV.shape==="pill"||VV.shape==="oval"){const FV=J.pcb_plated_hole.insert({pcb_component_id:UV,pcb_port_id:(CV=this.matchedPort)==null?void 0:CV.pcb_port_id,outer_width:VV.outerWidth,outer_height:VV.outerHeight,hole_width:VV.innerWidth,hole_height:VV.innerHeight,shape:VV.shape,port_hints:this.getNameAndAliases(),x:RV.x,y:RV.y,layers:["top","bottom"]});this.pcb_plated_hole_id=FV.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var VV,RV;if((VV=this.root)!=null&&VV.pcbDisabled)return;const{db:J}=this.root;J.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(RV=this.matchedPort)==null?void 0:RV.pcb_port_id})}},Keepout=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_keepout_id",null);MI(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:pcbKeepoutProps}}doInitialPcbPrimitiveRender(){var IV;if((IV=this.root)!=null&&IV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),ZV=Math.abs(UV.rotation.angle*(180/Math.PI)-90)%180<.01;let WV=null;VV.shape==="circle"?WV=J.pcb_keepout.insert({layers:["top"],shape:"circle",radius:VV.radius,center:{x:RV.x,y:RV.y}}):VV.shape==="rect"&&(WV=J.pcb_keepout.insert({layers:["top"],shape:"rect",...ZV?{width:VV.height,height:VV.width}:{width:VV.width,height:VV.height},center:{x:RV.x,y:RV.y}})),WV&&(this.pcb_keepout_id=WV.pcb_keepout_id)}},Hole=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_hole_id",null);MI(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:holeProps}}getPcbSize(){const{_parsedProps:J}=this;return{width:J.diameter,height:J.diameter}}doInitialPcbPrimitiveRender(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=J.pcb_hole.insert({hole_shape:"circle",hole_diameter:VV.diameter,x:RV.x,y:RV.y});this.pcb_hole_id=UV.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:J}=this.root,VV=J.pcb_hole.get(this.pcb_hole_id),RV=this.getPcbSize();return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-RV.width/2,top:VV.y-RV.height/2,right:VV.x+RV.width/2,bottom:VV.y+RV.height/2},width:RV.width,height:RV.height}}_setPositionFromLayout(J){const{db:VV}=this.root;VV.pcb_hole.update(this.pcb_hole_id,{x:J.x,y:J.y})}},createComponentsFromSoup=lV=>{const J=[];for(const VV of lV)VV.type==="pcb_smtpad"&&VV.shape==="rect"?J.push(new SmtPad({pcbX:VV.x,pcbY:VV.y,layer:VV.layer,shape:"rect",height:VV.height,width:VV.width,portHints:VV.port_hints})):VV.type==="pcb_smtpad"&&VV.shape==="circle"?J.push(new SmtPad({pcbX:VV.x,pcbY:VV.y,layer:VV.layer,shape:"circle",radius:VV.radius,portHints:VV.port_hints})):VV.type==="pcb_silkscreen_path"?J.push(new SilkscreenPath({layer:VV.layer,route:VV.route,strokeWidth:VV.stroke_width})):VV.type==="pcb_plated_hole"&&VV.shape==="circle"?VV.shape==="circle"&&J.push(new PlatedHole({pcbX:VV.x,pcbY:VV.y,shape:"circle",holeDiameter:VV.hole_diameter,outerDiameter:VV.outer_diameter,portHints:VV.port_hints})):VV.type==="pcb_keepout"&&VV.shape==="circle"?J.push(new Keepout({pcbX:VV.center.x,pcbY:VV.center.y,shape:"circle",radius:VV.radius})):VV.type==="pcb_keepout"&&VV.shape==="rect"?J.push(new Keepout({pcbX:VV.center.x,pcbY:VV.center.y,shape:"rect",width:VV.width,height:VV.height})):VV.type==="pcb_hole"&&VV.hole_shape==="circle"&&J.push(new Hole({pcbX:VV.x,pcbY:VV.y,diameter:VV.hole_diameter}));return J};function getBoundsOfPcbComponents(lV){let J=1/0,VV=1/0,RV=-1/0,UV=-1/0;for(const IV of lV)if(IV.isPcbPrimitive){const{x:dV,y:CV}=IV._getGlobalPcbPositionBeforeLayout(),{width:FV,height:NV}=IV.getPcbSize();J=Math.min(J,dV-FV/2),VV=Math.min(VV,CV-NV/2),RV=Math.max(RV,dV+FV/2),UV=Math.max(UV,CV+NV/2)}else if(IV.componentName==="Footprint"){const dV=getBoundsOfPcbComponents(IV.children);J=Math.min(J,dV.minX),VV=Math.min(VV,dV.minY),RV=Math.max(RV,dV.maxX),UV=Math.max(UV,dV.maxY)}let ZV=RV-J,WV=UV-VV;return ZV<0&&(ZV=0),WV<0&&(WV=0),{minX:J,minY:VV,maxX:RV,maxY:UV,width:ZV,height:WV}}function getRelativeDirection(lV,J){const VV=J.x-lV.x,RV=J.y-lV.y;return Math.abs(VV)>Math.abs(RV)?VV>=0?"right":"left":RV>=0?"up":"down"}var portProps=z$1.object({name:z$1.string().optional(),pinNumber:z$1.number().optional(),aliases:z$1.array(z$1.string()).optional()}),Port=class extends PrimitiveComponent{constructor(J,VV={}){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);MI(this,"source_port_id",null);MI(this,"pcb_port_id",null);MI(this,"schematic_port_id",null);MI(this,"schematicSymbolPortDef",null);MI(this,"matchedComponents");MI(this,"facingDirection",null);MI(this,"originDescription",null);VV.originDescription&&(this.originDescription=VV.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:portProps}}_getGlobalPcbPositionBeforeLayout(){const J=this.matchedComponents.find(VV=>VV.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,VV=J.pcb_port.get(this.pcb_port_id);return{center:{x:VV.x,y:VV.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getGlobalSchematicPositionBeforeLayout(){var RV,UV;const J=(RV=this.parent)==null?void 0:RV.getSchematicSymbol();if(J&&this.schematicSymbolPortDef){const ZV=compose(this.parent.computeSchematicGlobalTransform(),translate(-J.center.x,-J.center.y));return applyToPoint(ZV,this.schematicSymbolPortDef)}const VV=(UV=this==null?void 0:this.parent)==null?void 0:UV._getSchematicBoxDimensions();if(VV&&this.props.pinNumber!==void 0){const ZV=VV.getPortPositionByPinNumber(this.props.pinNumber);return ZV?applyToPoint(this.parent.computeSchematicGlobalTransform(),ZV):{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 VV=J.schematic_port.get(this.schematic_port_id);if(!VV)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return VV.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(RV=>RV._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var ZV;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this.getNameAndAliases(),UV=J.source_port.insert({name:VV.name,pin_number:VV.pinNumber,port_hints:RV,source_component_id:(ZV=this.parent)==null?void 0:ZV.source_component_id});this.source_port_id=UV.source_port_id}doInitialSourceParentAttachment(){var VV,RV,UV,ZV;const{db:J}=this.root;if(!((VV=this.parent)!=null&&VV.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(RV=this.parent)==null?void 0:RV.getString()})`);J.source_port.update(this.source_port_id,{source_component_id:(UV=this.parent)==null?void 0:UV.source_component_id}),this.source_component_id=(ZV=this.parent)==null?void 0:ZV.source_component_id}doInitialPcbPortRender(){var ZV,WV,IV,dV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{matchedComponents:VV}=this;if(!((WV=this.parent)!=null&&WV.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(IV=this.parent)==null?void 0:IV.getString()})`);const RV=VV.filter(CV=>CV.isPcbPrimitive);if(RV.length===0)return;if(RV.length>1)throw new Error(`${this.getString()} has multiple pcb matches, unclear how to place pcb_port: ${RV.map(CV=>CV.getString()).join(", ")}`);const UV=RV[0];if("_getPcbCircuitJsonBounds"in UV){const CV=J.pcb_port.insert({pcb_component_id:(dV=this.parent)==null?void 0:dV.pcb_component_id,layers:this.getAvailablePcbLayers(),...UV._getPcbCircuitJsonBounds().center,source_port_id:this.source_port_id});this.pcb_port_id=CV.pcb_port_id}else throw new Error(`${UV.getString()} does not have a _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}doInitialSchematicPortRender(){var NV;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this.getPrimitiveContainer();if(!RV)return;const UV=RV._getGlobalSchematicPositionBeforeLayout(),ZV=this._getGlobalSchematicPositionBeforeLayout();let WV=null;const IV=RV._getSchematicBoxDimensions();IV&&VV.pinNumber!==void 0&&(WV=IV.getPortPositionByPinNumber(VV.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&J.schematic_debug_object.insert({shape:"rect",center:ZV,size:{width:.1,height:.1},label:"obstacle"}),WV!=null&&WV.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[WV.side]:this.facingDirection=getRelativeDirection(UV,ZV);const dV=J.source_port.get(this.source_port_id);let CV;for(const gV of(dV==null?void 0:dV.port_hints)??[])gV.match(/^(pin)?\d+$/)||(CV=gV);const FV=J.schematic_port.insert({schematic_component_id:(NV=this.parent)==null?void 0:NV.schematic_component_id,center:ZV,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:WV==null?void 0:WV.side,pin_number:VV.pinNumber,true_ccw_index:WV==null?void 0:WV.trueIndex,display_pin_label:CV});this.schematic_port_id=FV.schematic_port_id}_setPositionFromLayout(J){const{db:VV}=this.root;this.pcb_port_id&&VV.pcb_port.update(this.pcb_port_id,{x:J.x,y:J.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(J=>J.isPcbPrimitive)}},getPinNumberFromLabels=lV=>{const J=lV.find(VV=>/^(pin)?\d+$/.test(VV));return J?Number.parseInt(J.replace(/^pin/,"")):null};function getPortFromHints(lV){const J=getPinNumberFromLabels(lV);return J?new Port({pinNumber:J,aliases:lV.filter(VV=>VV.toString()!==J.toString()&&VV!==`pin${J}`)}):null}var hasExplicitPinMapping=lV=>{for(const J of["leftSide","rightSide","topSide","bottomSide"])if(J in lV&&typeof lV[J]=="number")throw new Error(`A number was specified for "${J}", you probably meant to use "size" not "side"`);return"leftSide"in lV||"rightSide"in lV||"topSide"in lV||"bottomSide"in lV},getSizeOfSidesFromPortArrangement=lV=>{var ZV,WV,IV,dV;if(hasExplicitPinMapping(lV))return{leftSize:((ZV=lV.leftSide)==null?void 0:ZV.pins.length)??0,rightSize:((WV=lV.rightSide)==null?void 0:WV.pins.length)??0,topSize:((IV=lV.topSide)==null?void 0:IV.pins.length)??0,bottomSize:((dV=lV.bottomSide)==null?void 0:dV.pins.length)??0};const{leftSize:J=0,rightSize:VV=0,topSize:RV=0,bottomSize:UV=0}=lV;return{leftSize:J,rightSize:VV,topSize:RV,bottomSize:UV}};function isExplicitPinMappingArrangement(lV){return lV.leftSide!==void 0}var getAllDimensionsForSchematicBox=lV=>{var aV,GV,cV,TV,iV,tV,MV,AV;const J=lV.portDistanceFromEdge??.4;let VV=lV.schPortArrangement?getSizeOfSidesFromPortArrangement(lV.schPortArrangement):null;const RV={left:0,right:0,top:0,bottom:0};let UV=lV.pinCount??null;if(UV===null)if(VV)UV=VV.leftSize+VV.rightSize+VV.topSize;else throw new Error("Could not determine pin count for the schematic box");if(UV&&!VV){const pV=Math.floor(UV/2);VV={leftSize:UV-pV,rightSize:pV,topSize:0,bottomSize:0}}VV||(VV={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const ZV=({side:pV,sideIndex:HV,truePinIndex:oV})=>{var nl,Il,LV,OV;if(!lV.schPortArrangement||!isExplicitPinMappingArrangement(lV.schPortArrangement))return oV+1;const DV={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[pV],wV=((Il=(nl=lV.schPortArrangement)==null?void 0:nl[`${pV}Side`])==null?void 0:Il.direction)??DV,_V=(OV=(LV=lV.schPortArrangement)==null?void 0:LV[`${pV}Side`])==null?void 0:OV.pins;let dl=HV;return wV!==DV&&(dl=_V.length-HV-1),parsePinNumberFromLabelsOrThrow(_V[dl],lV.pinLabels)},WV=[];let IV=0,dV=0;for(let pV=0;pV<VV.leftSize;pV++){const HV=ZV({side:"left",sideIndex:pV,truePinIndex:dV}),oV=((aV=lV.numericSchPinStyle)==null?void 0:aV[`pin${HV}`])??((GV=lV.numericSchPinStyle)==null?void 0:GV[HV]);oV!=null&&oV.topMargin&&(IV+=oV.topMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"left",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.bottomMargin&&(IV+=oV.bottomMargin),pV===VV.leftSize-1?RV.left=IV:IV+=lV.schPinSpacing,dV++}IV=0;for(let pV=0;pV<VV.bottomSize;pV++){const HV=ZV({side:"bottom",sideIndex:pV,truePinIndex:dV}),oV=((cV=lV.numericSchPinStyle)==null?void 0:cV[`pin${HV}`])??((TV=lV.numericSchPinStyle)==null?void 0:TV[HV]);oV!=null&&oV.leftMargin&&(IV+=oV.leftMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"bottom",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.rightMargin&&(IV+=oV.rightMargin),pV===VV.bottomSize-1?RV.bottom=IV:IV+=lV.schPinSpacing,dV++}IV=0;for(let pV=0;pV<VV.rightSize;pV++){const HV=ZV({side:"right",sideIndex:pV,truePinIndex:dV}),oV=((iV=lV.numericSchPinStyle)==null?void 0:iV[`pin${HV}`])??((tV=lV.numericSchPinStyle)==null?void 0:tV[HV]);oV!=null&&oV.bottomMargin&&(IV+=oV.bottomMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"right",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.topMargin&&(IV+=oV.topMargin),pV===VV.rightSize-1?RV.right=IV:IV+=lV.schPinSpacing,dV++}IV=0;for(let pV=0;pV<VV.topSize;pV++){const HV=ZV({side:"top",sideIndex:pV,truePinIndex:dV}),oV=((MV=lV.numericSchPinStyle)==null?void 0:MV[`pin${HV}`])??((AV=lV.numericSchPinStyle)==null?void 0:AV[HV]);oV!=null&&oV.rightMargin&&(IV+=oV.rightMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"top",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.leftMargin&&(IV+=oV.leftMargin),pV===VV.topSize-1?RV.top=IV:IV+=lV.schPinSpacing,dV++}let CV=lV.schWidth;CV||(CV=Math.max(RV.top+lV.schPinSpacing*2,RV.bottom+lV.schPinSpacing*2));const FV=lV.pinLabels?Math.max(...Object.values(lV.pinLabels).map(pV=>pV.length*.1)):0,NV=FV>0?1.1:0;CV=Math.max(CV,FV+NV);let gV=lV.schHeight;gV||(gV=Math.max(RV.left+lV.schPinSpacing*2,RV.right+lV.schPinSpacing*2));const eV={left:{x:-CV/2-J,y:RV.left/2},bottom:{x:-RV.bottom/2,y:-gV/2-J},right:{x:CV/2+J,y:-RV.right/2},top:{x:RV.top/2,y:gV/2+J}},JV={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},nV=WV.map(pV=>{const{distanceFromOrthogonalEdge:HV,side:oV}=pV,DV=eV[oV],wV=JV[oV];return{x:DV.x+HV*wV.x,y:DV.y+HV*wV.y,...pV}});return{getPortPositionByPinNumber(pV){const HV=nV.find(oV=>oV.pinNumber.toString()===pV.toString());return HV||null},getSize(){return{width:CV,height:gV}},pinCount:UV}},debug$6=Debug$1("tscircuit:core:footprint"),Footprint=class extends PrimitiveComponent{get config(){return{componentName:"Footprint",zodProps:footprintProps}}doInitialPcbFootprintLayout(){var NV,gV,eV,JV,nV;if((NV=this.root)!=null&&NV.pcbDisabled)return;const lV=this.children.filter(aV=>aV.componentName==="Constraint");if(lV.length===0)return;const{isFlipped:J}=this._getPcbPrimitiveFlippedHelpers(),VV=aV=>J&&"left"in aV&&"right"in aV?{...aV,left:aV.right,right:aV.left}:aV,RV=lV.flatMap(aV=>aV._getAllReferencedComponents().componentsWithSelectors).map(({component:aV,selector:GV,componentSelector:cV,edge:TV})=>({component:aV,selector:GV,componentSelector:cV,edge:TV,bounds:aV._getPcbCircuitJsonBounds()}));if(RV.some(aV=>aV.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function UV(aV){return RV.find(({selector:GV})=>GV===aV)}const ZV=new Solver,WV={};function IV(aV){return aV in WV||(WV[aV]=new Variable(aV),ZV.addEditVariable(WV[aV],Strength.weak)),WV[aV]}for(const{selector:aV,bounds:GV}of RV){const cV=IV(`${aV}_x`),TV=IV(`${aV}_y`);ZV.suggestValue(cV,GV.center.x),ZV.suggestValue(TV,GV.center.y)}for(const aV of lV){const GV=aV._parsedProps;if("xDist"in GV){const{xDist:cV,left:TV,right:iV,edgeToEdge:tV,centerToCenter:MV}=VV(GV),AV=IV(`${TV}_x`),pV=IV(`${iV}_x`),HV=(gV=UV(TV))==null?void 0:gV.bounds,oV=(eV=UV(iV))==null?void 0:eV.bounds;if(MV){const DV=new Expression(pV,[-1,AV]);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.xDist,Strength.required))}else if(tV){const DV=new Expression(pV,-oV.width/2,[-1,AV],-HV.width/2);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.xDist,Strength.required))}}else if("yDist"in GV){const{yDist:cV,top:TV,bottom:iV,edgeToEdge:tV,centerToCenter:MV}=GV,AV=IV(`${TV}_y`),pV=IV(`${iV}_y`),HV=(JV=UV(TV))==null?void 0:JV.bounds,oV=(nV=UV(iV))==null?void 0:nV.bounds;if(MV){const DV=new Expression(AV,[-1,pV]);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.yDist,Strength.required))}else if(tV){const DV=new Expression(AV,HV.height/2,[-1,pV],-oV.height/2);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.yDist,Strength.required))}}else if("sameY"in GV){const{for:cV}=GV;if(cV.length<2)continue;const TV=cV.map(tV=>IV(`${tV}_y`)),iV=new Expression(...TV.slice(1));ZV.addConstraint(new Constraint(iV,Operator.Eq,TV[0],Strength.required))}else if("sameX"in GV){const{for:cV}=GV;if(cV.length<2)continue;const TV=cV.map(tV=>IV(`${tV}_x`)),iV=new Expression(...TV.slice(1));ZV.addConstraint(new Constraint(iV,Operator.Eq,TV[0],Strength.required))}}ZV.updateVariables(),debug$6.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(WV).map(([aV,GV])=>({var:aV,val:GV.value()}))));const dV={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:aV,bounds:{width:GV,height:cV}}of RV){const TV=IV(`${aV}_x`),iV=IV(`${aV}_y`),tV=TV.value()-GV/2,MV=TV.value()+GV/2,AV=iV.value()+cV/2,pV=iV.value()-cV/2;dV.left=Math.min(dV.left,tV),dV.right=Math.max(dV.right,MV),dV.top=Math.max(dV.top,AV),dV.bottom=Math.min(dV.bottom,pV)}const CV={x:-(dV.right+dV.left)/2,y:-(dV.top+dV.bottom)/2},FV=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();CV.x+=FV.x,CV.y+=FV.y;for(const{component:aV,selector:GV}of RV){const cV=IV(`${GV}_x`),TV=IV(`${GV}_y`);aV._setPositionFromLayout({x:cV.value()+CV.x,y:TV.value()+CV.y})}}},getNumericSchPinStyle=(lV,J)=>{if(!lV)return;const VV={};for(const[RV,UV]of Object.entries(lV)){const ZV=parsePinNumberFromLabelsOrThrow(RV,J);VV[`pin${ZV}`]={...VV[`pin${ZV}`],...UV}}return VV},debug2$1=Debug$1("tscircuit:core"),rotation3=z$1.object({x:rotation$3,y:rotation$3,z:rotation$3}),NormalComponent=class extends PrimitiveComponent{constructor(J){super(J);MI(this,"reactSubtrees",[]);MI(this,"_impliedFootprint");MI(this,"isPrimitiveContainer",!0);MI(this,"_asyncSupplierPartNumbers");MI(this,"pcb_missing_footprint_error_id");this._addChildrenFromStringFootprint(),this.initPorts()}initPorts(J={}){var WV,IV,dV,CV,FV,NV,gV,eV,JV,nV,aV,GV,cV,TV;if((WV=this.root)!=null&&WV.schematicDisabled)return;const{config:VV}=this,RV=[],UV=this._parsedProps.schPortArrangement;if(UV&&!this._parsedProps.pinLabels){for(const MV in UV){const AV=UV[MV].pins;if(Array.isArray(AV))for(const pV of AV){const HV=parsePinNumberFromLabelsOrThrow(pV,this._parsedProps.pinLabels);RV.push(new Port({pinNumber:HV,aliases:((IV=J.additionalAliases)==null?void 0:IV[`pin${HV}`])??[]},{originDescription:`schPortArrangement:${MV}`}))}}const iV=["left","right","top","bottom"];let tV=1;for(const MV of iV){const AV=UV[`${MV}Size`];for(let pV=0;pV<AV;pV++)RV.push(new Port({pinNumber:tV++,aliases:((dV=J.additionalAliases)==null?void 0:dV[`pin${tV}`])??[]},{originDescription:`schPortArrangement:${MV}`}))}}const ZV=this._parsedProps.pinLabels;if(ZV)for(let[iV,tV]of Object.entries(ZV)){iV=iV.replace("pin","");let MV=RV.find(HV=>HV._parsedProps.pinNumber===Number(iV));const AV=Array.isArray(tV)?tV[0]:tV,pV=Array.isArray(tV)?tV.slice(1):[];MV?(MV.externallyAddedAliases.push(AV,...pV),MV.props.name=AV):(MV=new Port({pinNumber:parseInt(iV),name:AV,aliases:[...pV,...((CV=J.additionalAliases)==null?void 0:CV[`pin${parseInt(iV)}`])??[]]},{originDescription:`pinLabels:pin${iV}`}),RV.push(MV))}if(VV.schematicSymbolName){const iV=symbols_index_default[this._getSchematicSymbolNameOrThrow()];if(!iV)return;for(const tV of iV.ports){const MV=getPinNumberFromLabels(tV.labels);if(!MV)continue;const AV=getPortFromHints(tV.labels.concat(((FV=J.additionalAliases)==null?void 0:FV[`pin${MV}`])??[]));AV&&(AV.originDescription=`schematicSymbol:labels[0]:${tV.labels[0]}`,AV.schematicSymbolPortDef=tV,RV.push(AV))}this.addAll(RV);return}if(!this._parsedProps.schPortArrangement){const iV=this.getPortsFromFootprint();for(const tV of iV)RV.some(MV=>MV.isMatchingAnyOf(tV.getNameAndAliases()))||RV.push(tV)}for(let iV=1;iV<=this._getPinCount();iV++){if(!this._parsedProps.schPortArrangement||RV.find(MV=>MV._parsedProps.pinNumber===iV))continue;let tV=[...((gV=(NV=this._parsedProps.schPortArrangement)==null?void 0:NV.leftSide)==null?void 0:gV.pins)??[],...((JV=(eV=this._parsedProps.schPortArrangement)==null?void 0:eV.rightSide)==null?void 0:JV.pins)??[],...((aV=(nV=this._parsedProps.schPortArrangement)==null?void 0:nV.topSide)==null?void 0:aV.pins)??[],...((cV=(GV=this._parsedProps.schPortArrangement)==null?void 0:GV.bottomSide)==null?void 0:cV.pins)??[]].map(MV=>parsePinNumberFromLabelsOrThrow(MV,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(MV=>MV in this._parsedProps.schPortArrangement)&&(tV=Array.from({length:this._getPinCount()},(MV,AV)=>AV+1)),tV.includes(iV)&&RV.push(new Port({pinNumber:iV,aliases:((TV=J.additionalAliases)==null?void 0:TV[`pin${iV}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${iV}`}))}RV.length>0&&this.addAll(RV)}_getImpliedFootprintString(){return null}_addChildrenFromStringFootprint(){var VV;let{footprint:J}=this.props;if(J??(J=(VV=this._getImpliedFootprintString)==null?void 0:VV.call(this)),!!J&&typeof J=="string"){const RV=fp$1.string(J).soup(),UV=createComponentsFromSoup(RV);this.addAll(UV)}}get portMap(){return new Proxy({},{get:(J,VV)=>{const RV=this.children.find(UV=>UV.componentName==="Port"&&UV.isMatchingNameOrAlias(VV));if(!RV)throw new Error(`There was an issue finding the port "${VV.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return RV}})}getInstanceForReactElement(J){for(const VV of this.reactSubtrees)if(VV.element===J)return VV.component;return null}doInitialSourceRender(){const J=this.config.sourceFtype;if(!J)return;const{db:VV}=this.root,{_parsedProps:RV}=this,UV=VV.source_component.insert({ftype:J,name:RV.name,manufacturer_part_number:RV.manufacturerPartNumber??RV.mfn,supplier_part_numbers:RV.supplierPartNumbers});this.source_component_id=UV.source_component_id}doInitialSchematicComponentRender(){var RV;if((RV=this.root)!=null&&RV.schematicDisabled)return;const{schematicSymbolName:J}=this.config;if(J)return this._doInitialSchematicComponentRenderWithSymbol();if(this._getSchematicBoxDimensions())return this._doInitialSchematicComponentRenderWithSchematicBoxDimensions()}_getSchematicSymbolDisplayValue(){}_doInitialSchematicComponentRenderWithSymbol(){var WV;if((WV=this.root)!=null&&WV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getSchematicSymbolNameOrThrow(),UV=symbols_index_default[RV],ZV=this._getGlobalSchematicPositionBeforeLayout();if(UV){const IV=J.schematic_component.insert({center:ZV,rotation:VV.schRotation??0,size:UV.size,source_component_id:this.source_component_id,symbol_name:RV,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=IV.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var FV,NV,gV;if((FV=this.root)!=null&&FV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getSchematicBoxDimensions(),UV={};if(Array.isArray(VV.pinLabels))VV.pinLabels.forEach((eV,JV)=>{UV[String(JV+1)]=eV});else for(const[eV,JV]of Object.entries(VV.pinLabels??{}))UV[eV]=Array.isArray(JV)?JV[0]:JV;const ZV=this._getGlobalSchematicPositionBeforeLayout(),WV=J.schematic_component.insert({center:ZV,rotation:VV.schRotation??0,size:RV.getSize(),port_arrangement:underscorifyPortArrangement(VV.schPortArrangement),pin_spacing:VV.schPinSpacing??.2,pin_styles:underscorifyPinStyles(VV.schPinStyle,VV.pinLabels),port_labels:UV,source_component_id:this.source_component_id}),IV=((NV=VV.schPortArrangement)==null?void 0:NV.topSide)!==void 0||((gV=VV.schPortArrangement)==null?void 0:gV.bottomSide)!==void 0,dV=RV==null?void 0:RV.getSize().width,CV=RV==null?void 0:RV.getSize().height;J.schematic_text.insert({text:VV.manufacturerPartNumber??"",schematic_component_id:WV.schematic_component_id,anchor:"left",rotation:0,position:{x:IV?ZV.x+(dV??0)/2+.1:ZV.x-(dV??0)/2,y:IV?ZV.y+(CV??0)/2+.35:ZV.y-(CV??0)/2-.13},color:"#006464"}),J.schematic_text.insert({text:VV.name??"",schematic_component_id:WV.schematic_component_id,anchor:"left",rotation:0,position:{x:IV?ZV.x+(dV??0)/2+.1:ZV.x-(dV??0)/2,y:IV?ZV.y+(CV??0)/2+.55:ZV.y+(CV??0)/2+.13},color:"#006464"}),this.schematic_component_id=WV.schematic_component_id}doInitialPcbComponentRender(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:VV.layer??"top",rotation:VV.pcbRotation??0,source_component_id:this.source_component_id});if(!VV.footprint&&!this.isGroup){const WV=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=WV.pcb_missing_footprint_error_id}this.pcb_component_id=RV.pcb_component_id;const UV=this.getSubcircuit()._getPcbManualPlacementForComponent(this);this.props.pcbX!==void 0&&this.props.pcbY!==void 0&&UV&&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 UV;if((UV=this.root)!=null&&UV.pcbDisabled||!this.pcb_component_id)return;const{db:J}=this.root,VV=getBoundsOfPcbComponents(this.children);if(VV.width===0||VV.height===0)return;const RV={x:(VV.minX+VV.maxX)/2,y:(VV.minY+VV.maxY)/2};J.pcb_component.update(this.pcb_component_id,{center:RV,width:VV.width,height:VV.height})}_renderReactSubtree(J){return{element:J,component:createInstanceFromReactElement(J)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){if(reactExports.isValidElement(this.props.footprint)){if(this.reactSubtrees.some(VV=>VV.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(RV=>RV.componentName==="Port").some(RV=>{const UV=J.getNameAndAliases(),ZV=RV.getNameAndAliases();return UV.length===ZV.length&&UV.every(WV=>ZV.includes(WV))})}add(J){let VV;if(reactExports.isValidElement(J)){const RV=this._renderReactSubtree(J);this.reactSubtrees.push(RV),VV=RV.component}else VV=J;if(VV.componentName==="Port"){if(this._hasExistingPortExactly(VV))return;const UV=this.children.filter(ZV=>ZV.componentName==="Port").find(ZV=>ZV.isMatchingAnyOf(VV.getNameAndAliases()));UV&&debug2$1(`Similar ports added. Port 1: ${UV}, Port 2: ${VV}`)}super.add(VV)}getPortsFromFootprint(){let{footprint:J}=this.props;if((!J||reactExports.isValidElement(J))&&(J=this.children.find(RV=>RV.componentName==="Footprint")),typeof J=="string"){const RV=fp$1.string(J).soup(),UV=[];for(const ZV of RV)if("port_hints"in ZV&&ZV.port_hints){const WV=getPortFromHints(ZV.port_hints);if(!WV)continue;WV.originDescription=`footprint:string:${J}:port_hints[0]:${ZV.port_hints[0]}`,UV.push(WV)}return UV}if(!reactExports.isValidElement(J)&&J&&J.componentName==="Footprint"){const RV=J;let UV=1;const ZV=[];for(const WV of RV.children){if(!WV.props.portHints)continue;let IV=WV.props.portHints;IV.some(FV=>FV.startsWith("pin"))||(IV=[...IV,`pin${UV}`]),UV++;const CV=getPortFromHints(IV);CV&&(CV.originDescription=`footprint:${J}`,ZV.push(CV))}return ZV}const VV=[];if(!J){for(const RV of this.children)if(RV.props.portHints&&RV.isPcbPrimitive){const UV=getPortFromHints(RV.props.portHints);UV&&VV.push(UV)}}return VV}getPortsFromSchematicSymbol(){var UV;if((UV=this.root)!=null&&UV.schematicDisabled)return[];const{config:J}=this;if(!J.schematicSymbolName)return[];const VV=symbols_index_default[J.schematicSymbolName];if(!VV)return[];const RV=[];for(const ZV of VV.ports){const WV=getPortFromHints(ZV.labels);WV&&(WV.schematicSymbolPortDef=ZV,RV.push(WV))}return RV}_createNetsFromProps(J){createNetsFromProps(this,J)}doInitialPortDiscovery(){const{_parsedProps:J}=this;let VV=[];J.schPortArrangement||(VV=[...this.getPortsFromFootprint(),...this.getPortsFromSchematicSymbol()]);const RV=this.children.filter(UV=>UV.componentName==="Port");for(const UV of VV){const ZV=RV.find(WV=>WV.isMatchingAnyOf(UV.getNameAndAliases()));if(ZV){!ZV.schematicSymbolPortDef&&UV.schematicSymbolPortDef&&(ZV.schematicSymbolPortDef=UV.schematicSymbolPortDef);continue}RV.push(UV),this.add(UV)}}_getPcbCircuitJsonBounds(){const{db:J}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const VV=J.pcb_component.get(this.pcb_component_id);return{center:{x:VV.center.x,y:VV.center.y},bounds:{left:VV.center.x-VV.width/2,top:VV.center.y-VV.height/2,right:VV.center.x+VV.width/2,bottom:VV.center.y+VV.height/2},width:VV.width,height:VV.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:RV,rightSide:UV,topSide:ZV,bottomSide:WV}=J;return Math.max(...(RV==null?void 0:RV.pins)??[],...(UV==null?void 0:UV.pins)??[],...(ZV==null?void 0:ZV.pins)??[],...(WV==null?void 0:WV.pins)??[])}return this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:J}=this,VV=this._getPinCount(),RV=J.schPinSpacing??.2;return getAllDimensionsForSchematicBox({schWidth:J.schWidth,schHeight:J.schHeight,schPinSpacing:RV,numericSchPinStyle:getNumericSchPinStyle(J.schPinStyle,J.pinLabels),pinCount:VV,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:J.pinLabels})}doInitialCadModelRender(){var CV;const{db:J}=this.root,{boardThickness:VV=0}=((CV=this.root)==null?void 0:CV._getBoard())??{},RV=this._parsedProps.cadModel;if(!this.pcb_component_id||!RV&&!this.props.footprint)return;const UV=this._getPcbCircuitJsonBounds(),ZV=J.pcb_component.get(this.pcb_component_id);if(typeof RV=="string")throw new Error("String cadModel not yet implemented");const WV=rotation3.parse({x:0,y:0,z:typeof(RV==null?void 0:RV.rotationOffset)=="number"?RV.rotationOffset:0,...typeof(RV==null?void 0:RV.rotationOffset)=="object"?RV.rotationOffset??{}:{}}),IV=point3$2.parse({x:0,y:0,z:0,...typeof(RV==null?void 0:RV.positionOffset)=="object"?RV.positionOffset:{}}),dV=this.props.layer==="bottom"?"bottom":"top";J.cad_component.insert({position:{x:UV.center.x+IV.x,y:UV.center.y+IV.y,z:(dV==="bottom"?-VV/2:VV/2)+IV.z},rotation:{x:WV.x,y:(dV==="top"?0:180)+WV.y,z:((ZV==null?void 0:ZV.rotation)??0)+(dV==="bottom"?180:0)+WV.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(RV??{})?this._addCachebustToModelUrl(RV.stlUrl):void 0,model_obj_url:"objUrl"in(RV??{})?this._addCachebustToModelUrl(RV.objUrl):void 0,model_jscad:"jscad"in(RV??{})?RV.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!RV?this.props.footprint:void 0})}_addCachebustToModelUrl(J){var RV;if(!J||!J.includes("modelcdn.tscircuit.com"))return J;const VV=((RV=this.root)==null?void 0:RV.getClientOrigin())??"";return`${J}${J.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(VV)}`}doInitialPartsEngineRender(){const{partsEngine:J}=this.getSubcircuit()._parsedProps;if(!J)return;const{db:VV}=this.root,RV=VV.source_component.get(this.source_component_id);if(!RV||RV.supplier_part_numbers)return;let UV;this.props.footprint&&typeof this.props.footprint=="string"&&(UV=this.props.footprint);const ZV=J.findPart({sourceComponent:RV,footprinterString:UV});if(!(ZV instanceof Promise)){VV.source_component.update(this.source_component_id,{supplier_part_numbers:ZV});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await ZV,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){const{db:J}=this.root,VV=J.source_component.get(this.source_component_id);if(VV&&!VV.supplier_part_numbers&&this._asyncSupplierPartNumbers){J.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}},TraceHint=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:traceHintProps}}doInitialPortMatching(){this.root;const{_parsedProps:J,parent:VV}=this;if(!VV)return;if(VV.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!VV)throw new Error("TraceHint has no parent");if(!J.for){this.renderError(`TraceHint has no for property (${this})`);return}const RV=VV.selectOne(J.for,{type:"port"});RV||this.renderError(`${this} could not find port for selector "${J.for}"`),this.matchedPort=RV,RV.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:J}=this,VV=J.offset?[J.offset]:J.offsets;if(!VV)return[];const RV=this._computePcbGlobalTransformBeforeLayout();return VV.map(UV=>({...applyToPoint(RV,UV),via:UV.via,to_layer:UV.to_layer,trace_width:UV.trace_width}))}doInitialPcbTraceHintRender(){var VV,RV,UV;if((VV=this.root)!=null&&VV.pcbDisabled)return;const{db:J}=this.root;J.pcb_trace_hint.insert({pcb_component_id:(RV=this.matchedPort)==null?void 0:RV.pcb_component_id,pcb_port_id:(UV=this.matchedPort)==null?void 0:UV.pcb_port_id,route:this.getPcbRouteHints()})}},getSimpleRouteJsonFromTracesAndDb=({db:lV,traces:J,minTraceWidth:VV=.1})=>{const UV=getObstaclesFromSoup([...lV.pcb_component.list(),...lV.pcb_smtpad.list(),...lV.pcb_plated_hole.list()]).flatMap(IV=>[{x:IV.center.x-IV.width/2,y:IV.center.y-IV.height/2},{x:IV.center.x+IV.width/2,y:IV.center.y+IV.height/2}]),ZV={minX:Math.min(...UV.map(IV=>IV.x))-1,maxX:Math.max(...UV.map(IV=>IV.x))+1,minY:Math.min(...UV.map(IV=>IV.y))-1,maxY:Math.max(...UV.map(IV=>IV.y))+1},WV=J.map(IV=>{const dV=IV._findConnectedPorts();return!dV.allPortsFound||dV.ports.length<2?null:{name:IV.source_trace_id??"",pointsToConnect:dV.ports.map(CV=>{const FV=CV._getGlobalPcbPositionBeforeLayout();return{x:FV.x,y:FV.y,layer:CV.getAvailablePcbLayers()[0]??"top"}})}}).filter(IV=>IV!==null);return{bounds:ZV,obstacles:[],connections:WV,layerCount:2,minTraceWidth:VV}},Group$2=class extends NormalComponent{constructor(){super(...arguments);MI(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:groupProps,componentName:"Group"}}doInitialCreateTraceHintsFromProps(){var ZV;const{_parsedProps:VV}=this;this.root;const RV=VV;if(!this.isSubcircuit)return;const UV=(ZV=RV.layout)==null?void 0:ZV.manual_trace_hints;if(UV)for(const WV of UV)this.add(new TraceHint({for:WV.pcb_port_selector,offsets:WV.offsets}))}_getSimpleRouteJsonFromPcbTraces(){const VV=this.selectAll("trace"),{db:RV}=this.root;return getSimpleRouteJsonFromTracesAndDb({db:RV,traces:VV,minTraceWidth:this._parsedProps.minTraceWidth??.1})}doInitialSourceAddConnectivityMapKey(){if(!this.isSubcircuit)return;const{db:VV}=this.root,RV=this.selectAll("trace"),UV=new ConnectivityMap$1({});UV.addConnections(RV.map(ZV=>{const WV=VV.source_trace.get(ZV.source_trace_id);return WV?[WV.source_trace_id,...WV.connected_source_port_ids,...WV.connected_source_net_ids]:null}).filter(ZV=>ZV!==null));for(const ZV of RV){if(!ZV.source_trace_id)continue;const WV=UV.getNetConnectedToId(ZV.source_trace_id);if(!WV)continue;const{name:IV}=this._parsedProps;ZV.subcircuit_connectivity_map_key=`${IV??`unnamedsubcircuit${this._renderId}`}_${WV}`,VV.source_trace.update(ZV.source_trace_id,{subcircuit_connectivity_map_key:ZV.subcircuit_connectivity_map_key})}}doInitialPcbTraceRender(){var WV,IV,dV;if((WV=this.root)!=null&&WV.pcbDisabled||this._shouldUseTraceByTraceRouting())return;const VV=((IV=this.props.autorouter)==null?void 0:IV.serverUrl)??"https://registry-api.tscircuit.com",RV=((dV=this.props.autorouter)==null?void 0:dV.serverMode)??"job",UV=Debug$1("tscircuit:core:autorouting"),ZV=(CV,FV)=>(UV("fetching",CV),fetch(CV,FV));this._queueAsyncEffect("make-http-autorouting-request",async()=>{var FV,NV;if(RV==="solve-endpoint"){if(((FV=this.props.autorouter)==null?void 0:FV.inputFormat)==="simplified"){const{autorouting_result:eV}=await ZV(`${VV}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:this._getSimpleRouteJsonFromPcbTraces()}),headers:{"Content-Type":"application/json"}}).then(JV=>JV.json());this._asyncAutoroutingResult=eV,this._markDirty("PcbTraceRender");return}const{autorouting_result:gV}=await ZV(`${VV}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:this.root.db.toArray()}),headers:{"Content-Type":"application/json"}}).then(eV=>eV.json());this._asyncAutoroutingResult=gV,this._markDirty("PcbTraceRender");return}const{autorouting_job:CV}=await ZV(`${VV}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:this.root.db.toArray(),provider:"freerouting",autostart:!0,display_name:(NV=this.root)==null?void 0:NV.name}),headers:{"Content-Type":"application/json"}}).then(gV=>gV.json());for(;;){const{autorouting_job:gV}=await ZV(`${VV}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:CV.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(eV=>eV.json());if(gV.is_finished){const{autorouting_job_output:eV}=await ZV(`${VV}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:CV.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(JV=>JV.json());this._asyncAutoroutingResult={output_pcb_traces:eV.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(gV.has_error)throw new Error(`Autorouting job failed: ${JSON.stringify(gV.error)}`);await new Promise(eV=>setTimeout(eV,100))}})}updatePcbTraceRender(){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:VV}=this.root,{traces:RV}=this._asyncAutoroutingResult.output_simple_route_json;if(RV){this.selectAll("trace");for(const UV of RV)VV.pcb_trace.insert({route:UV.route})}}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:VV}=this._asyncAutoroutingResult;if(!VV)return;const{db:RV}=this.root;for(const UV of VV)RV.pcb_trace.insert(UV)}doInitialSchematicLayout(){if(!this.isSubcircuit||!this._parsedProps.schAutoLayoutEnabled)return;const{db:RV}=this.root,UV=this.getDescendants(),ZV=[];for(const dV of UV)if("schematic_component_id"in dV){const CV=RV.schematic_component.get(dV.schematic_component_id);if(CV){const FV=RV.schematic_port.list().filter(NV=>NV.schematic_component_id===CV.schematic_component_id);ZV.push(...FV)}}const WV=convertSoupToScene(RV.toArray()),IV=ascendingCentralLrBug1(WV);mutateSoupForScene(RV.toArray(),IV)}_shouldUseTraceByTraceRouting(){const VV=this._parsedProps;return VV.autorouter==="auto-local"||VV.autorouter==="sequential-trace"?!0:!VV.autorouter}},Board=class extends Group$2{constructor(){super(...arguments);MI(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 UV;if((UV=this.root)!=null&&UV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this;if(!VV.width||!VV.height)throw new Error("Board width and height or an outline are required");const RV=J.pcb_board.insert({center:{x:VV.pcbX??0,y:VV.pcbY??0},thickness:this.boardThickness,num_layers:this.allLayers.length,width:VV.width,height:VV.height,outline:VV.outline});this.pcb_board_id=RV.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$4()}},stringProxy=new Proxy({},{get:(lV,J)=>J}),FTYPE=stringProxy,DirectLineRouter=class{constructor({input:lV}){MI(this,"input");this.input=lV}solveAndMapToTraces(){const lV=[];for(const J of this.input.connections){if(J.pointsToConnect.length!==2)continue;const[VV,RV]=J.pointsToConnect,UV={type:"pcb_trace",pcb_trace_id:"",route:[{route_type:"wire",x:VV.x,y:VV.y,layer:"top",width:.1},{route_type:"wire",x:RV.x,y:RV.y,layer:"top",width:.1}]};lV.push(UV)}return lV}},computeObstacleBounds=lV=>{const J=Math.min(...lV.map(ZV=>ZV.center.x)),VV=Math.max(...lV.map(ZV=>ZV.center.x)),RV=Math.min(...lV.map(ZV=>ZV.center.y)),UV=Math.max(...lV.map(ZV=>ZV.center.y));return{minX:J,maxX:VV,minY:RV,maxY:UV}},LAYER_SELECTION_PREFERENCE=["top","bottom","inner1","inner2"],findPossibleTraceLayerCombinations=(lV,J=[])=>{var IV;const VV=[];if(J.length===0){const dV=lV[0].layers;for(const CV of dV)VV.push(...findPossibleTraceLayerCombinations(lV.slice(1),[CV]));return VV}if(lV.length===0)return[];const RV=lV[0],UV=RV.via||RV.optional_via,ZV=J[J.length-1];if(lV.length===1){const dV=RV;return dV.layers&&UV?dV.layers.map(CV=>({layer_path:[...J,CV]})):(IV=dV.layers)!=null&&IV.includes(ZV)?[{layer_path:[...J,ZV]}]:[]}if(!UV)return RV.layers&&!RV.layers.includes(ZV)?[]:findPossibleTraceLayerCombinations(lV.slice(1),J.concat([ZV]));const WV=(RV.optional_via?LAYER_SELECTION_PREFERENCE:LAYER_SELECTION_PREFERENCE.filter(dV=>dV!==ZV)).filter(dV=>{var CV;return!RV.layers||((CV=RV.layers)==null?void 0:CV.includes(dV))});for(const dV of WV)VV.push(...findPossibleTraceLayerCombinations(lV.slice(1),J.concat(dV)));return VV};function getDominantDirection(lV){const J={x:lV.to.x-lV.from.x,y:lV.to.y-lV.from.y},VV=Math.abs(J.x),RV=Math.abs(J.y);return VV>RV?J.x>0?"right":"left":J.y>0?"down":"up"}function pdist(lV,J){return Math.hypot(lV.x-J.x,lV.y-J.y)}var mergeRoutes=lV=>{if(lV.length===1)return lV[0];if(lV.some(dV=>dV.length===0))throw new Error("Cannot merge routes with zero length");const J=[],VV=lV[0][0],RV=lV[0][lV[0].length-1],UV=lV[1][0],ZV=lV[1][lV[1].length-1],WV=Math.min(pdist(VV,UV),pdist(VV,ZV)),IV=Math.min(pdist(RV,UV),pdist(RV,ZV));WV<IV?J.push(...lV[0].reverse()):J.push(...lV[0]);for(let dV=1;dV<lV.length;dV++){const CV=J[J.length-1],FV=lV[dV],NV=FV[0],gV=FV[FV.length-1],eV=pdist(CV,NV),JV=pdist(CV,gV);eV<JV?J.push(...FV):J.push(...FV.reverse())}for(let dV=1;dV<J.length-1;dV++){const CV=J[dV-1],FV=J[dV];CV.route_type==="wire"&&FV.route_type==="wire"&&CV.layer!==FV.layer&&J.splice(dV,0,{x:CV.x,y:CV.y,from_layer:CV.layer,to_layer:FV.layer,route_type:"via"})}return J};function getTraceLength(lV){let J=0;for(let VV=0;VV<lV.length;VV++){const RV=lV[VV];if(RV.route_type==="wire"){const UV=lV[VV+1];if(UV){const ZV=UV.x-RV.x,WV=UV.y-RV.y;J+=Math.sqrt(ZV*ZV+WV*WV)}}else RV.route_type==="via"&&(J+=1.6)}return J}var getDistance=(lV,J)=>{const VV="_getGlobalPcbPositionBeforeLayout"in lV?lV._getGlobalPcbPositionBeforeLayout():lV,RV="_getGlobalPcbPositionBeforeLayout"in J?J._getGlobalPcbPositionBeforeLayout():J;return Math.sqrt((VV.x-RV.x)**2+(VV.y-RV.y)**2)};function getClosest(lV,J){if(J.length===0)throw new Error("No candidates given to getClosest method");let VV=J[0],RV=1/0;for(const UV of J){const ZV=getDistance(lV,UV);ZV<RV&&(VV=UV,RV=ZV)}return VV}var getEnteringEdgeFromDirection=lV=>({up:"bottom",down:"top",left:"right",right:"left"})[lV]??null,getStubEdges=({firstEdge:lV,firstEdgePort:J,firstDominantDirection:VV,lastEdge:RV,lastEdgePort:UV,lastDominantDirection:ZV})=>{if(lV&&J)return getStubEdges({lastEdge:{from:lV.to,to:lV.from},lastEdgePort:J,lastDominantDirection:VV}).reverse().map(IV=>({from:IV.to,to:IV.from}));let WV=[];if(RV&&UV){const IV={x:RV.to.x,y:RV.to.y};ZV==="left"||ZV==="right"?(IV.x=UV.position.x,WV.push({from:RV.to,to:{...IV}}),WV.push({from:IV,to:{...UV.position}})):(IV.y=UV.position.y,WV.push({from:RV.to,to:{...IV}}),WV.push({from:IV,to:{...UV.position}}))}return WV=WV.filter(IV=>distance$2(IV.from,IV.to)>.01),WV};function tryNow(lV){try{return[lV(),null]}catch(J){return[null,J]}}var getOtherSchematicTraces=({db:lV,source_trace_id:J,sameNetOnly:VV,differentNetOnly:RV})=>{!VV&&!RV&&(RV=!0);const UV=lV.source_trace.get(J),ZV=[];for(const WV of lV.schematic_trace.list()){if(WV.source_trace_id===J)continue;const IV=lV.source_trace.get(WV.source_trace_id),dV=(IV==null?void 0:IV.subcircuit_connectivity_map_key)===UV.subcircuit_connectivity_map_key;RV&&dV||VV&&!dV||ZV.push(WV)}return ZV},createSchematicTraceCrossingSegments=({edges:lV,db:J,source_trace_id:VV})=>{const RV=getOtherSchematicTraces({db:J,source_trace_id:VV,differentNetOnly:!0}).flatMap(UV=>UV.edges);for(let UV=0;UV<lV.length;UV++){const ZV=lV[UV],WV=Math.abs(ZV.from.x-ZV.to.x)<.01?"vertical":"horizontal",IV=[];for(const aV of RV){const GV=aV.from.x===aV.to.x?"vertical":"horizontal";if(WV===GV)continue;if(doesLineIntersectLine$1([ZV.from,ZV.to],[aV.from,aV.to],{lineThickness:.01})){const TV=WV==="vertical"?ZV.from.x:aV.from.x,iV=WV==="vertical"?aV.from.y:ZV.from.y,tV={x:TV,y:iV};IV.push({otherEdge:aV,crossingPoint:tV,distanceFromEdgeFrom:distance$2(ZV.from,tV)})}}if(IV.length===0)continue;let dV=IV[0];for(const aV of IV)aV.distanceFromEdgeFrom<dV.distanceFromEdgeFrom&&(dV=aV);const CV=dV.crossingPoint,FV=.075,NV=getUnitVectorFromPointAToB(ZV.from,CV),gV={x:CV.x-NV.x*FV/2,y:CV.y-NV.y*FV/2},eV={x:CV.x+NV.x*FV/2,y:CV.y+NV.y*FV/2},JV=distance$2(eV,ZV.to)<FV,nV=[{from:ZV.from,to:gV},{from:gV,to:eV,is_crossing:!0},{from:eV,to:ZV.to}];lV.splice(UV,1,...nV),UV+=nV.length-2,JV&&UV++}},isOrthogonal=(lV,J)=>{const VV=lV.from.x===lV.to.x,RV=J.from.x===J.to.x;return VV!==RV},getIntersectionPoint=(lV,J)=>{if(!isOrthogonal(lV,J))return null;const VV=lV.from.x===lV.to.x,RV=VV?lV:J,UV=VV?J:lV,ZV=Math.min(UV.from.x,UV.to.x),WV=Math.max(UV.from.x,UV.to.x);if(RV.from.x<ZV||RV.from.x>WV)return null;const IV=Math.min(RV.from.y,RV.to.y),dV=Math.max(RV.from.y,RV.to.y);return UV.from.y<IV||UV.from.y>dV?null:{x:RV.from.x,y:UV.from.y}},createSchematicTraceJunctions=({edges:lV,db:J,source_trace_id:VV})=>{const RV=getOtherSchematicTraces({db:J,source_trace_id:VV,sameNetOnly:!0}).flatMap(ZV=>ZV.edges),UV=new Set;for(const ZV of lV)for(const WV of RV){const IV=getIntersectionPoint(ZV,WV);IV&&UV.add(`${IV.x},${IV.y}`)}return Array.from(UV).map(ZV=>{const[WV,IV]=ZV.split(",").map(Number);return{x:WV,y:IV}})},pushEdgesOfSchematicTraceToPreventOverlap=({edges:lV,db:J,source_trace_id:VV})=>{J.source_trace.get(VV);const RV=getOtherSchematicTraces({db:J,source_trace_id:VV,differentNetOnly:!0}).flatMap(ZV=>ZV.edges),UV=ZV=>{const{from:WV,to:IV}=ZV;return WV.x===IV.x?"vertical":"horizontal"};for(const ZV of lV){const WV=UV(ZV),IV=()=>RV.find(CV=>UV(CV)===WV&&doesLineIntersectLine$1([ZV.from,ZV.to],[CV.from,CV.to],{lineThickness:.05}));let dV=IV();for(;dV;)WV==="horizontal"?(ZV.from.y+=.1,ZV.to.y+=.1):(ZV.from.x+=.1,ZV.to.x+=.1),dV=IV()}},countComplexElements=(lV,J)=>{let VV=0;VV+=lV.length??0,VV+=J.filter(RV=>RV.is_crossing).length;for(let RV=1;RV<J.length;RV++){const UV=J[RV-1],ZV=J[RV],WV=Math.abs(UV.from.x-UV.to.x)<.01,IV=Math.abs(ZV.from.x-ZV.to.x)<.01;WV!==IV&&VV++}return VV},calculateOffsets=lV=>{var IV,dV;const J={left:{x:-.5,y:0},up:{x:.5,y:.5},right:{x:.5,y:0},down:{x:0,y:-.5}}[lV.facingDirection],VV=(IV=lV.parent)!=null&&IV.config.shouldRenderAsSchematicBox?3:1,RV=(dV=lV.parent)!=null&&dV.config.shouldRenderAsSchematicBox&&(lV.facingDirection==="left"||lV.facingDirection==="right")?3:1,UV=J.x,ZV=J.y,WV=lV.facingDirection==="up"?.5:0;return{schBoxVertOffset:VV,schBoxHorzOffset:RV,horzPortDirection:UV,vertPortDirectionOffset:ZV,handleUp:WV}},createDownwardNetLabelGroundSymbol=({fromPort:lV,toPort:J,fromAnchorPos:VV,toAnchorPos:RV,schDisplayLabel:UV,source_trace_id:ZV},{db:WV})=>{const IV=calculateOffsets(lV);WV.schematic_net_label.insert({anchor_side:"top",center:{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset},source_net_id:lV.source_port_id,text:UV,anchor_position:{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset},symbol_name:"ground_horz"}),WV.schematic_trace.insert({edges:[{from:{x:VV.x,y:VV.y},to:{x:VV.x,y:VV.y+IV.handleUp*IV.schBoxVertOffset}},{from:{x:VV.x,y:VV.y},to:{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset}}],junctions:[{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset}],source_trace_id:ZV});const dV=calculateOffsets(J);WV.schematic_net_label.insert({anchor_side:"top",center:{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset},source_net_id:J.source_port_id,text:UV,anchor_position:{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset},symbol_name:"ground_horz"});const CV=J.facingDirection==="up"?.5:0;WV.schematic_trace.insert({edges:[{from:{x:RV.x,y:RV.y},to:{x:RV.x,y:RV.y+CV*dV.schBoxVertOffset}},{from:{x:RV.x,y:RV.y},to:{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset}}],junctions:[{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset}],source_trace_id:ZV})},getMaxLengthFromConnectedCapacitors=(lV,{db:J})=>{const VV=lV.map(RV=>{const UV=J.source_port.get(RV.source_port_id);if(!(UV!=null&&UV.source_component_id))return null;const ZV=J.source_component.get(UV.source_component_id);return(ZV==null?void 0:ZV.ftype)==="simple_capacitor"?ZV.max_decoupling_trace_length:null}).filter(RV=>RV!==null);if(VV.length!==0)return Math.min(...VV)},portToObjective=lV=>({...lV._getGlobalPcbPositionAfterLayout(),layers:lV.getAvailablePcbLayers()}),Trace=class extends PrimitiveComponent{constructor(J){super(J);MI(this,"source_trace_id",null);MI(this,"pcb_trace_id",null);MI(this,"schematic_trace_id",null);MI(this,"_portsRoutedOnPcb");MI(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:VV}=this;if(!VV)throw new Error("Trace has no parent");const UV=this.getTracePortPathSelectors().map(ZV=>({selector:ZV,port:this.getSubcircuit().selectOne(ZV,{type:"port"})??null}));for(const{selector:ZV,port:WV}of UV)if(!WV){const IV=ZV.replace(/\>.*$/,""),dV=this.getSubcircuit().selectOne(IV);dV?this.renderError(`Could not find port for selector "${ZV}" (did you forget to include the pin name?)
7296
- searched component ${dV.getString()}, which has ports: ${dV.children.filter(CV=>CV.componentName==="Port").map(CV=>`${CV.getString()}(${CV.getNameAndAliases().join(",")})`).join(" & ")}`):this.renderError(`Could not find port for selector "${ZV}"`)}return UV.some(ZV=>!ZV.port)?{allPortsFound:!1}:{allPortsFound:!0,portsWithSelectors:UV,ports:UV.map(({port:ZV})=>ZV)}}_findConnectedNets(){const J=this.getTracePathNetSelectors().map(RV=>({selector:RV,net:this.getSubcircuit().selectOne(RV,{type:"net"})})),VV=J.filter(RV=>!RV.net);return VV.length>0&&this.renderError(`Could not find net for selector "${VV[0].selector}" inside ${this}`),{netsWithSelectors:J,nets:J.map(RV=>RV.net)}}_getAllTracesConnectedToSameNet(){const J=this.getSubcircuit().selectAll("trace"),VV=this._findConnectedNets().nets,RV=this._findConnectedPorts().ports??[];return J.filter(UV=>{if(UV===this)return!1;const ZV=UV._findConnectedNets().nets,WV=UV._findConnectedPorts().ports??[];return ZV.some(IV=>VV.includes(IV))||WV.some(IV=>RV.includes(IV))})}_isExplicitlyConnectedToPort(J){const{allPortsFound:VV,portsWithSelectors:RV}=this._findConnectedPorts();return VV?RV.map(ZV=>ZV.port).includes(J):!1}_isExplicitlyConnectedToNet(J){return this._findConnectedNets().nets.includes(J)}doInitialCreateNetsFromProps(){createNetsFromProps(this,this.getTracePathNetSelectors())}doInitialSourceTraceRender(){const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this;if(!RV){this.renderError("Trace has no parent");return}const{allPortsFound:UV,portsWithSelectors:ZV}=this._findConnectedPorts();if(!UV)return;const WV=this._findConnectedNets().nets,IV=J.source_trace.insert({connected_source_port_ids:ZV.map(dV=>dV.port.source_port_id),connected_source_net_ids:WV.map(dV=>dV.source_net_id),max_length:getMaxLengthFromConnectedCapacitors(ZV.map(dV=>dV.port),{db:J})??VV.maxLength});this.source_trace_id=IV.source_trace_id}doInitialPcbTraceRender(){var pV,HV;if((pV=this.root)!=null&&pV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this,UV=this.getSubcircuit();if(!RV)throw new Error("Trace has no parent");if(UV._parsedProps.routingDisabled)return;const ZV=(HV=UV._parsedProps.pcbRouteCache)==null?void 0:HV.pcbTraces;if(ZV){const oV=J.pcb_trace.insert({route:ZV.flatMap(DV=>DV.route),source_trace_id:this.source_trace_id});this.pcb_trace_id=oV.pcb_trace_id;return}if(!UV._shouldUseTraceByTraceRouting())return;const{allPortsFound:WV,ports:IV}=this._findConnectedPorts();if(!WV)return;const dV=[];for(const oV of IV)oV._hasMatchedPcbPrimitive()||dV.push(oV);if(dV.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: ${dV.map(oV=>oV.getString()).join(", ")}`,pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[],pcb_port_ids:dV.map(oV=>oV.pcb_port_id).filter(Boolean)});return}const CV=this._findConnectedNets().netsWithSelectors;if(IV.length===0&&CV.length===2){this.renderError("Trace connects two nets, we haven't implemented a way to route this yet");return}else if(IV.length===1&&CV.length===1){const oV=IV[0],wV=CV[0].net.getAllConnectedPorts().filter(dl=>dl!==oV);if(wV.length===0){console.log("Nothing to connect this port to, the net is empty. TODO should emit a warning!");return}const _V=getClosest(oV,wV);IV.push(_V)}else if(IV.length>1&&CV.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 FV=IV.flatMap(oV=>oV.matchedComponents.filter(DV=>DV.componentName==="TraceHint")),NV=(this._parsedProps.pcbRouteHints??[]).concat(FV.flatMap(oV=>oV.getPcbRouteHints()));if(IV.length>2){this.renderError(`Trace has more than two ports (${IV.map(oV=>oV.getString()).join(", ")}), routing between more than two ports for a single trace is not implemented`);return}if(this.getSubcircuit().selectAll("trace").filter(oV=>oV.renderPhaseStates.PcbTraceRender.initialized).some(oV=>oV._portsRoutedOnPcb.length===IV.length&&oV._portsRoutedOnPcb.every(DV=>IV.includes(DV))))return;let JV=[];NV.length===0?JV=[portToObjective(IV[0]),portToObjective(IV[1])]:JV=[portToObjective(IV[0]),...NV,portToObjective(IV[1])];const nV=findPossibleTraceLayerCombinations(JV),aV=getFullConnectivityMapFromCircuitJson$1(this.root.db.toArray()),[GV,cV]=tryNow(()=>getObstaclesFromSoup(this.root.db.toArray()));if(cV){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: ${cV.message}`,source_trace_id:this.source_trace_id,center:{x:0,y:0},pcb_port_ids:IV.map(oV=>oV.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[]});return}for(const oV of GV)if(oV.connectedTo.length>0){const wV=aV.getNetConnectedToId(oV.connectedTo[0]);wV&&oV.connectedTo.push(wV)}let TV=[];if(nV.length===0)TV=JV;else{const oV=nV[0].layer_path;TV=JV.map((DV,wV)=>DV.via?{...DV,via_to_layer:oV[wV]}:{...DV,layers:[oV[wV]]})}TV[0].pcb_port_id=IV[0].pcb_port_id,TV[TV.length-1].pcb_port_id=IV[1].pcb_port_id;const iV=[];for(const[oV,DV]of pairs$1(TV)){const wV="via_to_layer"in oV?oV.via_to_layer:null,_V=2,dl="layers"in oV&&oV.layers.length===1?oV.layers[0]:wV??"top",nl="layers"in DV&&DV.layers.length===1?DV.layers[0]:wV??"top",Il="pcb_port_id"in oV?oV.pcb_port_id:null,LV="pcb_port_id"in DV?DV.pcb_port_id:null,OV=this.getSubcircuit()._parsedProps.minTraceWidth??.16,$V=new MultilayerIjump({OBSTACLE_MARGIN:OV*2,isRemovePathLoopsEnabled:!0,optimizeWithGoalBoxes:!!(Il&&LV),connMap:aV,input:{obstacles:GV,minTraceWidth:OV,connections:[{name:this.source_trace_id,pointsToConnect:[{...oV,layer:dl,pcb_port_id:Il},{...DV,layer:nl,pcb_port_id:LV}]}],layerCount:2,bounds:{minX:Math.min(oV.x,DV.x)-_V,maxX:Math.max(oV.x,DV.x)+_V,minY:Math.min(oV.y,DV.y)-_V,maxY:Math.max(oV.y,DV.y)+_V}}});let Cl=null;try{Cl=$V.solveAndMapToTraces()}catch(pl){this.renderError({type:"pcb_trace_error",pcb_trace_error_id:this.source_trace_id,error_type:"pcb_trace_error",message:`error solving route: ${pl.message}`,source_trace_id:this.pcb_trace_id,center:{x:(oV.x+DV.x)/2,y:(oV.y+DV.y)/2},pcb_port_ids:IV.map(ml=>ml.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:IV.map(ml=>ml.pcb_component_id)})}if(!Cl)return;if(Cl.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:(oV.x+DV.x)/2,y:(oV.y+DV.y)/2},pcb_port_ids:IV.map(pl=>pl.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:IV.map(pl=>pl.pcb_component_id)});return}const[Zl]=Cl;wV&&(Zl.route=Zl.route.map(pl=>(pl.route_type==="wire"&&!pl.layer&&(pl.layer=wV),pl))),Il&&Zl.route[0].route_type==="wire"&&(Zl.route[0].start_pcb_port_id=Il);const el=Zl.route[Zl.route.length-1];LV&&el.route_type==="wire"&&(el.end_pcb_port_id=LV),iV.push(Zl.route)}const tV=mergeRoutes(iV),MV=getTraceLength(tV),AV=J.pcb_trace.insert({route:tV,source_trace_id:this.source_trace_id,trace_length:MV});this._portsRoutedOnPcb=IV,this.pcb_trace_id=AV.pcb_trace_id;for(const oV of tV)oV.route_type==="via"&&J.pcb_via.insert({pcb_trace_id:AV.pcb_trace_id,x:oV.x,y:oV.y,hole_diameter:.3,outer_diameter:.6,layers:[oV.from_layer,oV.to_layer],from_layer:oV.from_layer,to_layer:oV.to_layer})}_doInitialSchematicTraceRenderWithDisplayLabel(){var TV,iV,tV,MV,AV,pV;if((TV=this.root)!=null&&TV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this;if(!RV)throw new Error("Trace has no parent");const{allPortsFound:UV,portsWithSelectors:ZV}=this._findConnectedPorts();if(!UV)return;const WV=ZV.map(({port:HV})=>({port:HV,position:HV._getGlobalSchematicPositionAfterLayout(),schematic_port_id:HV.schematic_port_id,facingDirection:HV.facingDirection}));if(WV.length<2)throw new Error("Expected at least two ports in portsWithPosition.");let IV,dV;const CV=WV[0].position,FV=WV[0].port;if("path"in this.props){if(this.props.path.length!==2)throw new Error("Invalid 'path': Must contain exactly two elements.");[IV,dV]=this.props.path}else{if(!("from"in this.props&&"to"in this.props))throw new Error("Missing 'from' or 'to' properties in props.");IV=this.props.from,dV=this.props.to}if(!FV.source_port_id)throw new Error(`Missing source_port_id for the 'from' port (${IV}).`);const NV=WV[1].position,gV=WV[1].port;if(!gV.source_port_id)throw new Error(`Missing source_port_id for the 'to' port (${dV}).`);const eV=J.schematic_net_label.list().find(HV=>HV.source_net_id===FV.source_port_id),JV=J.schematic_net_label.list().find(HV=>HV.source_net_id===gV.source_port_id);if(eV&&eV.text!==this.props.schDisplayLabel||JV&&(JV==null?void 0:JV.text)!==this.props.schDisplayLabel)throw new Error(`Cannot create net label for port ${eV?IV:dV} because it already has a net label with text "${eV?eV.text:JV==null?void 0:JV.text}".`);if((iV=this.props.schDisplayLabel)!=null&&iV.toLocaleLowerCase().includes("gnd")||(tV=this.props.schDisplayLabel)!=null&&tV.toLocaleLowerCase().includes("ground")){createDownwardNetLabelGroundSymbol({fromPort:FV,toPort:gV,fromAnchorPos:CV,toAnchorPos:NV,schDisplayLabel:this.props.schDisplayLabel,source_trace_id:this.source_trace_id},{db:J});return}const[nV,aV]=ZV.map(({port:HV})=>HV),cV=((MV=nV.parent)==null?void 0:MV.config.shouldRenderAsSchematicBox)?`${(AV=nV==null?void 0:nV.parent)==null?void 0:AV.props.name}_${nV==null?void 0:nV.props.name}`:`${(pV=aV==null?void 0:aV.parent)==null?void 0:pV.props.name}_${aV==null?void 0:aV.props.name}`;J.schematic_net_label.insert({text:this.props.schDisplayLabel??cV,source_net_id:gV.source_port_id,anchor_position:NV,center:NV,anchor_side:getEnteringEdgeFromDirection(gV.facingDirection)??"bottom"}),J.schematic_net_label.insert({text:this.props.schDisplayLabel??cV,source_net_id:FV.source_port_id,anchor_position:CV,center:CV,anchor_side:getEnteringEdgeFromDirection(FV.facingDirection)??"bottom"})}_isPassiveToChipConnection(){const{allPortsFound:J,ports:VV}=this._findConnectedPorts();if(!J||VV.length!==2)return!1;const[RV,UV]=VV;if(!(RV!=null&&RV.parent)||!(UV!=null&&UV.parent))return!1;const ZV=RV.parent.config.shouldRenderAsSchematicBox,WV=UV.parent.config.shouldRenderAsSchematicBox;return ZV&&!WV||!ZV&&WV}doInitialSchematicTraceRender(){var oV,DV,wV;if((oV=this.root)!=null&&oV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this;if(!RV)throw new Error("Trace has no parent");const{allPortsFound:UV,portsWithSelectors:ZV}=this._findConnectedPorts(),{netsWithSelectors:WV}=this._findConnectedNets();if(!UV)return;const IV=[],dV={name:this.source_trace_id,pointsToConnect:[]};if(this.props.schDisplayLabel&&("from"in this.props&&"to"in this.props||"path"in this.props)){this._doInitialSchematicTraceRenderWithDisplayLabel();return}for(const _V of J.toArray())_V.type==="schematic_component"&&IV.push({type:"rect",layers:["top"],center:_V.center,width:_V.size.width,height:_V.size.height,connectedTo:[]}),_V.type==="schematic_port"&&IV.push({type:"rect",layers:["top"],center:_V.center,width:.1,height:.1,connectedTo:[]}),_V.type==="schematic_text"&&IV.push({type:"rect",layers:["top"],center:_V.position,width:(((DV=_V.text)==null?void 0:DV.length)??0)*.1,height:.2,connectedTo:[]}),_V.type==="schematic_box"&&IV.push({type:"rect",layers:["top"],center:{x:_V.x,y:_V.y},width:_V.width,height:_V.width,connectedTo:[]}),_V.type==="schematic_net_label"&&_V.symbol_name?IV.push({type:"rect",layers:["top"],center:_V.center,width:.25,height:.6,connectedTo:[]}):_V.type==="schematic_net_label"&&IV.push({type:"rect",layers:["top"],center:_V.center,width:(((wV=_V.text)==null?void 0:wV.length)??0)*.1,height:.2,connectedTo:[]});const CV=ZV.map(({port:_V})=>({port:_V,position:_V._getGlobalSchematicPositionAfterLayout(),schematic_port_id:_V.schematic_port_id??void 0,facingDirection:_V.facingDirection}));if(CV.length===1&&WV.length===1){const _V=WV[0].net,{port:dl,position:nl}=CV[0];J.schematic_net_label.insert({text:_V._parsedProps.name,source_net_id:_V.source_net_id,anchor_position:nl,center:nl,anchor_side:getEnteringEdgeFromDirection(dl.facingDirection)??"bottom"});return}if(CV.length<2)return;dV.pointsToConnect=CV.map(({position:_V})=>({..._V,layer:"top"}));const NV=computeObstacleBounds(IV),gV={minTraceWidth:.1,obstacles:IV,connections:[dV],bounds:NV,layerCount:1};let eV=MultilayerIjump;this.getSubcircuit().props._schDirectLineRoutingEnabled&&(eV=DirectLineRouter);const nV=new eV({input:gV,OBSTACLE_MARGIN:.1,isRemovePathLoopsEnabled:!0}).solveAndMapToTraces();if(nV.length===0)return;const[{route:aV}]=nV,GV=[];for(let _V=0;_V<aV.length-1;_V++)GV.push({from:aV[_V],to:aV[_V+1]});const cV=this.source_trace_id;pushEdgesOfSchematicTraceToPreventOverlap({edges:GV,db:J,source_trace_id:cV}),createSchematicTraceCrossingSegments({edges:GV,db:J,source_trace_id:cV});const TV=createSchematicTraceJunctions({edges:GV,db:J,source_trace_id:this.source_trace_id}),iV=GV[GV.length-1],tV=CV[CV.length-1],MV=getDominantDirection(iV);GV.push(...getStubEdges({lastEdge:iV,lastEdgePort:tV,lastDominantDirection:MV}));const AV=GV[0],pV=CV[0],HV=getDominantDirection(AV);if(GV.unshift(...getStubEdges({firstEdge:AV,firstEdgePort:pV,firstDominantDirection:HV})),!this.source_trace_id)throw new Error("Missing source_trace_id for schematic trace insertion.");if(countComplexElements(TV,GV)>=5&&this._isPassiveToChipConnection())this._doInitialSchematicTraceRenderWithDisplayLabel(),J.schematic_trace.delete(this.schematic_trace_id);else{const _V=J.schematic_trace.insert({source_trace_id:this.source_trace_id,edges:GV,junctions:TV});this.schematic_trace_id=_V.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 Trace({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.decouplingFor})),this.add(new Trace({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.decouplingTo})))}doInitialSourceRender(){const{db:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.source_component_id}},Chip=class extends NormalComponent{constructor(){super(...arguments);MI(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:VV}=this,RV=J.source_component.insert({ftype:"simple_chip",name:VV.name,manufacturer_part_number:VV.manufacturerPartNumber,supplier_part_numbers:VV.supplierPartNumbers});this.source_component_id=RV.source_component_id}doInitialPcbComponentRender(){var UV;if((UV=this.root)!=null&&UV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.pcb_component.insert({center:{x:VV.pcbX??0,y:VV.pcbY??0},width:2,height:3,layer:VV.layer??"top",rotation:VV.pcbRotation??0,source_component_id:this.source_component_id});this.pcb_component_id=RV.pcb_component_id}},Diode=class extends NormalComponent{constructor(){super(...arguments);MI(this,"pos",this.portMap.pin1);MI(this,"anode",this.portMap.pin1);MI(this,"neg",this.portMap.pin2);MI(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);MI(this,"schematicDimensions",null)}get config(){return{componentName:"Jumper",zodProps:jumperProps,shouldRenderAsSchematicBox:!0}}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.source_component.insert({ftype:"simple_chip",name:VV.name,manufacturer_part_number:VV.manufacturerPartNumber,supplier_part_numbers:VV.supplierPartNumbers});this.source_component_id=RV.source_component_id}doInitialPcbComponentRender(){var UV;if((UV=this.root)!=null&&UV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.pcb_component.insert({center:{x:VV.pcbX??0,y:VV.pcbY??0},width:2,height:3,layer:VV.layer??"top",rotation:VV.pcbRotation??0,source_component_id:this.source_component_id});this.pcb_component_id=RV.pcb_component_id}},Led=class extends NormalComponent{constructor(){super(...arguments);MI(this,"pos",this.portMap.pin1);MI(this,"anode",this.portMap.pin1);MI(this,"neg",this.portMap.pin2);MI(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);MI(this,"pos",this.portMap.pin1);MI(this,"positive",this.portMap.pin1);MI(this,"neg",this.portMap.pin2);MI(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 Trace({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pullupFor})),this.add(new Trace({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pullupTo})))}doInitialSourceRender(){const{db:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.source_component_id}},edgeSpecifiers=["leftedge","rightedge","topedge","bottomedge","center"],Constraint2=class extends PrimitiveComponent{get config(){return{componentName:"Constraint",zodProps:constraintProps}}constructor(lV){if(super(lV),("xdist"in lV||"ydist"in lV)&&!("edgeToEdge"in lV)&&!("centerToCenter"in lV))throw new Error(`edgeToEdge, centerToCenter must be set for xDist or yDist for ${this}`);if("for"in lV&&lV.for.length<2)throw new Error(`"for" must have at least two selectors for ${this}`)}_getAllReferencedComponents(){const lV=[],J=this.getPrimitiveContainer();function VV(RV){const UV=RV.split(" ").pop(),ZV=edgeSpecifiers.includes(UV)?UV:void 0,WV=ZV?RV.replace(` ${ZV}`,""):RV,IV=J.selectOne(WV,{pcbPrimitive:!0});IV&&lV.push({selector:RV,component:IV,componentSelector:WV,edge:ZV})}for(const RV of["left","right","top","bottom"])RV in this._parsedProps&&VV(this._parsedProps[RV]);if("for"in this._parsedProps)for(const RV of this._parsedProps.for)VV(RV);return{componentsWithSelectors:lV}}},FabricationNotePath=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"fabrication_note_path_id",null)}get config(){return{componentName:"FabricationNotePath",zodProps:fabricationNotePathProps}}doInitialPcbPrimitiveRender(){var WV,IV;if((WV=this.root)!=null&&WV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenPath. Must be "top" or "bottom".`);const UV=this._computePcbGlobalTransformBeforeLayout(),ZV=J.pcb_fabrication_note_path.insert({pcb_component_id:(IV=this.parent)==null?void 0:IV.pcb_component_id,layer:RV,color:VV.color,route:VV.route.map(dV=>{const CV=applyToPoint(UV,{x:dV.x,y:dV.y});return{...dV,x:CV.x,y:CV.y}}),stroke_width:VV.strokeWidth??.1});this.fabrication_note_path_id=ZV.pcb_fabrication_note_path_id}},FabricationNoteText=class extends PrimitiveComponent{get config(){return{componentName:"FabricationNoteText",zodProps:fabricationNoteTextProps}}doInitialPcbPrimitiveRender(){var RV;if((RV=this.root)!=null&&RV.pcbDisabled)return;const{db:lV}=this.root,{_parsedProps:J}=this,VV=this.getPrimitiveContainer();lV.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:VV.pcb_component_id})}},Subcircuit=class extends Group$2{constructor(lV){super({...lV,subcircuit:!0})}},NetAlias=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"source_net_alias_id")}get config(){return{componentName:"NetAlias",zodProps:netAliasProps}}doInitialSchematicComponentRender(){var ZV;if((ZV=this.root)!=null&&ZV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV={x:VV.schX??0,y:VV.schY??0},UV=J.schematic_net_label.insert({text:VV.net,source_net_id:VV.net,anchor_position:RV,center:RV,anchor_side:"bottom"});this.source_net_alias_id=UV.source_net_id}},SilkscreenCircle=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_circle_id",null)}get config(){return{componentName:"SilkscreenCircle",zodProps:silkscreenCircleProps}}doInitialPcbPrimitiveRender(){var ZV,WV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenCircle. Must be "top" or "bottom".`);this._computePcbGlobalTransformBeforeLayout();const UV=J.pcb_silkscreen_circle.insert({pcb_component_id:(WV=this.parent)==null?void 0:WV.pcb_component_id,layer:RV,center:{x:VV.pcbX??0,y:VV.pcbY??0},radius:VV.radius});this.pcb_silkscreen_circle_id=UV.pcb_silkscreen_circle_id}},SilkscreenRect=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_rect_id",null)}get config(){return{componentName:"SilkscreenRect",zodProps:silkscreenRectProps}}doInitialPcbPrimitiveRender(){var ZV,WV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenRect. Must be "top" or "bottom".`);const UV=J.pcb_silkscreen_rect.insert({pcb_component_id:(WV=this.parent)==null?void 0:WV.pcb_component_id,layer:RV,center:{x:VV.pcbX??0,y:VV.pcbY??0},width:VV.width,height:VV.height});this.pcb_silkscreen_rect_id=UV.pcb_silkscreen_rect_id}},SilkscreenText=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenText",zodProps:silkscreenTextProps}}doInitialPcbPrimitiveRender(){var WV;if((WV=this.root)!=null&&WV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this.getPrimitiveContainer(),UV=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer:ZV}=this._getPcbPrimitiveFlippedHelpers();J.pcb_silkscreen_text.insert({anchor_alignment:VV.anchorAlignment,anchor_position:{x:UV.x,y:UV.y},font:VV.font??"tscircuit2024",font_size:VV.fontSize??1,layer:ZV(VV.layer??"top"),text:VV.text??"",ccw_rotation:VV.pcbRotation,pcb_component_id:RV.pcb_component_id})}getPcbSize(){const{_parsedProps:J}=this,VV=J.fontSize??1,UV=(J.text??"").length*VV,ZV=VV;return{width:UV*VV,height:ZV*VV}}},SilkscreenLine=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_line_id",null)}get config(){return{componentName:"SilkscreenLine",zodProps:silkscreenLineProps}}doInitialPcbPrimitiveRender(){var ZV,WV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenLine. Must be "top" or "bottom".`);const UV=J.pcb_silkscreen_line.insert({pcb_component_id:(WV=this.parent)==null?void 0:WV.pcb_component_id,layer:RV,x1:VV.x1,y1:VV.y1,x2:VV.x2,y2:VV.y2,stroke_width:VV.strokeWidth??.1});this.pcb_silkscreen_line_id=UV.pcb_silkscreen_line_id}},Via=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_via_id",null);MI(this,"matchedPort",null);MI(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,VV=J.pcb_via.get(this.pcb_via_id),RV=this.getPcbSize();return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-RV.width/2,top:VV.y-RV.height/2,right:VV.x+RV.width/2,bottom:VV.y+RV.height/2},width:RV.width,height:RV.height}}_setPositionFromLayout(J){const{db:VV}=this.root;VV.pcb_via.update(this.pcb_via_id,{x:J.x,y:J.y})}doInitialPcbPrimitiveRender(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=J.pcb_via.insert({x:RV.x,y:RV.y,hole_diameter:VV.holeDiameter,outer_diameter:VV.outerDiameter,layers:["bottom","top"],from_layer:VV.fromLayer||"bottom",to_layer:VV.toLayer||"top"});this.pcb_via_id=UV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:"simple_power_source",capacity:J.capacity,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=VV.source_component_id}},PinHeader=class extends NormalComponent{get config(){return{componentName:"PinHeader",zodProps:pinHeaderProps,shouldRenderAsSchematicBox:!0}}_getImpliedFootprintString(){var UV;const lV=this._parsedProps.pinCount??((UV=this._parsedProps.pinLabels)==null?void 0:UV.length)??0,J=this._parsedProps.holeDiameter,VV=this._parsedProps.platedDiameter,RV=this._parsedProps.pitch;return lV>0&&RV?!J&&!VV?`pinrow${lV}_p${RV}`:`pinrow${lV}_p${RV}_id${J}_od${VV}`:null}initPorts(){var J;const lV=this._parsedProps.pinCount??((J=this._parsedProps.pinLabels)==null?void 0:J.length)??1;for(let VV=1;VV<=lV;VV++)this.add(new Port({name:`pin${VV}`,pinNumber:VV,aliases:[]}))}_getSchematicPortArrangement(){const lV=this._parsedProps.pinCount??1,J=this._parsedProps.facingDirection??"right";return{leftSize:J==="left"?lV:0,rightSize:J==="right"?lV:0}}doInitialSourceRender(){const{db:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.source_component_id}};function getResonatorSymbolName(lV){switch(lV){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:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:FTYPE.simple_inductor,inductance:J.inductance,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:"simple_potentiometer",max_resistance:J.maxResistance});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:FTYPE.simple_push_button,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:"simple_crystal",frequency:J.frequency,load_capacitance:J.loadCapacitance});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({ftype:"simple_transistor",name:J.name,transistor_type:J.transistorType});this.source_component_id=VV.source_component_id}},RootCircuit=class{constructor(){MI(this,"firstChild",null);MI(this,"children");MI(this,"db");MI(this,"root",null);MI(this,"isRoot",!0);MI(this,"schematicDisabled",!1);MI(this,"pcbDisabled",!1);MI(this,"pcbRoutingDisabled",!1);MI(this,"name");MI(this,"_hasRenderedAtleastOnce",!1);MI(this,"_eventListeners",{});this.children=[],this.db=su_default$1([]),this.root=this}add(lV){let J;reactExports.isValidElement(lV)?J=createInstanceFromReactElement(lV):J=lV,this.children.push(J)}_getBoard(){return this.children.find(lV=>lV.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 lV=this.children.find(J=>J.componentName==="Board")??null;if(lV){this.firstChild=lV;return}}throw new Error("Not able to guess root component: RootCircuit has multiple children and no board")}}render(){this.firstChild||this._guessRootComponent();const{firstChild:lV,db:J}=this;if(!lV)throw new Error("RootCircuit has no root component");lV.parent=this,lV.runRenderCycle(),this._hasRenderedAtleastOnce=!0}async renderUntilSettled(){for(this.render();this._hasIncompleteAsyncEffects();)await new Promise(lV=>setTimeout(lV,100)),this.render()}_hasIncompleteAsyncEffects(){return this.children.some(lV=>lV._hasIncompleteAsyncEffects()?!0:lV.children.some(J=>J._hasIncompleteAsyncEffects()))}getSoup(){return this._hasRenderedAtleastOnce||this.render(),this.db.toArray()}getCircuitJson(){return this.getSoup()}toJson(){return this.getSoup()}async getSvg(lV){return(await Promise.resolve().then(()=>index$1).catch(VV=>{throw new Error(`To use project.getSvg, you must install the "circuit-to-svg" package.
7295
+ iteration: ${WV}`),debugSelectAll(`part: "${VV[WV]}"`),debugSelectAll(`currentSearch: [${RV.map(dV=>dV.getString()).join(",")}]`),debugSelectAll(`currentResults: [${UV.map(dV=>dV.getString()).join(",")}]`),IV===">")ZV=!0;else{const dV=RV.filter(FV=>isMatchingSelector(FV,IV));RV=dV.flatMap(FV=>ZV?FV.children:FV.getSelectableDescendants()),UV=dV,ZV=!1}return UV}selectOne(J,VV){var UV;let RV=(UV=VV==null?void 0:VV.type)==null?void 0:UV.toLowerCase();return VV!=null&&VV.port&&(RV="port"),RV?this.selectAll(J).find(ZV=>ZV.lowercaseComponentName===RV)??null:VV!=null&&VV.pcbPrimitive?this.selectAll(J).find(ZV=>ZV.isPcbPrimitive)??null:VV!=null&&VV.schematicPrimitive?this.selectAll(J).find(ZV=>ZV.isSchematicPrimitive)??null:this.selectAll(J)[0]??null}getAvailablePcbLayers(){var J,VV;if(this.isPcbPrimitive){const{maybeFlipLayer:RV}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[RV(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((VV=(J=this.root)==null?void 0:J._getBoard())==null?void 0:VV.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const J=[];for(const VV of this.children)J.push(VV),J.push(...VV.getDescendants());return J}getSelectableDescendants(){const J=[];for(const VV of this.children)VV.isSubcircuit?J.push(VV):(J.push(VV),J.push(...VV.getSelectableDescendants()));return J}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}renderError(J){var VV;if(typeof J=="string")return super.renderError(J);(VV=this.root)==null||VV.db.pcb_placement_error.insert(J)}getString(){var UV,ZV;const{lowercaseComponentName:J,_parsedProps:VV,parent:RV}=this;return(VV==null?void 0:VV.pinNumber)!==void 0&&((UV=RV==null?void 0:RV.props)!=null&&UV.name)&&(VV!=null&&VV.name)?`<${J}#${this._renderId}(pin:${VV.pinNumber} .${RV==null?void 0:RV.props.name}>.${VV.name}) />`:(ZV=RV==null?void 0:RV.props)!=null&&ZV.name&&(VV!=null&&VV.name)?`<${J}#${this._renderId}(.${RV==null?void 0:RV.props.name}>.${VV==null?void 0:VV.name}) />`:VV!=null&&VV.from&&(VV!=null&&VV.to)?`<${J}#${this._renderId}(from:${VV.from} to:${VV==null?void 0:VV.to}) />`:VV!=null&&VV.name?`<${J}#${this._renderId} name=".${VV==null?void 0:VV.name}" />`:VV!=null&&VV.portHints?`<${J}#${this._renderId}(${VV.portHints.map(WV=>`.${WV}`).join(", ")}) />`:`<${J}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}};function pairs$1(lV){const J=[];for(let VV=0;VV<lV.length-1;VV++)J.push([lV[VV],lV[VV+1]]);return J}var netProps=z$1.object({name:z$1.string()}),Net=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:netProps}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.source_net.insert({name:VV.name,member_source_group_ids:[]});this.source_net_id=RV.source_net_id}getAllConnectedPorts(){const J=this.getSubcircuit().selectAll("port"),VV=[];for(const RV of J){const UV=RV._getDirectlyConnectedTraces();for(const ZV of UV)if(ZV._isExplicitlyConnectedToNet(this)){VV.push(RV);break}}return VV}_getAllDirectlyConnectedTraces(){const J=this.getSubcircuit().selectAll("trace"),VV=[];for(const RV of J)RV._isExplicitlyConnectedToNet(this)&&VV.push(RV);return VV}doInitialPcbRouteNetIslands(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,VV=this._getAllDirectlyConnectedTraces().filter(WV=>{var IV;return(((IV=WV._portsRoutedOnPcb)==null?void 0:IV.length)??0)>0}),RV=[];for(const WV of VV){const IV=WV._portsRoutedOnPcb,dV=RV.find(CV=>IV.some(FV=>CV.ports.includes(FV)));if(!dV){RV.push({ports:[...IV],traces:[WV]});continue}dV.traces.push(WV),dV.ports.push(...IV)}if(RV.length===0)return;const UV=pairs$1(RV);for(const[WV,IV]of UV){const dV=WV.ports.map(GV=>GV._getGlobalPcbPositionBeforeLayout()),CV=IV.ports.map(GV=>GV._getGlobalPcbPositionBeforeLayout());let FV=1/0,NV=[-1,-1];for(let GV=0;GV<dV.length;GV++){const cV=dV[GV];for(let TV=0;TV<CV.length;TV++){const iV=CV[TV],tV=Math.sqrt((cV.x-iV.x)**2+(cV.y-iV.y)**2);tV<FV&&(FV=tV,NV=[GV,TV])}}const gV=WV.ports[NV[0]],eV=IV.ports[NV[1]],JV=J.toArray().filter(GV=>GV.type==="pcb_smtpad"||GV.type==="pcb_trace"||GV.type==="pcb_plated_hole"||GV.type==="pcb_hole"||GV.type==="source_port"||GV.type==="pcb_port"),{solution:nV}=autoroute2(JV.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[gV.source_port_id,eV.source_port_id]}])),aV=nV[0];if(!aV){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[gV.pcb_component_id,eV.pcb_component_id].filter(Boolean),pcb_port_ids:[gV.pcb_port_id,eV.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(aV)}}renderError(J){var VV;if(typeof J=="string")return super.renderError(J);(VV=this.root)==null||VV.db.pcb_trace_error.insert(J)}},createNetsFromProps=(lV,J)=>{for(const VV of J)typeof VV=="string"&&VV.startsWith("net.")&&(lV.getSubcircuit().selectOne(VV)||lV.getSubcircuit().add(new Net({name:VV.split("net.")[1]})))},SmtPad=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_smtpad_id",null);MI(this,"matchedPort",null);MI(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 VV;const J=(VV=this.getPrimitiveContainer())==null?void 0:VV.selectAll("port");if(this.props.portHints){for(const RV of J)if(RV.isMatchingAnyOf(this.props.portHints)){this.matchedPort=RV,RV.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var NV,gV,eV,JV,nV;if((NV=this.root)!=null&&NV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this;if(!VV.portHints)return;const RV=this.getPrimitiveContainer(),UV=this._getGlobalPcbPositionBeforeLayout();RV==null||RV._getGlobalPcbPositionBeforeLayout();const ZV=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),WV=Math.abs(ZV.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:IV}=this._getPcbPrimitiveFlippedHelpers(),dV=(RV==null?void 0:RV._parsedProps.pcbRotation)??0;let CV=null;const FV=((gV=this.parent)==null?void 0:gV.pcb_component_id)??((eV=this.getPrimitiveContainer())==null?void 0:eV.pcb_component_id);VV.shape==="circle"?(CV=J.pcb_smtpad.insert({pcb_component_id:FV,pcb_port_id:(JV=this.matchedPort)==null?void 0:JV.pcb_port_id,layer:IV(VV.layer??"top"),shape:"circle",radius:VV.radius,port_hints:VV.portHints.map(aV=>aV.toString()),x:UV.x,y:UV.y}),J.pcb_solder_paste.insert({layer:CV.layer,shape:"circle",radius:CV.radius*.7,x:CV.x,y:CV.y,pcb_component_id:CV.pcb_component_id,pcb_smtpad_id:CV.pcb_smtpad_id})):VV.shape==="rect"&&(CV=dV===0||WV?J.pcb_smtpad.insert({pcb_component_id:FV,pcb_port_id:(nV=this.matchedPort)==null?void 0:nV.pcb_port_id,layer:IV(VV.layer??"top"),shape:"rect",width:WV?VV.height:VV.width,height:WV?VV.width:VV.height,port_hints:VV.portHints.map(aV=>aV.toString()),x:UV.x,y:UV.y}):J.pcb_smtpad.insert({pcb_component_id:FV,layer:VV.layer??"top",shape:"rotated_rect",width:VV.width,height:VV.height,x:UV.x,y:UV.y,ccw_rotation:dV,port_hints:VV.portHints.map(aV=>aV.toString())}),CV.shape==="rect"&&J.pcb_solder_paste.insert({layer:CV.layer,shape:"rect",width:CV.width*.7,height:CV.height*.7,x:CV.x,y:CV.y,pcb_component_id:CV.pcb_component_id,pcb_smtpad_id:CV.pcb_smtpad_id})),CV&&(this.pcb_smtpad_id=CV.pcb_smtpad_id)}doInitialPcbPortAttachment(){var VV,RV;if((VV=this.root)!=null&&VV.pcbDisabled)return;const{db:J}=this.root;J.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(RV=this.matchedPort)==null?void 0:RV.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:J}=this.root,VV=J.pcb_smtpad.get(this.pcb_smtpad_id);if(VV.shape==="rect")return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-VV.width/2,top:VV.y+VV.height/2,right:VV.x+VV.width/2,bottom:VV.y-VV.height/2},width:VV.width,height:VV.height};if(VV.shape==="rotated_rect"){const RV=VV.ccw_rotation*Math.PI/180,UV=Math.cos(RV),ZV=Math.sin(RV),WV=VV.width/2,IV=VV.height/2,dV=Math.abs(WV*UV)+Math.abs(IV*ZV),CV=Math.abs(WV*ZV)+Math.abs(IV*UV);return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-dV,right:VV.x+dV,top:VV.y-CV,bottom:VV.y+CV},width:dV*2,height:CV*2}}if(VV.shape==="circle")return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-VV.radius,top:VV.y-VV.radius,right:VV.x+VV.radius,bottom:VV.y+VV.radius},width:VV.radius*2,height:VV.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${VV.shape}"`)}_setPositionFromLayout(J){var UV;const{db:VV}=this.root;VV.pcb_smtpad.update(this.pcb_smtpad_id,{x:J.x,y:J.y});const RV=VV.pcb_solder_paste.list().find(ZV=>ZV.pcb_smtpad_id===this.pcb_smtpad_id);VV.pcb_solder_paste.update(RV==null?void 0:RV.pcb_solder_paste_id,{x:J.x,y:J.y}),(UV=this.matchedPort)==null||UV._setPositionFromLayout(J)}},SilkscreenPath=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_path_id",null)}get config(){return{componentName:"SilkscreenPath",zodProps:silkscreenPathProps}}doInitialPcbPrimitiveRender(){var WV,IV;if((WV=this.root)!=null&&WV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenPath. Must be "top" or "bottom".`);const UV=this._computePcbGlobalTransformBeforeLayout(),ZV=J.pcb_silkscreen_path.insert({pcb_component_id:(IV=this.parent)==null?void 0:IV.pcb_component_id,layer:RV,route:VV.route.map(dV=>{const CV=applyToPoint(UV,{x:dV.x,y:dV.y});return{...dV,x:CV.x,y:CV.y}}),stroke_width:VV.strokeWidth??.1});this.pcb_silkscreen_path_id=ZV.pcb_silkscreen_path_id}},PlatedHole=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_plated_hole_id",null);MI(this,"matchedPort",null);MI(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,VV=J.pcb_plated_hole.get(this.pcb_plated_hole_id),RV=this.getPcbSize();return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-RV.width/2,top:VV.y+RV.height/2,right:VV.x+RV.width/2,bottom:VV.y-RV.height/2},width:RV.width,height:RV.height}}_setPositionFromLayout(J){var RV;const{db:VV}=this.root;VV.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:J.x,y:J.y}),(RV=this.matchedPort)==null||RV._setPositionFromLayout(J)}doInitialPortMatching(){var VV;const J=(VV=this.getPrimitiveContainer())==null?void 0:VV.selectAll("port");if(this.props.portHints){for(const RV of J)if(RV.isMatchingAnyOf(this.props.portHints)){this.matchedPort=RV,RV.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var ZV,WV,IV,dV,CV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=((WV=this.parent)==null?void 0:WV.pcb_component_id)??((IV=this.getPrimitiveContainer())==null?void 0:IV.pcb_component_id);if(VV.shape==="circle"){const FV=J.pcb_plated_hole.insert({pcb_component_id:UV,pcb_port_id:(dV=this.matchedPort)==null?void 0:dV.pcb_port_id,outer_diameter:VV.outerDiameter,hole_diameter:VV.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:RV.x,y:RV.y,layers:["top","bottom"]});this.pcb_plated_hole_id=FV.pcb_plated_hole_id}else if(VV.shape==="pill"||VV.shape==="oval"){const FV=J.pcb_plated_hole.insert({pcb_component_id:UV,pcb_port_id:(CV=this.matchedPort)==null?void 0:CV.pcb_port_id,outer_width:VV.outerWidth,outer_height:VV.outerHeight,hole_width:VV.innerWidth,hole_height:VV.innerHeight,shape:VV.shape,port_hints:this.getNameAndAliases(),x:RV.x,y:RV.y,layers:["top","bottom"]});this.pcb_plated_hole_id=FV.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var VV,RV;if((VV=this.root)!=null&&VV.pcbDisabled)return;const{db:J}=this.root;J.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(RV=this.matchedPort)==null?void 0:RV.pcb_port_id})}},Keepout=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_keepout_id",null);MI(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:pcbKeepoutProps}}doInitialPcbPrimitiveRender(){var IV;if((IV=this.root)!=null&&IV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),ZV=Math.abs(UV.rotation.angle*(180/Math.PI)-90)%180<.01;let WV=null;VV.shape==="circle"?WV=J.pcb_keepout.insert({layers:["top"],shape:"circle",radius:VV.radius,center:{x:RV.x,y:RV.y}}):VV.shape==="rect"&&(WV=J.pcb_keepout.insert({layers:["top"],shape:"rect",...ZV?{width:VV.height,height:VV.width}:{width:VV.width,height:VV.height},center:{x:RV.x,y:RV.y}})),WV&&(this.pcb_keepout_id=WV.pcb_keepout_id)}},Hole=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_hole_id",null);MI(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:holeProps}}getPcbSize(){const{_parsedProps:J}=this;return{width:J.diameter,height:J.diameter}}doInitialPcbPrimitiveRender(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=J.pcb_hole.insert({hole_shape:"circle",hole_diameter:VV.diameter,x:RV.x,y:RV.y});this.pcb_hole_id=UV.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:J}=this.root,VV=J.pcb_hole.get(this.pcb_hole_id),RV=this.getPcbSize();return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-RV.width/2,top:VV.y-RV.height/2,right:VV.x+RV.width/2,bottom:VV.y+RV.height/2},width:RV.width,height:RV.height}}_setPositionFromLayout(J){const{db:VV}=this.root;VV.pcb_hole.update(this.pcb_hole_id,{x:J.x,y:J.y})}},createComponentsFromSoup=lV=>{const J=[];for(const VV of lV)VV.type==="pcb_smtpad"&&VV.shape==="rect"?J.push(new SmtPad({pcbX:VV.x,pcbY:VV.y,layer:VV.layer,shape:"rect",height:VV.height,width:VV.width,portHints:VV.port_hints})):VV.type==="pcb_smtpad"&&VV.shape==="circle"?J.push(new SmtPad({pcbX:VV.x,pcbY:VV.y,layer:VV.layer,shape:"circle",radius:VV.radius,portHints:VV.port_hints})):VV.type==="pcb_silkscreen_path"?J.push(new SilkscreenPath({layer:VV.layer,route:VV.route,strokeWidth:VV.stroke_width})):VV.type==="pcb_plated_hole"&&VV.shape==="circle"?VV.shape==="circle"&&J.push(new PlatedHole({pcbX:VV.x,pcbY:VV.y,shape:"circle",holeDiameter:VV.hole_diameter,outerDiameter:VV.outer_diameter,portHints:VV.port_hints})):VV.type==="pcb_keepout"&&VV.shape==="circle"?J.push(new Keepout({pcbX:VV.center.x,pcbY:VV.center.y,shape:"circle",radius:VV.radius})):VV.type==="pcb_keepout"&&VV.shape==="rect"?J.push(new Keepout({pcbX:VV.center.x,pcbY:VV.center.y,shape:"rect",width:VV.width,height:VV.height})):VV.type==="pcb_hole"&&VV.hole_shape==="circle"&&J.push(new Hole({pcbX:VV.x,pcbY:VV.y,diameter:VV.hole_diameter}));return J};function getBoundsOfPcbComponents(lV){let J=1/0,VV=1/0,RV=-1/0,UV=-1/0;for(const IV of lV)if(IV.isPcbPrimitive){const{x:dV,y:CV}=IV._getGlobalPcbPositionBeforeLayout(),{width:FV,height:NV}=IV.getPcbSize();J=Math.min(J,dV-FV/2),VV=Math.min(VV,CV-NV/2),RV=Math.max(RV,dV+FV/2),UV=Math.max(UV,CV+NV/2)}else if(IV.componentName==="Footprint"){const dV=getBoundsOfPcbComponents(IV.children);J=Math.min(J,dV.minX),VV=Math.min(VV,dV.minY),RV=Math.max(RV,dV.maxX),UV=Math.max(UV,dV.maxY)}let ZV=RV-J,WV=UV-VV;return ZV<0&&(ZV=0),WV<0&&(WV=0),{minX:J,minY:VV,maxX:RV,maxY:UV,width:ZV,height:WV}}function getRelativeDirection(lV,J){const VV=J.x-lV.x,RV=J.y-lV.y;return Math.abs(VV)>Math.abs(RV)?VV>=0?"right":"left":RV>=0?"up":"down"}var areAllPcbPrimitivesOverlapping=lV=>{if(lV.length<=1)return!0;const J=lV.map(ZV=>{const WV=ZV._getPcbCircuitJsonBounds();return{left:WV.bounds.left,right:WV.bounds.right,top:WV.bounds.top,bottom:WV.bounds.bottom}}),VV=Array(J.length).fill(!1).map(()=>Array(J.length).fill(!1));for(let ZV=0;ZV<J.length;ZV++)for(let WV=ZV+1;WV<J.length;WV++){const IV=J[ZV],dV=J[WV];VV[ZV][WV]=VV[WV][ZV]=!(IV.right<dV.left||IV.left>dV.right||IV.bottom>dV.top||IV.top<dV.bottom)}const RV=new Set,UV=ZV=>{RV.add(ZV);for(let WV=0;WV<J.length;WV++)VV[ZV][WV]&&!RV.has(WV)&&UV(WV)};return UV(0),RV.size===J.length},getCenterOfPcbPrimitives=lV=>{if(lV.length===0)throw new Error("Cannot get center of empty PCB primitives array");const J=lV.map(UV=>UV._getPcbCircuitJsonBounds().center).filter(Boolean),VV=J.reduce((UV,ZV)=>UV+ZV.x,0),RV=J.reduce((UV,ZV)=>UV+ZV.y,0);return{x:VV/J.length,y:RV/J.length}},portProps=z$1.object({name:z$1.string().optional(),pinNumber:z$1.number().optional(),aliases:z$1.array(z$1.string()).optional()}),Port=class extends PrimitiveComponent{constructor(J,VV={}){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);MI(this,"source_port_id",null);MI(this,"pcb_port_id",null);MI(this,"schematic_port_id",null);MI(this,"schematicSymbolPortDef",null);MI(this,"matchedComponents");MI(this,"facingDirection",null);MI(this,"originDescription",null);VV.originDescription&&(this.originDescription=VV.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:portProps}}_getGlobalPcbPositionBeforeLayout(){const J=this.matchedComponents.find(VV=>VV.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,VV=J.pcb_port.get(this.pcb_port_id);return{center:{x:VV.x,y:VV.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getGlobalSchematicPositionBeforeLayout(){var RV,UV;const J=(RV=this.parent)==null?void 0:RV.getSchematicSymbol();if(J&&this.schematicSymbolPortDef){const ZV=compose(this.parent.computeSchematicGlobalTransform(),translate(-J.center.x,-J.center.y));return applyToPoint(ZV,this.schematicSymbolPortDef)}const VV=(UV=this==null?void 0:this.parent)==null?void 0:UV._getSchematicBoxDimensions();if(VV&&this.props.pinNumber!==void 0){const ZV=VV.getPortPositionByPinNumber(this.props.pinNumber);return ZV?applyToPoint(this.parent.computeSchematicGlobalTransform(),ZV):{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 VV=J.schematic_port.get(this.schematic_port_id);if(!VV)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return VV.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(RV=>RV._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var ZV;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this.getNameAndAliases(),UV=J.source_port.insert({name:VV.name,pin_number:VV.pinNumber,port_hints:RV,source_component_id:(ZV=this.parent)==null?void 0:ZV.source_component_id});this.source_port_id=UV.source_port_id}doInitialSourceParentAttachment(){var VV,RV,UV,ZV;const{db:J}=this.root;if(!((VV=this.parent)!=null&&VV.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(RV=this.parent)==null?void 0:RV.getString()})`);J.source_port.update(this.source_port_id,{source_component_id:(UV=this.parent)==null?void 0:UV.source_component_id}),this.source_component_id=(ZV=this.parent)==null?void 0:ZV.source_component_id}doInitialPcbPortRender(){var ZV,WV,IV,dV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{matchedComponents:VV}=this;if(!((WV=this.parent)!=null&&WV.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(IV=this.parent)==null?void 0:IV.getString()})`);const RV=VV.filter(CV=>CV.isPcbPrimitive);if(RV.length===0)return;let UV=null;if(RV.length===1&&(UV=RV[0]._getPcbCircuitJsonBounds().center),RV.length>1){if(!areAllPcbPrimitivesOverlapping(RV))throw new Error(`${this.getString()} has multiple non-overlapping pcb matches, unclear how to place pcb_port: ${RV.map(CV=>CV.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)`);UV=getCenterOfPcbPrimitives(RV)}if(UV){const CV=J.pcb_port.insert({pcb_component_id:(dV=this.parent)==null?void 0:dV.pcb_component_id,layers:this.getAvailablePcbLayers(),...UV,source_port_id:this.source_port_id});this.pcb_port_id=CV.pcb_port_id}else{const CV=RV[0];throw new Error(`${CV.getString()} does not have a center or _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}}doInitialSchematicPortRender(){var NV;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this.getPrimitiveContainer();if(!RV)return;const UV=RV._getGlobalSchematicPositionBeforeLayout(),ZV=this._getGlobalSchematicPositionBeforeLayout();let WV=null;const IV=RV._getSchematicBoxDimensions();IV&&VV.pinNumber!==void 0&&(WV=IV.getPortPositionByPinNumber(VV.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&J.schematic_debug_object.insert({shape:"rect",center:ZV,size:{width:.1,height:.1},label:"obstacle"}),WV!=null&&WV.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[WV.side]:this.facingDirection=getRelativeDirection(UV,ZV);const dV=J.source_port.get(this.source_port_id);let CV;for(const gV of(dV==null?void 0:dV.port_hints)??[])gV.match(/^(pin)?\d+$/)||(CV=gV);const FV=J.schematic_port.insert({schematic_component_id:(NV=this.parent)==null?void 0:NV.schematic_component_id,center:ZV,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:WV==null?void 0:WV.side,pin_number:VV.pinNumber,true_ccw_index:WV==null?void 0:WV.trueIndex,display_pin_label:CV});this.schematic_port_id=FV.schematic_port_id}_setPositionFromLayout(J){const{db:VV}=this.root;this.pcb_port_id&&VV.pcb_port.update(this.pcb_port_id,{x:J.x,y:J.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(J=>J.isPcbPrimitive)}},getPinNumberFromLabels=lV=>{const J=lV.find(VV=>/^(pin)?\d+$/.test(VV));return J?Number.parseInt(J.replace(/^pin/,"")):null};function getPortFromHints(lV){const J=getPinNumberFromLabels(lV);return J?new Port({pinNumber:J,aliases:lV.filter(VV=>VV.toString()!==J.toString()&&VV!==`pin${J}`)}):null}var hasExplicitPinMapping=lV=>{for(const J of["leftSide","rightSide","topSide","bottomSide"])if(J in lV&&typeof lV[J]=="number")throw new Error(`A number was specified for "${J}", you probably meant to use "size" not "side"`);return"leftSide"in lV||"rightSide"in lV||"topSide"in lV||"bottomSide"in lV},getSizeOfSidesFromPortArrangement=lV=>{var ZV,WV,IV,dV;if(hasExplicitPinMapping(lV))return{leftSize:((ZV=lV.leftSide)==null?void 0:ZV.pins.length)??0,rightSize:((WV=lV.rightSide)==null?void 0:WV.pins.length)??0,topSize:((IV=lV.topSide)==null?void 0:IV.pins.length)??0,bottomSize:((dV=lV.bottomSide)==null?void 0:dV.pins.length)??0};const{leftSize:J=0,rightSize:VV=0,topSize:RV=0,bottomSize:UV=0}=lV;return{leftSize:J,rightSize:VV,topSize:RV,bottomSize:UV}};function isExplicitPinMappingArrangement(lV){return lV.leftSide!==void 0}var getAllDimensionsForSchematicBox=lV=>{var aV,GV,cV,TV,iV,tV,MV,AV;const J=lV.portDistanceFromEdge??.4;let VV=lV.schPortArrangement?getSizeOfSidesFromPortArrangement(lV.schPortArrangement):null;const RV={left:0,right:0,top:0,bottom:0};let UV=lV.pinCount??null;if(UV===null)if(VV)UV=VV.leftSize+VV.rightSize+VV.topSize;else throw new Error("Could not determine pin count for the schematic box");if(UV&&!VV){const pV=Math.floor(UV/2);VV={leftSize:UV-pV,rightSize:pV,topSize:0,bottomSize:0}}VV||(VV={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const ZV=({side:pV,sideIndex:HV,truePinIndex:oV})=>{var nl,Il,LV,OV;if(!lV.schPortArrangement||!isExplicitPinMappingArrangement(lV.schPortArrangement))return oV+1;const DV={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[pV],wV=((Il=(nl=lV.schPortArrangement)==null?void 0:nl[`${pV}Side`])==null?void 0:Il.direction)??DV,_V=(OV=(LV=lV.schPortArrangement)==null?void 0:LV[`${pV}Side`])==null?void 0:OV.pins;let dl=HV;return wV!==DV&&(dl=_V.length-HV-1),parsePinNumberFromLabelsOrThrow(_V[dl],lV.pinLabels)},WV=[];let IV=0,dV=0;for(let pV=0;pV<VV.leftSize;pV++){const HV=ZV({side:"left",sideIndex:pV,truePinIndex:dV}),oV=((aV=lV.numericSchPinStyle)==null?void 0:aV[`pin${HV}`])??((GV=lV.numericSchPinStyle)==null?void 0:GV[HV]);oV!=null&&oV.topMargin&&(IV+=oV.topMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"left",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.bottomMargin&&(IV+=oV.bottomMargin),pV===VV.leftSize-1?RV.left=IV:IV+=lV.schPinSpacing,dV++}IV=0;for(let pV=0;pV<VV.bottomSize;pV++){const HV=ZV({side:"bottom",sideIndex:pV,truePinIndex:dV}),oV=((cV=lV.numericSchPinStyle)==null?void 0:cV[`pin${HV}`])??((TV=lV.numericSchPinStyle)==null?void 0:TV[HV]);oV!=null&&oV.leftMargin&&(IV+=oV.leftMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"bottom",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.rightMargin&&(IV+=oV.rightMargin),pV===VV.bottomSize-1?RV.bottom=IV:IV+=lV.schPinSpacing,dV++}IV=0;for(let pV=0;pV<VV.rightSize;pV++){const HV=ZV({side:"right",sideIndex:pV,truePinIndex:dV}),oV=((iV=lV.numericSchPinStyle)==null?void 0:iV[`pin${HV}`])??((tV=lV.numericSchPinStyle)==null?void 0:tV[HV]);oV!=null&&oV.bottomMargin&&(IV+=oV.bottomMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"right",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.topMargin&&(IV+=oV.topMargin),pV===VV.rightSize-1?RV.right=IV:IV+=lV.schPinSpacing,dV++}IV=0;for(let pV=0;pV<VV.topSize;pV++){const HV=ZV({side:"top",sideIndex:pV,truePinIndex:dV}),oV=((MV=lV.numericSchPinStyle)==null?void 0:MV[`pin${HV}`])??((AV=lV.numericSchPinStyle)==null?void 0:AV[HV]);oV!=null&&oV.rightMargin&&(IV+=oV.rightMargin),WV.push({trueIndex:dV,pinNumber:HV,side:"top",distanceFromOrthogonalEdge:IV}),oV!=null&&oV.leftMargin&&(IV+=oV.leftMargin),pV===VV.topSize-1?RV.top=IV:IV+=lV.schPinSpacing,dV++}let CV=lV.schWidth;CV||(CV=Math.max(RV.top+lV.schPinSpacing*2,RV.bottom+lV.schPinSpacing*2));const FV=lV.pinLabels?Math.max(...Object.values(lV.pinLabels).map(pV=>pV.length*.1)):0,NV=FV>0?1.1:0;CV=Math.max(CV,FV+NV);let gV=lV.schHeight;gV||(gV=Math.max(RV.left+lV.schPinSpacing*2,RV.right+lV.schPinSpacing*2));const eV={left:{x:-CV/2-J,y:RV.left/2},bottom:{x:-RV.bottom/2,y:-gV/2-J},right:{x:CV/2+J,y:-RV.right/2},top:{x:RV.top/2,y:gV/2+J}},JV={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},nV=WV.map(pV=>{const{distanceFromOrthogonalEdge:HV,side:oV}=pV,DV=eV[oV],wV=JV[oV];return{x:DV.x+HV*wV.x,y:DV.y+HV*wV.y,...pV}});return{getPortPositionByPinNumber(pV){const HV=nV.find(oV=>oV.pinNumber.toString()===pV.toString());return HV||null},getSize(){return{width:CV,height:gV}},pinCount:UV}},debug$6=Debug$1("tscircuit:core:footprint"),Footprint=class extends PrimitiveComponent{get config(){return{componentName:"Footprint",zodProps:footprintProps}}doInitialPcbFootprintLayout(){var NV,gV,eV,JV,nV;if((NV=this.root)!=null&&NV.pcbDisabled)return;const lV=this.children.filter(aV=>aV.componentName==="Constraint");if(lV.length===0)return;const{isFlipped:J}=this._getPcbPrimitiveFlippedHelpers(),VV=aV=>J&&"left"in aV&&"right"in aV?{...aV,left:aV.right,right:aV.left}:aV,RV=lV.flatMap(aV=>aV._getAllReferencedComponents().componentsWithSelectors).map(({component:aV,selector:GV,componentSelector:cV,edge:TV})=>({component:aV,selector:GV,componentSelector:cV,edge:TV,bounds:aV._getPcbCircuitJsonBounds()}));if(RV.some(aV=>aV.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function UV(aV){return RV.find(({selector:GV})=>GV===aV)}const ZV=new Solver,WV={};function IV(aV){return aV in WV||(WV[aV]=new Variable(aV),ZV.addEditVariable(WV[aV],Strength.weak)),WV[aV]}for(const{selector:aV,bounds:GV}of RV){const cV=IV(`${aV}_x`),TV=IV(`${aV}_y`);ZV.suggestValue(cV,GV.center.x),ZV.suggestValue(TV,GV.center.y)}for(const aV of lV){const GV=aV._parsedProps;if("xDist"in GV){const{xDist:cV,left:TV,right:iV,edgeToEdge:tV,centerToCenter:MV}=VV(GV),AV=IV(`${TV}_x`),pV=IV(`${iV}_x`),HV=(gV=UV(TV))==null?void 0:gV.bounds,oV=(eV=UV(iV))==null?void 0:eV.bounds;if(MV){const DV=new Expression(pV,[-1,AV]);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.xDist,Strength.required))}else if(tV){const DV=new Expression(pV,-oV.width/2,[-1,AV],-HV.width/2);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.xDist,Strength.required))}}else if("yDist"in GV){const{yDist:cV,top:TV,bottom:iV,edgeToEdge:tV,centerToCenter:MV}=GV,AV=IV(`${TV}_y`),pV=IV(`${iV}_y`),HV=(JV=UV(TV))==null?void 0:JV.bounds,oV=(nV=UV(iV))==null?void 0:nV.bounds;if(MV){const DV=new Expression(AV,[-1,pV]);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.yDist,Strength.required))}else if(tV){const DV=new Expression(AV,HV.height/2,[-1,pV],-oV.height/2);ZV.addConstraint(new Constraint(DV,Operator.Eq,GV.yDist,Strength.required))}}else if("sameY"in GV){const{for:cV}=GV;if(cV.length<2)continue;const TV=cV.map(tV=>IV(`${tV}_y`)),iV=new Expression(...TV.slice(1));ZV.addConstraint(new Constraint(iV,Operator.Eq,TV[0],Strength.required))}else if("sameX"in GV){const{for:cV}=GV;if(cV.length<2)continue;const TV=cV.map(tV=>IV(`${tV}_x`)),iV=new Expression(...TV.slice(1));ZV.addConstraint(new Constraint(iV,Operator.Eq,TV[0],Strength.required))}}ZV.updateVariables(),debug$6.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(WV).map(([aV,GV])=>({var:aV,val:GV.value()}))));const dV={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:aV,bounds:{width:GV,height:cV}}of RV){const TV=IV(`${aV}_x`),iV=IV(`${aV}_y`),tV=TV.value()-GV/2,MV=TV.value()+GV/2,AV=iV.value()+cV/2,pV=iV.value()-cV/2;dV.left=Math.min(dV.left,tV),dV.right=Math.max(dV.right,MV),dV.top=Math.max(dV.top,AV),dV.bottom=Math.min(dV.bottom,pV)}const CV={x:-(dV.right+dV.left)/2,y:-(dV.top+dV.bottom)/2},FV=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();CV.x+=FV.x,CV.y+=FV.y;for(const{component:aV,selector:GV}of RV){const cV=IV(`${GV}_x`),TV=IV(`${GV}_y`);aV._setPositionFromLayout({x:cV.value()+CV.x,y:TV.value()+CV.y})}}},getNumericSchPinStyle=(lV,J)=>{if(!lV)return;const VV={};for(const[RV,UV]of Object.entries(lV)){const ZV=parsePinNumberFromLabelsOrThrow(RV,J);VV[`pin${ZV}`]={...VV[`pin${ZV}`],...UV}}return VV},debug2$1=Debug$1("tscircuit:core"),rotation3=z$1.object({x:rotation$3,y:rotation$3,z:rotation$3}),NormalComponent=class extends PrimitiveComponent{constructor(J){super(J);MI(this,"reactSubtrees",[]);MI(this,"_impliedFootprint");MI(this,"isPrimitiveContainer",!0);MI(this,"_asyncSupplierPartNumbers");MI(this,"pcb_missing_footprint_error_id");this._addChildrenFromStringFootprint(),this.initPorts()}initPorts(J={}){var WV,IV,dV,CV,FV,NV,gV,eV,JV,nV,aV,GV,cV,TV;if((WV=this.root)!=null&&WV.schematicDisabled)return;const{config:VV}=this,RV=[],UV=this._parsedProps.schPortArrangement;if(UV&&!this._parsedProps.pinLabels){for(const MV in UV){const AV=UV[MV].pins;if(Array.isArray(AV))for(const pV of AV){const HV=parsePinNumberFromLabelsOrThrow(pV,this._parsedProps.pinLabels);RV.push(new Port({pinNumber:HV,aliases:((IV=J.additionalAliases)==null?void 0:IV[`pin${HV}`])??[]},{originDescription:`schPortArrangement:${MV}`}))}}const iV=["left","right","top","bottom"];let tV=1;for(const MV of iV){const AV=UV[`${MV}Size`];for(let pV=0;pV<AV;pV++)RV.push(new Port({pinNumber:tV++,aliases:((dV=J.additionalAliases)==null?void 0:dV[`pin${tV}`])??[]},{originDescription:`schPortArrangement:${MV}`}))}}const ZV=this._parsedProps.pinLabels;if(ZV)for(let[iV,tV]of Object.entries(ZV)){iV=iV.replace("pin","");let MV=RV.find(HV=>HV._parsedProps.pinNumber===Number(iV));const AV=Array.isArray(tV)?tV[0]:tV,pV=Array.isArray(tV)?tV.slice(1):[];MV?(MV.externallyAddedAliases.push(AV,...pV),MV.props.name=AV):(MV=new Port({pinNumber:parseInt(iV),name:AV,aliases:[...pV,...((CV=J.additionalAliases)==null?void 0:CV[`pin${parseInt(iV)}`])??[]]},{originDescription:`pinLabels:pin${iV}`}),RV.push(MV))}if(VV.schematicSymbolName){const iV=symbols_index_default[this._getSchematicSymbolNameOrThrow()];if(!iV)return;for(const tV of iV.ports){const MV=getPinNumberFromLabels(tV.labels);if(!MV)continue;const AV=getPortFromHints(tV.labels.concat(((FV=J.additionalAliases)==null?void 0:FV[`pin${MV}`])??[]));AV&&(AV.originDescription=`schematicSymbol:labels[0]:${tV.labels[0]}`,AV.schematicSymbolPortDef=tV,RV.push(AV))}this.addAll(RV);return}if(!this._parsedProps.schPortArrangement){const iV=this.getPortsFromFootprint();for(const tV of iV)RV.some(MV=>MV.isMatchingAnyOf(tV.getNameAndAliases()))||RV.push(tV)}for(let iV=1;iV<=this._getPinCount();iV++){if(!this._parsedProps.schPortArrangement||RV.find(MV=>MV._parsedProps.pinNumber===iV))continue;let tV=[...((gV=(NV=this._parsedProps.schPortArrangement)==null?void 0:NV.leftSide)==null?void 0:gV.pins)??[],...((JV=(eV=this._parsedProps.schPortArrangement)==null?void 0:eV.rightSide)==null?void 0:JV.pins)??[],...((aV=(nV=this._parsedProps.schPortArrangement)==null?void 0:nV.topSide)==null?void 0:aV.pins)??[],...((cV=(GV=this._parsedProps.schPortArrangement)==null?void 0:GV.bottomSide)==null?void 0:cV.pins)??[]].map(MV=>parsePinNumberFromLabelsOrThrow(MV,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(MV=>MV in this._parsedProps.schPortArrangement)&&(tV=Array.from({length:this._getPinCount()},(MV,AV)=>AV+1)),tV.includes(iV)&&RV.push(new Port({pinNumber:iV,aliases:((TV=J.additionalAliases)==null?void 0:TV[`pin${iV}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${iV}`}))}RV.length>0&&this.addAll(RV)}_getImpliedFootprintString(){return null}_addChildrenFromStringFootprint(){var VV;let{footprint:J}=this.props;if(J??(J=(VV=this._getImpliedFootprintString)==null?void 0:VV.call(this)),!!J&&typeof J=="string"){const RV=fp$1.string(J).soup(),UV=createComponentsFromSoup(RV);this.addAll(UV)}}get portMap(){return new Proxy({},{get:(J,VV)=>{const RV=this.children.find(UV=>UV.componentName==="Port"&&UV.isMatchingNameOrAlias(VV));if(!RV)throw new Error(`There was an issue finding the port "${VV.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return RV}})}getInstanceForReactElement(J){for(const VV of this.reactSubtrees)if(VV.element===J)return VV.component;return null}doInitialSourceRender(){const J=this.config.sourceFtype;if(!J)return;const{db:VV}=this.root,{_parsedProps:RV}=this,UV=VV.source_component.insert({ftype:J,name:RV.name,manufacturer_part_number:RV.manufacturerPartNumber??RV.mfn,supplier_part_numbers:RV.supplierPartNumbers});this.source_component_id=UV.source_component_id}doInitialSchematicComponentRender(){var RV;if((RV=this.root)!=null&&RV.schematicDisabled)return;const{schematicSymbolName:J}=this.config;if(J)return this._doInitialSchematicComponentRenderWithSymbol();if(this._getSchematicBoxDimensions())return this._doInitialSchematicComponentRenderWithSchematicBoxDimensions()}_getSchematicSymbolDisplayValue(){}_doInitialSchematicComponentRenderWithSymbol(){var WV;if((WV=this.root)!=null&&WV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getSchematicSymbolNameOrThrow(),UV=symbols_index_default[RV],ZV=this._getGlobalSchematicPositionBeforeLayout();if(UV){const IV=J.schematic_component.insert({center:ZV,rotation:VV.schRotation??0,size:UV.size,source_component_id:this.source_component_id,symbol_name:RV,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=IV.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var FV,NV,gV;if((FV=this.root)!=null&&FV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getSchematicBoxDimensions(),UV={};if(Array.isArray(VV.pinLabels))VV.pinLabels.forEach((eV,JV)=>{UV[String(JV+1)]=eV});else for(const[eV,JV]of Object.entries(VV.pinLabels??{}))UV[eV]=Array.isArray(JV)?JV[0]:JV;const ZV=this._getGlobalSchematicPositionBeforeLayout(),WV=J.schematic_component.insert({center:ZV,rotation:VV.schRotation??0,size:RV.getSize(),port_arrangement:underscorifyPortArrangement(VV.schPortArrangement),pin_spacing:VV.schPinSpacing??.2,pin_styles:underscorifyPinStyles(VV.schPinStyle,VV.pinLabels),port_labels:UV,source_component_id:this.source_component_id}),IV=((NV=VV.schPortArrangement)==null?void 0:NV.topSide)!==void 0||((gV=VV.schPortArrangement)==null?void 0:gV.bottomSide)!==void 0,dV=RV==null?void 0:RV.getSize().width,CV=RV==null?void 0:RV.getSize().height;J.schematic_text.insert({text:VV.manufacturerPartNumber??"",schematic_component_id:WV.schematic_component_id,anchor:"left",rotation:0,position:{x:IV?ZV.x+(dV??0)/2+.1:ZV.x-(dV??0)/2,y:IV?ZV.y+(CV??0)/2+.35:ZV.y-(CV??0)/2-.13},color:"#006464"}),J.schematic_text.insert({text:VV.name??"",schematic_component_id:WV.schematic_component_id,anchor:"left",rotation:0,position:{x:IV?ZV.x+(dV??0)/2+.1:ZV.x-(dV??0)/2,y:IV?ZV.y+(CV??0)/2+.55:ZV.y+(CV??0)/2+.13},color:"#006464"}),this.schematic_component_id=WV.schematic_component_id}doInitialPcbComponentRender(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:VV.layer??"top",rotation:VV.pcbRotation??0,source_component_id:this.source_component_id});if(!VV.footprint&&!this.isGroup){const WV=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=WV.pcb_missing_footprint_error_id}this.pcb_component_id=RV.pcb_component_id;const UV=this.getSubcircuit()._getPcbManualPlacementForComponent(this);this.props.pcbX!==void 0&&this.props.pcbY!==void 0&&UV&&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 UV;if((UV=this.root)!=null&&UV.pcbDisabled||!this.pcb_component_id)return;const{db:J}=this.root,VV=getBoundsOfPcbComponents(this.children);if(VV.width===0||VV.height===0)return;const RV={x:(VV.minX+VV.maxX)/2,y:(VV.minY+VV.maxY)/2};J.pcb_component.update(this.pcb_component_id,{center:RV,width:VV.width,height:VV.height})}_renderReactSubtree(J){return{element:J,component:createInstanceFromReactElement(J)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){if(reactExports.isValidElement(this.props.footprint)){if(this.reactSubtrees.some(VV=>VV.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(RV=>RV.componentName==="Port").some(RV=>{const UV=J.getNameAndAliases(),ZV=RV.getNameAndAliases();return UV.length===ZV.length&&UV.every(WV=>ZV.includes(WV))})}add(J){let VV;if(reactExports.isValidElement(J)){const RV=this._renderReactSubtree(J);this.reactSubtrees.push(RV),VV=RV.component}else VV=J;if(VV.componentName==="Port"){if(this._hasExistingPortExactly(VV))return;const UV=this.children.filter(ZV=>ZV.componentName==="Port").find(ZV=>ZV.isMatchingAnyOf(VV.getNameAndAliases()));UV&&debug2$1(`Similar ports added. Port 1: ${UV}, Port 2: ${VV}`)}super.add(VV)}getPortsFromFootprint(){let{footprint:J}=this.props;if((!J||reactExports.isValidElement(J))&&(J=this.children.find(RV=>RV.componentName==="Footprint")),typeof J=="string"){const RV=fp$1.string(J).soup(),UV=[];for(const ZV of RV)if("port_hints"in ZV&&ZV.port_hints){const WV=getPortFromHints(ZV.port_hints);if(!WV)continue;WV.originDescription=`footprint:string:${J}:port_hints[0]:${ZV.port_hints[0]}`,UV.push(WV)}return UV}if(!reactExports.isValidElement(J)&&J&&J.componentName==="Footprint"){const RV=J;let UV=1;const ZV=[];for(const WV of RV.children){if(!WV.props.portHints)continue;let IV=WV.props.portHints;IV.some(FV=>FV.startsWith("pin"))||(IV=[...IV,`pin${UV}`]),UV++;const CV=getPortFromHints(IV);CV&&(CV.originDescription=`footprint:${J}`,ZV.push(CV))}return ZV}const VV=[];if(!J){for(const RV of this.children)if(RV.props.portHints&&RV.isPcbPrimitive){const UV=getPortFromHints(RV.props.portHints);UV&&VV.push(UV)}}return VV}getPortsFromSchematicSymbol(){var UV;if((UV=this.root)!=null&&UV.schematicDisabled)return[];const{config:J}=this;if(!J.schematicSymbolName)return[];const VV=symbols_index_default[J.schematicSymbolName];if(!VV)return[];const RV=[];for(const ZV of VV.ports){const WV=getPortFromHints(ZV.labels);WV&&(WV.schematicSymbolPortDef=ZV,RV.push(WV))}return RV}_createNetsFromProps(J){createNetsFromProps(this,J)}doInitialPortDiscovery(){const{_parsedProps:J}=this;let VV=[];J.schPortArrangement||(VV=[...this.getPortsFromFootprint(),...this.getPortsFromSchematicSymbol()]);const RV=this.children.filter(UV=>UV.componentName==="Port");for(const UV of VV){const ZV=RV.find(WV=>WV.isMatchingAnyOf(UV.getNameAndAliases()));if(ZV){!ZV.schematicSymbolPortDef&&UV.schematicSymbolPortDef&&(ZV.schematicSymbolPortDef=UV.schematicSymbolPortDef);continue}RV.push(UV),this.add(UV)}}_getPcbCircuitJsonBounds(){const{db:J}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const VV=J.pcb_component.get(this.pcb_component_id);return{center:{x:VV.center.x,y:VV.center.y},bounds:{left:VV.center.x-VV.width/2,top:VV.center.y-VV.height/2,right:VV.center.x+VV.width/2,bottom:VV.center.y+VV.height/2},width:VV.width,height:VV.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:RV,rightSide:UV,topSide:ZV,bottomSide:WV}=J;return Math.max(...(RV==null?void 0:RV.pins)??[],...(UV==null?void 0:UV.pins)??[],...(ZV==null?void 0:ZV.pins)??[],...(WV==null?void 0:WV.pins)??[])}return this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:J}=this,VV=this._getPinCount(),RV=J.schPinSpacing??.2;return getAllDimensionsForSchematicBox({schWidth:J.schWidth,schHeight:J.schHeight,schPinSpacing:RV,numericSchPinStyle:getNumericSchPinStyle(J.schPinStyle,J.pinLabels),pinCount:VV,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:J.pinLabels})}doInitialCadModelRender(){var CV;const{db:J}=this.root,{boardThickness:VV=0}=((CV=this.root)==null?void 0:CV._getBoard())??{},RV=this._parsedProps.cadModel;if(!this.pcb_component_id||!RV&&!this.props.footprint)return;const UV=this._getPcbCircuitJsonBounds(),ZV=J.pcb_component.get(this.pcb_component_id);if(typeof RV=="string")throw new Error("String cadModel not yet implemented");const WV=rotation3.parse({x:0,y:0,z:typeof(RV==null?void 0:RV.rotationOffset)=="number"?RV.rotationOffset:0,...typeof(RV==null?void 0:RV.rotationOffset)=="object"?RV.rotationOffset??{}:{}}),IV=point3$2.parse({x:0,y:0,z:0,...typeof(RV==null?void 0:RV.positionOffset)=="object"?RV.positionOffset:{}}),dV=this.props.layer==="bottom"?"bottom":"top";J.cad_component.insert({position:{x:UV.center.x+IV.x,y:UV.center.y+IV.y,z:(dV==="bottom"?-VV/2:VV/2)+IV.z},rotation:{x:WV.x,y:(dV==="top"?0:180)+WV.y,z:((ZV==null?void 0:ZV.rotation)??0)+(dV==="bottom"?180:0)+WV.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(RV??{})?this._addCachebustToModelUrl(RV.stlUrl):void 0,model_obj_url:"objUrl"in(RV??{})?this._addCachebustToModelUrl(RV.objUrl):void 0,model_jscad:"jscad"in(RV??{})?RV.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!RV?this.props.footprint:void 0})}_addCachebustToModelUrl(J){var RV;if(!J||!J.includes("modelcdn.tscircuit.com"))return J;const VV=((RV=this.root)==null?void 0:RV.getClientOrigin())??"";return`${J}${J.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(VV)}`}doInitialPartsEngineRender(){const{partsEngine:J}=this.getSubcircuit()._parsedProps;if(!J)return;const{db:VV}=this.root,RV=VV.source_component.get(this.source_component_id);if(!RV||RV.supplier_part_numbers)return;let UV;this.props.footprint&&typeof this.props.footprint=="string"&&(UV=this.props.footprint);const ZV=J.findPart({sourceComponent:RV,footprinterString:UV});if(!(ZV instanceof Promise)){VV.source_component.update(this.source_component_id,{supplier_part_numbers:ZV});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await ZV,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){const{db:J}=this.root,VV=J.source_component.get(this.source_component_id);if(VV&&!VV.supplier_part_numbers&&this._asyncSupplierPartNumbers){J.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}},TraceHint=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:traceHintProps}}doInitialPortMatching(){this.root;const{_parsedProps:J,parent:VV}=this;if(!VV)return;if(VV.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!VV)throw new Error("TraceHint has no parent");if(!J.for){this.renderError(`TraceHint has no for property (${this})`);return}const RV=VV.selectOne(J.for,{type:"port"});RV||this.renderError(`${this} could not find port for selector "${J.for}"`),this.matchedPort=RV,RV.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:J}=this,VV=J.offset?[J.offset]:J.offsets;if(!VV)return[];const RV=this._computePcbGlobalTransformBeforeLayout();return VV.map(UV=>({...applyToPoint(RV,UV),via:UV.via,to_layer:UV.to_layer,trace_width:UV.trace_width}))}doInitialPcbTraceHintRender(){var VV,RV,UV;if((VV=this.root)!=null&&VV.pcbDisabled)return;const{db:J}=this.root;J.pcb_trace_hint.insert({pcb_component_id:(RV=this.matchedPort)==null?void 0:RV.pcb_component_id,pcb_port_id:(UV=this.matchedPort)==null?void 0:UV.pcb_port_id,route:this.getPcbRouteHints()})}},getSimpleRouteJsonFromTracesAndDb=({db:lV,traces:J,minTraceWidth:VV=.1})=>{const UV=getObstaclesFromSoup([...lV.pcb_component.list(),...lV.pcb_smtpad.list(),...lV.pcb_plated_hole.list()]).flatMap(IV=>[{x:IV.center.x-IV.width/2,y:IV.center.y-IV.height/2},{x:IV.center.x+IV.width/2,y:IV.center.y+IV.height/2}]),ZV={minX:Math.min(...UV.map(IV=>IV.x))-1,maxX:Math.max(...UV.map(IV=>IV.x))+1,minY:Math.min(...UV.map(IV=>IV.y))-1,maxY:Math.max(...UV.map(IV=>IV.y))+1},WV=J.map(IV=>{const dV=IV._findConnectedPorts();return!dV.allPortsFound||dV.ports.length<2?null:{name:IV.source_trace_id??"",pointsToConnect:dV.ports.map(CV=>{const FV=CV._getGlobalPcbPositionBeforeLayout();return{x:FV.x,y:FV.y,layer:CV.getAvailablePcbLayers()[0]??"top"}})}}).filter(IV=>IV!==null);return{bounds:ZV,obstacles:[],connections:WV,layerCount:2,minTraceWidth:VV}},Group$2=class extends NormalComponent{constructor(){super(...arguments);MI(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:groupProps,componentName:"Group"}}doInitialCreateTraceHintsFromProps(){var ZV;const{_parsedProps:VV}=this;this.root;const RV=VV;if(!this.isSubcircuit)return;const UV=(ZV=RV.layout)==null?void 0:ZV.manual_trace_hints;if(UV)for(const WV of UV)this.add(new TraceHint({for:WV.pcb_port_selector,offsets:WV.offsets}))}_getSimpleRouteJsonFromPcbTraces(){const VV=this.selectAll("trace"),{db:RV}=this.root;return getSimpleRouteJsonFromTracesAndDb({db:RV,traces:VV,minTraceWidth:this._parsedProps.minTraceWidth??.1})}doInitialSourceAddConnectivityMapKey(){if(!this.isSubcircuit)return;const{db:VV}=this.root,RV=this.selectAll("trace"),UV=new ConnectivityMap$1({});UV.addConnections(RV.map(ZV=>{const WV=VV.source_trace.get(ZV.source_trace_id);return WV?[WV.source_trace_id,...WV.connected_source_port_ids,...WV.connected_source_net_ids]:null}).filter(ZV=>ZV!==null));for(const ZV of RV){if(!ZV.source_trace_id)continue;const WV=UV.getNetConnectedToId(ZV.source_trace_id);if(!WV)continue;const{name:IV}=this._parsedProps;ZV.subcircuit_connectivity_map_key=`${IV??`unnamedsubcircuit${this._renderId}`}_${WV}`,VV.source_trace.update(ZV.source_trace_id,{subcircuit_connectivity_map_key:ZV.subcircuit_connectivity_map_key})}}doInitialPcbTraceRender(){var WV,IV,dV;if((WV=this.root)!=null&&WV.pcbDisabled||this._shouldUseTraceByTraceRouting())return;const VV=((IV=this.props.autorouter)==null?void 0:IV.serverUrl)??"https://registry-api.tscircuit.com",RV=((dV=this.props.autorouter)==null?void 0:dV.serverMode)??"job",UV=Debug$1("tscircuit:core:autorouting"),ZV=(CV,FV)=>(UV("fetching",CV),fetch(CV,FV));this._queueAsyncEffect("make-http-autorouting-request",async()=>{var FV,NV;if(RV==="solve-endpoint"){if(((FV=this.props.autorouter)==null?void 0:FV.inputFormat)==="simplified"){const{autorouting_result:eV}=await ZV(`${VV}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:this._getSimpleRouteJsonFromPcbTraces()}),headers:{"Content-Type":"application/json"}}).then(JV=>JV.json());this._asyncAutoroutingResult=eV,this._markDirty("PcbTraceRender");return}const{autorouting_result:gV}=await ZV(`${VV}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:this.root.db.toArray()}),headers:{"Content-Type":"application/json"}}).then(eV=>eV.json());this._asyncAutoroutingResult=gV,this._markDirty("PcbTraceRender");return}const{autorouting_job:CV}=await ZV(`${VV}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:this.root.db.toArray(),provider:"freerouting",autostart:!0,display_name:(NV=this.root)==null?void 0:NV.name}),headers:{"Content-Type":"application/json"}}).then(gV=>gV.json());for(;;){const{autorouting_job:gV}=await ZV(`${VV}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:CV.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(eV=>eV.json());if(gV.is_finished){const{autorouting_job_output:eV}=await ZV(`${VV}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:CV.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(JV=>JV.json());this._asyncAutoroutingResult={output_pcb_traces:eV.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(gV.has_error)throw new Error(`Autorouting job failed: ${JSON.stringify(gV.error)}`);await new Promise(eV=>setTimeout(eV,100))}})}updatePcbTraceRender(){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:VV}=this.root,{traces:RV}=this._asyncAutoroutingResult.output_simple_route_json;if(RV){this.selectAll("trace");for(const UV of RV)VV.pcb_trace.insert({route:UV.route})}}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:VV}=this._asyncAutoroutingResult;if(!VV)return;const{db:RV}=this.root;for(const UV of VV)RV.pcb_trace.insert(UV)}doInitialSchematicLayout(){if(!this.isSubcircuit||!this._parsedProps.schAutoLayoutEnabled)return;const{db:RV}=this.root,UV=this.getDescendants(),ZV=[];for(const dV of UV)if("schematic_component_id"in dV){const CV=RV.schematic_component.get(dV.schematic_component_id);if(CV){const FV=RV.schematic_port.list().filter(NV=>NV.schematic_component_id===CV.schematic_component_id);ZV.push(...FV)}}const WV=convertSoupToScene(RV.toArray()),IV=ascendingCentralLrBug1(WV);mutateSoupForScene(RV.toArray(),IV)}_shouldUseTraceByTraceRouting(){const VV=this._parsedProps;return VV.autorouter==="auto-local"||VV.autorouter==="sequential-trace"?!0:!VV.autorouter}},Board=class extends Group$2{constructor(){super(...arguments);MI(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 UV;if((UV=this.root)!=null&&UV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this;if(!VV.width||!VV.height)throw new Error("Board width and height or an outline are required");const RV=J.pcb_board.insert({center:{x:VV.pcbX??0,y:VV.pcbY??0},thickness:this.boardThickness,num_layers:this.allLayers.length,width:VV.width,height:VV.height,outline:VV.outline});this.pcb_board_id=RV.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$4()}},stringProxy=new Proxy({},{get:(lV,J)=>J}),FTYPE=stringProxy,DirectLineRouter=class{constructor({input:lV}){MI(this,"input");this.input=lV}solveAndMapToTraces(){const lV=[];for(const J of this.input.connections){if(J.pointsToConnect.length!==2)continue;const[VV,RV]=J.pointsToConnect,UV={type:"pcb_trace",pcb_trace_id:"",route:[{route_type:"wire",x:VV.x,y:VV.y,layer:"top",width:.1},{route_type:"wire",x:RV.x,y:RV.y,layer:"top",width:.1}]};lV.push(UV)}return lV}},computeObstacleBounds=lV=>{const J=Math.min(...lV.map(ZV=>ZV.center.x)),VV=Math.max(...lV.map(ZV=>ZV.center.x)),RV=Math.min(...lV.map(ZV=>ZV.center.y)),UV=Math.max(...lV.map(ZV=>ZV.center.y));return{minX:J,maxX:VV,minY:RV,maxY:UV}},LAYER_SELECTION_PREFERENCE=["top","bottom","inner1","inner2"],findPossibleTraceLayerCombinations=(lV,J=[])=>{var IV;const VV=[];if(J.length===0){const dV=lV[0].layers;for(const CV of dV)VV.push(...findPossibleTraceLayerCombinations(lV.slice(1),[CV]));return VV}if(lV.length===0)return[];const RV=lV[0],UV=RV.via||RV.optional_via,ZV=J[J.length-1];if(lV.length===1){const dV=RV;return dV.layers&&UV?dV.layers.map(CV=>({layer_path:[...J,CV]})):(IV=dV.layers)!=null&&IV.includes(ZV)?[{layer_path:[...J,ZV]}]:[]}if(!UV)return RV.layers&&!RV.layers.includes(ZV)?[]:findPossibleTraceLayerCombinations(lV.slice(1),J.concat([ZV]));const WV=(RV.optional_via?LAYER_SELECTION_PREFERENCE:LAYER_SELECTION_PREFERENCE.filter(dV=>dV!==ZV)).filter(dV=>{var CV;return!RV.layers||((CV=RV.layers)==null?void 0:CV.includes(dV))});for(const dV of WV)VV.push(...findPossibleTraceLayerCombinations(lV.slice(1),J.concat(dV)));return VV};function getDominantDirection(lV){const J={x:lV.to.x-lV.from.x,y:lV.to.y-lV.from.y},VV=Math.abs(J.x),RV=Math.abs(J.y);return VV>RV?J.x>0?"right":"left":J.y>0?"down":"up"}function pdist(lV,J){return Math.hypot(lV.x-J.x,lV.y-J.y)}var mergeRoutes=lV=>{if(lV.length===1)return lV[0];if(lV.some(dV=>dV.length===0))throw new Error("Cannot merge routes with zero length");const J=[],VV=lV[0][0],RV=lV[0][lV[0].length-1],UV=lV[1][0],ZV=lV[1][lV[1].length-1],WV=Math.min(pdist(VV,UV),pdist(VV,ZV)),IV=Math.min(pdist(RV,UV),pdist(RV,ZV));WV<IV?J.push(...lV[0].reverse()):J.push(...lV[0]);for(let dV=1;dV<lV.length;dV++){const CV=J[J.length-1],FV=lV[dV],NV=FV[0],gV=FV[FV.length-1],eV=pdist(CV,NV),JV=pdist(CV,gV);eV<JV?J.push(...FV):J.push(...FV.reverse())}for(let dV=1;dV<J.length-1;dV++){const CV=J[dV-1],FV=J[dV];CV.route_type==="wire"&&FV.route_type==="wire"&&CV.layer!==FV.layer&&J.splice(dV,0,{x:CV.x,y:CV.y,from_layer:CV.layer,to_layer:FV.layer,route_type:"via"})}return J};function getTraceLength(lV){let J=0;for(let VV=0;VV<lV.length;VV++){const RV=lV[VV];if(RV.route_type==="wire"){const UV=lV[VV+1];if(UV){const ZV=UV.x-RV.x,WV=UV.y-RV.y;J+=Math.sqrt(ZV*ZV+WV*WV)}}else RV.route_type==="via"&&(J+=1.6)}return J}var getDistance=(lV,J)=>{const VV="_getGlobalPcbPositionBeforeLayout"in lV?lV._getGlobalPcbPositionBeforeLayout():lV,RV="_getGlobalPcbPositionBeforeLayout"in J?J._getGlobalPcbPositionBeforeLayout():J;return Math.sqrt((VV.x-RV.x)**2+(VV.y-RV.y)**2)};function getClosest(lV,J){if(J.length===0)throw new Error("No candidates given to getClosest method");let VV=J[0],RV=1/0;for(const UV of J){const ZV=getDistance(lV,UV);ZV<RV&&(VV=UV,RV=ZV)}return VV}var getEnteringEdgeFromDirection=lV=>({up:"bottom",down:"top",left:"right",right:"left"})[lV]??null,getStubEdges=({firstEdge:lV,firstEdgePort:J,firstDominantDirection:VV,lastEdge:RV,lastEdgePort:UV,lastDominantDirection:ZV})=>{if(lV&&J)return getStubEdges({lastEdge:{from:lV.to,to:lV.from},lastEdgePort:J,lastDominantDirection:VV}).reverse().map(IV=>({from:IV.to,to:IV.from}));let WV=[];if(RV&&UV){const IV={x:RV.to.x,y:RV.to.y};ZV==="left"||ZV==="right"?(IV.x=UV.position.x,WV.push({from:RV.to,to:{...IV}}),WV.push({from:IV,to:{...UV.position}})):(IV.y=UV.position.y,WV.push({from:RV.to,to:{...IV}}),WV.push({from:IV,to:{...UV.position}}))}return WV=WV.filter(IV=>distance$2(IV.from,IV.to)>.01),WV};function tryNow(lV){try{return[lV(),null]}catch(J){return[null,J]}}var getOtherSchematicTraces=({db:lV,source_trace_id:J,sameNetOnly:VV,differentNetOnly:RV})=>{!VV&&!RV&&(RV=!0);const UV=lV.source_trace.get(J),ZV=[];for(const WV of lV.schematic_trace.list()){if(WV.source_trace_id===J)continue;const IV=lV.source_trace.get(WV.source_trace_id),dV=(IV==null?void 0:IV.subcircuit_connectivity_map_key)===UV.subcircuit_connectivity_map_key;RV&&dV||VV&&!dV||ZV.push(WV)}return ZV},createSchematicTraceCrossingSegments=({edges:lV,db:J,source_trace_id:VV})=>{const RV=getOtherSchematicTraces({db:J,source_trace_id:VV,differentNetOnly:!0}).flatMap(UV=>UV.edges);for(let UV=0;UV<lV.length;UV++){const ZV=lV[UV],WV=Math.abs(ZV.from.x-ZV.to.x)<.01?"vertical":"horizontal",IV=[];for(const aV of RV){const GV=aV.from.x===aV.to.x?"vertical":"horizontal";if(WV===GV)continue;if(doesLineIntersectLine$1([ZV.from,ZV.to],[aV.from,aV.to],{lineThickness:.01})){const TV=WV==="vertical"?ZV.from.x:aV.from.x,iV=WV==="vertical"?aV.from.y:ZV.from.y,tV={x:TV,y:iV};IV.push({otherEdge:aV,crossingPoint:tV,distanceFromEdgeFrom:distance$2(ZV.from,tV)})}}if(IV.length===0)continue;let dV=IV[0];for(const aV of IV)aV.distanceFromEdgeFrom<dV.distanceFromEdgeFrom&&(dV=aV);const CV=dV.crossingPoint,FV=.075,NV=getUnitVectorFromPointAToB(ZV.from,CV),gV={x:CV.x-NV.x*FV/2,y:CV.y-NV.y*FV/2},eV={x:CV.x+NV.x*FV/2,y:CV.y+NV.y*FV/2},JV=distance$2(eV,ZV.to)<FV,nV=[{from:ZV.from,to:gV},{from:gV,to:eV,is_crossing:!0},{from:eV,to:ZV.to}];lV.splice(UV,1,...nV),UV+=nV.length-2,JV&&UV++}},isOrthogonal=(lV,J)=>{const VV=lV.from.x===lV.to.x,RV=J.from.x===J.to.x;return VV!==RV},getIntersectionPoint=(lV,J)=>{if(!isOrthogonal(lV,J))return null;const VV=lV.from.x===lV.to.x,RV=VV?lV:J,UV=VV?J:lV,ZV=Math.min(UV.from.x,UV.to.x),WV=Math.max(UV.from.x,UV.to.x);if(RV.from.x<ZV||RV.from.x>WV)return null;const IV=Math.min(RV.from.y,RV.to.y),dV=Math.max(RV.from.y,RV.to.y);return UV.from.y<IV||UV.from.y>dV?null:{x:RV.from.x,y:UV.from.y}},createSchematicTraceJunctions=({edges:lV,db:J,source_trace_id:VV})=>{const RV=getOtherSchematicTraces({db:J,source_trace_id:VV,sameNetOnly:!0}).flatMap(ZV=>ZV.edges),UV=new Set;for(const ZV of lV)for(const WV of RV){const IV=getIntersectionPoint(ZV,WV);IV&&UV.add(`${IV.x},${IV.y}`)}return Array.from(UV).map(ZV=>{const[WV,IV]=ZV.split(",").map(Number);return{x:WV,y:IV}})},pushEdgesOfSchematicTraceToPreventOverlap=({edges:lV,db:J,source_trace_id:VV})=>{J.source_trace.get(VV);const RV=getOtherSchematicTraces({db:J,source_trace_id:VV,differentNetOnly:!0}).flatMap(ZV=>ZV.edges),UV=ZV=>{const{from:WV,to:IV}=ZV;return WV.x===IV.x?"vertical":"horizontal"};for(const ZV of lV){const WV=UV(ZV),IV=()=>RV.find(CV=>UV(CV)===WV&&doesLineIntersectLine$1([ZV.from,ZV.to],[CV.from,CV.to],{lineThickness:.05}));let dV=IV();for(;dV;)WV==="horizontal"?(ZV.from.y+=.1,ZV.to.y+=.1):(ZV.from.x+=.1,ZV.to.x+=.1),dV=IV()}},countComplexElements=(lV,J)=>{let VV=0;VV+=lV.length??0,VV+=J.filter(RV=>RV.is_crossing).length;for(let RV=1;RV<J.length;RV++){const UV=J[RV-1],ZV=J[RV],WV=Math.abs(UV.from.x-UV.to.x)<.01,IV=Math.abs(ZV.from.x-ZV.to.x)<.01;WV!==IV&&VV++}return VV},calculateOffsets=lV=>{var IV,dV;const J={left:{x:-.5,y:0},up:{x:.5,y:.5},right:{x:.5,y:0},down:{x:0,y:-.5}}[lV.facingDirection],VV=(IV=lV.parent)!=null&&IV.config.shouldRenderAsSchematicBox?3:1,RV=(dV=lV.parent)!=null&&dV.config.shouldRenderAsSchematicBox&&(lV.facingDirection==="left"||lV.facingDirection==="right")?3:1,UV=J.x,ZV=J.y,WV=lV.facingDirection==="up"?.5:0;return{schBoxVertOffset:VV,schBoxHorzOffset:RV,horzPortDirection:UV,vertPortDirectionOffset:ZV,handleUp:WV}},createDownwardNetLabelGroundSymbol=({fromPort:lV,toPort:J,fromAnchorPos:VV,toAnchorPos:RV,schDisplayLabel:UV,source_trace_id:ZV},{db:WV})=>{const IV=calculateOffsets(lV);WV.schematic_net_label.insert({anchor_side:"top",center:{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset},source_net_id:lV.source_port_id,text:UV,anchor_position:{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset},symbol_name:"ground_horz"}),WV.schematic_trace.insert({edges:[{from:{x:VV.x,y:VV.y},to:{x:VV.x,y:VV.y+IV.handleUp*IV.schBoxVertOffset}},{from:{x:VV.x,y:VV.y},to:{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset}}],junctions:[{x:VV.x+IV.horzPortDirection*IV.schBoxHorzOffset,y:VV.y+IV.vertPortDirectionOffset*IV.schBoxVertOffset}],source_trace_id:ZV});const dV=calculateOffsets(J);WV.schematic_net_label.insert({anchor_side:"top",center:{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset},source_net_id:J.source_port_id,text:UV,anchor_position:{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset},symbol_name:"ground_horz"});const CV=J.facingDirection==="up"?.5:0;WV.schematic_trace.insert({edges:[{from:{x:RV.x,y:RV.y},to:{x:RV.x,y:RV.y+CV*dV.schBoxVertOffset}},{from:{x:RV.x,y:RV.y},to:{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset}}],junctions:[{x:RV.x+dV.horzPortDirection*dV.schBoxHorzOffset,y:RV.y+dV.vertPortDirectionOffset*dV.schBoxVertOffset}],source_trace_id:ZV})},getMaxLengthFromConnectedCapacitors=(lV,{db:J})=>{const VV=lV.map(RV=>{const UV=J.source_port.get(RV.source_port_id);if(!(UV!=null&&UV.source_component_id))return null;const ZV=J.source_component.get(UV.source_component_id);return(ZV==null?void 0:ZV.ftype)==="simple_capacitor"?ZV.max_decoupling_trace_length:null}).filter(RV=>RV!==null);if(VV.length!==0)return Math.min(...VV)};function getTraceDisplayName({ports:lV,nets:J}){var VV,RV,UV;if(lV.length>=2)return`${(VV=lV[0])==null?void 0:VV.selector} to ${(RV=lV[1])==null?void 0:RV.selector}`;if(lV.length===1&&J.length===1)return`${(UV=lV[0])==null?void 0:UV.selector} to net.${J[0]._parsedProps.name}`}var portToObjective=lV=>({...lV._getGlobalPcbPositionAfterLayout(),layers:lV.getAvailablePcbLayers()}),Trace=class extends PrimitiveComponent{constructor(J){super(J);MI(this,"source_trace_id",null);MI(this,"pcb_trace_id",null);MI(this,"schematic_trace_id",null);MI(this,"_portsRoutedOnPcb");MI(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:VV}=this;if(!VV)throw new Error("Trace has no parent");const UV=this.getTracePortPathSelectors().map(ZV=>({selector:ZV,port:this.getSubcircuit().selectOne(ZV,{type:"port"})??null}));for(const{selector:ZV,port:WV}of UV)if(!WV){const IV=ZV.replace(/\>.*$/,""),dV=this.getSubcircuit().selectOne(IV);dV?this.renderError(`Could not find port for selector "${ZV}" (did you forget to include the pin name?)
7296
+ searched component ${dV.getString()}, which has ports: ${dV.children.filter(CV=>CV.componentName==="Port").map(CV=>`${CV.getString()}(${CV.getNameAndAliases().join(",")})`).join(" & ")}`):this.renderError(`Could not find port for selector "${ZV}"`)}return UV.some(ZV=>!ZV.port)?{allPortsFound:!1}:{allPortsFound:!0,portsWithSelectors:UV,ports:UV.map(({port:ZV})=>ZV)}}_findConnectedNets(){const J=this.getTracePathNetSelectors().map(RV=>({selector:RV,net:this.getSubcircuit().selectOne(RV,{type:"net"})})),VV=J.filter(RV=>!RV.net);return VV.length>0&&this.renderError(`Could not find net for selector "${VV[0].selector}" inside ${this}`),{netsWithSelectors:J,nets:J.map(RV=>RV.net)}}_getAllTracesConnectedToSameNet(){const J=this.getSubcircuit().selectAll("trace"),VV=this._findConnectedNets().nets,RV=this._findConnectedPorts().ports??[];return J.filter(UV=>{if(UV===this)return!1;const ZV=UV._findConnectedNets().nets,WV=UV._findConnectedPorts().ports??[];return ZV.some(IV=>VV.includes(IV))||WV.some(IV=>RV.includes(IV))})}_isExplicitlyConnectedToPort(J){const{allPortsFound:VV,portsWithSelectors:RV}=this._findConnectedPorts();return VV?RV.map(ZV=>ZV.port).includes(J):!1}_isExplicitlyConnectedToNet(J){return this._findConnectedNets().nets.includes(J)}doInitialCreateNetsFromProps(){createNetsFromProps(this,this.getTracePathNetSelectors())}doInitialSourceTraceRender(){const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this;if(!RV){this.renderError("Trace has no parent");return}const{allPortsFound:UV,portsWithSelectors:ZV}=this._findConnectedPorts();if(!UV)return;const WV=this._findConnectedNets().nets,IV=getTraceDisplayName({ports:ZV,nets:WV}),dV=J.source_trace.insert({connected_source_port_ids:ZV.map(CV=>CV.port.source_port_id),connected_source_net_ids:WV.map(CV=>CV.source_net_id),max_length:getMaxLengthFromConnectedCapacitors(ZV.map(CV=>CV.port),{db:J})??VV.maxLength,display_name:IV});this.source_trace_id=dV.source_trace_id}doInitialPcbTraceRender(){var pV,HV;if((pV=this.root)!=null&&pV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this,UV=this.getSubcircuit();if(!RV)throw new Error("Trace has no parent");if(UV._parsedProps.routingDisabled)return;const ZV=(HV=UV._parsedProps.pcbRouteCache)==null?void 0:HV.pcbTraces;if(ZV){const oV=J.pcb_trace.insert({route:ZV.flatMap(DV=>DV.route),source_trace_id:this.source_trace_id});this.pcb_trace_id=oV.pcb_trace_id;return}if(!UV._shouldUseTraceByTraceRouting())return;const{allPortsFound:WV,ports:IV}=this._findConnectedPorts();if(!WV)return;const dV=[];for(const oV of IV)oV._hasMatchedPcbPrimitive()||dV.push(oV);if(dV.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: ${dV.map(oV=>oV.getString()).join(", ")}`,pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[],pcb_port_ids:dV.map(oV=>oV.pcb_port_id).filter(Boolean)});return}const CV=this._findConnectedNets().netsWithSelectors;if(IV.length===0&&CV.length===2){this.renderError("Trace connects two nets, we haven't implemented a way to route this yet");return}else if(IV.length===1&&CV.length===1){const oV=IV[0],wV=CV[0].net.getAllConnectedPorts().filter(dl=>dl!==oV);if(wV.length===0){console.log("Nothing to connect this port to, the net is empty. TODO should emit a warning!");return}const _V=getClosest(oV,wV);IV.push(_V)}else if(IV.length>1&&CV.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 FV=IV.flatMap(oV=>oV.matchedComponents.filter(DV=>DV.componentName==="TraceHint")),NV=(this._parsedProps.pcbRouteHints??[]).concat(FV.flatMap(oV=>oV.getPcbRouteHints()));if(IV.length>2){this.renderError(`Trace has more than two ports (${IV.map(oV=>oV.getString()).join(", ")}), routing between more than two ports for a single trace is not implemented`);return}if(this.getSubcircuit().selectAll("trace").filter(oV=>oV.renderPhaseStates.PcbTraceRender.initialized).some(oV=>oV._portsRoutedOnPcb.length===IV.length&&oV._portsRoutedOnPcb.every(DV=>IV.includes(DV))))return;let JV=[];NV.length===0?JV=[portToObjective(IV[0]),portToObjective(IV[1])]:JV=[portToObjective(IV[0]),...NV,portToObjective(IV[1])];const nV=findPossibleTraceLayerCombinations(JV),aV=getFullConnectivityMapFromCircuitJson$1(this.root.db.toArray()),[GV,cV]=tryNow(()=>getObstaclesFromSoup(this.root.db.toArray()));if(cV){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: ${cV.message}`,source_trace_id:this.source_trace_id,center:{x:0,y:0},pcb_port_ids:IV.map(oV=>oV.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[]});return}for(const oV of GV)if(oV.connectedTo.length>0){const wV=aV.getNetConnectedToId(oV.connectedTo[0]);wV&&oV.connectedTo.push(wV)}let TV=[];if(nV.length===0)TV=JV;else{const oV=nV[0].layer_path;TV=JV.map((DV,wV)=>DV.via?{...DV,via_to_layer:oV[wV]}:{...DV,layers:[oV[wV]]})}TV[0].pcb_port_id=IV[0].pcb_port_id,TV[TV.length-1].pcb_port_id=IV[1].pcb_port_id;const iV=[];for(const[oV,DV]of pairs$1(TV)){const wV="via_to_layer"in oV?oV.via_to_layer:null,_V=2,dl="layers"in oV&&oV.layers.length===1?oV.layers[0]:wV??"top",nl="layers"in DV&&DV.layers.length===1?DV.layers[0]:wV??"top",Il="pcb_port_id"in oV?oV.pcb_port_id:null,LV="pcb_port_id"in DV?DV.pcb_port_id:null,OV=this.getSubcircuit()._parsedProps.minTraceWidth??.16,$V=new MultilayerIjump({OBSTACLE_MARGIN:OV*2,isRemovePathLoopsEnabled:!0,optimizeWithGoalBoxes:!!(Il&&LV),connMap:aV,input:{obstacles:GV,minTraceWidth:OV,connections:[{name:this.source_trace_id,pointsToConnect:[{...oV,layer:dl,pcb_port_id:Il},{...DV,layer:nl,pcb_port_id:LV}]}],layerCount:2,bounds:{minX:Math.min(oV.x,DV.x)-_V,maxX:Math.max(oV.x,DV.x)+_V,minY:Math.min(oV.y,DV.y)-_V,maxY:Math.max(oV.y,DV.y)+_V}}});let Cl=null;try{Cl=$V.solveAndMapToTraces()}catch(pl){this.renderError({type:"pcb_trace_error",pcb_trace_error_id:this.source_trace_id,error_type:"pcb_trace_error",message:`error solving route: ${pl.message}`,source_trace_id:this.pcb_trace_id,center:{x:(oV.x+DV.x)/2,y:(oV.y+DV.y)/2},pcb_port_ids:IV.map(ml=>ml.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:IV.map(ml=>ml.pcb_component_id)})}if(!Cl)return;if(Cl.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:(oV.x+DV.x)/2,y:(oV.y+DV.y)/2},pcb_port_ids:IV.map(pl=>pl.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:IV.map(pl=>pl.pcb_component_id)});return}const[Zl]=Cl;wV&&(Zl.route=Zl.route.map(pl=>(pl.route_type==="wire"&&!pl.layer&&(pl.layer=wV),pl))),Il&&Zl.route[0].route_type==="wire"&&(Zl.route[0].start_pcb_port_id=Il);const el=Zl.route[Zl.route.length-1];LV&&el.route_type==="wire"&&(el.end_pcb_port_id=LV),iV.push(Zl.route)}const tV=mergeRoutes(iV),MV=getTraceLength(tV),AV=J.pcb_trace.insert({route:tV,source_trace_id:this.source_trace_id,trace_length:MV});this._portsRoutedOnPcb=IV,this.pcb_trace_id=AV.pcb_trace_id;for(const oV of tV)oV.route_type==="via"&&J.pcb_via.insert({pcb_trace_id:AV.pcb_trace_id,x:oV.x,y:oV.y,hole_diameter:.3,outer_diameter:.6,layers:[oV.from_layer,oV.to_layer],from_layer:oV.from_layer,to_layer:oV.to_layer})}_doInitialSchematicTraceRenderWithDisplayLabel(){var TV,iV,tV,MV,AV,pV;if((TV=this.root)!=null&&TV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this;if(!RV)throw new Error("Trace has no parent");const{allPortsFound:UV,portsWithSelectors:ZV}=this._findConnectedPorts();if(!UV)return;const WV=ZV.map(({port:HV})=>({port:HV,position:HV._getGlobalSchematicPositionAfterLayout(),schematic_port_id:HV.schematic_port_id,facingDirection:HV.facingDirection}));if(WV.length<2)throw new Error("Expected at least two ports in portsWithPosition.");let IV,dV;const CV=WV[0].position,FV=WV[0].port;if("path"in this.props){if(this.props.path.length!==2)throw new Error("Invalid 'path': Must contain exactly two elements.");[IV,dV]=this.props.path}else{if(!("from"in this.props&&"to"in this.props))throw new Error("Missing 'from' or 'to' properties in props.");IV=this.props.from,dV=this.props.to}if(!FV.source_port_id)throw new Error(`Missing source_port_id for the 'from' port (${IV}).`);const NV=WV[1].position,gV=WV[1].port;if(!gV.source_port_id)throw new Error(`Missing source_port_id for the 'to' port (${dV}).`);const eV=J.schematic_net_label.list().find(HV=>HV.source_net_id===FV.source_port_id),JV=J.schematic_net_label.list().find(HV=>HV.source_net_id===gV.source_port_id);if(eV&&eV.text!==this.props.schDisplayLabel||JV&&(JV==null?void 0:JV.text)!==this.props.schDisplayLabel)throw new Error(`Cannot create net label for port ${eV?IV:dV} because it already has a net label with text "${eV?eV.text:JV==null?void 0:JV.text}".`);if((iV=this.props.schDisplayLabel)!=null&&iV.toLocaleLowerCase().includes("gnd")||(tV=this.props.schDisplayLabel)!=null&&tV.toLocaleLowerCase().includes("ground")){createDownwardNetLabelGroundSymbol({fromPort:FV,toPort:gV,fromAnchorPos:CV,toAnchorPos:NV,schDisplayLabel:this.props.schDisplayLabel,source_trace_id:this.source_trace_id},{db:J});return}const[nV,aV]=ZV.map(({port:HV})=>HV),cV=((MV=nV.parent)==null?void 0:MV.config.shouldRenderAsSchematicBox)?`${(AV=nV==null?void 0:nV.parent)==null?void 0:AV.props.name}_${nV==null?void 0:nV.props.name}`:`${(pV=aV==null?void 0:aV.parent)==null?void 0:pV.props.name}_${aV==null?void 0:aV.props.name}`;J.schematic_net_label.insert({text:this.props.schDisplayLabel??cV,source_net_id:gV.source_port_id,anchor_position:NV,center:NV,anchor_side:getEnteringEdgeFromDirection(gV.facingDirection)??"bottom"}),J.schematic_net_label.insert({text:this.props.schDisplayLabel??cV,source_net_id:FV.source_port_id,anchor_position:CV,center:CV,anchor_side:getEnteringEdgeFromDirection(FV.facingDirection)??"bottom"})}_isPassiveToChipConnection(){const{allPortsFound:J,ports:VV}=this._findConnectedPorts();if(!J||VV.length!==2)return!1;const[RV,UV]=VV;if(!(RV!=null&&RV.parent)||!(UV!=null&&UV.parent))return!1;const ZV=RV.parent.config.shouldRenderAsSchematicBox,WV=UV.parent.config.shouldRenderAsSchematicBox;return ZV&&!WV||!ZV&&WV}doInitialSchematicTraceRender(){var oV,DV,wV;if((oV=this.root)!=null&&oV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV,parent:RV}=this;if(!RV)throw new Error("Trace has no parent");const{allPortsFound:UV,portsWithSelectors:ZV}=this._findConnectedPorts(),{netsWithSelectors:WV}=this._findConnectedNets();if(!UV)return;const IV=[],dV={name:this.source_trace_id,pointsToConnect:[]};if(this.props.schDisplayLabel&&("from"in this.props&&"to"in this.props||"path"in this.props)){this._doInitialSchematicTraceRenderWithDisplayLabel();return}for(const _V of J.toArray())_V.type==="schematic_component"&&IV.push({type:"rect",layers:["top"],center:_V.center,width:_V.size.width,height:_V.size.height,connectedTo:[]}),_V.type==="schematic_port"&&IV.push({type:"rect",layers:["top"],center:_V.center,width:.1,height:.1,connectedTo:[]}),_V.type==="schematic_text"&&IV.push({type:"rect",layers:["top"],center:_V.position,width:(((DV=_V.text)==null?void 0:DV.length)??0)*.1,height:.2,connectedTo:[]}),_V.type==="schematic_box"&&IV.push({type:"rect",layers:["top"],center:{x:_V.x,y:_V.y},width:_V.width,height:_V.width,connectedTo:[]}),_V.type==="schematic_net_label"&&_V.symbol_name?IV.push({type:"rect",layers:["top"],center:_V.center,width:.25,height:.6,connectedTo:[]}):_V.type==="schematic_net_label"&&IV.push({type:"rect",layers:["top"],center:_V.center,width:(((wV=_V.text)==null?void 0:wV.length)??0)*.1,height:.2,connectedTo:[]});const CV=ZV.map(({port:_V})=>({port:_V,position:_V._getGlobalSchematicPositionAfterLayout(),schematic_port_id:_V.schematic_port_id??void 0,facingDirection:_V.facingDirection}));if(CV.length===1&&WV.length===1){const _V=WV[0].net,{port:dl,position:nl}=CV[0];J.schematic_net_label.insert({text:_V._parsedProps.name,source_net_id:_V.source_net_id,anchor_position:nl,center:nl,anchor_side:getEnteringEdgeFromDirection(dl.facingDirection)??"bottom"});return}if(CV.length<2)return;dV.pointsToConnect=CV.map(({position:_V})=>({..._V,layer:"top"}));const NV=computeObstacleBounds(IV),gV={minTraceWidth:.1,obstacles:IV,connections:[dV],bounds:NV,layerCount:1};let eV=MultilayerIjump;this.getSubcircuit().props._schDirectLineRoutingEnabled&&(eV=DirectLineRouter);const nV=new eV({input:gV,OBSTACLE_MARGIN:.1,isRemovePathLoopsEnabled:!0}).solveAndMapToTraces();if(nV.length===0)return;const[{route:aV}]=nV,GV=[];for(let _V=0;_V<aV.length-1;_V++)GV.push({from:aV[_V],to:aV[_V+1]});const cV=this.source_trace_id;pushEdgesOfSchematicTraceToPreventOverlap({edges:GV,db:J,source_trace_id:cV}),createSchematicTraceCrossingSegments({edges:GV,db:J,source_trace_id:cV});const TV=createSchematicTraceJunctions({edges:GV,db:J,source_trace_id:this.source_trace_id}),iV=GV[GV.length-1],tV=CV[CV.length-1],MV=getDominantDirection(iV);GV.push(...getStubEdges({lastEdge:iV,lastEdgePort:tV,lastDominantDirection:MV}));const AV=GV[0],pV=CV[0],HV=getDominantDirection(AV);if(GV.unshift(...getStubEdges({firstEdge:AV,firstEdgePort:pV,firstDominantDirection:HV})),!this.source_trace_id)throw new Error("Missing source_trace_id for schematic trace insertion.");if(countComplexElements(TV,GV)>=5&&this._isPassiveToChipConnection())this._doInitialSchematicTraceRenderWithDisplayLabel(),J.schematic_trace.delete(this.schematic_trace_id);else{const _V=J.schematic_trace.insert({source_trace_id:this.source_trace_id,edges:GV,junctions:TV});this.schematic_trace_id=_V.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 Trace({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.decouplingFor})),this.add(new Trace({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.decouplingTo})))}doInitialSourceRender(){const{db:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.source_component_id}},Chip=class extends NormalComponent{constructor(){super(...arguments);MI(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:VV}=this,RV=J.source_component.insert({ftype:"simple_chip",name:VV.name,manufacturer_part_number:VV.manufacturerPartNumber,supplier_part_numbers:VV.supplierPartNumbers});this.source_component_id=RV.source_component_id}doInitialPcbComponentRender(){var UV;if((UV=this.root)!=null&&UV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.pcb_component.insert({center:{x:VV.pcbX??0,y:VV.pcbY??0},width:2,height:3,layer:VV.layer??"top",rotation:VV.pcbRotation??0,source_component_id:this.source_component_id});this.pcb_component_id=RV.pcb_component_id}},Diode=class extends NormalComponent{constructor(){super(...arguments);MI(this,"pos",this.portMap.pin1);MI(this,"anode",this.portMap.pin1);MI(this,"neg",this.portMap.pin2);MI(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);MI(this,"schematicDimensions",null)}get config(){return{componentName:"Jumper",zodProps:jumperProps,shouldRenderAsSchematicBox:!0}}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.source_component.insert({ftype:"simple_chip",name:VV.name,manufacturer_part_number:VV.manufacturerPartNumber,supplier_part_numbers:VV.supplierPartNumbers});this.source_component_id=RV.source_component_id}doInitialPcbComponentRender(){var UV;if((UV=this.root)!=null&&UV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=J.pcb_component.insert({center:{x:VV.pcbX??0,y:VV.pcbY??0},width:2,height:3,layer:VV.layer??"top",rotation:VV.pcbRotation??0,source_component_id:this.source_component_id});this.pcb_component_id=RV.pcb_component_id}},Led=class extends NormalComponent{constructor(){super(...arguments);MI(this,"pos",this.portMap.pin1);MI(this,"anode",this.portMap.pin1);MI(this,"neg",this.portMap.pin2);MI(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);MI(this,"pos",this.portMap.pin1);MI(this,"positive",this.portMap.pin1);MI(this,"neg",this.portMap.pin2);MI(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 Trace({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pullupFor})),this.add(new Trace({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pullupTo})))}doInitialSourceRender(){const{db:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.source_component_id}},edgeSpecifiers=["leftedge","rightedge","topedge","bottomedge","center"],Constraint2=class extends PrimitiveComponent{get config(){return{componentName:"Constraint",zodProps:constraintProps}}constructor(lV){if(super(lV),("xdist"in lV||"ydist"in lV)&&!("edgeToEdge"in lV)&&!("centerToCenter"in lV))throw new Error(`edgeToEdge, centerToCenter must be set for xDist or yDist for ${this}`);if("for"in lV&&lV.for.length<2)throw new Error(`"for" must have at least two selectors for ${this}`)}_getAllReferencedComponents(){const lV=[],J=this.getPrimitiveContainer();function VV(RV){const UV=RV.split(" ").pop(),ZV=edgeSpecifiers.includes(UV)?UV:void 0,WV=ZV?RV.replace(` ${ZV}`,""):RV,IV=J.selectOne(WV,{pcbPrimitive:!0});IV&&lV.push({selector:RV,component:IV,componentSelector:WV,edge:ZV})}for(const RV of["left","right","top","bottom"])RV in this._parsedProps&&VV(this._parsedProps[RV]);if("for"in this._parsedProps)for(const RV of this._parsedProps.for)VV(RV);return{componentsWithSelectors:lV}}},FabricationNotePath=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"fabrication_note_path_id",null)}get config(){return{componentName:"FabricationNotePath",zodProps:fabricationNotePathProps}}doInitialPcbPrimitiveRender(){var WV,IV;if((WV=this.root)!=null&&WV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenPath. Must be "top" or "bottom".`);const UV=this._computePcbGlobalTransformBeforeLayout(),ZV=J.pcb_fabrication_note_path.insert({pcb_component_id:(IV=this.parent)==null?void 0:IV.pcb_component_id,layer:RV,color:VV.color,route:VV.route.map(dV=>{const CV=applyToPoint(UV,{x:dV.x,y:dV.y});return{...dV,x:CV.x,y:CV.y}}),stroke_width:VV.strokeWidth??.1});this.fabrication_note_path_id=ZV.pcb_fabrication_note_path_id}},FabricationNoteText=class extends PrimitiveComponent{get config(){return{componentName:"FabricationNoteText",zodProps:fabricationNoteTextProps}}doInitialPcbPrimitiveRender(){var RV;if((RV=this.root)!=null&&RV.pcbDisabled)return;const{db:lV}=this.root,{_parsedProps:J}=this,VV=this.getPrimitiveContainer();lV.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:VV.pcb_component_id})}},Subcircuit=class extends Group$2{constructor(lV){super({...lV,subcircuit:!0})}},NetAlias=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"source_net_alias_id")}get config(){return{componentName:"NetAlias",zodProps:netAliasProps}}doInitialSchematicComponentRender(){var ZV;if((ZV=this.root)!=null&&ZV.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV={x:VV.schX??0,y:VV.schY??0},UV=J.schematic_net_label.insert({text:VV.net,source_net_id:VV.net,anchor_position:RV,center:RV,anchor_side:"bottom"});this.source_net_alias_id=UV.source_net_id}},SilkscreenCircle=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_circle_id",null)}get config(){return{componentName:"SilkscreenCircle",zodProps:silkscreenCircleProps}}doInitialPcbPrimitiveRender(){var ZV,WV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenCircle. Must be "top" or "bottom".`);this._computePcbGlobalTransformBeforeLayout();const UV=J.pcb_silkscreen_circle.insert({pcb_component_id:(WV=this.parent)==null?void 0:WV.pcb_component_id,layer:RV,center:{x:VV.pcbX??0,y:VV.pcbY??0},radius:VV.radius});this.pcb_silkscreen_circle_id=UV.pcb_silkscreen_circle_id}},SilkscreenRect=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_rect_id",null)}get config(){return{componentName:"SilkscreenRect",zodProps:silkscreenRectProps}}doInitialPcbPrimitiveRender(){var ZV,WV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenRect. Must be "top" or "bottom".`);const UV=J.pcb_silkscreen_rect.insert({pcb_component_id:(WV=this.parent)==null?void 0:WV.pcb_component_id,layer:RV,center:{x:VV.pcbX??0,y:VV.pcbY??0},width:VV.width,height:VV.height});this.pcb_silkscreen_rect_id=UV.pcb_silkscreen_rect_id}},SilkscreenText=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenText",zodProps:silkscreenTextProps}}doInitialPcbPrimitiveRender(){var WV;if((WV=this.root)!=null&&WV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this.getPrimitiveContainer(),UV=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer:ZV}=this._getPcbPrimitiveFlippedHelpers();J.pcb_silkscreen_text.insert({anchor_alignment:VV.anchorAlignment,anchor_position:{x:UV.x,y:UV.y},font:VV.font??"tscircuit2024",font_size:VV.fontSize??1,layer:ZV(VV.layer??"top"),text:VV.text??"",ccw_rotation:VV.pcbRotation,pcb_component_id:RV.pcb_component_id})}getPcbSize(){const{_parsedProps:J}=this,VV=J.fontSize??1,UV=(J.text??"").length*VV,ZV=VV;return{width:UV*VV,height:ZV*VV}}},SilkscreenLine=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_silkscreen_line_id",null)}get config(){return{componentName:"SilkscreenLine",zodProps:silkscreenLineProps}}doInitialPcbPrimitiveRender(){var ZV,WV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=VV.layer??"top";if(RV!=="top"&&RV!=="bottom")throw new Error(`Invalid layer "${RV}" for SilkscreenLine. Must be "top" or "bottom".`);const UV=J.pcb_silkscreen_line.insert({pcb_component_id:(WV=this.parent)==null?void 0:WV.pcb_component_id,layer:RV,x1:VV.x1,y1:VV.y1,x2:VV.x2,y2:VV.y2,stroke_width:VV.strokeWidth??.1});this.pcb_silkscreen_line_id=UV.pcb_silkscreen_line_id}},Via=class extends PrimitiveComponent{constructor(){super(...arguments);MI(this,"pcb_via_id",null);MI(this,"matchedPort",null);MI(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,VV=J.pcb_via.get(this.pcb_via_id),RV=this.getPcbSize();return{center:{x:VV.x,y:VV.y},bounds:{left:VV.x-RV.width/2,top:VV.y-RV.height/2,right:VV.x+RV.width/2,bottom:VV.y+RV.height/2},width:RV.width,height:RV.height}}_setPositionFromLayout(J){const{db:VV}=this.root;VV.pcb_via.update(this.pcb_via_id,{x:J.x,y:J.y})}doInitialPcbPrimitiveRender(){var ZV;if((ZV=this.root)!=null&&ZV.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:VV}=this,RV=this._getGlobalPcbPositionBeforeLayout(),UV=J.pcb_via.insert({x:RV.x,y:RV.y,hole_diameter:VV.holeDiameter,outer_diameter:VV.outerDiameter,layers:["bottom","top"],from_layer:VV.fromLayer||"bottom",to_layer:VV.toLayer||"top"});this.pcb_via_id=UV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:"simple_power_source",capacity:J.capacity,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=VV.source_component_id}},PinHeader=class extends NormalComponent{get config(){return{componentName:"PinHeader",zodProps:pinHeaderProps,shouldRenderAsSchematicBox:!0}}_getImpliedFootprintString(){var UV;const lV=this._parsedProps.pinCount??((UV=this._parsedProps.pinLabels)==null?void 0:UV.length)??0,J=this._parsedProps.holeDiameter,VV=this._parsedProps.platedDiameter,RV=this._parsedProps.pitch;return lV>0&&RV?!J&&!VV?`pinrow${lV}_p${RV}`:`pinrow${lV}_p${RV}_id${J}_od${VV}`:null}initPorts(){var J;const lV=this._parsedProps.pinCount??((J=this._parsedProps.pinLabels)==null?void 0:J.length)??1;for(let VV=1;VV<=lV;VV++)this.add(new Port({name:`pin${VV}`,pinNumber:VV,aliases:[]}))}_getSchematicPortArrangement(){const lV=this._parsedProps.pinCount??1,J=this._parsedProps.facingDirection??"right";return{leftSize:J==="left"?lV:0,rightSize:J==="right"?lV:0}}doInitialSourceRender(){const{db:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.source_component_id}};function getResonatorSymbolName(lV){switch(lV){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:lV}=this.root,{_parsedProps:J}=this,VV=lV.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=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:FTYPE.simple_inductor,inductance:J.inductance,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:"simple_potentiometer",max_resistance:J.maxResistance});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:FTYPE.simple_push_button,supplier_part_numbers:J.supplierPartNumbers});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({name:J.name,ftype:"simple_crystal",frequency:J.frequency,load_capacitance:J.loadCapacitance});this.source_component_id=VV.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:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({ftype:"simple_transistor",name:J.name,transistor_type:J.transistorType});this.source_component_id=VV.source_component_id}},Mosfet=class extends NormalComponent{get config(){const lV=this.props.mosfetMode==="depletion"?"d":"e";return{componentName:"Mosfet",schematicSymbolName:`${this.props.channelType}_channel_${lV}_mosfet_transistor`,zodProps:mosfetProps,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:lV}=this.root,{_parsedProps:J}=this,VV=lV.source_component.insert({ftype:"simple_mosfet",name:J.name,mosfet_mode:J.mosfetMode,channel_type:J.channelType});this.source_component_id=VV.source_component_id}},RootCircuit=class{constructor(){MI(this,"firstChild",null);MI(this,"children");MI(this,"db");MI(this,"root",null);MI(this,"isRoot",!0);MI(this,"schematicDisabled",!1);MI(this,"pcbDisabled",!1);MI(this,"pcbRoutingDisabled",!1);MI(this,"name");MI(this,"_hasRenderedAtleastOnce",!1);MI(this,"_eventListeners",{});this.children=[],this.db=su_default$1([]),this.root=this}add(lV){let J;reactExports.isValidElement(lV)?J=createInstanceFromReactElement(lV):J=lV,this.children.push(J)}_getBoard(){return this.children.find(lV=>lV.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 lV=this.children.find(J=>J.componentName==="Board")??null;if(lV){this.firstChild=lV;return}}throw new Error("Not able to guess root component: RootCircuit has multiple children and no board")}}render(){this.firstChild||this._guessRootComponent();const{firstChild:lV,db:J}=this;if(!lV)throw new Error("RootCircuit has no root component");lV.parent=this,lV.runRenderCycle(),this._hasRenderedAtleastOnce=!0}async renderUntilSettled(){for(this.render();this._hasIncompleteAsyncEffects();)await new Promise(lV=>setTimeout(lV,100)),this.render()}_hasIncompleteAsyncEffects(){return this.children.some(lV=>lV._hasIncompleteAsyncEffects()?!0:lV.children.some(J=>J._hasIncompleteAsyncEffects()))}getSoup(){return this._hasRenderedAtleastOnce||this.render(),this.db.toArray()}getCircuitJson(){return this.getSoup()}toJson(){return this.getSoup()}async getSvg(lV){return(await Promise.resolve().then(()=>index$1).catch(VV=>{throw new Error(`To use project.getSvg, you must install the "circuit-to-svg" package.
7297
7297
 
7298
- "${VV.message}"`)})).convertCircuitJsonToPcbSvg(this.getCircuitJson())}async preview(lV){throw new Error("project.preview is not yet implemented")}computeSchematicGlobalTransform(){return identity$4()}_computePcbGlobalTransformBeforeLayout(){return identity$4()}selectAll(lV){var J;return this._guessRootComponent(),((J=this.firstChild)==null?void 0:J.selectAll(lV))??[]}selectOne(lV,J){var VV;return this._guessRootComponent(),((VV=this.firstChild)==null?void 0:VV.selectOne(lV,J))??null}emit(lV,...J){if(this._eventListeners[lV])for(const VV of this._eventListeners[lV])VV(...J)}on(lV,J){this._eventListeners[lV]||(this._eventListeners[lV]=[]),this._eventListeners[lV].push(J)}getClientOrigin(){return typeof window<"u"?window.location.origin:typeof self<"u"?self.origin:""}},Project=RootCircuit,Circuit=RootCircuit,useRenderedCircuit=lV=>{const[J,VV]=React.useState(!0),[RV,UV]=React.useState(null),[ZV,WV]=React.useState(),[IV,dV]=React.useState();return React.useEffect(()=>{VV(!0),UV(null),lV&&setTimeout(()=>{try{const CV=new RootCircuit;CV.add(lV),WV(CV),dV(CV.toJson())}catch(CV){UV(CV)}VV(!1)},1)},[lV]),{isLoading:J,error:RV,circuit:ZV,circuitJson:IV}},createUseComponent=(lV,J)=>(VV,RV)=>{const UV=[];Array.isArray(J)?UV.push(...J.flat()):typeof J=="object"&&UV.push(...Object.values(J).flat(),...Object.keys(J));const ZV=WV=>{if(WV!=null&&WV.name&&WV.name!==VV)throw new Error(`Component name mismatch. Hook name: ${VV}, Component prop name: ${WV.name}`);const IV={...RV,...WV,name:VV},dV=[];for(const CV of UV)if(IV[CV]){const FV=`.${VV} > .${CV}`,NV=IV[CV];dV.push({from:FV,to:NV}),delete IV[CV]}return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(lV,{...IV}),dV.map((CV,FV)=>jsxRuntimeExports.jsx("trace",{...CV},FV))]})};for(const WV of UV)ZV[WV]=`.${VV} > .${WV}`;return ZV},useCapacitor=createUseComponent(lV=>jsxRuntimeExports.jsx("capacitor",{...lV}),capacitorPins),useChip=lV=>createUseComponent(J=>jsxRuntimeExports.jsx("chip",{pinLabels:lV,...J}),lV),useDiode=createUseComponent(lV=>jsxRuntimeExports.jsx("diode",{...lV}),diodePins),useLed=createUseComponent(lV=>jsxRuntimeExports.jsx("led",{...lV}),ledPins),useResistor=createUseComponent(lV=>jsxRuntimeExports.jsx("resistor",{...lV}),resistorPins),applyEditEventsToManualEditsFile=({circuitJson:lV,editEvents:J,manualEditsFile:VV})=>{var UV;const RV={...VV,schematic_placements:[...VV.schematic_placements??[]]};for(const ZV of J)if(ZV.edit_event_type==="edit_schematic_component_location"){const{schematic_component_id:WV,new_center:IV}=ZV,dV=su_default$1(lV).schematic_component.get(WV);if(!dV)continue;const CV=su_default$1(lV).source_component.get(dV.source_component_id);if(!CV)continue;const FV=(UV=RV.schematic_placements)==null?void 0:UV.findIndex(gV=>gV.selector===CV.name),NV={selector:CV.name,center:IV,relative_to:"group_center"};FV>=0?RV.schematic_placements[FV]=NV:RV.schematic_placements.push(NV)}return RV};extendCatalogue(components_exports),extendCatalogue({Bug:Chip});const dist$8=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,Net,NetAlias,NormalComponent,PinHeader,PlatedHole,Port,Potentiometer,PowerSource,PrimitiveComponent,Project,PushButton,Renderable,Resistor,Resonator,RootCircuit,SilkscreenCircle,SilkscreenLine,SilkscreenPath,SilkscreenRect,SilkscreenText,SmtPad,Subcircuit,Trace,TraceHint,Transistor,Via,applyEditEventsToManualEditsFile,createUseComponent,useCapacitor,useChip,useDiode,useLed,useRenderedCircuit,useResistor},Symbol.toStringTag,{value:"Module"})),require$$2=getAugmentedNamespace(dist$8);var flatten_1$1,hasRequiredFlatten$1;function requireFlatten$1(){if(hasRequiredFlatten$1)return flatten_1$1;hasRequiredFlatten$1=1;const lV=J=>J.reduce((VV,RV)=>Array.isArray(RV)?VV.concat(lV(RV)):VV.concat(RV),[]);return flatten_1$1=lV,flatten_1$1}var padArrayToLength_1,hasRequiredPadArrayToLength;function requirePadArrayToLength(){return hasRequiredPadArrayToLength||(hasRequiredPadArrayToLength=1,padArrayToLength_1=(J,VV,RV)=>{for(J=J.slice();J.length<RV;)J.push(VV);return J}),padArrayToLength_1}var min_1$1,hasRequiredMin$1;function requireMin$1(){return hasRequiredMin$1||(hasRequiredMin$1=1,min_1$1=(J,VV,RV)=>(J[0]=Math.min(VV[0],RV[0]),J[1]=Math.min(VV[1],RV[1]),J[2]=Math.min(VV[2],RV[2]),J)),min_1$1}var max_1$1,hasRequiredMax$1;function requireMax$1(){return hasRequiredMax$1||(hasRequiredMax$1=1,max_1$1=(J,VV,RV)=>(J[0]=Math.max(VV[0],RV[0]),J[1]=Math.max(VV[1],RV[1]),J[2]=Math.max(VV[2],RV[2]),J)),max_1$1}var abs_1$1,hasRequiredAbs$1;function requireAbs$1(){return hasRequiredAbs$1||(hasRequiredAbs$1=1,abs_1$1=(J,VV)=>(J[0]=Math.abs(VV[0]),J[1]=Math.abs(VV[1]),J)),abs_1$1}var add_1$2,hasRequiredAdd$2;function requireAdd$2(){return hasRequiredAdd$2||(hasRequiredAdd$2=1,add_1$2=(J,VV,RV)=>(J[0]=VV[0]+RV[0],J[1]=VV[1]+RV[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 lV=requireAngleRadians();return angleDegrees_1=VV=>lV(VV)*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 lV=requireCreate$c();return clone_1$a=VV=>{const RV=lV();return RV[0]=VV[0],RV[1]=VV[1],RV},clone_1$a}var copy_1$5,hasRequiredCopy$5;function requireCopy$5(){return hasRequiredCopy$5||(hasRequiredCopy$5=1,copy_1$5=(J,VV)=>(J[0]=VV[0],J[1]=VV[1],J)),copy_1$5}var cross_1$1,hasRequiredCross$1;function requireCross$1(){return hasRequiredCross$1||(hasRequiredCross$1=1,cross_1$1=(J,VV,RV)=>(J[0]=0,J[1]=0,J[2]=VV[0]*RV[1]-VV[1]*RV[0],J)),cross_1$1}var distance_1$1,hasRequiredDistance$1;function requireDistance$1(){return hasRequiredDistance$1||(hasRequiredDistance$1=1,distance_1$1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1];return Math.sqrt(RV*RV+UV*UV)}),distance_1$1}var divide_1$1,hasRequiredDivide$1;function requireDivide$1(){return hasRequiredDivide$1||(hasRequiredDivide$1=1,divide_1$1=(J,VV,RV)=>(J[0]=VV[0]/RV[0],J[1]=VV[1]/RV[1],J)),divide_1$1}var dot_1$2,hasRequiredDot$2;function requireDot$2(){return hasRequiredDot$2||(hasRequiredDot$2=1,dot_1$2=(J,VV)=>J[0]*VV[0]+J[1]*VV[1]),dot_1$2}var equals_1$7,hasRequiredEquals$7;function requireEquals$7(){return hasRequiredEquals$7||(hasRequiredEquals$7=1,equals_1$7=(J,VV)=>J[0]===VV[0]&&J[1]===VV[1]),equals_1$7}var constants$1,hasRequiredConstants$1;function requireConstants$1(){if(hasRequiredConstants$1)return constants$1;hasRequiredConstants$1=1;const lV=1e5,J=1e-5,VV=1e-13,RV=Math.PI*2;return constants$1={EPS:J,NEPS:VV,TAU:RV,spatialResolution:lV},constants$1}var trigonometry,hasRequiredTrigonometry;function requireTrigonometry(){if(hasRequiredTrigonometry)return trigonometry;hasRequiredTrigonometry=1;const{NEPS:lV}=requireConstants$1(),J=UV=>Math.abs(UV)<lV?0:UV;return trigonometry={sin:UV=>J(Math.sin(UV)),cos:UV=>J(Math.cos(UV))},trigonometry}var fromAngleRadians_1,hasRequiredFromAngleRadians;function requireFromAngleRadians(){if(hasRequiredFromAngleRadians)return fromAngleRadians_1;hasRequiredFromAngleRadians=1;const{sin:lV,cos:J}=requireTrigonometry();return fromAngleRadians_1=(RV,UV)=>(RV[0]=J(UV),RV[1]=lV(UV),RV),fromAngleRadians_1}var fromAngleDegrees_1,hasRequiredFromAngleDegrees;function requireFromAngleDegrees(){if(hasRequiredFromAngleDegrees)return fromAngleDegrees_1;hasRequiredFromAngleDegrees=1;const lV=requireFromAngleRadians();return fromAngleDegrees_1=(VV,RV)=>lV(VV,RV*.017453292519943295),fromAngleDegrees_1}var fromScalar_1$2,hasRequiredFromScalar$2;function requireFromScalar$2(){return hasRequiredFromScalar$2||(hasRequiredFromScalar$2=1,fromScalar_1$2=(J,VV)=>(J[0]=VV,J[1]=VV,J)),fromScalar_1$2}var fromValues_1$4,hasRequiredFromValues$4;function requireFromValues$4(){if(hasRequiredFromValues$4)return fromValues_1$4;hasRequiredFromValues$4=1;const lV=requireCreate$c();return fromValues_1$4=(VV,RV)=>{const UV=lV();return UV[0]=VV,UV[1]=RV,UV},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,VV,RV,UV)=>{const ZV=VV[0],WV=VV[1];return J[0]=ZV+UV*(RV[0]-ZV),J[1]=WV+UV*(RV[1]-WV),J}),lerp_1$1}var max_1,hasRequiredMax;function requireMax(){return hasRequiredMax||(hasRequiredMax=1,max_1=(J,VV,RV)=>(J[0]=Math.max(VV[0],RV[0]),J[1]=Math.max(VV[1],RV[1]),J)),max_1}var min_1,hasRequiredMin;function requireMin(){return hasRequiredMin||(hasRequiredMin=1,min_1=(J,VV,RV)=>(J[0]=Math.min(VV[0],RV[0]),J[1]=Math.min(VV[1],RV[1]),J)),min_1}var multiply_1$2,hasRequiredMultiply$2;function requireMultiply$2(){return hasRequiredMultiply$2||(hasRequiredMultiply$2=1,multiply_1$2=(J,VV,RV)=>(J[0]=VV[0]*RV[0],J[1]=VV[1]*RV[1],J)),multiply_1$2}var negate_1$1,hasRequiredNegate$1;function requireNegate$1(){return hasRequiredNegate$1||(hasRequiredNegate$1=1,negate_1$1=(J,VV)=>(J[0]=-VV[0],J[1]=-VV[1],J)),negate_1$1}var rotate_1$2,hasRequiredRotate$2;function requireRotate$2(){return hasRequiredRotate$2||(hasRequiredRotate$2=1,rotate_1$2=(J,VV,RV,UV)=>{const ZV=VV[0]-RV[0],WV=VV[1]-RV[1],IV=Math.cos(UV),dV=Math.sin(UV);return J[0]=ZV*IV-WV*dV+RV[0],J[1]=ZV*dV+WV*IV+RV[1],J}),rotate_1$2}var normal_1,hasRequiredNormal;function requireNormal(){if(hasRequiredNormal)return normal_1;hasRequiredNormal=1;const{TAU:lV}=requireConstants$1(),J=requireCreate$c(),VV=requireRotate$2();return normal_1=(UV,ZV)=>VV(UV,ZV,J(),lV/4),normal_1}var normalize_1$1,hasRequiredNormalize$1;function requireNormalize$1(){return hasRequiredNormalize$1||(hasRequiredNormalize$1=1,normalize_1$1=(J,VV)=>{const RV=VV[0],UV=VV[1];let ZV=RV*RV+UV*UV;return ZV>0&&(ZV=1/Math.sqrt(ZV)),J[0]=RV*ZV,J[1]=UV*ZV,J}),normalize_1$1}var scale_1$3,hasRequiredScale$3;function requireScale$3(){return hasRequiredScale$3||(hasRequiredScale$3=1,scale_1$3=(J,VV,RV)=>(J[0]=VV[0]*RV,J[1]=VV[1]*RV,J)),scale_1$3}var snap_1$2,hasRequiredSnap$2;function requireSnap$2(){return hasRequiredSnap$2||(hasRequiredSnap$2=1,snap_1$2=(J,VV,RV)=>(J[0]=Math.round(VV[0]/RV)*RV+0,J[1]=Math.round(VV[1]/RV)*RV+0,J)),snap_1$2}var squaredDistance_1$1,hasRequiredSquaredDistance$1;function requireSquaredDistance$1(){return hasRequiredSquaredDistance$1||(hasRequiredSquaredDistance$1=1,squaredDistance_1$1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1];return RV*RV+UV*UV}),squaredDistance_1$1}var squaredLength_1$1,hasRequiredSquaredLength$1;function requireSquaredLength$1(){return hasRequiredSquaredLength$1||(hasRequiredSquaredLength$1=1,squaredLength_1$1=J=>{const VV=J[0],RV=J[1];return VV*VV+RV*RV}),squaredLength_1$1}var subtract_1$3,hasRequiredSubtract$3;function requireSubtract$3(){return hasRequiredSubtract$3||(hasRequiredSubtract$3=1,subtract_1$3=(J,VV,RV)=>(J[0]=VV[0]-RV[0],J[1]=VV[1]-RV[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,VV,RV)=>{const UV=VV[0],ZV=VV[1];return J[0]=RV[0]*UV+RV[4]*ZV+RV[12],J[1]=RV[1]*UV+RV[5]*ZV+RV[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,VV)=>(J[0]=Math.abs(VV[0]),J[1]=Math.abs(VV[1]),J[2]=Math.abs(VV[2]),J)),abs_1}var add_1$1,hasRequiredAdd$1;function requireAdd$1(){return hasRequiredAdd$1||(hasRequiredAdd$1=1,add_1$1=(J,VV,RV)=>(J[0]=VV[0]+RV[0],J[1]=VV[1]+RV[1],J[2]=VV[2]+RV[2],J)),add_1$1}var dot_1$1,hasRequiredDot$1;function requireDot$1(){return hasRequiredDot$1||(hasRequiredDot$1=1,dot_1$1=(J,VV)=>J[0]*VV[0]+J[1]*VV[1]+J[2]*VV[2]),dot_1$1}var angle_1,hasRequiredAngle;function requireAngle(){if(hasRequiredAngle)return angle_1;hasRequiredAngle=1;const lV=requireDot$1();return angle_1=(VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2],IV=RV[0],dV=RV[1],CV=RV[2],FV=Math.sqrt(UV*UV+ZV*ZV+WV*WV),NV=Math.sqrt(IV*IV+dV*dV+CV*CV),gV=FV*NV,eV=gV&&lV(VV,RV)/gV;return Math.acos(Math.min(Math.max(eV,-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 lV=requireCreate$b();return clone_1$9=VV=>{const RV=lV();return RV[0]=VV[0],RV[1]=VV[1],RV[2]=VV[2],RV},clone_1$9}var copy_1$4,hasRequiredCopy$4;function requireCopy$4(){return hasRequiredCopy$4||(hasRequiredCopy$4=1,copy_1$4=(J,VV)=>(J[0]=VV[0],J[1]=VV[1],J[2]=VV[2],J)),copy_1$4}var cross_1,hasRequiredCross;function requireCross(){return hasRequiredCross||(hasRequiredCross=1,cross_1=(J,VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2],IV=RV[0],dV=RV[1],CV=RV[2];return J[0]=ZV*CV-WV*dV,J[1]=WV*IV-UV*CV,J[2]=UV*dV-ZV*IV,J}),cross_1}var distance_1,hasRequiredDistance;function requireDistance(){return hasRequiredDistance||(hasRequiredDistance=1,distance_1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1],ZV=VV[2]-J[2];return Math.sqrt(RV*RV+UV*UV+ZV*ZV)}),distance_1}var divide_1,hasRequiredDivide;function requireDivide(){return hasRequiredDivide||(hasRequiredDivide=1,divide_1=(J,VV,RV)=>(J[0]=VV[0]/RV[0],J[1]=VV[1]/RV[1],J[2]=VV[2]/RV[2],J)),divide_1}var equals_1$6,hasRequiredEquals$6;function requireEquals$6(){return hasRequiredEquals$6||(hasRequiredEquals$6=1,equals_1$6=(J,VV)=>J[0]===VV[0]&&J[1]===VV[1]&&J[2]===VV[2]),equals_1$6}var fromScalar_1$1,hasRequiredFromScalar$1;function requireFromScalar$1(){return hasRequiredFromScalar$1||(hasRequiredFromScalar$1=1,fromScalar_1$1=(J,VV)=>(J[0]=VV,J[1]=VV,J[2]=VV,J)),fromScalar_1$1}var fromValues_1$3,hasRequiredFromValues$3;function requireFromValues$3(){if(hasRequiredFromValues$3)return fromValues_1$3;hasRequiredFromValues$3=1;const lV=requireCreate$b();return fromValues_1$3=(VV,RV,UV)=>{const ZV=lV();return ZV[0]=VV,ZV[1]=RV,ZV[2]=UV,ZV},fromValues_1$3}var fromVec2,hasRequiredFromVec2;function requireFromVec2(){return hasRequiredFromVec2||(hasRequiredFromVec2=1,fromVec2=(J,VV,RV=0)=>(J[0]=VV[0],J[1]=VV[1],J[2]=RV,J)),fromVec2}var length_1$1,hasRequiredLength$1;function requireLength$1(){return hasRequiredLength$1||(hasRequiredLength$1=1,length_1$1=J=>{const VV=J[0],RV=J[1],UV=J[2];return Math.sqrt(VV*VV+RV*RV+UV*UV)}),length_1$1}var lerp_1,hasRequiredLerp;function requireLerp(){return hasRequiredLerp||(hasRequiredLerp=1,lerp_1=(J,VV,RV,UV)=>(J[0]=VV[0]+UV*(RV[0]-VV[0]),J[1]=VV[1]+UV*(RV[1]-VV[1]),J[2]=VV[2]+UV*(RV[2]-VV[2]),J)),lerp_1}var multiply_1$1,hasRequiredMultiply$1;function requireMultiply$1(){return hasRequiredMultiply$1||(hasRequiredMultiply$1=1,multiply_1$1=(J,VV,RV)=>(J[0]=VV[0]*RV[0],J[1]=VV[1]*RV[1],J[2]=VV[2]*RV[2],J)),multiply_1$1}var negate_1,hasRequiredNegate;function requireNegate(){return hasRequiredNegate||(hasRequiredNegate=1,negate_1=(J,VV)=>(J[0]=-VV[0],J[1]=-VV[1],J[2]=-VV[2],J)),negate_1}var normalize_1,hasRequiredNormalize;function requireNormalize(){return hasRequiredNormalize||(hasRequiredNormalize=1,normalize_1=(J,VV)=>{const RV=VV[0],UV=VV[1],ZV=VV[2];let WV=RV*RV+UV*UV+ZV*ZV;return WV>0&&(WV=1/Math.sqrt(WV)),J[0]=RV*WV,J[1]=UV*WV,J[2]=ZV*WV,J}),normalize_1}var orthogonal_1,hasRequiredOrthogonal;function requireOrthogonal(){if(hasRequiredOrthogonal)return orthogonal_1;hasRequiredOrthogonal=1;const lV=requireAbs(),J=requireCreate$b(),VV=requireCross();return orthogonal_1=(UV,ZV)=>{const WV=lV(J(),ZV),IV=0+(WV[0]<WV[1]&&WV[0]<WV[2]),dV=0+(WV[1]<=WV[0]&&WV[1]<WV[2]),CV=0+(WV[2]<=WV[0]&&WV[2]<=WV[1]);return VV(UV,ZV,[IV,dV,CV])},orthogonal_1}var rotateX_1$1,hasRequiredRotateX$1;function requireRotateX$1(){return hasRequiredRotateX$1||(hasRequiredRotateX$1=1,rotateX_1$1=(J,VV,RV,UV)=>{const ZV=[],WV=[];return ZV[0]=VV[0]-RV[0],ZV[1]=VV[1]-RV[1],ZV[2]=VV[2]-RV[2],WV[0]=ZV[0],WV[1]=ZV[1]*Math.cos(UV)-ZV[2]*Math.sin(UV),WV[2]=ZV[1]*Math.sin(UV)+ZV[2]*Math.cos(UV),J[0]=WV[0]+RV[0],J[1]=WV[1]+RV[1],J[2]=WV[2]+RV[2],J}),rotateX_1$1}var rotateY_1$1,hasRequiredRotateY$1;function requireRotateY$1(){return hasRequiredRotateY$1||(hasRequiredRotateY$1=1,rotateY_1$1=(J,VV,RV,UV)=>{const ZV=[],WV=[];return ZV[0]=VV[0]-RV[0],ZV[1]=VV[1]-RV[1],ZV[2]=VV[2]-RV[2],WV[0]=ZV[2]*Math.sin(UV)+ZV[0]*Math.cos(UV),WV[1]=ZV[1],WV[2]=ZV[2]*Math.cos(UV)-ZV[0]*Math.sin(UV),J[0]=WV[0]+RV[0],J[1]=WV[1]+RV[1],J[2]=WV[2]+RV[2],J}),rotateY_1$1}var rotateZ_1$1,hasRequiredRotateZ$1;function requireRotateZ$1(){return hasRequiredRotateZ$1||(hasRequiredRotateZ$1=1,rotateZ_1$1=(J,VV,RV,UV)=>{const ZV=[],WV=[];return ZV[0]=VV[0]-RV[0],ZV[1]=VV[1]-RV[1],WV[0]=ZV[0]*Math.cos(UV)-ZV[1]*Math.sin(UV),WV[1]=ZV[0]*Math.sin(UV)+ZV[1]*Math.cos(UV),J[0]=WV[0]+RV[0],J[1]=WV[1]+RV[1],J[2]=VV[2],J}),rotateZ_1$1}var scale_1$2,hasRequiredScale$2;function requireScale$2(){return hasRequiredScale$2||(hasRequiredScale$2=1,scale_1$2=(J,VV,RV)=>(J[0]=VV[0]*RV,J[1]=VV[1]*RV,J[2]=VV[2]*RV,J)),scale_1$2}var snap_1$1,hasRequiredSnap$1;function requireSnap$1(){return hasRequiredSnap$1||(hasRequiredSnap$1=1,snap_1$1=(J,VV,RV)=>(J[0]=Math.round(VV[0]/RV)*RV+0,J[1]=Math.round(VV[1]/RV)*RV+0,J[2]=Math.round(VV[2]/RV)*RV+0,J)),snap_1$1}var squaredDistance_1,hasRequiredSquaredDistance;function requireSquaredDistance(){return hasRequiredSquaredDistance||(hasRequiredSquaredDistance=1,squaredDistance_1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1],ZV=VV[2]-J[2];return RV*RV+UV*UV+ZV*ZV}),squaredDistance_1}var squaredLength_1,hasRequiredSquaredLength;function requireSquaredLength(){return hasRequiredSquaredLength||(hasRequiredSquaredLength=1,squaredLength_1=J=>{const VV=J[0],RV=J[1],UV=J[2];return VV*VV+RV*RV+UV*UV}),squaredLength_1}var subtract_1$2,hasRequiredSubtract$2;function requireSubtract$2(){return hasRequiredSubtract$2||(hasRequiredSubtract$2=1,subtract_1$2=(J,VV,RV)=>(J[0]=VV[0]-RV[0],J[1]=VV[1]-RV[1],J[2]=VV[2]-RV[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,VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2];let IV=RV[3]*UV+RV[7]*ZV+RV[11]*WV+RV[15];return IV=IV||1,J[0]=(RV[0]*UV+RV[4]*ZV+RV[8]*WV+RV[12])/IV,J[1]=(RV[1]*UV+RV[5]*ZV+RV[9]*WV+RV[13])/IV,J[2]=(RV[2]*UV+RV[6]*ZV+RV[10]*WV+RV[14])/IV,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,VV,RV)=>(J[0]=VV[0]+RV[0],J[1]=VV[1]+RV[1],J[2]=VV[2]+RV[2],J[3]=VV[3]+RV[3],J[4]=VV[4]+RV[4],J[5]=VV[5]+RV[5],J[6]=VV[6]+RV[6],J[7]=VV[7]+RV[7],J[8]=VV[8]+RV[8],J[9]=VV[9]+RV[9],J[10]=VV[10]+RV[10],J[11]=VV[11]+RV[11],J[12]=VV[12]+RV[12],J[13]=VV[13]+RV[13],J[14]=VV[14]+RV[14],J[15]=VV[15]+RV[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 lV=requireCreate$a();return clone_1$7=VV=>{const RV=lV();return RV[0]=VV[0],RV[1]=VV[1],RV[2]=VV[2],RV[3]=VV[3],RV[4]=VV[4],RV[5]=VV[5],RV[6]=VV[6],RV[7]=VV[7],RV[8]=VV[8],RV[9]=VV[9],RV[10]=VV[10],RV[11]=VV[11],RV[12]=VV[12],RV[13]=VV[13],RV[14]=VV[14],RV[15]=VV[15],RV},clone_1$7}var copy_1$3,hasRequiredCopy$3;function requireCopy$3(){return hasRequiredCopy$3||(hasRequiredCopy$3=1,copy_1$3=(J,VV)=>(J[0]=VV[0],J[1]=VV[1],J[2]=VV[2],J[3]=VV[3],J[4]=VV[4],J[5]=VV[5],J[6]=VV[6],J[7]=VV[7],J[8]=VV[8],J[9]=VV[9],J[10]=VV[10],J[11]=VV[11],J[12]=VV[12],J[13]=VV[13],J[14]=VV[14],J[15]=VV[15],J)),copy_1$3}var invert_1$2,hasRequiredInvert$2;function requireInvert$2(){return hasRequiredInvert$2||(hasRequiredInvert$2=1,invert_1$2=(J,VV)=>{const RV=VV[0],UV=VV[1],ZV=VV[2],WV=VV[3],IV=VV[4],dV=VV[5],CV=VV[6],FV=VV[7],NV=VV[8],gV=VV[9],eV=VV[10],JV=VV[11],nV=VV[12],aV=VV[13],GV=VV[14],cV=VV[15],TV=RV*dV-UV*IV,iV=RV*CV-ZV*IV,tV=RV*FV-WV*IV,MV=UV*CV-ZV*dV,AV=UV*FV-WV*dV,pV=ZV*FV-WV*CV,HV=NV*aV-gV*nV,oV=NV*GV-eV*nV,DV=NV*cV-JV*nV,wV=gV*GV-eV*aV,_V=gV*cV-JV*aV,dl=eV*cV-JV*GV;let nl=TV*dl-iV*_V+tV*wV+MV*DV-AV*oV+pV*HV;return nl?(nl=1/nl,J[0]=(dV*dl-CV*_V+FV*wV)*nl,J[1]=(ZV*_V-UV*dl-WV*wV)*nl,J[2]=(aV*pV-GV*AV+cV*MV)*nl,J[3]=(eV*AV-gV*pV-JV*MV)*nl,J[4]=(CV*DV-IV*dl-FV*oV)*nl,J[5]=(RV*dl-ZV*DV+WV*oV)*nl,J[6]=(GV*tV-nV*pV-cV*iV)*nl,J[7]=(NV*pV-eV*tV+JV*iV)*nl,J[8]=(IV*_V-dV*DV+FV*HV)*nl,J[9]=(UV*DV-RV*_V-WV*HV)*nl,J[10]=(nV*AV-aV*tV+cV*TV)*nl,J[11]=(gV*tV-NV*AV-JV*TV)*nl,J[12]=(dV*oV-IV*wV-CV*HV)*nl,J[13]=(RV*wV-UV*oV+ZV*HV)*nl,J[14]=(aV*iV-nV*MV-GV*TV)*nl,J[15]=(NV*MV-gV*iV+eV*TV)*nl,J):null}),invert_1$2}var equals_1$5,hasRequiredEquals$5;function requireEquals$5(){return hasRequiredEquals$5||(hasRequiredEquals$5=1,equals_1$5=(J,VV)=>J[0]===VV[0]&&J[1]===VV[1]&&J[2]===VV[2]&&J[3]===VV[3]&&J[4]===VV[4]&&J[5]===VV[5]&&J[6]===VV[6]&&J[7]===VV[7]&&J[8]===VV[8]&&J[9]===VV[9]&&J[10]===VV[10]&&J[11]===VV[11]&&J[12]===VV[12]&&J[13]===VV[13]&&J[14]===VV[14]&&J[15]===VV[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:lV}=requireConstants$1(),{sin:J,cos:VV}=requireTrigonometry(),RV=requireIdentity();return fromRotation_1=(ZV,WV,IV)=>{let[dV,CV,FV]=IV;const NV=dV*dV+CV*CV+FV*FV;if(Math.abs(NV)<lV)return RV(ZV);const gV=1/Math.sqrt(NV);dV*=gV,CV*=gV,FV*=gV;const eV=J(WV),JV=VV(WV),nV=1-JV;return ZV[0]=dV*dV*nV+JV,ZV[1]=CV*dV*nV+FV*eV,ZV[2]=FV*dV*nV-CV*eV,ZV[3]=0,ZV[4]=dV*CV*nV-FV*eV,ZV[5]=CV*CV*nV+JV,ZV[6]=FV*CV*nV+dV*eV,ZV[7]=0,ZV[8]=dV*FV*nV+CV*eV,ZV[9]=CV*FV*nV-dV*eV,ZV[10]=FV*FV*nV+JV,ZV[11]=0,ZV[12]=0,ZV[13]=0,ZV[14]=0,ZV[15]=1,ZV},fromRotation_1}var fromScaling_1,hasRequiredFromScaling;function requireFromScaling(){return hasRequiredFromScaling||(hasRequiredFromScaling=1,fromScaling_1=(J,VV)=>(J[0]=VV[0],J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=VV[1],J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=VV[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:lV,cos:J}=requireTrigonometry();return fromTaitBryanRotation_1=(RV,UV,ZV,WV)=>{const IV=lV(UV),dV=J(UV),CV=lV(ZV),FV=J(ZV),NV=lV(WV),gV=J(WV);return RV[0]=FV*dV,RV[1]=FV*IV,RV[2]=-CV,RV[3]=0,RV[4]=NV*CV*dV-gV*IV,RV[5]=gV*dV+NV*CV*IV,RV[6]=NV*FV,RV[7]=0,RV[8]=NV*IV+gV*CV*dV,RV[9]=gV*CV*IV-NV*dV,RV[10]=gV*FV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromTaitBryanRotation_1}var fromTranslation_1,hasRequiredFromTranslation;function requireFromTranslation(){return hasRequiredFromTranslation||(hasRequiredFromTranslation=1,fromTranslation_1=(J,VV)=>(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]=VV[0],J[13]=VV[1],J[14]=VV[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 lV=requireCreate$a();return fromValues_1$2=(VV,RV,UV,ZV,WV,IV,dV,CV,FV,NV,gV,eV,JV,nV,aV,GV)=>{const cV=lV();return cV[0]=VV,cV[1]=RV,cV[2]=UV,cV[3]=ZV,cV[4]=WV,cV[5]=IV,cV[6]=dV,cV[7]=CV,cV[8]=FV,cV[9]=NV,cV[10]=gV,cV[11]=eV,cV[12]=JV,cV[13]=nV,cV[14]=aV,cV[15]=GV,cV},fromValues_1$2}var fromVectorRotation_1,hasRequiredFromVectorRotation;function requireFromVectorRotation(){if(hasRequiredFromVectorRotation)return fromVectorRotation_1;hasRequiredFromVectorRotation=1;const lV=requireVec3(),J=requireFromRotation();return fromVectorRotation_1=(RV,UV,ZV)=>{const WV=lV.normalize(lV.create(),UV),IV=lV.normalize(lV.create(),ZV),dV=lV.cross(lV.create(),IV,WV),CV=lV.dot(IV,WV);if(CV===-1)return J(RV,Math.PI,lV.orthogonal(dV,WV));const FV=1/(1+CV);return RV[0]=dV[0]*dV[0]*FV+CV,RV[1]=dV[1]*dV[0]*FV-dV[2],RV[2]=dV[2]*dV[0]*FV+dV[1],RV[3]=0,RV[4]=dV[0]*dV[1]*FV+dV[2],RV[5]=dV[1]*dV[1]*FV+CV,RV[6]=dV[2]*dV[1]*FV-dV[0],RV[7]=0,RV[8]=dV[0]*dV[2]*FV-dV[1],RV[9]=dV[1]*dV[2]*FV+dV[0],RV[10]=dV[2]*dV[2]*FV+CV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromVectorRotation_1}var fromXRotation_1,hasRequiredFromXRotation;function requireFromXRotation(){if(hasRequiredFromXRotation)return fromXRotation_1;hasRequiredFromXRotation=1;const{sin:lV,cos:J}=requireTrigonometry();return fromXRotation_1=(RV,UV)=>{const ZV=lV(UV),WV=J(UV);return RV[0]=1,RV[1]=0,RV[2]=0,RV[3]=0,RV[4]=0,RV[5]=WV,RV[6]=ZV,RV[7]=0,RV[8]=0,RV[9]=-ZV,RV[10]=WV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromXRotation_1}var fromYRotation_1,hasRequiredFromYRotation;function requireFromYRotation(){if(hasRequiredFromYRotation)return fromYRotation_1;hasRequiredFromYRotation=1;const{sin:lV,cos:J}=requireTrigonometry();return fromYRotation_1=(RV,UV)=>{const ZV=lV(UV),WV=J(UV);return RV[0]=WV,RV[1]=0,RV[2]=-ZV,RV[3]=0,RV[4]=0,RV[5]=1,RV[6]=0,RV[7]=0,RV[8]=ZV,RV[9]=0,RV[10]=WV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromYRotation_1}var fromZRotation_1,hasRequiredFromZRotation;function requireFromZRotation(){if(hasRequiredFromZRotation)return fromZRotation_1;hasRequiredFromZRotation=1;const{sin:lV,cos:J}=requireTrigonometry();return fromZRotation_1=(RV,UV)=>{const ZV=lV(UV),WV=J(UV);return RV[0]=WV,RV[1]=ZV,RV[2]=0,RV[3]=0,RV[4]=-ZV,RV[5]=WV,RV[6]=0,RV[7]=0,RV[8]=0,RV[9]=0,RV[10]=1,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},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 lV=VV=>J(VV[1])&&J(VV[2])&&J(VV[3])&&J(VV[4])&&J(VV[6])&&J(VV[7])&&J(VV[8])&&J(VV[9])&&J(VV[11])&&VV[15]===1,J=VV=>Math.abs(VV)<Number.EPSILON;return isOnlyTransformScale_1=lV,isOnlyTransformScale_1}var isMirroring_1,hasRequiredIsMirroring;function requireIsMirroring(){return hasRequiredIsMirroring||(hasRequiredIsMirroring=1,isMirroring_1=J=>{const VV=J[4]*J[9]-J[8]*J[5],RV=J[8]*J[1]-J[0]*J[9],UV=J[0]*J[5]-J[4]*J[1];return VV*J[2]+RV*J[6]+UV*J[10]<0}),isMirroring_1}var mirrorByPlane_1,hasRequiredMirrorByPlane;function requireMirrorByPlane(){return hasRequiredMirrorByPlane||(hasRequiredMirrorByPlane=1,mirrorByPlane_1=(J,VV)=>{const[RV,UV,ZV,WV]=VV;return J[0]=1-2*RV*RV,J[1]=-2*UV*RV,J[2]=-2*ZV*RV,J[3]=0,J[4]=-2*RV*UV,J[5]=1-2*UV*UV,J[6]=-2*ZV*UV,J[7]=0,J[8]=-2*RV*ZV,J[9]=-2*UV*ZV,J[10]=1-2*ZV*ZV,J[11]=0,J[12]=2*RV*WV,J[13]=2*UV*WV,J[14]=2*ZV*WV,J[15]=1,J}),mirrorByPlane_1}var multiply_1,hasRequiredMultiply;function requireMultiply(){return hasRequiredMultiply||(hasRequiredMultiply=1,multiply_1=(J,VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2],IV=VV[3],dV=VV[4],CV=VV[5],FV=VV[6],NV=VV[7],gV=VV[8],eV=VV[9],JV=VV[10],nV=VV[11],aV=VV[12],GV=VV[13],cV=VV[14],TV=VV[15];let iV=RV[0],tV=RV[1],MV=RV[2],AV=RV[3];return J[0]=iV*UV+tV*dV+MV*gV+AV*aV,J[1]=iV*ZV+tV*CV+MV*eV+AV*GV,J[2]=iV*WV+tV*FV+MV*JV+AV*cV,J[3]=iV*IV+tV*NV+MV*nV+AV*TV,iV=RV[4],tV=RV[5],MV=RV[6],AV=RV[7],J[4]=iV*UV+tV*dV+MV*gV+AV*aV,J[5]=iV*ZV+tV*CV+MV*eV+AV*GV,J[6]=iV*WV+tV*FV+MV*JV+AV*cV,J[7]=iV*IV+tV*NV+MV*nV+AV*TV,iV=RV[8],tV=RV[9],MV=RV[10],AV=RV[11],J[8]=iV*UV+tV*dV+MV*gV+AV*aV,J[9]=iV*ZV+tV*CV+MV*eV+AV*GV,J[10]=iV*WV+tV*FV+MV*JV+AV*cV,J[11]=iV*IV+tV*NV+MV*nV+AV*TV,iV=RV[12],tV=RV[13],MV=RV[14],AV=RV[15],J[12]=iV*UV+tV*dV+MV*gV+AV*aV,J[13]=iV*ZV+tV*CV+MV*eV+AV*GV,J[14]=iV*WV+tV*FV+MV*JV+AV*cV,J[15]=iV*IV+tV*NV+MV*nV+AV*TV,J}),multiply_1}var rotate_1$1,hasRequiredRotate$1;function requireRotate$1(){if(hasRequiredRotate$1)return rotate_1$1;hasRequiredRotate$1=1;const{EPS:lV}=requireConstants$1(),{sin:J,cos:VV}=requireTrigonometry(),RV=requireCopy$3();return rotate_1$1=(ZV,WV,IV,dV)=>{let[CV,FV,NV]=dV;const gV=CV*CV+FV*FV+NV*NV;if(Math.abs(gV)<lV)return RV(ZV,WV);const eV=1/Math.sqrt(gV);CV*=eV,FV*=eV,NV*=eV;const JV=J(IV),nV=VV(IV),aV=1-nV,GV=WV[0],cV=WV[1],TV=WV[2],iV=WV[3],tV=WV[4],MV=WV[5],AV=WV[6],pV=WV[7],HV=WV[8],oV=WV[9],DV=WV[10],wV=WV[11],_V=CV*CV*aV+nV,dl=FV*CV*aV+NV*JV,nl=NV*CV*aV-FV*JV,Il=CV*FV*aV-NV*JV,LV=FV*FV*aV+nV,OV=NV*FV*aV+CV*JV,$V=CV*NV*aV+FV*JV,Cl=FV*NV*aV-CV*JV,Zl=NV*NV*aV+nV;return ZV[0]=GV*_V+tV*dl+HV*nl,ZV[1]=cV*_V+MV*dl+oV*nl,ZV[2]=TV*_V+AV*dl+DV*nl,ZV[3]=iV*_V+pV*dl+wV*nl,ZV[4]=GV*Il+tV*LV+HV*OV,ZV[5]=cV*Il+MV*LV+oV*OV,ZV[6]=TV*Il+AV*LV+DV*OV,ZV[7]=iV*Il+pV*LV+wV*OV,ZV[8]=GV*$V+tV*Cl+HV*Zl,ZV[9]=cV*$V+MV*Cl+oV*Zl,ZV[10]=TV*$V+AV*Cl+DV*Zl,ZV[11]=iV*$V+pV*Cl+wV*Zl,WV!==ZV&&(ZV[12]=WV[12],ZV[13]=WV[13],ZV[14]=WV[14],ZV[15]=WV[15]),ZV},rotate_1$1}var rotateX_1,hasRequiredRotateX;function requireRotateX(){if(hasRequiredRotateX)return rotateX_1;hasRequiredRotateX=1;const{sin:lV,cos:J}=requireTrigonometry();return rotateX_1=(RV,UV,ZV)=>{const WV=lV(ZV),IV=J(ZV),dV=UV[4],CV=UV[5],FV=UV[6],NV=UV[7],gV=UV[8],eV=UV[9],JV=UV[10],nV=UV[11];return UV!==RV&&(RV[0]=UV[0],RV[1]=UV[1],RV[2]=UV[2],RV[3]=UV[3],RV[12]=UV[12],RV[13]=UV[13],RV[14]=UV[14],RV[15]=UV[15]),RV[4]=dV*IV+gV*WV,RV[5]=CV*IV+eV*WV,RV[6]=FV*IV+JV*WV,RV[7]=NV*IV+nV*WV,RV[8]=gV*IV-dV*WV,RV[9]=eV*IV-CV*WV,RV[10]=JV*IV-FV*WV,RV[11]=nV*IV-NV*WV,RV},rotateX_1}var rotateY_1,hasRequiredRotateY;function requireRotateY(){if(hasRequiredRotateY)return rotateY_1;hasRequiredRotateY=1;const{sin:lV,cos:J}=requireTrigonometry();return rotateY_1=(RV,UV,ZV)=>{const WV=lV(ZV),IV=J(ZV),dV=UV[0],CV=UV[1],FV=UV[2],NV=UV[3],gV=UV[8],eV=UV[9],JV=UV[10],nV=UV[11];return UV!==RV&&(RV[4]=UV[4],RV[5]=UV[5],RV[6]=UV[6],RV[7]=UV[7],RV[12]=UV[12],RV[13]=UV[13],RV[14]=UV[14],RV[15]=UV[15]),RV[0]=dV*IV-gV*WV,RV[1]=CV*IV-eV*WV,RV[2]=FV*IV-JV*WV,RV[3]=NV*IV-nV*WV,RV[8]=dV*WV+gV*IV,RV[9]=CV*WV+eV*IV,RV[10]=FV*WV+JV*IV,RV[11]=NV*WV+nV*IV,RV},rotateY_1}var rotateZ_1,hasRequiredRotateZ;function requireRotateZ(){if(hasRequiredRotateZ)return rotateZ_1;hasRequiredRotateZ=1;const{sin:lV,cos:J}=requireTrigonometry();return rotateZ_1=(RV,UV,ZV)=>{const WV=lV(ZV),IV=J(ZV),dV=UV[0],CV=UV[1],FV=UV[2],NV=UV[3],gV=UV[4],eV=UV[5],JV=UV[6],nV=UV[7];return UV!==RV&&(RV[8]=UV[8],RV[9]=UV[9],RV[10]=UV[10],RV[11]=UV[11],RV[12]=UV[12],RV[13]=UV[13],RV[14]=UV[14],RV[15]=UV[15]),RV[0]=dV*IV+gV*WV,RV[1]=CV*IV+eV*WV,RV[2]=FV*IV+JV*WV,RV[3]=NV*IV+nV*WV,RV[4]=gV*IV-dV*WV,RV[5]=eV*IV-CV*WV,RV[6]=JV*IV-FV*WV,RV[7]=nV*IV-NV*WV,RV},rotateZ_1}var scale_1$1,hasRequiredScale$1;function requireScale$1(){return hasRequiredScale$1||(hasRequiredScale$1=1,scale_1$1=(J,VV,RV)=>{const UV=RV[0],ZV=RV[1],WV=RV[2];return J[0]=VV[0]*UV,J[1]=VV[1]*UV,J[2]=VV[2]*UV,J[3]=VV[3]*UV,J[4]=VV[4]*ZV,J[5]=VV[5]*ZV,J[6]=VV[6]*ZV,J[7]=VV[7]*ZV,J[8]=VV[8]*WV,J[9]=VV[9]*WV,J[10]=VV[10]*WV,J[11]=VV[11]*WV,J[12]=VV[12],J[13]=VV[13],J[14]=VV[14],J[15]=VV[15],J}),scale_1$1}var subtract_1$1,hasRequiredSubtract$1;function requireSubtract$1(){return hasRequiredSubtract$1||(hasRequiredSubtract$1=1,subtract_1$1=(J,VV,RV)=>(J[0]=VV[0]-RV[0],J[1]=VV[1]-RV[1],J[2]=VV[2]-RV[2],J[3]=VV[3]-RV[3],J[4]=VV[4]-RV[4],J[5]=VV[5]-RV[5],J[6]=VV[6]-RV[6],J[7]=VV[7]-RV[7],J[8]=VV[8]-RV[8],J[9]=VV[9]-RV[9],J[10]=VV[10]-RV[10],J[11]=VV[11]-RV[11],J[12]=VV[12]-RV[12],J[13]=VV[13]-RV[13],J[14]=VV[14]-RV[14],J[15]=VV[15]-RV[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(VV=>VV.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,VV,RV)=>{const UV=RV[0],ZV=RV[1],WV=RV[2];let IV,dV,CV,FV,NV,gV,eV,JV,nV,aV,GV,cV;return VV===J?(J[12]=VV[0]*UV+VV[4]*ZV+VV[8]*WV+VV[12],J[13]=VV[1]*UV+VV[5]*ZV+VV[9]*WV+VV[13],J[14]=VV[2]*UV+VV[6]*ZV+VV[10]*WV+VV[14],J[15]=VV[3]*UV+VV[7]*ZV+VV[11]*WV+VV[15]):(IV=VV[0],dV=VV[1],CV=VV[2],FV=VV[3],NV=VV[4],gV=VV[5],eV=VV[6],JV=VV[7],nV=VV[8],aV=VV[9],GV=VV[10],cV=VV[11],J[0]=IV,J[1]=dV,J[2]=CV,J[3]=FV,J[4]=NV,J[5]=gV,J[6]=eV,J[7]=JV,J[8]=nV,J[9]=aV,J[10]=GV,J[11]=cV,J[12]=IV*UV+NV*ZV+nV*WV+VV[12],J[13]=dV*UV+gV*ZV+aV*WV+VV[13],J[14]=CV*UV+eV*ZV+GV*WV+VV[14],J[15]=FV*UV+JV*ZV+cV*WV+VV[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 lV=requireMat4();return create_1$9=VV=>(VV===void 0&&(VV=[]),{sides:VV,transforms:lV.create()}),create_1$9}var fromPoints_1$7,hasRequiredFromPoints$7;function requireFromPoints$7(){if(hasRequiredFromPoints$7)return fromPoints_1$7;hasRequiredFromPoints$7=1;const lV=requireVec2(),J=requireCreate$9();return fromPoints_1$7=RV=>{if(!Array.isArray(RV))throw new Error("the given points must be an array");let UV=RV.length;if(UV<3)throw new Error("the given points must define a closed geometry with three or more points");lV.equals(RV[0],RV[UV-1])&&--UV;const ZV=[];let WV=RV[UV-1];for(let IV=0;IV<UV;IV++){const dV=RV[IV];ZV.push([lV.clone(WV),lV.clone(dV)]),WV=dV}return J(ZV)},fromPoints_1$7}var fromCompactBinary_1$2,hasRequiredFromCompactBinary$2;function requireFromCompactBinary$2(){if(hasRequiredFromCompactBinary$2)return fromCompactBinary_1$2;hasRequiredFromCompactBinary$2=1;const lV=requireMat4(),J=requireVec2(),VV=requireCreate$9();return fromCompactBinary_1$2=UV=>{if(UV[0]!==0)throw new Error("invalid compact binary data");const ZV=VV();ZV.transforms=lV.clone(UV.slice(1,17));for(let WV=21;WV<UV.length;WV+=4){const IV=J.fromValues(UV[WV+0],UV[WV+1]),dV=J.fromValues(UV[WV+2],UV[WV+3]);ZV.sides.push([IV,dV])}return UV[17]>=0&&(ZV.color=[UV[17],UV[18],UV[19],UV[20]]),ZV},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 lV=requireMat4(),J=requireVec2();return applyTransforms_1$2=RV=>(lV.isIdentity(RV.transforms)||(RV.sides=RV.sides.map(UV=>{const ZV=J.transform(J.create(),UV[0],RV.transforms),WV=J.transform(J.create(),UV[1],RV.transforms);return[ZV,WV]}),RV.transforms=lV.create()),RV),applyTransforms_1$2}var toSides_1,hasRequiredToSides;function requireToSides(){if(hasRequiredToSides)return toSides_1;hasRequiredToSides=1;const lV=requireApplyTransforms$2();return toSides_1=VV=>lV(VV).sides,toSides_1}var reverse_1$4,hasRequiredReverse$4;function requireReverse$4(){if(hasRequiredReverse$4)return reverse_1$4;hasRequiredReverse$4=1;const lV=requireCreate$9(),J=requireToSides();return reverse_1$4=RV=>{const ZV=J(RV).map(WV=>[WV[1],WV[0]]);return ZV.reverse(),lV(ZV)},reverse_1$4}var toOutlines_1,hasRequiredToOutlines;function requireToOutlines(){if(hasRequiredToOutlines)return toOutlines_1;hasRequiredToOutlines=1;const lV=requireVec2(),J=requireToSides(),VV=WV=>{const IV=new Map,dV=CV=>{const FV=CV.toString();return IV.has(FV)?IV.get(FV):(IV.set(FV,CV),CV)};return WV.map(CV=>CV.map(dV))},RV=WV=>{const IV=new Map;return VV(WV).forEach(CV=>{IV.has(CV[0])?IV.get(CV[0]).push(CV):IV.set(CV[0],[CV])}),IV},UV=WV=>{const IV=RV(J(WV)),dV=[];for(;;){let CV;for(const[gV,eV]of IV){if(CV=eV.shift(),!CV){IV.delete(gV);continue}break}if(CV===void 0)break;const FV=[],NV=CV[0];for(;;){FV.push(CV[0]);const gV=CV[1];if(gV===NV)break;const eV=IV.get(gV);if(!eV)throw new Error(`geometry is not closed at vertex ${gV}`);const JV=ZV(CV,eV);eV.length===0&&IV.delete(gV),CV=JV}FV.length>0&&FV.push(FV.shift()),dV.push(FV)}return IV.clear(),dV},ZV=(WV,IV)=>{if(IV.length===1)return IV.pop();const dV=lV.create(),CV=lV.angleDegrees(lV.subtract(dV,WV[1],WV[0]));let FV,NV;IV.forEach((eV,JV)=>{let aV=lV.angleDegrees(lV.subtract(dV,eV[1],eV[0]))-CV;aV<-180&&(aV+=360),aV>=180&&(aV-=360),(NV===void 0||aV>FV)&&(NV=JV,FV=aV)});const gV=IV[NV];return IV.splice(NV,1),gV};return toOutlines_1=UV,toOutlines_1}var toPoints_1$3,hasRequiredToPoints$3;function requireToPoints$3(){if(hasRequiredToPoints$3)return toPoints_1$3;hasRequiredToPoints$3=1;const lV=requireToSides();return toPoints_1$3=VV=>{const UV=lV(VV).map(ZV=>ZV[0]);return UV.length>0&&UV.push(UV.shift()),UV},toPoints_1$3}var toString_1$7,hasRequiredToString$7;function requireToString$7(){if(hasRequiredToString$7)return toString_1$7;hasRequiredToString$7=1;const lV=requireVec2(),J=requireToSides();return toString_1$7=RV=>{const UV=J(RV);let ZV="geom2 ("+UV.length+` sides):
7298
+ "${VV.message}"`)})).convertCircuitJsonToPcbSvg(this.getCircuitJson())}async preview(lV){throw new Error("project.preview is not yet implemented")}computeSchematicGlobalTransform(){return identity$4()}_computePcbGlobalTransformBeforeLayout(){return identity$4()}selectAll(lV){var J;return this._guessRootComponent(),((J=this.firstChild)==null?void 0:J.selectAll(lV))??[]}selectOne(lV,J){var VV;return this._guessRootComponent(),((VV=this.firstChild)==null?void 0:VV.selectOne(lV,J))??null}emit(lV,...J){if(this._eventListeners[lV])for(const VV of this._eventListeners[lV])VV(...J)}on(lV,J){this._eventListeners[lV]||(this._eventListeners[lV]=[]),this._eventListeners[lV].push(J)}getClientOrigin(){return typeof window<"u"?window.location.origin:typeof self<"u"?self.origin:""}},Project=RootCircuit,Circuit=RootCircuit,useRenderedCircuit=lV=>{const[J,VV]=React.useState(!0),[RV,UV]=React.useState(null),[ZV,WV]=React.useState(),[IV,dV]=React.useState();return React.useEffect(()=>{VV(!0),UV(null),lV&&setTimeout(()=>{try{const CV=new RootCircuit;CV.add(lV),WV(CV),dV(CV.toJson())}catch(CV){UV(CV)}VV(!1)},1)},[lV]),{isLoading:J,error:RV,circuit:ZV,circuitJson:IV}},createUseComponent=(lV,J)=>(VV,RV)=>{const UV=[];Array.isArray(J)?UV.push(...J.flat()):typeof J=="object"&&UV.push(...Object.values(J).flat(),...Object.keys(J));const ZV=WV=>{if(WV!=null&&WV.name&&WV.name!==VV)throw new Error(`Component name mismatch. Hook name: ${VV}, Component prop name: ${WV.name}`);const IV={...RV,...WV,name:VV},dV=[];for(const CV of UV)if(IV[CV]){const FV=`.${VV} > .${CV}`,NV=IV[CV];dV.push({from:FV,to:NV}),delete IV[CV]}return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(lV,{...IV}),dV.map((CV,FV)=>jsxRuntimeExports.jsx("trace",{...CV},FV))]})};for(const WV of UV)ZV[WV]=`.${VV} > .${WV}`;return ZV},useCapacitor=createUseComponent(lV=>jsxRuntimeExports.jsx("capacitor",{...lV}),capacitorPins),useChip=lV=>createUseComponent(J=>jsxRuntimeExports.jsx("chip",{pinLabels:lV,...J}),lV),useDiode=createUseComponent(lV=>jsxRuntimeExports.jsx("diode",{...lV}),diodePins),useLed=createUseComponent(lV=>jsxRuntimeExports.jsx("led",{...lV}),ledPins),useResistor=createUseComponent(lV=>jsxRuntimeExports.jsx("resistor",{...lV}),resistorPins),applyEditEventsToManualEditsFile=({circuitJson:lV,editEvents:J,manualEditsFile:VV})=>{var UV;const RV={...VV,schematic_placements:[...VV.schematic_placements??[]]};for(const ZV of J)if(ZV.edit_event_type==="edit_schematic_component_location"){const{schematic_component_id:WV,new_center:IV}=ZV,dV=su_default$1(lV).schematic_component.get(WV);if(!dV)continue;const CV=su_default$1(lV).source_component.get(dV.source_component_id);if(!CV)continue;const FV=(UV=RV.schematic_placements)==null?void 0:UV.findIndex(gV=>gV.selector===CV.name),NV={selector:CV.name,center:IV,relative_to:"group_center"};FV>=0?RV.schematic_placements[FV]=NV:RV.schematic_placements.push(NV)}return RV};extendCatalogue(components_exports),extendCatalogue({Bug:Chip});const dist$8=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,TraceHint,Transistor,Via,applyEditEventsToManualEditsFile,createUseComponent,useCapacitor,useChip,useDiode,useLed,useRenderedCircuit,useResistor},Symbol.toStringTag,{value:"Module"})),require$$2=getAugmentedNamespace(dist$8);var flatten_1$1,hasRequiredFlatten$1;function requireFlatten$1(){if(hasRequiredFlatten$1)return flatten_1$1;hasRequiredFlatten$1=1;const lV=J=>J.reduce((VV,RV)=>Array.isArray(RV)?VV.concat(lV(RV)):VV.concat(RV),[]);return flatten_1$1=lV,flatten_1$1}var padArrayToLength_1,hasRequiredPadArrayToLength;function requirePadArrayToLength(){return hasRequiredPadArrayToLength||(hasRequiredPadArrayToLength=1,padArrayToLength_1=(J,VV,RV)=>{for(J=J.slice();J.length<RV;)J.push(VV);return J}),padArrayToLength_1}var min_1$1,hasRequiredMin$1;function requireMin$1(){return hasRequiredMin$1||(hasRequiredMin$1=1,min_1$1=(J,VV,RV)=>(J[0]=Math.min(VV[0],RV[0]),J[1]=Math.min(VV[1],RV[1]),J[2]=Math.min(VV[2],RV[2]),J)),min_1$1}var max_1$1,hasRequiredMax$1;function requireMax$1(){return hasRequiredMax$1||(hasRequiredMax$1=1,max_1$1=(J,VV,RV)=>(J[0]=Math.max(VV[0],RV[0]),J[1]=Math.max(VV[1],RV[1]),J[2]=Math.max(VV[2],RV[2]),J)),max_1$1}var abs_1$1,hasRequiredAbs$1;function requireAbs$1(){return hasRequiredAbs$1||(hasRequiredAbs$1=1,abs_1$1=(J,VV)=>(J[0]=Math.abs(VV[0]),J[1]=Math.abs(VV[1]),J)),abs_1$1}var add_1$2,hasRequiredAdd$2;function requireAdd$2(){return hasRequiredAdd$2||(hasRequiredAdd$2=1,add_1$2=(J,VV,RV)=>(J[0]=VV[0]+RV[0],J[1]=VV[1]+RV[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 lV=requireAngleRadians();return angleDegrees_1=VV=>lV(VV)*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 lV=requireCreate$c();return clone_1$a=VV=>{const RV=lV();return RV[0]=VV[0],RV[1]=VV[1],RV},clone_1$a}var copy_1$5,hasRequiredCopy$5;function requireCopy$5(){return hasRequiredCopy$5||(hasRequiredCopy$5=1,copy_1$5=(J,VV)=>(J[0]=VV[0],J[1]=VV[1],J)),copy_1$5}var cross_1$1,hasRequiredCross$1;function requireCross$1(){return hasRequiredCross$1||(hasRequiredCross$1=1,cross_1$1=(J,VV,RV)=>(J[0]=0,J[1]=0,J[2]=VV[0]*RV[1]-VV[1]*RV[0],J)),cross_1$1}var distance_1$1,hasRequiredDistance$1;function requireDistance$1(){return hasRequiredDistance$1||(hasRequiredDistance$1=1,distance_1$1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1];return Math.sqrt(RV*RV+UV*UV)}),distance_1$1}var divide_1$1,hasRequiredDivide$1;function requireDivide$1(){return hasRequiredDivide$1||(hasRequiredDivide$1=1,divide_1$1=(J,VV,RV)=>(J[0]=VV[0]/RV[0],J[1]=VV[1]/RV[1],J)),divide_1$1}var dot_1$2,hasRequiredDot$2;function requireDot$2(){return hasRequiredDot$2||(hasRequiredDot$2=1,dot_1$2=(J,VV)=>J[0]*VV[0]+J[1]*VV[1]),dot_1$2}var equals_1$7,hasRequiredEquals$7;function requireEquals$7(){return hasRequiredEquals$7||(hasRequiredEquals$7=1,equals_1$7=(J,VV)=>J[0]===VV[0]&&J[1]===VV[1]),equals_1$7}var constants$1,hasRequiredConstants$1;function requireConstants$1(){if(hasRequiredConstants$1)return constants$1;hasRequiredConstants$1=1;const lV=1e5,J=1e-5,VV=1e-13,RV=Math.PI*2;return constants$1={EPS:J,NEPS:VV,TAU:RV,spatialResolution:lV},constants$1}var trigonometry,hasRequiredTrigonometry;function requireTrigonometry(){if(hasRequiredTrigonometry)return trigonometry;hasRequiredTrigonometry=1;const{NEPS:lV}=requireConstants$1(),J=UV=>Math.abs(UV)<lV?0:UV;return trigonometry={sin:UV=>J(Math.sin(UV)),cos:UV=>J(Math.cos(UV))},trigonometry}var fromAngleRadians_1,hasRequiredFromAngleRadians;function requireFromAngleRadians(){if(hasRequiredFromAngleRadians)return fromAngleRadians_1;hasRequiredFromAngleRadians=1;const{sin:lV,cos:J}=requireTrigonometry();return fromAngleRadians_1=(RV,UV)=>(RV[0]=J(UV),RV[1]=lV(UV),RV),fromAngleRadians_1}var fromAngleDegrees_1,hasRequiredFromAngleDegrees;function requireFromAngleDegrees(){if(hasRequiredFromAngleDegrees)return fromAngleDegrees_1;hasRequiredFromAngleDegrees=1;const lV=requireFromAngleRadians();return fromAngleDegrees_1=(VV,RV)=>lV(VV,RV*.017453292519943295),fromAngleDegrees_1}var fromScalar_1$2,hasRequiredFromScalar$2;function requireFromScalar$2(){return hasRequiredFromScalar$2||(hasRequiredFromScalar$2=1,fromScalar_1$2=(J,VV)=>(J[0]=VV,J[1]=VV,J)),fromScalar_1$2}var fromValues_1$4,hasRequiredFromValues$4;function requireFromValues$4(){if(hasRequiredFromValues$4)return fromValues_1$4;hasRequiredFromValues$4=1;const lV=requireCreate$c();return fromValues_1$4=(VV,RV)=>{const UV=lV();return UV[0]=VV,UV[1]=RV,UV},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,VV,RV,UV)=>{const ZV=VV[0],WV=VV[1];return J[0]=ZV+UV*(RV[0]-ZV),J[1]=WV+UV*(RV[1]-WV),J}),lerp_1$1}var max_1,hasRequiredMax;function requireMax(){return hasRequiredMax||(hasRequiredMax=1,max_1=(J,VV,RV)=>(J[0]=Math.max(VV[0],RV[0]),J[1]=Math.max(VV[1],RV[1]),J)),max_1}var min_1,hasRequiredMin;function requireMin(){return hasRequiredMin||(hasRequiredMin=1,min_1=(J,VV,RV)=>(J[0]=Math.min(VV[0],RV[0]),J[1]=Math.min(VV[1],RV[1]),J)),min_1}var multiply_1$2,hasRequiredMultiply$2;function requireMultiply$2(){return hasRequiredMultiply$2||(hasRequiredMultiply$2=1,multiply_1$2=(J,VV,RV)=>(J[0]=VV[0]*RV[0],J[1]=VV[1]*RV[1],J)),multiply_1$2}var negate_1$1,hasRequiredNegate$1;function requireNegate$1(){return hasRequiredNegate$1||(hasRequiredNegate$1=1,negate_1$1=(J,VV)=>(J[0]=-VV[0],J[1]=-VV[1],J)),negate_1$1}var rotate_1$2,hasRequiredRotate$2;function requireRotate$2(){return hasRequiredRotate$2||(hasRequiredRotate$2=1,rotate_1$2=(J,VV,RV,UV)=>{const ZV=VV[0]-RV[0],WV=VV[1]-RV[1],IV=Math.cos(UV),dV=Math.sin(UV);return J[0]=ZV*IV-WV*dV+RV[0],J[1]=ZV*dV+WV*IV+RV[1],J}),rotate_1$2}var normal_1,hasRequiredNormal;function requireNormal(){if(hasRequiredNormal)return normal_1;hasRequiredNormal=1;const{TAU:lV}=requireConstants$1(),J=requireCreate$c(),VV=requireRotate$2();return normal_1=(UV,ZV)=>VV(UV,ZV,J(),lV/4),normal_1}var normalize_1$1,hasRequiredNormalize$1;function requireNormalize$1(){return hasRequiredNormalize$1||(hasRequiredNormalize$1=1,normalize_1$1=(J,VV)=>{const RV=VV[0],UV=VV[1];let ZV=RV*RV+UV*UV;return ZV>0&&(ZV=1/Math.sqrt(ZV)),J[0]=RV*ZV,J[1]=UV*ZV,J}),normalize_1$1}var scale_1$3,hasRequiredScale$3;function requireScale$3(){return hasRequiredScale$3||(hasRequiredScale$3=1,scale_1$3=(J,VV,RV)=>(J[0]=VV[0]*RV,J[1]=VV[1]*RV,J)),scale_1$3}var snap_1$2,hasRequiredSnap$2;function requireSnap$2(){return hasRequiredSnap$2||(hasRequiredSnap$2=1,snap_1$2=(J,VV,RV)=>(J[0]=Math.round(VV[0]/RV)*RV+0,J[1]=Math.round(VV[1]/RV)*RV+0,J)),snap_1$2}var squaredDistance_1$1,hasRequiredSquaredDistance$1;function requireSquaredDistance$1(){return hasRequiredSquaredDistance$1||(hasRequiredSquaredDistance$1=1,squaredDistance_1$1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1];return RV*RV+UV*UV}),squaredDistance_1$1}var squaredLength_1$1,hasRequiredSquaredLength$1;function requireSquaredLength$1(){return hasRequiredSquaredLength$1||(hasRequiredSquaredLength$1=1,squaredLength_1$1=J=>{const VV=J[0],RV=J[1];return VV*VV+RV*RV}),squaredLength_1$1}var subtract_1$3,hasRequiredSubtract$3;function requireSubtract$3(){return hasRequiredSubtract$3||(hasRequiredSubtract$3=1,subtract_1$3=(J,VV,RV)=>(J[0]=VV[0]-RV[0],J[1]=VV[1]-RV[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,VV,RV)=>{const UV=VV[0],ZV=VV[1];return J[0]=RV[0]*UV+RV[4]*ZV+RV[12],J[1]=RV[1]*UV+RV[5]*ZV+RV[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,VV)=>(J[0]=Math.abs(VV[0]),J[1]=Math.abs(VV[1]),J[2]=Math.abs(VV[2]),J)),abs_1}var add_1$1,hasRequiredAdd$1;function requireAdd$1(){return hasRequiredAdd$1||(hasRequiredAdd$1=1,add_1$1=(J,VV,RV)=>(J[0]=VV[0]+RV[0],J[1]=VV[1]+RV[1],J[2]=VV[2]+RV[2],J)),add_1$1}var dot_1$1,hasRequiredDot$1;function requireDot$1(){return hasRequiredDot$1||(hasRequiredDot$1=1,dot_1$1=(J,VV)=>J[0]*VV[0]+J[1]*VV[1]+J[2]*VV[2]),dot_1$1}var angle_1,hasRequiredAngle;function requireAngle(){if(hasRequiredAngle)return angle_1;hasRequiredAngle=1;const lV=requireDot$1();return angle_1=(VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2],IV=RV[0],dV=RV[1],CV=RV[2],FV=Math.sqrt(UV*UV+ZV*ZV+WV*WV),NV=Math.sqrt(IV*IV+dV*dV+CV*CV),gV=FV*NV,eV=gV&&lV(VV,RV)/gV;return Math.acos(Math.min(Math.max(eV,-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 lV=requireCreate$b();return clone_1$9=VV=>{const RV=lV();return RV[0]=VV[0],RV[1]=VV[1],RV[2]=VV[2],RV},clone_1$9}var copy_1$4,hasRequiredCopy$4;function requireCopy$4(){return hasRequiredCopy$4||(hasRequiredCopy$4=1,copy_1$4=(J,VV)=>(J[0]=VV[0],J[1]=VV[1],J[2]=VV[2],J)),copy_1$4}var cross_1,hasRequiredCross;function requireCross(){return hasRequiredCross||(hasRequiredCross=1,cross_1=(J,VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2],IV=RV[0],dV=RV[1],CV=RV[2];return J[0]=ZV*CV-WV*dV,J[1]=WV*IV-UV*CV,J[2]=UV*dV-ZV*IV,J}),cross_1}var distance_1,hasRequiredDistance;function requireDistance(){return hasRequiredDistance||(hasRequiredDistance=1,distance_1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1],ZV=VV[2]-J[2];return Math.sqrt(RV*RV+UV*UV+ZV*ZV)}),distance_1}var divide_1,hasRequiredDivide;function requireDivide(){return hasRequiredDivide||(hasRequiredDivide=1,divide_1=(J,VV,RV)=>(J[0]=VV[0]/RV[0],J[1]=VV[1]/RV[1],J[2]=VV[2]/RV[2],J)),divide_1}var equals_1$6,hasRequiredEquals$6;function requireEquals$6(){return hasRequiredEquals$6||(hasRequiredEquals$6=1,equals_1$6=(J,VV)=>J[0]===VV[0]&&J[1]===VV[1]&&J[2]===VV[2]),equals_1$6}var fromScalar_1$1,hasRequiredFromScalar$1;function requireFromScalar$1(){return hasRequiredFromScalar$1||(hasRequiredFromScalar$1=1,fromScalar_1$1=(J,VV)=>(J[0]=VV,J[1]=VV,J[2]=VV,J)),fromScalar_1$1}var fromValues_1$3,hasRequiredFromValues$3;function requireFromValues$3(){if(hasRequiredFromValues$3)return fromValues_1$3;hasRequiredFromValues$3=1;const lV=requireCreate$b();return fromValues_1$3=(VV,RV,UV)=>{const ZV=lV();return ZV[0]=VV,ZV[1]=RV,ZV[2]=UV,ZV},fromValues_1$3}var fromVec2,hasRequiredFromVec2;function requireFromVec2(){return hasRequiredFromVec2||(hasRequiredFromVec2=1,fromVec2=(J,VV,RV=0)=>(J[0]=VV[0],J[1]=VV[1],J[2]=RV,J)),fromVec2}var length_1$1,hasRequiredLength$1;function requireLength$1(){return hasRequiredLength$1||(hasRequiredLength$1=1,length_1$1=J=>{const VV=J[0],RV=J[1],UV=J[2];return Math.sqrt(VV*VV+RV*RV+UV*UV)}),length_1$1}var lerp_1,hasRequiredLerp;function requireLerp(){return hasRequiredLerp||(hasRequiredLerp=1,lerp_1=(J,VV,RV,UV)=>(J[0]=VV[0]+UV*(RV[0]-VV[0]),J[1]=VV[1]+UV*(RV[1]-VV[1]),J[2]=VV[2]+UV*(RV[2]-VV[2]),J)),lerp_1}var multiply_1$1,hasRequiredMultiply$1;function requireMultiply$1(){return hasRequiredMultiply$1||(hasRequiredMultiply$1=1,multiply_1$1=(J,VV,RV)=>(J[0]=VV[0]*RV[0],J[1]=VV[1]*RV[1],J[2]=VV[2]*RV[2],J)),multiply_1$1}var negate_1,hasRequiredNegate;function requireNegate(){return hasRequiredNegate||(hasRequiredNegate=1,negate_1=(J,VV)=>(J[0]=-VV[0],J[1]=-VV[1],J[2]=-VV[2],J)),negate_1}var normalize_1,hasRequiredNormalize;function requireNormalize(){return hasRequiredNormalize||(hasRequiredNormalize=1,normalize_1=(J,VV)=>{const RV=VV[0],UV=VV[1],ZV=VV[2];let WV=RV*RV+UV*UV+ZV*ZV;return WV>0&&(WV=1/Math.sqrt(WV)),J[0]=RV*WV,J[1]=UV*WV,J[2]=ZV*WV,J}),normalize_1}var orthogonal_1,hasRequiredOrthogonal;function requireOrthogonal(){if(hasRequiredOrthogonal)return orthogonal_1;hasRequiredOrthogonal=1;const lV=requireAbs(),J=requireCreate$b(),VV=requireCross();return orthogonal_1=(UV,ZV)=>{const WV=lV(J(),ZV),IV=0+(WV[0]<WV[1]&&WV[0]<WV[2]),dV=0+(WV[1]<=WV[0]&&WV[1]<WV[2]),CV=0+(WV[2]<=WV[0]&&WV[2]<=WV[1]);return VV(UV,ZV,[IV,dV,CV])},orthogonal_1}var rotateX_1$1,hasRequiredRotateX$1;function requireRotateX$1(){return hasRequiredRotateX$1||(hasRequiredRotateX$1=1,rotateX_1$1=(J,VV,RV,UV)=>{const ZV=[],WV=[];return ZV[0]=VV[0]-RV[0],ZV[1]=VV[1]-RV[1],ZV[2]=VV[2]-RV[2],WV[0]=ZV[0],WV[1]=ZV[1]*Math.cos(UV)-ZV[2]*Math.sin(UV),WV[2]=ZV[1]*Math.sin(UV)+ZV[2]*Math.cos(UV),J[0]=WV[0]+RV[0],J[1]=WV[1]+RV[1],J[2]=WV[2]+RV[2],J}),rotateX_1$1}var rotateY_1$1,hasRequiredRotateY$1;function requireRotateY$1(){return hasRequiredRotateY$1||(hasRequiredRotateY$1=1,rotateY_1$1=(J,VV,RV,UV)=>{const ZV=[],WV=[];return ZV[0]=VV[0]-RV[0],ZV[1]=VV[1]-RV[1],ZV[2]=VV[2]-RV[2],WV[0]=ZV[2]*Math.sin(UV)+ZV[0]*Math.cos(UV),WV[1]=ZV[1],WV[2]=ZV[2]*Math.cos(UV)-ZV[0]*Math.sin(UV),J[0]=WV[0]+RV[0],J[1]=WV[1]+RV[1],J[2]=WV[2]+RV[2],J}),rotateY_1$1}var rotateZ_1$1,hasRequiredRotateZ$1;function requireRotateZ$1(){return hasRequiredRotateZ$1||(hasRequiredRotateZ$1=1,rotateZ_1$1=(J,VV,RV,UV)=>{const ZV=[],WV=[];return ZV[0]=VV[0]-RV[0],ZV[1]=VV[1]-RV[1],WV[0]=ZV[0]*Math.cos(UV)-ZV[1]*Math.sin(UV),WV[1]=ZV[0]*Math.sin(UV)+ZV[1]*Math.cos(UV),J[0]=WV[0]+RV[0],J[1]=WV[1]+RV[1],J[2]=VV[2],J}),rotateZ_1$1}var scale_1$2,hasRequiredScale$2;function requireScale$2(){return hasRequiredScale$2||(hasRequiredScale$2=1,scale_1$2=(J,VV,RV)=>(J[0]=VV[0]*RV,J[1]=VV[1]*RV,J[2]=VV[2]*RV,J)),scale_1$2}var snap_1$1,hasRequiredSnap$1;function requireSnap$1(){return hasRequiredSnap$1||(hasRequiredSnap$1=1,snap_1$1=(J,VV,RV)=>(J[0]=Math.round(VV[0]/RV)*RV+0,J[1]=Math.round(VV[1]/RV)*RV+0,J[2]=Math.round(VV[2]/RV)*RV+0,J)),snap_1$1}var squaredDistance_1,hasRequiredSquaredDistance;function requireSquaredDistance(){return hasRequiredSquaredDistance||(hasRequiredSquaredDistance=1,squaredDistance_1=(J,VV)=>{const RV=VV[0]-J[0],UV=VV[1]-J[1],ZV=VV[2]-J[2];return RV*RV+UV*UV+ZV*ZV}),squaredDistance_1}var squaredLength_1,hasRequiredSquaredLength;function requireSquaredLength(){return hasRequiredSquaredLength||(hasRequiredSquaredLength=1,squaredLength_1=J=>{const VV=J[0],RV=J[1],UV=J[2];return VV*VV+RV*RV+UV*UV}),squaredLength_1}var subtract_1$2,hasRequiredSubtract$2;function requireSubtract$2(){return hasRequiredSubtract$2||(hasRequiredSubtract$2=1,subtract_1$2=(J,VV,RV)=>(J[0]=VV[0]-RV[0],J[1]=VV[1]-RV[1],J[2]=VV[2]-RV[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,VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2];let IV=RV[3]*UV+RV[7]*ZV+RV[11]*WV+RV[15];return IV=IV||1,J[0]=(RV[0]*UV+RV[4]*ZV+RV[8]*WV+RV[12])/IV,J[1]=(RV[1]*UV+RV[5]*ZV+RV[9]*WV+RV[13])/IV,J[2]=(RV[2]*UV+RV[6]*ZV+RV[10]*WV+RV[14])/IV,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,VV,RV)=>(J[0]=VV[0]+RV[0],J[1]=VV[1]+RV[1],J[2]=VV[2]+RV[2],J[3]=VV[3]+RV[3],J[4]=VV[4]+RV[4],J[5]=VV[5]+RV[5],J[6]=VV[6]+RV[6],J[7]=VV[7]+RV[7],J[8]=VV[8]+RV[8],J[9]=VV[9]+RV[9],J[10]=VV[10]+RV[10],J[11]=VV[11]+RV[11],J[12]=VV[12]+RV[12],J[13]=VV[13]+RV[13],J[14]=VV[14]+RV[14],J[15]=VV[15]+RV[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 lV=requireCreate$a();return clone_1$7=VV=>{const RV=lV();return RV[0]=VV[0],RV[1]=VV[1],RV[2]=VV[2],RV[3]=VV[3],RV[4]=VV[4],RV[5]=VV[5],RV[6]=VV[6],RV[7]=VV[7],RV[8]=VV[8],RV[9]=VV[9],RV[10]=VV[10],RV[11]=VV[11],RV[12]=VV[12],RV[13]=VV[13],RV[14]=VV[14],RV[15]=VV[15],RV},clone_1$7}var copy_1$3,hasRequiredCopy$3;function requireCopy$3(){return hasRequiredCopy$3||(hasRequiredCopy$3=1,copy_1$3=(J,VV)=>(J[0]=VV[0],J[1]=VV[1],J[2]=VV[2],J[3]=VV[3],J[4]=VV[4],J[5]=VV[5],J[6]=VV[6],J[7]=VV[7],J[8]=VV[8],J[9]=VV[9],J[10]=VV[10],J[11]=VV[11],J[12]=VV[12],J[13]=VV[13],J[14]=VV[14],J[15]=VV[15],J)),copy_1$3}var invert_1$2,hasRequiredInvert$2;function requireInvert$2(){return hasRequiredInvert$2||(hasRequiredInvert$2=1,invert_1$2=(J,VV)=>{const RV=VV[0],UV=VV[1],ZV=VV[2],WV=VV[3],IV=VV[4],dV=VV[5],CV=VV[6],FV=VV[7],NV=VV[8],gV=VV[9],eV=VV[10],JV=VV[11],nV=VV[12],aV=VV[13],GV=VV[14],cV=VV[15],TV=RV*dV-UV*IV,iV=RV*CV-ZV*IV,tV=RV*FV-WV*IV,MV=UV*CV-ZV*dV,AV=UV*FV-WV*dV,pV=ZV*FV-WV*CV,HV=NV*aV-gV*nV,oV=NV*GV-eV*nV,DV=NV*cV-JV*nV,wV=gV*GV-eV*aV,_V=gV*cV-JV*aV,dl=eV*cV-JV*GV;let nl=TV*dl-iV*_V+tV*wV+MV*DV-AV*oV+pV*HV;return nl?(nl=1/nl,J[0]=(dV*dl-CV*_V+FV*wV)*nl,J[1]=(ZV*_V-UV*dl-WV*wV)*nl,J[2]=(aV*pV-GV*AV+cV*MV)*nl,J[3]=(eV*AV-gV*pV-JV*MV)*nl,J[4]=(CV*DV-IV*dl-FV*oV)*nl,J[5]=(RV*dl-ZV*DV+WV*oV)*nl,J[6]=(GV*tV-nV*pV-cV*iV)*nl,J[7]=(NV*pV-eV*tV+JV*iV)*nl,J[8]=(IV*_V-dV*DV+FV*HV)*nl,J[9]=(UV*DV-RV*_V-WV*HV)*nl,J[10]=(nV*AV-aV*tV+cV*TV)*nl,J[11]=(gV*tV-NV*AV-JV*TV)*nl,J[12]=(dV*oV-IV*wV-CV*HV)*nl,J[13]=(RV*wV-UV*oV+ZV*HV)*nl,J[14]=(aV*iV-nV*MV-GV*TV)*nl,J[15]=(NV*MV-gV*iV+eV*TV)*nl,J):null}),invert_1$2}var equals_1$5,hasRequiredEquals$5;function requireEquals$5(){return hasRequiredEquals$5||(hasRequiredEquals$5=1,equals_1$5=(J,VV)=>J[0]===VV[0]&&J[1]===VV[1]&&J[2]===VV[2]&&J[3]===VV[3]&&J[4]===VV[4]&&J[5]===VV[5]&&J[6]===VV[6]&&J[7]===VV[7]&&J[8]===VV[8]&&J[9]===VV[9]&&J[10]===VV[10]&&J[11]===VV[11]&&J[12]===VV[12]&&J[13]===VV[13]&&J[14]===VV[14]&&J[15]===VV[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:lV}=requireConstants$1(),{sin:J,cos:VV}=requireTrigonometry(),RV=requireIdentity();return fromRotation_1=(ZV,WV,IV)=>{let[dV,CV,FV]=IV;const NV=dV*dV+CV*CV+FV*FV;if(Math.abs(NV)<lV)return RV(ZV);const gV=1/Math.sqrt(NV);dV*=gV,CV*=gV,FV*=gV;const eV=J(WV),JV=VV(WV),nV=1-JV;return ZV[0]=dV*dV*nV+JV,ZV[1]=CV*dV*nV+FV*eV,ZV[2]=FV*dV*nV-CV*eV,ZV[3]=0,ZV[4]=dV*CV*nV-FV*eV,ZV[5]=CV*CV*nV+JV,ZV[6]=FV*CV*nV+dV*eV,ZV[7]=0,ZV[8]=dV*FV*nV+CV*eV,ZV[9]=CV*FV*nV-dV*eV,ZV[10]=FV*FV*nV+JV,ZV[11]=0,ZV[12]=0,ZV[13]=0,ZV[14]=0,ZV[15]=1,ZV},fromRotation_1}var fromScaling_1,hasRequiredFromScaling;function requireFromScaling(){return hasRequiredFromScaling||(hasRequiredFromScaling=1,fromScaling_1=(J,VV)=>(J[0]=VV[0],J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=VV[1],J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=VV[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:lV,cos:J}=requireTrigonometry();return fromTaitBryanRotation_1=(RV,UV,ZV,WV)=>{const IV=lV(UV),dV=J(UV),CV=lV(ZV),FV=J(ZV),NV=lV(WV),gV=J(WV);return RV[0]=FV*dV,RV[1]=FV*IV,RV[2]=-CV,RV[3]=0,RV[4]=NV*CV*dV-gV*IV,RV[5]=gV*dV+NV*CV*IV,RV[6]=NV*FV,RV[7]=0,RV[8]=NV*IV+gV*CV*dV,RV[9]=gV*CV*IV-NV*dV,RV[10]=gV*FV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromTaitBryanRotation_1}var fromTranslation_1,hasRequiredFromTranslation;function requireFromTranslation(){return hasRequiredFromTranslation||(hasRequiredFromTranslation=1,fromTranslation_1=(J,VV)=>(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]=VV[0],J[13]=VV[1],J[14]=VV[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 lV=requireCreate$a();return fromValues_1$2=(VV,RV,UV,ZV,WV,IV,dV,CV,FV,NV,gV,eV,JV,nV,aV,GV)=>{const cV=lV();return cV[0]=VV,cV[1]=RV,cV[2]=UV,cV[3]=ZV,cV[4]=WV,cV[5]=IV,cV[6]=dV,cV[7]=CV,cV[8]=FV,cV[9]=NV,cV[10]=gV,cV[11]=eV,cV[12]=JV,cV[13]=nV,cV[14]=aV,cV[15]=GV,cV},fromValues_1$2}var fromVectorRotation_1,hasRequiredFromVectorRotation;function requireFromVectorRotation(){if(hasRequiredFromVectorRotation)return fromVectorRotation_1;hasRequiredFromVectorRotation=1;const lV=requireVec3(),J=requireFromRotation();return fromVectorRotation_1=(RV,UV,ZV)=>{const WV=lV.normalize(lV.create(),UV),IV=lV.normalize(lV.create(),ZV),dV=lV.cross(lV.create(),IV,WV),CV=lV.dot(IV,WV);if(CV===-1)return J(RV,Math.PI,lV.orthogonal(dV,WV));const FV=1/(1+CV);return RV[0]=dV[0]*dV[0]*FV+CV,RV[1]=dV[1]*dV[0]*FV-dV[2],RV[2]=dV[2]*dV[0]*FV+dV[1],RV[3]=0,RV[4]=dV[0]*dV[1]*FV+dV[2],RV[5]=dV[1]*dV[1]*FV+CV,RV[6]=dV[2]*dV[1]*FV-dV[0],RV[7]=0,RV[8]=dV[0]*dV[2]*FV-dV[1],RV[9]=dV[1]*dV[2]*FV+dV[0],RV[10]=dV[2]*dV[2]*FV+CV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromVectorRotation_1}var fromXRotation_1,hasRequiredFromXRotation;function requireFromXRotation(){if(hasRequiredFromXRotation)return fromXRotation_1;hasRequiredFromXRotation=1;const{sin:lV,cos:J}=requireTrigonometry();return fromXRotation_1=(RV,UV)=>{const ZV=lV(UV),WV=J(UV);return RV[0]=1,RV[1]=0,RV[2]=0,RV[3]=0,RV[4]=0,RV[5]=WV,RV[6]=ZV,RV[7]=0,RV[8]=0,RV[9]=-ZV,RV[10]=WV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromXRotation_1}var fromYRotation_1,hasRequiredFromYRotation;function requireFromYRotation(){if(hasRequiredFromYRotation)return fromYRotation_1;hasRequiredFromYRotation=1;const{sin:lV,cos:J}=requireTrigonometry();return fromYRotation_1=(RV,UV)=>{const ZV=lV(UV),WV=J(UV);return RV[0]=WV,RV[1]=0,RV[2]=-ZV,RV[3]=0,RV[4]=0,RV[5]=1,RV[6]=0,RV[7]=0,RV[8]=ZV,RV[9]=0,RV[10]=WV,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},fromYRotation_1}var fromZRotation_1,hasRequiredFromZRotation;function requireFromZRotation(){if(hasRequiredFromZRotation)return fromZRotation_1;hasRequiredFromZRotation=1;const{sin:lV,cos:J}=requireTrigonometry();return fromZRotation_1=(RV,UV)=>{const ZV=lV(UV),WV=J(UV);return RV[0]=WV,RV[1]=ZV,RV[2]=0,RV[3]=0,RV[4]=-ZV,RV[5]=WV,RV[6]=0,RV[7]=0,RV[8]=0,RV[9]=0,RV[10]=1,RV[11]=0,RV[12]=0,RV[13]=0,RV[14]=0,RV[15]=1,RV},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 lV=VV=>J(VV[1])&&J(VV[2])&&J(VV[3])&&J(VV[4])&&J(VV[6])&&J(VV[7])&&J(VV[8])&&J(VV[9])&&J(VV[11])&&VV[15]===1,J=VV=>Math.abs(VV)<Number.EPSILON;return isOnlyTransformScale_1=lV,isOnlyTransformScale_1}var isMirroring_1,hasRequiredIsMirroring;function requireIsMirroring(){return hasRequiredIsMirroring||(hasRequiredIsMirroring=1,isMirroring_1=J=>{const VV=J[4]*J[9]-J[8]*J[5],RV=J[8]*J[1]-J[0]*J[9],UV=J[0]*J[5]-J[4]*J[1];return VV*J[2]+RV*J[6]+UV*J[10]<0}),isMirroring_1}var mirrorByPlane_1,hasRequiredMirrorByPlane;function requireMirrorByPlane(){return hasRequiredMirrorByPlane||(hasRequiredMirrorByPlane=1,mirrorByPlane_1=(J,VV)=>{const[RV,UV,ZV,WV]=VV;return J[0]=1-2*RV*RV,J[1]=-2*UV*RV,J[2]=-2*ZV*RV,J[3]=0,J[4]=-2*RV*UV,J[5]=1-2*UV*UV,J[6]=-2*ZV*UV,J[7]=0,J[8]=-2*RV*ZV,J[9]=-2*UV*ZV,J[10]=1-2*ZV*ZV,J[11]=0,J[12]=2*RV*WV,J[13]=2*UV*WV,J[14]=2*ZV*WV,J[15]=1,J}),mirrorByPlane_1}var multiply_1,hasRequiredMultiply;function requireMultiply(){return hasRequiredMultiply||(hasRequiredMultiply=1,multiply_1=(J,VV,RV)=>{const UV=VV[0],ZV=VV[1],WV=VV[2],IV=VV[3],dV=VV[4],CV=VV[5],FV=VV[6],NV=VV[7],gV=VV[8],eV=VV[9],JV=VV[10],nV=VV[11],aV=VV[12],GV=VV[13],cV=VV[14],TV=VV[15];let iV=RV[0],tV=RV[1],MV=RV[2],AV=RV[3];return J[0]=iV*UV+tV*dV+MV*gV+AV*aV,J[1]=iV*ZV+tV*CV+MV*eV+AV*GV,J[2]=iV*WV+tV*FV+MV*JV+AV*cV,J[3]=iV*IV+tV*NV+MV*nV+AV*TV,iV=RV[4],tV=RV[5],MV=RV[6],AV=RV[7],J[4]=iV*UV+tV*dV+MV*gV+AV*aV,J[5]=iV*ZV+tV*CV+MV*eV+AV*GV,J[6]=iV*WV+tV*FV+MV*JV+AV*cV,J[7]=iV*IV+tV*NV+MV*nV+AV*TV,iV=RV[8],tV=RV[9],MV=RV[10],AV=RV[11],J[8]=iV*UV+tV*dV+MV*gV+AV*aV,J[9]=iV*ZV+tV*CV+MV*eV+AV*GV,J[10]=iV*WV+tV*FV+MV*JV+AV*cV,J[11]=iV*IV+tV*NV+MV*nV+AV*TV,iV=RV[12],tV=RV[13],MV=RV[14],AV=RV[15],J[12]=iV*UV+tV*dV+MV*gV+AV*aV,J[13]=iV*ZV+tV*CV+MV*eV+AV*GV,J[14]=iV*WV+tV*FV+MV*JV+AV*cV,J[15]=iV*IV+tV*NV+MV*nV+AV*TV,J}),multiply_1}var rotate_1$1,hasRequiredRotate$1;function requireRotate$1(){if(hasRequiredRotate$1)return rotate_1$1;hasRequiredRotate$1=1;const{EPS:lV}=requireConstants$1(),{sin:J,cos:VV}=requireTrigonometry(),RV=requireCopy$3();return rotate_1$1=(ZV,WV,IV,dV)=>{let[CV,FV,NV]=dV;const gV=CV*CV+FV*FV+NV*NV;if(Math.abs(gV)<lV)return RV(ZV,WV);const eV=1/Math.sqrt(gV);CV*=eV,FV*=eV,NV*=eV;const JV=J(IV),nV=VV(IV),aV=1-nV,GV=WV[0],cV=WV[1],TV=WV[2],iV=WV[3],tV=WV[4],MV=WV[5],AV=WV[6],pV=WV[7],HV=WV[8],oV=WV[9],DV=WV[10],wV=WV[11],_V=CV*CV*aV+nV,dl=FV*CV*aV+NV*JV,nl=NV*CV*aV-FV*JV,Il=CV*FV*aV-NV*JV,LV=FV*FV*aV+nV,OV=NV*FV*aV+CV*JV,$V=CV*NV*aV+FV*JV,Cl=FV*NV*aV-CV*JV,Zl=NV*NV*aV+nV;return ZV[0]=GV*_V+tV*dl+HV*nl,ZV[1]=cV*_V+MV*dl+oV*nl,ZV[2]=TV*_V+AV*dl+DV*nl,ZV[3]=iV*_V+pV*dl+wV*nl,ZV[4]=GV*Il+tV*LV+HV*OV,ZV[5]=cV*Il+MV*LV+oV*OV,ZV[6]=TV*Il+AV*LV+DV*OV,ZV[7]=iV*Il+pV*LV+wV*OV,ZV[8]=GV*$V+tV*Cl+HV*Zl,ZV[9]=cV*$V+MV*Cl+oV*Zl,ZV[10]=TV*$V+AV*Cl+DV*Zl,ZV[11]=iV*$V+pV*Cl+wV*Zl,WV!==ZV&&(ZV[12]=WV[12],ZV[13]=WV[13],ZV[14]=WV[14],ZV[15]=WV[15]),ZV},rotate_1$1}var rotateX_1,hasRequiredRotateX;function requireRotateX(){if(hasRequiredRotateX)return rotateX_1;hasRequiredRotateX=1;const{sin:lV,cos:J}=requireTrigonometry();return rotateX_1=(RV,UV,ZV)=>{const WV=lV(ZV),IV=J(ZV),dV=UV[4],CV=UV[5],FV=UV[6],NV=UV[7],gV=UV[8],eV=UV[9],JV=UV[10],nV=UV[11];return UV!==RV&&(RV[0]=UV[0],RV[1]=UV[1],RV[2]=UV[2],RV[3]=UV[3],RV[12]=UV[12],RV[13]=UV[13],RV[14]=UV[14],RV[15]=UV[15]),RV[4]=dV*IV+gV*WV,RV[5]=CV*IV+eV*WV,RV[6]=FV*IV+JV*WV,RV[7]=NV*IV+nV*WV,RV[8]=gV*IV-dV*WV,RV[9]=eV*IV-CV*WV,RV[10]=JV*IV-FV*WV,RV[11]=nV*IV-NV*WV,RV},rotateX_1}var rotateY_1,hasRequiredRotateY;function requireRotateY(){if(hasRequiredRotateY)return rotateY_1;hasRequiredRotateY=1;const{sin:lV,cos:J}=requireTrigonometry();return rotateY_1=(RV,UV,ZV)=>{const WV=lV(ZV),IV=J(ZV),dV=UV[0],CV=UV[1],FV=UV[2],NV=UV[3],gV=UV[8],eV=UV[9],JV=UV[10],nV=UV[11];return UV!==RV&&(RV[4]=UV[4],RV[5]=UV[5],RV[6]=UV[6],RV[7]=UV[7],RV[12]=UV[12],RV[13]=UV[13],RV[14]=UV[14],RV[15]=UV[15]),RV[0]=dV*IV-gV*WV,RV[1]=CV*IV-eV*WV,RV[2]=FV*IV-JV*WV,RV[3]=NV*IV-nV*WV,RV[8]=dV*WV+gV*IV,RV[9]=CV*WV+eV*IV,RV[10]=FV*WV+JV*IV,RV[11]=NV*WV+nV*IV,RV},rotateY_1}var rotateZ_1,hasRequiredRotateZ;function requireRotateZ(){if(hasRequiredRotateZ)return rotateZ_1;hasRequiredRotateZ=1;const{sin:lV,cos:J}=requireTrigonometry();return rotateZ_1=(RV,UV,ZV)=>{const WV=lV(ZV),IV=J(ZV),dV=UV[0],CV=UV[1],FV=UV[2],NV=UV[3],gV=UV[4],eV=UV[5],JV=UV[6],nV=UV[7];return UV!==RV&&(RV[8]=UV[8],RV[9]=UV[9],RV[10]=UV[10],RV[11]=UV[11],RV[12]=UV[12],RV[13]=UV[13],RV[14]=UV[14],RV[15]=UV[15]),RV[0]=dV*IV+gV*WV,RV[1]=CV*IV+eV*WV,RV[2]=FV*IV+JV*WV,RV[3]=NV*IV+nV*WV,RV[4]=gV*IV-dV*WV,RV[5]=eV*IV-CV*WV,RV[6]=JV*IV-FV*WV,RV[7]=nV*IV-NV*WV,RV},rotateZ_1}var scale_1$1,hasRequiredScale$1;function requireScale$1(){return hasRequiredScale$1||(hasRequiredScale$1=1,scale_1$1=(J,VV,RV)=>{const UV=RV[0],ZV=RV[1],WV=RV[2];return J[0]=VV[0]*UV,J[1]=VV[1]*UV,J[2]=VV[2]*UV,J[3]=VV[3]*UV,J[4]=VV[4]*ZV,J[5]=VV[5]*ZV,J[6]=VV[6]*ZV,J[7]=VV[7]*ZV,J[8]=VV[8]*WV,J[9]=VV[9]*WV,J[10]=VV[10]*WV,J[11]=VV[11]*WV,J[12]=VV[12],J[13]=VV[13],J[14]=VV[14],J[15]=VV[15],J}),scale_1$1}var subtract_1$1,hasRequiredSubtract$1;function requireSubtract$1(){return hasRequiredSubtract$1||(hasRequiredSubtract$1=1,subtract_1$1=(J,VV,RV)=>(J[0]=VV[0]-RV[0],J[1]=VV[1]-RV[1],J[2]=VV[2]-RV[2],J[3]=VV[3]-RV[3],J[4]=VV[4]-RV[4],J[5]=VV[5]-RV[5],J[6]=VV[6]-RV[6],J[7]=VV[7]-RV[7],J[8]=VV[8]-RV[8],J[9]=VV[9]-RV[9],J[10]=VV[10]-RV[10],J[11]=VV[11]-RV[11],J[12]=VV[12]-RV[12],J[13]=VV[13]-RV[13],J[14]=VV[14]-RV[14],J[15]=VV[15]-RV[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(VV=>VV.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,VV,RV)=>{const UV=RV[0],ZV=RV[1],WV=RV[2];let IV,dV,CV,FV,NV,gV,eV,JV,nV,aV,GV,cV;return VV===J?(J[12]=VV[0]*UV+VV[4]*ZV+VV[8]*WV+VV[12],J[13]=VV[1]*UV+VV[5]*ZV+VV[9]*WV+VV[13],J[14]=VV[2]*UV+VV[6]*ZV+VV[10]*WV+VV[14],J[15]=VV[3]*UV+VV[7]*ZV+VV[11]*WV+VV[15]):(IV=VV[0],dV=VV[1],CV=VV[2],FV=VV[3],NV=VV[4],gV=VV[5],eV=VV[6],JV=VV[7],nV=VV[8],aV=VV[9],GV=VV[10],cV=VV[11],J[0]=IV,J[1]=dV,J[2]=CV,J[3]=FV,J[4]=NV,J[5]=gV,J[6]=eV,J[7]=JV,J[8]=nV,J[9]=aV,J[10]=GV,J[11]=cV,J[12]=IV*UV+NV*ZV+nV*WV+VV[12],J[13]=dV*UV+gV*ZV+aV*WV+VV[13],J[14]=CV*UV+eV*ZV+GV*WV+VV[14],J[15]=FV*UV+JV*ZV+cV*WV+VV[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 lV=requireMat4();return create_1$9=VV=>(VV===void 0&&(VV=[]),{sides:VV,transforms:lV.create()}),create_1$9}var fromPoints_1$7,hasRequiredFromPoints$7;function requireFromPoints$7(){if(hasRequiredFromPoints$7)return fromPoints_1$7;hasRequiredFromPoints$7=1;const lV=requireVec2(),J=requireCreate$9();return fromPoints_1$7=RV=>{if(!Array.isArray(RV))throw new Error("the given points must be an array");let UV=RV.length;if(UV<3)throw new Error("the given points must define a closed geometry with three or more points");lV.equals(RV[0],RV[UV-1])&&--UV;const ZV=[];let WV=RV[UV-1];for(let IV=0;IV<UV;IV++){const dV=RV[IV];ZV.push([lV.clone(WV),lV.clone(dV)]),WV=dV}return J(ZV)},fromPoints_1$7}var fromCompactBinary_1$2,hasRequiredFromCompactBinary$2;function requireFromCompactBinary$2(){if(hasRequiredFromCompactBinary$2)return fromCompactBinary_1$2;hasRequiredFromCompactBinary$2=1;const lV=requireMat4(),J=requireVec2(),VV=requireCreate$9();return fromCompactBinary_1$2=UV=>{if(UV[0]!==0)throw new Error("invalid compact binary data");const ZV=VV();ZV.transforms=lV.clone(UV.slice(1,17));for(let WV=21;WV<UV.length;WV+=4){const IV=J.fromValues(UV[WV+0],UV[WV+1]),dV=J.fromValues(UV[WV+2],UV[WV+3]);ZV.sides.push([IV,dV])}return UV[17]>=0&&(ZV.color=[UV[17],UV[18],UV[19],UV[20]]),ZV},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 lV=requireMat4(),J=requireVec2();return applyTransforms_1$2=RV=>(lV.isIdentity(RV.transforms)||(RV.sides=RV.sides.map(UV=>{const ZV=J.transform(J.create(),UV[0],RV.transforms),WV=J.transform(J.create(),UV[1],RV.transforms);return[ZV,WV]}),RV.transforms=lV.create()),RV),applyTransforms_1$2}var toSides_1,hasRequiredToSides;function requireToSides(){if(hasRequiredToSides)return toSides_1;hasRequiredToSides=1;const lV=requireApplyTransforms$2();return toSides_1=VV=>lV(VV).sides,toSides_1}var reverse_1$4,hasRequiredReverse$4;function requireReverse$4(){if(hasRequiredReverse$4)return reverse_1$4;hasRequiredReverse$4=1;const lV=requireCreate$9(),J=requireToSides();return reverse_1$4=RV=>{const ZV=J(RV).map(WV=>[WV[1],WV[0]]);return ZV.reverse(),lV(ZV)},reverse_1$4}var toOutlines_1,hasRequiredToOutlines;function requireToOutlines(){if(hasRequiredToOutlines)return toOutlines_1;hasRequiredToOutlines=1;const lV=requireVec2(),J=requireToSides(),VV=WV=>{const IV=new Map,dV=CV=>{const FV=CV.toString();return IV.has(FV)?IV.get(FV):(IV.set(FV,CV),CV)};return WV.map(CV=>CV.map(dV))},RV=WV=>{const IV=new Map;return VV(WV).forEach(CV=>{IV.has(CV[0])?IV.get(CV[0]).push(CV):IV.set(CV[0],[CV])}),IV},UV=WV=>{const IV=RV(J(WV)),dV=[];for(;;){let CV;for(const[gV,eV]of IV){if(CV=eV.shift(),!CV){IV.delete(gV);continue}break}if(CV===void 0)break;const FV=[],NV=CV[0];for(;;){FV.push(CV[0]);const gV=CV[1];if(gV===NV)break;const eV=IV.get(gV);if(!eV)throw new Error(`geometry is not closed at vertex ${gV}`);const JV=ZV(CV,eV);eV.length===0&&IV.delete(gV),CV=JV}FV.length>0&&FV.push(FV.shift()),dV.push(FV)}return IV.clear(),dV},ZV=(WV,IV)=>{if(IV.length===1)return IV.pop();const dV=lV.create(),CV=lV.angleDegrees(lV.subtract(dV,WV[1],WV[0]));let FV,NV;IV.forEach((eV,JV)=>{let aV=lV.angleDegrees(lV.subtract(dV,eV[1],eV[0]))-CV;aV<-180&&(aV+=360),aV>=180&&(aV-=360),(NV===void 0||aV>FV)&&(NV=JV,FV=aV)});const gV=IV[NV];return IV.splice(NV,1),gV};return toOutlines_1=UV,toOutlines_1}var toPoints_1$3,hasRequiredToPoints$3;function requireToPoints$3(){if(hasRequiredToPoints$3)return toPoints_1$3;hasRequiredToPoints$3=1;const lV=requireToSides();return toPoints_1$3=VV=>{const UV=lV(VV).map(ZV=>ZV[0]);return UV.length>0&&UV.push(UV.shift()),UV},toPoints_1$3}var toString_1$7,hasRequiredToString$7;function requireToString$7(){if(hasRequiredToString$7)return toString_1$7;hasRequiredToString$7=1;const lV=requireVec2(),J=requireToSides();return toString_1$7=RV=>{const UV=J(RV);let ZV="geom2 ("+UV.length+` sides):
7299
7299
  [
7300
7300
  `;return UV.forEach(WV=>{ZV+=" ["+lV.toString(WV[0])+", "+lV.toString(WV[1])+`]
7301
7301
  `}),ZV+=`]
@@ -22045,7 +22045,7 @@ void main() {
22045
22045
  * Copyright 2010-2024 Three.js Authors
22046
22046
  * SPDX-License-Identifier: MIT
22047
22047
  *)
22048
- */const dist$4=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$4);var dist$3,hasRequiredDist$2;function requireDist$2(){if(hasRequiredDist$2)return dist$3;hasRequiredDist$2=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(ol,vl)=>{for(var wR in vl)J(ol,wR,{get:vl[wR],enumerable:!0})},IV=(ol,vl,wR,ZU)=>{if(vl&&typeof vl=="object"||typeof vl=="function")for(let tU of RV(vl))!ZV.call(ol,tU)&&tU!==wR&&J(ol,tU,{get:()=>vl[tU],enumerable:!(ZU=VV(vl,tU))||ZU.enumerable});return ol},dV=(ol,vl,wR)=>(wR=ol!=null?lV(UV(ol)):{},IV(!ol||!ol.__esModule?J(wR,"default",{value:ol,enumerable:!0}):wR,ol)),CV=ol=>IV(J({},"__esModule",{value:!0}),ol),FV={};WV(FV,{CadViewer:()=>$U,useExportGltfUrl:()=>JV,useSaveGltfAs:()=>eV}),dist$3=CV(FV);var NV=requireThreeStdlib(),gV=requireReact();function eV(ol={}){const vl=nV(ol),wR=(0,gV.useMemo)(()=>document.createElement("a"),[]),ZU=async yU=>{const XZ=yU??ol.filename??"";ol.binary==null&&(ol.binary=XZ.endsWith(".glb"));const mZ=await vl(tU);wR.download=XZ,wR.href=mZ,wR.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(mZ)};(0,gV.useEffect)(()=>()=>{wR.remove(),tU=null},[]);let tU;return[(0,gV.useCallback)(yU=>{tU=yU},[]),ZU]}function JV(ol={}){const vl=nV(ol),[wR,ZU]=(0,gV.useState)(),[tU,uU]=(0,gV.useState)(),yU=(0,gV.useCallback)(XZ=>vl(XZ).then(ZU).catch(uU),[]);return(0,gV.useEffect)(()=>()=>URL.revokeObjectURL(wR),[wR]),[yU,wR,tU]}function nV(ol={}){const vl=(0,gV.useMemo)(()=>new NV.GLTFExporter,[]);return wR=>{const{promise:ZU,resolve:tU,reject:uU}=Promise.withResolvers();return vl.parse(wR,yU=>{const XZ=ol.binary?"gltf-binary":"gltf+json",mZ=new Blob([yU instanceof ArrayBuffer?yU:JSON.stringify(yU)],{type:`model/${XZ}`});tU(URL.createObjectURL(mZ))},uU,ol),ZU}}var aV=require$$2,GV=requireReact(),cV=(ol,vl)=>(0,GV.useMemo)(()=>{if(!ol)return;const wR=new aV.Circuit;return wR.add(ol),wR.render(),wR.getCircuitJson()},[ol]),TV=requireDist$6(),iV=requireReact(),tV=requireDist$6(),MV=requireTransforms(),AV=requirePrimitives(),pV=requireColors(),HV=requireBooleans(),oV=requirePrimitives(),DV=requireColors(),wV=requireBooleans(),_V=.01,dl={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},nl=(ol,vl)=>{if(ol.shape||(ol.shape="circle"),ol.shape==="circle")return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)((0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2,height:1.2}),(0,oV.cylinder)({center:[ol.x,ol.y,1.2/2],radius:ol.outer_diameter/2,height:_V}),(0,oV.cylinder)({center:[ol.x,ol.y,-1.2/2],radius:ol.outer_diameter/2,height:_V})),(0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2-_V,height:1.5})));if(ol.shape==="pill"){const wR=ol.hole_height>ol.hole_width,ZU=wR?ol.hole_height:ol.hole_width,tU=wR?ol.hole_width:ol.hole_height,uU=wR?ol.outer_width||ZU+.2:ol.outer_height||tU+.2,yU=tU/2,XZ=Math.abs(ZU-tU),mZ=(0,oV.cuboid)({center:wR?[ol.x,ol.y,0]:[ol.x,ol.y,0],size:wR?[tU,XZ,1.2]:[XZ,tU,1.2]}),QZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU,height:1.2}),ZW=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU,height:1.2}),JW=(0,oV.cuboid)({center:wR?[ol.x,ol.y,1.2/2]:[ol.x,ol.y,1.2/2],size:wR?[uU,XZ,_V]:[XZ,uU,_V]}),IZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,1.2/2]:[ol.x-XZ/2,ol.y,1.2/2],radius:uU/2,height:_V}),MR=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,1.2/2]:[ol.x+XZ/2,ol.y,1.2/2],radius:uU/2,height:_V}),WU=(0,oV.cuboid)({center:wR?[ol.x,ol.y,-1.2/2]:[ol.x,ol.y,-1.2/2],size:wR?[uU,XZ,_V]:[XZ,uU,_V]}),MU=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,-1.2/2]:[ol.x-XZ/2,ol.y,-1.2/2],radius:uU/2,height:_V}),VZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,-1.2/2]:[ol.x+XZ/2,ol.y,-1.2/2],radius:uU/2,height:_V});return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)(mZ,QZ,ZW,JW,IZ,MR,WU,MU,VZ),(0,wV.union)((0,oV.cuboid)({center:[ol.x,ol.y,0],size:wR?[tU-_V,XZ,1.5]:[XZ,tU-_V,1.5]}),(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU-_V,height:1.5}),(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU-_V,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${ol.shape}`)},Il=requireExtrusions(),LV=requireExpansions(),OV=requireExtrusions(),$V=requirePrimitives(),Cl=requireTransforms(),Zl=ol=>{let vl=0;for(let ZU=0;ZU<ol.length;ZU++){const tU=(ZU+1)%ol.length;vl+=ol[ZU][0]*ol[tU][1],vl-=ol[tU][0]*ol[ZU][1]}return vl/2<=0},el=(ol,vl=1.2)=>{let wR=ol.map(uU=>[uU.x,uU.y]);Zl(wR)&&(wR=wR.reverse());const ZU=(0,$V.polygon)({points:wR});let tU=(0,OV.extrudeLinear)({height:vl},ZU);return tU=(0,Cl.translate)([0,0,-vl/2],tU),tU},pl=requireText();function ml(ol){var mZ,QZ,ZW,JW;const vl=(0,pl.vectorText)({height:ol.font_size,input:ol.text});vl.forEach(IZ=>{IZ.length===29?(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,15)),vl.splice(vl.indexOf(IZ),0,IZ.slice(14,29))):IZ.length===17&&(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,10)),vl.splice(vl.indexOf(IZ),0,IZ.slice(9,17)))});const wR=vl.flatMap(IZ=>IZ),ZU={minX:Math.min(...wR.map(IZ=>IZ[0])),maxX:Math.max(...wR.map(IZ=>IZ[0])),minY:Math.min(...wR.map(IZ=>IZ[1])),maxY:Math.max(...wR.map(IZ=>IZ[1]))},tU=(ZU.minX+ZU.maxX)/2,uU=(ZU.minY+ZU.maxY)/2;let yU=-tU,XZ=-uU;return(mZ=ol.anchor_alignment)!=null&&mZ.includes("right")?yU=-ZU.maxX:(QZ=ol.anchor_alignment)!=null&&QZ.includes("left")&&(yU=-ZU.minX),(ZW=ol.anchor_alignment)!=null&&ZW.includes("top")?XZ=-ZU.maxY:(JW=ol.anchor_alignment)!=null&&JW.includes("bottom")&&(XZ=-ZU.minY),{textOutlines:vl,xOffset:yU,yOffset:XZ}}var Bl=ol=>{const vl=(0,tV.su)(ol).pcb_board.list()[0];if(!vl)throw new Error("No pcb_board found");const wR=(0,tV.su)(ol).pcb_plated_hole.list(),ZU=(0,tV.su)(ol).pcb_hole.list(),tU=(0,tV.su)(ol).pcb_smtpad.list(),uU=(0,tV.su)(ol).pcb_trace.list(),yU=(0,tV.su)(ol).pcb_via.list(),XZ=(0,tV.su)(ol).pcb_silkscreen_text.list();let mZ;vl.outline&&vl.outline.length>0?mZ=el(vl.outline,1.2):mZ=(0,AV.cuboid)({size:[vl.width,vl.height,1.2]});const QZ=[],ZW=[],JW=[],IZ=WU=>{if(WU.shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+_V});mZ=(0,HV.subtract)(mZ,MU);const VZ=nl(WU);QZ.push(VZ)}else if(WU.shape==="pill"){const MU=WU.hole_height>WU.hole_width,VZ=MU?WU.hole_height:WU.hole_width,GZ=MU?WU.hole_width:WU.hole_height,$Z=GZ/2,eW=Math.abs(VZ-GZ),iZ=(0,HV.union)((0,AV.cuboid)({center:[WU.x,WU.y,0],size:MU?[GZ,eW,1.5]:[eW,GZ,1.5]}),(0,AV.cylinder)({center:MU?[WU.x,WU.y-eW/2,0]:[WU.x-eW/2,WU.y,0],radius:$Z,height:1.5}),(0,AV.cylinder)({center:MU?[WU.x,WU.y+eW/2,0]:[WU.x+eW/2,WU.y,0],radius:$Z,height:1.5}));mZ=(0,HV.subtract)(mZ,iZ);const KU=nl(WU);QZ.push(KU)}};for(const WU of wR)IZ(WU);for(const WU of ZU)if(WU.hole_shape==="round"||WU.hole_shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+_V});mZ=(0,HV.subtract)(mZ,MU)}for(const WU of tU){const MU=WU.layer==="bottom"?-1:1;if(WU.shape==="rect"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cuboid)({center:[WU.x,WU.y,MU*1.2/2+MU*_V],size:[WU.width,WU.height,_V]}));ZW.push(VZ)}else if(WU.shape==="circle"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cylinder)({center:[WU.x,WU.y,MU*1.2/2+MU*_V],radius:WU.radius,height:_V}));ZW.push(VZ)}}for(const{route:WU}of uU){if(WU.length<2)continue;const MU=[];let VZ=[WU[0]],GZ=WU[0].route_type==="wire"?WU[0].layer:"top";for(let $Z=1;$Z<WU.length;$Z++){const eW=WU[$Z];eW.route_type==="via"?(MU.push(VZ),VZ=[eW]):eW.route_type==="wire"&&eW.layer!==GZ?(MU.push(VZ),GZ=eW.layer,VZ=[eW]):VZ.push(eW)}MU.push(VZ);for(const $Z of MU){if($Z.length<2)continue;const eW=(0,AV.line)($Z.map(KZ=>[KZ.x,KZ.y])),iZ=$Z[0].route_type==="via"?$Z[0].to_layer==="top"?1:-1:$Z[0].layer==="top"?1:-1;let KU=(0,MV.translate)([0,0,iZ*1.2/2],(0,Il.extrudeLinear)({height:_V*iZ},(0,LV.expand)({delta:.1,corners:"edge"},eW)));const yZ=yU.map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5})),dW=wR.filter(KZ=>KZ.shape==="circle").map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5}));KU=(0,HV.subtract)(KU,...yZ,...dW),KU=(0,pV.colorize)(dl.fr4GreenSolderWithMask,KU),JW.push(KU)}}for(const WU of yU)IZ({x:WU.x,y:WU.y,hole_diameter:WU.hole_diameter,outer_diameter:WU.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const MR=[];for(const WU of XZ){const{textOutlines:MU,xOffset:VZ,yOffset:GZ}=ml(WU);for(let $Z of MU){const eW=$Z.map(tW=>[tW[0]+VZ+WU.anchor_position.x,tW[1]+GZ+WU.anchor_position.y]),iZ=(0,AV.line)(eW),KU=WU.font_size||.25,yZ=Math.min(Math.max(.01,KU*.1),KU*.2),dW=(0,LV.expand)({delta:yZ,corners:"round"},iZ);let KZ=(0,MV.translate)([0,0,.6],(0,Il.extrudeLinear)({height:.012},dW));KZ=(0,pV.colorize)([256,256,256],KZ),MR.push(KZ)}}return mZ=(0,pV.colorize)(dl.fr4Green,mZ),[mZ,...QZ,...ZW,...JW,...MR]},jl=requireReact(),rl=dV(requireStlSerializer());function Pl(ol){return new Promise((vl,wR)=>{const ZU=new FileReader;ZU.onload=()=>{vl(ZU.result)},ZU.onerror=wR,ZU.readAsDataURL(ol)})}var Hl=ol=>{const[vl,wR]=(0,jl.useState)([]),[ZU,tU]=(0,jl.useState)(!0);return(0,jl.useEffect)(()=>{if(!ol)return;(async()=>{tU(!0);const XZ=(Array.isArray(ol)?ol:[ol]).map(async mZ=>{const QZ=rl.default.serialize({binary:!0},[mZ]),ZW=new Blob(QZ);return{stlUrl:await Pl(ZW),color:mZ.color}});try{const mZ=await Promise.all(XZ);wR(mZ)}catch(mZ){console.error("Error generating STLs:",mZ),wR([])}finally{tU(!1)}})()},[ol]),{stls:vl,loading:ZU}},Tl=require$$12,kl=requireReact(),Dl=requireThreeStdlib(),ZR=requireJsxRuntime();function JR({stlUrl:ol,mtlUrl:vl,color:wR,opacity:ZU=1}){const tU=(0,Tl.useLoader)(Dl.STLLoader,ol),uU=(0,kl.useRef)();return(0,ZR.jsxs)("mesh",{ref:uU,children:[(0,ZR.jsx)("primitive",{object:tU,attach:"geometry"}),(0,ZR.jsx)("meshStandardMaterial",{color:wR,transparent:ZU!==1,opacity:ZU})]})}var FR=require$$14,QR=require$$12,hR={name:"@tscircuit/3d-viewer",version:"0.0.83",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.252","@tscircuit/props":"^0.0.126","@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"}},kR=require$$14,AR=require$$12,aR=requireReact(),TR=dV(requireThree()),xR=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new TR.Euler(0,0,0));function pR(ol,vl){const wR=new TR.Quaternion().setFromEuler(new TR.Euler(ol.x,ol.y,ol.z)),ZU=new TR.Vector3(0,0,1);return ZU.applyQuaternion(wR),ZU.multiplyScalar(vl)}var UU=({})=>{const ol=(0,aR.useRef)();return(0,aR.useRef)({lastRotation:new TR.Euler}),(0,AR.useFrame)((vl,wR)=>{if(!ol.current)return;const ZU=window.TSCI_MAIN_CAMERA_ROTATION,tU=pR(ZU,2);vl.camera.position.copy(tU),vl.camera.lookAt(0,0,0)}),(0,xR.jsxs)("mesh",{ref:ol,rotation:[Math.PI/2,0,0],children:[(0,xR.jsx)("boxGeometry",{args:[1,1,1]}),(0,xR.jsx)("meshStandardMaterial",{color:"white"}),(0,xR.jsx)(kR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,xR.jsx)(kR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,xR.jsx)(kR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,xR.jsx)(kR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,xR.jsx)(kR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,xR.jsx)(kR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,xR.jsx)("lineSegments",{args:[new TR.EdgesGeometry(new TR.BoxGeometry(1,1,1))],material:new TR.LineBasicMaterial({color:0,linewidth:2})})]})},SU=requireReact(),xU=require$$14,DR=requireJsxRuntime(),BR=()=>((0,QR.useFrame)(({camera:ol})=>{window.TSCI_MAIN_CAMERA_ROTATION=ol.rotation}),(0,DR.jsx)(DR.Fragment,{})),CU=(0,SU.forwardRef)(({children:ol,hoveredComponent:vl},wR)=>(0,DR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,DR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,DR.jsxs)(QR.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)(UU,{})]})}),(0,DR.jsxs)(QR.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,DR.jsx)(BR,{}),(0,DR.jsx)(FR.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,DR.jsx)(FR.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,DR.jsx)("object3D",{ref:wR,children:ol}),vl&&(0,DR.jsx)(xU.Html,{position:vl.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:vl.name})]}),(0,DR.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:["@",hR.version]})]})),bR=requireReact(),VR=dV(requireThree()),mR=requireJsxRuntime(),YR=ol=>(0,mR.jsx)("group",{...ol}),iR=({children:ol,isHovered:vl,onHover:wR,position:ZU})=>{const tU=(0,bR.useRef)(null),uU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation();try{const mZ=XZ.point||(XZ.intersections&&XZ.intersections.length>0?XZ.intersections[0].point:null)||(ZU?new VR.Vector3(...ZU):null);mZ?(tU.current=mZ,wR({mousePosition:[mZ.x,mZ.y,mZ.z]})):wR({})}catch(mZ){console.warn("Hover event error:",mZ),wR({})}},[ZU]),yU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation(),tU.current=null,wR(null)},[wR]);return(0,mR.jsx)(YR,{onPointerEnter:uU,onPointerMove:uU,onPointerLeave:yU,children:ol})},$R=iR,lU=requireReact(),hU=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function GR(ol){const[vl,wR]=(0,lU.useState)(null);return(0,lU.useEffect)(()=>{if(!ol)return;const ZU=window.TSCIRCUIT_OBJ_LOADER_CACHE;let tU=!1;async function uU(){var XZ;try{const QZ=await(await fetch(ol)).text(),ZW=(XZ=QZ.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:XZ.join(`
22048
+ */const dist$4=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$4);var dist$3,hasRequiredDist$2;function requireDist$2(){if(hasRequiredDist$2)return dist$3;hasRequiredDist$2=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(ol,vl)=>{for(var wR in vl)J(ol,wR,{get:vl[wR],enumerable:!0})},IV=(ol,vl,wR,ZU)=>{if(vl&&typeof vl=="object"||typeof vl=="function")for(let tU of RV(vl))!ZV.call(ol,tU)&&tU!==wR&&J(ol,tU,{get:()=>vl[tU],enumerable:!(ZU=VV(vl,tU))||ZU.enumerable});return ol},dV=(ol,vl,wR)=>(wR=ol!=null?lV(UV(ol)):{},IV(!ol||!ol.__esModule?J(wR,"default",{value:ol,enumerable:!0}):wR,ol)),CV=ol=>IV(J({},"__esModule",{value:!0}),ol),FV={};WV(FV,{CadViewer:()=>$U,useExportGltfUrl:()=>JV,useSaveGltfAs:()=>eV}),dist$3=CV(FV);var NV=requireThreeStdlib(),gV=requireReact();function eV(ol={}){const vl=nV(ol),wR=(0,gV.useMemo)(()=>document.createElement("a"),[]),ZU=async yU=>{const XZ=yU??ol.filename??"";ol.binary==null&&(ol.binary=XZ.endsWith(".glb"));const mZ=await vl(tU);wR.download=XZ,wR.href=mZ,wR.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(mZ)};(0,gV.useEffect)(()=>()=>{wR.remove(),tU=null},[]);let tU;return[(0,gV.useCallback)(yU=>{tU=yU},[]),ZU]}function JV(ol={}){const vl=nV(ol),[wR,ZU]=(0,gV.useState)(),[tU,uU]=(0,gV.useState)(),yU=(0,gV.useCallback)(XZ=>vl(XZ).then(ZU).catch(uU),[]);return(0,gV.useEffect)(()=>()=>URL.revokeObjectURL(wR),[wR]),[yU,wR,tU]}function nV(ol={}){const vl=(0,gV.useMemo)(()=>new NV.GLTFExporter,[]);return wR=>{const{promise:ZU,resolve:tU,reject:uU}=Promise.withResolvers();return vl.parse(wR,yU=>{const XZ=ol.binary?"gltf-binary":"gltf+json",mZ=new Blob([yU instanceof ArrayBuffer?yU:JSON.stringify(yU)],{type:`model/${XZ}`});tU(URL.createObjectURL(mZ))},uU,ol),ZU}}var aV=require$$2,GV=requireReact(),cV=(ol,vl)=>(0,GV.useMemo)(()=>{if(!ol)return;const wR=new aV.Circuit;return wR.add(ol),wR.render(),wR.getCircuitJson()},[ol]),TV=requireDist$6(),iV=requireReact(),tV=requireDist$6(),MV=requireTransforms(),AV=requirePrimitives(),pV=requireColors(),HV=requireBooleans(),oV=requirePrimitives(),DV=requireColors(),wV=requireBooleans(),_V=.01,dl={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},nl=(ol,vl)=>{if(ol.shape||(ol.shape="circle"),ol.shape==="circle")return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)((0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2,height:1.2}),(0,oV.cylinder)({center:[ol.x,ol.y,1.2/2],radius:ol.outer_diameter/2,height:_V}),(0,oV.cylinder)({center:[ol.x,ol.y,-1.2/2],radius:ol.outer_diameter/2,height:_V})),(0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2-_V,height:1.5})));if(ol.shape==="pill"){const wR=ol.hole_height>ol.hole_width,ZU=wR?ol.hole_height:ol.hole_width,tU=wR?ol.hole_width:ol.hole_height,uU=wR?ol.outer_width||ZU+.2:ol.outer_height||tU+.2,yU=tU/2,XZ=Math.abs(ZU-tU),mZ=(0,oV.cuboid)({center:wR?[ol.x,ol.y,0]:[ol.x,ol.y,0],size:wR?[tU,XZ,1.2]:[XZ,tU,1.2]}),QZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU,height:1.2}),ZW=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU,height:1.2}),JW=(0,oV.cuboid)({center:wR?[ol.x,ol.y,1.2/2]:[ol.x,ol.y,1.2/2],size:wR?[uU,XZ,_V]:[XZ,uU,_V]}),IZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,1.2/2]:[ol.x-XZ/2,ol.y,1.2/2],radius:uU/2,height:_V}),MR=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,1.2/2]:[ol.x+XZ/2,ol.y,1.2/2],radius:uU/2,height:_V}),WU=(0,oV.cuboid)({center:wR?[ol.x,ol.y,-1.2/2]:[ol.x,ol.y,-1.2/2],size:wR?[uU,XZ,_V]:[XZ,uU,_V]}),MU=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,-1.2/2]:[ol.x-XZ/2,ol.y,-1.2/2],radius:uU/2,height:_V}),VZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,-1.2/2]:[ol.x+XZ/2,ol.y,-1.2/2],radius:uU/2,height:_V});return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)(mZ,QZ,ZW,JW,IZ,MR,WU,MU,VZ),(0,wV.union)((0,oV.cuboid)({center:[ol.x,ol.y,0],size:wR?[tU-_V,XZ,1.5]:[XZ,tU-_V,1.5]}),(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU-_V,height:1.5}),(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU-_V,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${ol.shape}`)},Il=requireExtrusions(),LV=requireExpansions(),OV=requireExtrusions(),$V=requirePrimitives(),Cl=requireTransforms(),Zl=ol=>{let vl=0;for(let ZU=0;ZU<ol.length;ZU++){const tU=(ZU+1)%ol.length;vl+=ol[ZU][0]*ol[tU][1],vl-=ol[tU][0]*ol[ZU][1]}return vl/2<=0},el=(ol,vl=1.2)=>{let wR=ol.map(uU=>[uU.x,uU.y]);Zl(wR)&&(wR=wR.reverse());const ZU=(0,$V.polygon)({points:wR});let tU=(0,OV.extrudeLinear)({height:vl},ZU);return tU=(0,Cl.translate)([0,0,-vl/2],tU),tU},pl=requireText();function ml(ol){var mZ,QZ,ZW,JW;const vl=(0,pl.vectorText)({height:ol.font_size,input:ol.text});vl.forEach(IZ=>{IZ.length===29?(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,15)),vl.splice(vl.indexOf(IZ),0,IZ.slice(14,29))):IZ.length===17&&(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,10)),vl.splice(vl.indexOf(IZ),0,IZ.slice(9,17)))});const wR=vl.flatMap(IZ=>IZ),ZU={minX:Math.min(...wR.map(IZ=>IZ[0])),maxX:Math.max(...wR.map(IZ=>IZ[0])),minY:Math.min(...wR.map(IZ=>IZ[1])),maxY:Math.max(...wR.map(IZ=>IZ[1]))},tU=(ZU.minX+ZU.maxX)/2,uU=(ZU.minY+ZU.maxY)/2;let yU=-tU,XZ=-uU;return(mZ=ol.anchor_alignment)!=null&&mZ.includes("right")?yU=-ZU.maxX:(QZ=ol.anchor_alignment)!=null&&QZ.includes("left")&&(yU=-ZU.minX),(ZW=ol.anchor_alignment)!=null&&ZW.includes("top")?XZ=-ZU.maxY:(JW=ol.anchor_alignment)!=null&&JW.includes("bottom")&&(XZ=-ZU.minY),{textOutlines:vl,xOffset:yU,yOffset:XZ}}var Bl=ol=>{const vl=(0,tV.su)(ol).pcb_board.list()[0];if(!vl)throw new Error("No pcb_board found");const wR=(0,tV.su)(ol).pcb_plated_hole.list(),ZU=(0,tV.su)(ol).pcb_hole.list(),tU=(0,tV.su)(ol).pcb_smtpad.list(),uU=(0,tV.su)(ol).pcb_trace.list(),yU=(0,tV.su)(ol).pcb_via.list(),XZ=(0,tV.su)(ol).pcb_silkscreen_text.list();let mZ;vl.outline&&vl.outline.length>0?mZ=el(vl.outline,1.2):mZ=(0,AV.cuboid)({size:[vl.width,vl.height,1.2]});const QZ=[],ZW=[],JW=[],IZ=WU=>{if(WU.shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+_V});mZ=(0,HV.subtract)(mZ,MU);const VZ=nl(WU);QZ.push(VZ)}else if(WU.shape==="pill"){const MU=WU.hole_height>WU.hole_width,VZ=MU?WU.hole_height:WU.hole_width,GZ=MU?WU.hole_width:WU.hole_height,$Z=GZ/2,eW=Math.abs(VZ-GZ),iZ=(0,HV.union)((0,AV.cuboid)({center:[WU.x,WU.y,0],size:MU?[GZ,eW,1.5]:[eW,GZ,1.5]}),(0,AV.cylinder)({center:MU?[WU.x,WU.y-eW/2,0]:[WU.x-eW/2,WU.y,0],radius:$Z,height:1.5}),(0,AV.cylinder)({center:MU?[WU.x,WU.y+eW/2,0]:[WU.x+eW/2,WU.y,0],radius:$Z,height:1.5}));mZ=(0,HV.subtract)(mZ,iZ);const KU=nl(WU);QZ.push(KU)}};for(const WU of wR)IZ(WU);for(const WU of ZU)if(WU.hole_shape==="round"||WU.hole_shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+_V});mZ=(0,HV.subtract)(mZ,MU)}for(const WU of tU){const MU=WU.layer==="bottom"?-1:1;if(WU.shape==="rect"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cuboid)({center:[WU.x,WU.y,MU*1.2/2+MU*_V],size:[WU.width,WU.height,_V]}));ZW.push(VZ)}else if(WU.shape==="circle"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cylinder)({center:[WU.x,WU.y,MU*1.2/2+MU*_V],radius:WU.radius,height:_V}));ZW.push(VZ)}}for(const{route:WU}of uU){if(WU.length<2)continue;const MU=[];let VZ=[WU[0]],GZ=WU[0].route_type==="wire"?WU[0].layer:"top";for(let $Z=1;$Z<WU.length;$Z++){const eW=WU[$Z];eW.route_type==="via"?(MU.push(VZ),VZ=[eW]):eW.route_type==="wire"&&eW.layer!==GZ?(MU.push(VZ),GZ=eW.layer,VZ=[eW]):VZ.push(eW)}MU.push(VZ);for(const $Z of MU){if($Z.length<2)continue;const eW=(0,AV.line)($Z.map(KZ=>[KZ.x,KZ.y])),iZ=$Z[0].route_type==="via"?$Z[0].to_layer==="top"?1:-1:$Z[0].layer==="top"?1:-1;let KU=(0,MV.translate)([0,0,iZ*1.2/2],(0,Il.extrudeLinear)({height:_V*iZ},(0,LV.expand)({delta:.1,corners:"edge"},eW)));const yZ=yU.map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5})),dW=wR.filter(KZ=>KZ.shape==="circle").map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5}));KU=(0,HV.subtract)(KU,...yZ,...dW),KU=(0,pV.colorize)(dl.fr4GreenSolderWithMask,KU),JW.push(KU)}}for(const WU of yU)IZ({x:WU.x,y:WU.y,hole_diameter:WU.hole_diameter,outer_diameter:WU.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const MR=[];for(const WU of XZ){const{textOutlines:MU,xOffset:VZ,yOffset:GZ}=ml(WU);for(let $Z of MU){const eW=$Z.map(tW=>[tW[0]+VZ+WU.anchor_position.x,tW[1]+GZ+WU.anchor_position.y]),iZ=(0,AV.line)(eW),KU=WU.font_size||.25,yZ=Math.min(Math.max(.01,KU*.1),KU*.2),dW=(0,LV.expand)({delta:yZ,corners:"round"},iZ);let KZ=(0,MV.translate)([0,0,.6],(0,Il.extrudeLinear)({height:.012},dW));KZ=(0,pV.colorize)([256,256,256],KZ),MR.push(KZ)}}return mZ=(0,pV.colorize)(dl.fr4Green,mZ),[mZ,...QZ,...ZW,...JW,...MR]},jl=requireReact(),rl=dV(requireStlSerializer());function Pl(ol){return new Promise((vl,wR)=>{const ZU=new FileReader;ZU.onload=()=>{vl(ZU.result)},ZU.onerror=wR,ZU.readAsDataURL(ol)})}var Hl=ol=>{const[vl,wR]=(0,jl.useState)([]),[ZU,tU]=(0,jl.useState)(!0);return(0,jl.useEffect)(()=>{if(!ol)return;(async()=>{tU(!0);const XZ=(Array.isArray(ol)?ol:[ol]).map(async mZ=>{const QZ=rl.default.serialize({binary:!0},[mZ]),ZW=new Blob(QZ);return{stlUrl:await Pl(ZW),color:mZ.color}});try{const mZ=await Promise.all(XZ);wR(mZ)}catch(mZ){console.error("Error generating STLs:",mZ),wR([])}finally{tU(!1)}})()},[ol]),{stls:vl,loading:ZU}},Tl=require$$12,kl=requireReact(),Dl=requireThreeStdlib(),ZR=requireJsxRuntime();function JR({stlUrl:ol,mtlUrl:vl,color:wR,opacity:ZU=1}){const tU=(0,Tl.useLoader)(Dl.STLLoader,ol),uU=(0,kl.useRef)();return(0,ZR.jsxs)("mesh",{ref:uU,children:[(0,ZR.jsx)("primitive",{object:tU,attach:"geometry"}),(0,ZR.jsx)("meshStandardMaterial",{color:wR,transparent:ZU!==1,opacity:ZU})]})}var FR=require$$14,QR=require$$12,hR={name:"@tscircuit/3d-viewer",version:"0.0.84",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.253","@tscircuit/props":"^0.0.126","@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"}},kR=require$$14,AR=require$$12,aR=requireReact(),TR=dV(requireThree()),xR=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new TR.Euler(0,0,0));function pR(ol,vl){const wR=new TR.Quaternion().setFromEuler(new TR.Euler(ol.x,ol.y,ol.z)),ZU=new TR.Vector3(0,0,1);return ZU.applyQuaternion(wR),ZU.multiplyScalar(vl)}var UU=({})=>{const ol=(0,aR.useRef)();return(0,aR.useRef)({lastRotation:new TR.Euler}),(0,AR.useFrame)((vl,wR)=>{if(!ol.current)return;const ZU=window.TSCI_MAIN_CAMERA_ROTATION,tU=pR(ZU,2);vl.camera.position.copy(tU),vl.camera.lookAt(0,0,0)}),(0,xR.jsxs)("mesh",{ref:ol,rotation:[Math.PI/2,0,0],children:[(0,xR.jsx)("boxGeometry",{args:[1,1,1]}),(0,xR.jsx)("meshStandardMaterial",{color:"white"}),(0,xR.jsx)(kR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,xR.jsx)(kR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,xR.jsx)(kR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,xR.jsx)(kR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,xR.jsx)(kR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,xR.jsx)(kR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,xR.jsx)("lineSegments",{args:[new TR.EdgesGeometry(new TR.BoxGeometry(1,1,1))],material:new TR.LineBasicMaterial({color:0,linewidth:2})})]})},SU=requireReact(),xU=require$$14,DR=requireJsxRuntime(),BR=()=>((0,QR.useFrame)(({camera:ol})=>{window.TSCI_MAIN_CAMERA_ROTATION=ol.rotation}),(0,DR.jsx)(DR.Fragment,{})),CU=(0,SU.forwardRef)(({children:ol,hoveredComponent:vl},wR)=>(0,DR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,DR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,DR.jsxs)(QR.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)(UU,{})]})}),(0,DR.jsxs)(QR.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,DR.jsx)(BR,{}),(0,DR.jsx)(FR.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,DR.jsx)(FR.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,DR.jsx)("object3D",{ref:wR,children:ol}),vl&&(0,DR.jsx)(xU.Html,{position:vl.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:vl.name})]}),(0,DR.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:["@",hR.version]})]})),bR=requireReact(),VR=dV(requireThree()),mR=requireJsxRuntime(),YR=ol=>(0,mR.jsx)("group",{...ol}),iR=({children:ol,isHovered:vl,onHover:wR,position:ZU})=>{const tU=(0,bR.useRef)(null),uU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation();try{const mZ=XZ.point||(XZ.intersections&&XZ.intersections.length>0?XZ.intersections[0].point:null)||(ZU?new VR.Vector3(...ZU):null);mZ?(tU.current=mZ,wR({mousePosition:[mZ.x,mZ.y,mZ.z]})):wR({})}catch(mZ){console.warn("Hover event error:",mZ),wR({})}},[ZU]),yU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation(),tU.current=null,wR(null)},[wR]);return(0,mR.jsx)(YR,{onPointerEnter:uU,onPointerMove:uU,onPointerLeave:yU,children:ol})},$R=iR,lU=requireReact(),hU=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function GR(ol){const[vl,wR]=(0,lU.useState)(null);return(0,lU.useEffect)(()=>{if(!ol)return;const ZU=window.TSCIRCUIT_OBJ_LOADER_CACHE;let tU=!1;async function uU(){var XZ;try{const QZ=await(await fetch(ol)).text(),ZW=(XZ=QZ.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:XZ.join(`
22049
22049
  `).replace(/d 0\./g,"d 1."),JW=QZ.replace(/newmtl[\s\S]*?endmtl/g,""),IZ=new hU.MTLLoader;IZ.setMaterialOptions({invertTrProperty:!0});const MR=IZ.parse(ZW.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),WU=new hU.OBJLoader;return WU.setMaterials(MR),WU.parse(JW)}catch(mZ){return mZ}}function yU(){if(ZU.has(ol)){const mZ=ZU.get(ol);return mZ.result?Promise.resolve(mZ.result.clone()):mZ.promise.then(QZ=>QZ.clone())}const XZ=uU().then(mZ=>(mZ instanceof Error||ZU.set(ol,{...ZU.get(ol),result:mZ}),mZ));return ZU.set(ol,{promise:XZ,result:null}),XZ}return yU().then(XZ=>{tU||wR(XZ)}).catch(XZ=>{console.error(XZ)}),()=>{tU=!0}},[ol]),vl}var IU=requireJsxRuntime();function FU({url:ol,position:vl,rotation:wR,onHover:ZU,isHovered:tU}){const uU=GR(ol);return uU?uU instanceof Error?(0,IU.jsx)($R,{isHovered:tU,onHover:ZU,children:(0,IU.jsxs)("mesh",{position:vl,children:[(0,IU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,IU.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.5}),(0,IU.jsx)("meshBasicMaterial",{color:"red"})]})}):(0,IU.jsx)($R,{isHovered:tU,onHover:ZU,children:(0,IU.jsx)("primitive",{rotation:wR,position:vl,object:uU})}):(0,IU.jsx)($R,{isHovered:tU,onHover:ZU,children:(0,IU.jsxs)("mesh",{position:vl,children:[(0,IU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,IU.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})})}var PU=requireDist$5(),hZ=dV(requireSrc$1()),zZ=requireDist$4(),jZ=dV(requireThree()),DZ=requireReact(),kW=requireJsxRuntime(),fU=({jscadPlan:ol,positionOffset:vl,rotationOffset:wR,onHover:ZU,isHovered:tU})=>{const{threeGeom:uU,material:yU}=(0,DZ.useMemo)(()=>{const XZ=(0,PU.executeJscadOperations)(hZ.default,ol),mZ=(0,zZ.convertCSGToThreeGeom)(XZ),QZ=new jZ.MeshStandardMaterial({vertexColors:!0,side:jZ.DoubleSide});return{threeGeom:mZ,material:QZ}},[ol]);return(0,DZ.useMemo)(()=>{if(tU){const XZ=new jZ.Color(yU.color.getHex());yU.emissive.copy(XZ),yU.emissive.setRGB(0,0,1),yU.emissiveIntensity=.2}else yU.emissiveIntensity=0},[tU,yU]),uU?(0,kW.jsx)($R,{isHovered:tU,onHover:ZU,position:vl,children:(0,kW.jsx)("mesh",{geometry:uU,material:yU,position:vl,rotation:wR})}):null},nW=require$$19,NW=requireDist$4(),cW=requireDist$5(),DW=requireReact(),HW=requireJsxRuntime(),{createJSCADRoot:FZ}=(0,NW.createJSCADRenderer)(cW.jscadPlanner),CW=({positionOffset:ol,footprint:vl,rotationOffset:wR,onHover:ZU,isHovered:tU})=>{const uU=(0,DW.useMemo)(()=>{if(!vl)return null;const yU=[];return FZ(yU).render((0,HW.jsx)(nW.Footprinter3d,{footprint:vl})),yU},[vl]);return uU?(0,HW.jsx)(HW.Fragment,{children:uU.map((yU,XZ)=>(0,HW.jsx)(fU,{positionOffset:ol,rotationOffset:wR,jscadPlan:yU,onHover:ZU,isHovered:tU},XZ))}):null},gW=(...ol)=>ol,TW=requireJsxRuntime(),pW=({cad_component:ol,onHover:vl=()=>{},isHovered:wR=!1})=>{const ZU=ol.model_obj_url??ol.model_stl_url,tU=ol.rotation?gW(ol.rotation.x*Math.PI/180,ol.rotation.y*Math.PI/180,ol.rotation.z*Math.PI/180):void 0;if(ZU)return(0,TW.jsx)(FU,{url:ZU,position:ol.position?[ol.position.x,ol.position.y,ol.position.z]:void 0,rotation:tU,onHover:vl,isHovered:wR},ol.cad_component_id);if(ol.model_jscad)return(0,TW.jsx)(fU,{jscadPlan:ol.model_jscad,rotationOffset:tU,onHover:vl,isHovered:wR},ol.cad_component_id);if(ol.footprinter_string)return(0,TW.jsx)(CW,{positionOffset:ol.position?[ol.position.x,ol.position.y,ol.position.z]:void 0,rotationOffset:tU,footprint:ol.footprinter_string,onHover:vl,isHovered:wR})},lZ=dV(requireReact()),wU=class extends lZ.default.Component{constructor(ol){super(ol),this.state={hasError:!1,error:null}}static getDerivedStateFromError(ol){return{hasError:!0,error:ol}}render(){return this.state.hasError&&this.state.error?this.props.fallback({error:this.state.error}):this.props.children}},LR=require$$14,TU=requireJsxRuntime(),vR=({error:ol,cad_component:vl})=>{let wR=[0,0,0];return vl!=null&&vl.position&&(wR=[vl.position.x,vl.position.y,vl.position.z],wR=wR.map(ZU=>Number.isNaN(ZU)?0:ZU)),(0,TU.jsxs)("group",{position:wR,children:[(0,TU.jsxs)("mesh",{renderOrder:-99999,rotation:[Math.PI/4,Math.PI/4,0],ref:ZU=>{ZU&&(ZU.renderOrder=999999)},children:[(0,TU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,TU.jsx)("meshStandardMaterial",{depthTest:!1,transparent:!0,color:"red",opacity:.5})]}),(0,TU.jsxs)(LR.Text,{scale:[.1,.1,.1],color:"red",anchorX:"center",anchorY:"middle",depthOffset:-99999,children:[ol.toString().slice(0,50),"..."]})]})},DU=requireJsxRuntime(),$U=(0,iV.forwardRef)(({soup:ol,children:vl},wR)=>{const[ZU,tU]=(0,iV.useState)(null);if(ol??(ol=cV(vl)),!ol)return null;const uU=(0,iV.useMemo)(()=>ol.some(QZ=>QZ.type==="pcb_board")?Bl(ol):null,[ol]),{stls:yU,loading:XZ}=Hl(uU),mZ=(0,TV.su)(ol).cad_component.list();return(0,DU.jsxs)(CU,{ref:wR,hoveredComponent:ZU,children:[yU.map(({stlUrl:QZ,color:ZW},JW)=>(0,DU.jsx)(JR,{stlUrl:QZ,color:ZW,opacity:JW===0?.95:1},QZ)),mZ.map(QZ=>(0,DU.jsx)(wU,{fallback:({error:ZW})=>(0,DU.jsx)(vR,{cad_component:QZ,error:ZW}),children:(0,DU.jsx)(pW,{onHover:ZW=>{var IZ;if(ZW||tU(null),!ZW.mousePosition)return;const JW=(IZ=(0,TV.su)(ol).source_component.getUsing({source_component_id:QZ.source_component_id}))==null?void 0:IZ.name;tU({cad_component_id:QZ.cad_component_id,name:JW??"<unknown>",mousePosition:ZW.mousePosition})},cad_component:QZ,isHovered:(ZU==null?void 0:ZU.cad_component_id)===QZ.cad_component_id},QZ.cad_component_id)},QZ.cad_component_id))]})});return dist$3}var distExports$2=requireDist$2();const __viteBrowserExternal={},__viteBrowserExternal$1=Object.freeze(Object.defineProperty({__proto__:null,default:__viteBrowserExternal},Symbol.toStringTag,{value:"Module"})),require$$3=getAugmentedNamespace(__viteBrowserExternal$1),{useDebugValue}=React,{useSyncExternalStoreWithSelector}=useSyncExternalStoreExports;let didWarnAboutEqualityFn=!1;const identity=lV=>lV;function useStore(lV,J=identity,VV){process.env.NODE_ENV!=="production"&&VV&&!didWarnAboutEqualityFn&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),didWarnAboutEqualityFn=!0);const RV=useSyncExternalStoreWithSelector(lV.subscribe,lV.getState,lV.getServerState||lV.getInitialState,J,VV);return useDebugValue(RV),RV}const createImpl=lV=>{process.env.NODE_ENV!=="production"&&typeof lV!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const J=typeof lV=="function"?createStore(lV):lV,VV=(RV,UV)=>useStore(J,RV,UV);return Object.assign(VV,J),VV},create=lV=>lV?createImpl(lV):createImpl;var react=lV=>(process.env.NODE_ENV!=="production"&&console.warn("[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`."),create(lV));const esm=Object.freeze(Object.defineProperty({__proto__:null,create,createStore,default:react,useStore},Symbol.toStringTag,{value:"Module"})),require$$4=getAugmentedNamespace(esm);var reactToastify={},clsx={exports:{}},hasRequiredClsx;function requireClsx(){if(hasRequiredClsx)return clsx.exports;hasRequiredClsx=1;function lV(VV){var RV,UV,ZV="";if(typeof VV=="string"||typeof VV=="number")ZV+=VV;else if(typeof VV=="object")if(Array.isArray(VV)){var WV=VV.length;for(RV=0;RV<WV;RV++)VV[RV]&&(UV=lV(VV[RV]))&&(ZV&&(ZV+=" "),ZV+=UV)}else for(UV in VV)VV[UV]&&(ZV&&(ZV+=" "),ZV+=UV);return ZV}function J(){for(var VV,RV,UV=0,ZV="",WV=arguments.length;UV<WV;UV++)(VV=arguments[UV])&&(RV=lV(VV))&&(ZV&&(ZV+=" "),ZV+=RV);return ZV}return clsx.exports=J,clsx.exports.clsx=J,clsx.exports}var hasRequiredReactToastify;function requireReactToastify(){if(hasRequiredReactToastify)return reactToastify;hasRequiredReactToastify=1;var lV=requireReact(),J=requireClsx();function VV(Bl){return Bl&&typeof Bl=="object"&&"default"in Bl?Bl:{default:Bl}}var RV=VV(lV),UV=VV(J);const ZV=Bl=>typeof Bl=="number"&&!isNaN(Bl),WV=Bl=>typeof Bl=="string",IV=Bl=>typeof Bl=="function",dV=Bl=>WV(Bl)||IV(Bl)?Bl:null,CV=Bl=>lV.isValidElement(Bl)||WV(Bl)||IV(Bl)||ZV(Bl);function FV(Bl,jl,rl){rl===void 0&&(rl=300);const{scrollHeight:Pl,style:Hl}=Bl;requestAnimationFrame(()=>{Hl.minHeight="initial",Hl.height=Pl+"px",Hl.transition=`all ${rl}ms`,requestAnimationFrame(()=>{Hl.height="0",Hl.padding="0",Hl.margin="0",setTimeout(jl,rl)})})}function NV(Bl){let{enter:jl,exit:rl,appendPosition:Pl=!1,collapse:Hl=!0,collapseDuration:Tl=300}=Bl;return function(kl){let{children:Dl,position:ZR,preventExitTransition:JR,done:FR,nodeRef:QR,isIn:hR,playToast:kR}=kl;const AR=Pl?`${jl}--${ZR}`:jl,aR=Pl?`${rl}--${ZR}`:rl,TR=lV.useRef(0);return lV.useLayoutEffect(()=>{const xR=QR.current,pR=AR.split(" "),UU=SU=>{SU.target===QR.current&&(kR(),xR.removeEventListener("animationend",UU),xR.removeEventListener("animationcancel",UU),TR.current===0&&SU.type!=="animationcancel"&&xR.classList.remove(...pR))};xR.classList.add(...pR),xR.addEventListener("animationend",UU),xR.addEventListener("animationcancel",UU)},[]),lV.useEffect(()=>{const xR=QR.current,pR=()=>{xR.removeEventListener("animationend",pR),Hl?FV(xR,FR,Tl):FR()};hR||(JR?pR():(TR.current=1,xR.className+=` ${aR}`,xR.addEventListener("animationend",pR)))},[hR]),RV.default.createElement(RV.default.Fragment,null,Dl)}}function gV(Bl,jl){return Bl!=null?{content:Bl.content,containerId:Bl.props.containerId,id:Bl.props.toastId,theme:Bl.props.theme,type:Bl.props.type,data:Bl.props.data||{},isLoading:Bl.props.isLoading,icon:Bl.props.icon,status:jl}:{}}const eV=new Map;let JV=[];const nV=new Set,aV=Bl=>nV.forEach(jl=>jl(Bl)),GV=()=>eV.size>0;function cV(Bl,jl){var rl;if(jl)return!((rl=eV.get(jl))==null||!rl.isToastActive(Bl));let Pl=!1;return eV.forEach(Hl=>{Hl.isToastActive(Bl)&&(Pl=!0)}),Pl}function TV(Bl,jl){CV(Bl)&&(GV()||JV.push({content:Bl,options:jl}),eV.forEach(rl=>{rl.buildToast(Bl,jl)}))}function iV(Bl,jl){eV.forEach(rl=>{jl!=null&&jl!=null&&jl.containerId?(jl==null?void 0:jl.containerId)===rl.id&&rl.toggle(Bl,jl==null?void 0:jl.id):rl.toggle(Bl,jl==null?void 0:jl.id)})}function tV(Bl){const{subscribe:jl,getSnapshot:rl,setProps:Pl}=lV.useRef(function(Tl){const kl=Tl.containerId||1;return{subscribe(Dl){const ZR=function(FR,QR,hR){let kR=1,AR=0,aR=[],TR=[],xR=[],pR=QR;const UU=new Map,SU=new Set,xU=()=>{xR=Array.from(UU.values()),SU.forEach(CU=>CU())},DR=CU=>{TR=CU==null?[]:TR.filter(bR=>bR!==CU),xU()},BR=CU=>{const{toastId:bR,onOpen:VR,updateId:mR,children:YR}=CU.props,iR=mR==null;CU.staleId&&UU.delete(CU.staleId),UU.set(bR,CU),TR=[...TR,CU.props.toastId].filter($R=>$R!==CU.staleId),xU(),hR(gV(CU,iR?"added":"updated")),iR&&IV(VR)&&VR(lV.isValidElement(YR)&&YR.props)};return{id:FR,props:pR,observe:CU=>(SU.add(CU),()=>SU.delete(CU)),toggle:(CU,bR)=>{UU.forEach(VR=>{bR!=null&&bR!==VR.props.toastId||IV(VR.toggle)&&VR.toggle(CU)})},removeToast:DR,toasts:UU,clearQueue:()=>{AR-=aR.length,aR=[]},buildToast:(CU,bR)=>{if((zZ=>{let{containerId:jZ,toastId:DZ,updateId:kW}=zZ;const fU=jZ?jZ!==FR:FR!==1,nW=UU.has(DZ)&&kW==null;return fU||nW})(bR))return;const{toastId:VR,updateId:mR,data:YR,staleId:iR,delay:$R}=bR,lU=()=>{DR(VR)},hU=mR==null;hU&&AR++;const GR={...pR,style:pR.toastStyle,key:kR++,...Object.fromEntries(Object.entries(bR).filter(zZ=>{let[jZ,DZ]=zZ;return DZ!=null})),toastId:VR,updateId:mR,data:YR,closeToast:lU,isIn:!1,className:dV(bR.className||pR.toastClassName),bodyClassName:dV(bR.bodyClassName||pR.bodyClassName),progressClassName:dV(bR.progressClassName||pR.progressClassName),autoClose:!bR.isLoading&&(IU=bR.autoClose,FU=pR.autoClose,IU===!1||ZV(IU)&&IU>0?IU:FU),deleteToast(){const zZ=UU.get(VR),{onClose:jZ,children:DZ}=zZ.props;IV(jZ)&&jZ(lV.isValidElement(DZ)&&DZ.props),hR(gV(zZ,"removed")),UU.delete(VR),AR--,AR<0&&(AR=0),aR.length>0?BR(aR.shift()):xU()}};var IU,FU;GR.closeButton=pR.closeButton,bR.closeButton===!1||CV(bR.closeButton)?GR.closeButton=bR.closeButton:bR.closeButton===!0&&(GR.closeButton=!CV(pR.closeButton)||pR.closeButton);let PU=CU;lV.isValidElement(CU)&&!WV(CU.type)?PU=lV.cloneElement(CU,{closeToast:lU,toastProps:GR,data:YR}):IV(CU)&&(PU=CU({closeToast:lU,toastProps:GR,data:YR}));const hZ={content:PU,props:GR,staleId:iR};pR.limit&&pR.limit>0&&AR>pR.limit&&hU?aR.push(hZ):ZV($R)?setTimeout(()=>{BR(hZ)},$R):BR(hZ)},setProps(CU){pR=CU},setToggle:(CU,bR)=>{UU.get(CU).toggle=bR},isToastActive:CU=>TR.some(bR=>bR===CU),getSnapshot:()=>xR}}(kl,Tl,aV);eV.set(kl,ZR);const JR=ZR.observe(Dl);return JV.forEach(FR=>TV(FR.content,FR.options)),JV=[],()=>{JR(),eV.delete(kl)}},setProps(Dl){var ZR;(ZR=eV.get(kl))==null||ZR.setProps(Dl)},getSnapshot(){var Dl;return(Dl=eV.get(kl))==null?void 0:Dl.getSnapshot()}}}(Bl)).current;Pl(Bl);const Hl=lV.useSyncExternalStore(jl,rl,rl);return{getToastToRender:function(Tl){if(!Hl)return[];const kl=new Map;return Bl.newestOnTop&&Hl.reverse(),Hl.forEach(Dl=>{const{position:ZR}=Dl.props;kl.has(ZR)||kl.set(ZR,[]),kl.get(ZR).push(Dl)}),Array.from(kl,Dl=>Tl(Dl[0],Dl[1]))},isToastActive:cV,count:Hl==null?void 0:Hl.length}}function MV(Bl){const[jl,rl]=lV.useState(!1),[Pl,Hl]=lV.useState(!1),Tl=lV.useRef(null),kl=lV.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:Dl,pauseOnHover:ZR,closeToast:JR,onClick:FR,closeOnClick:QR}=Bl;var hR,kR;function AR(){rl(!0)}function aR(){rl(!1)}function TR(UU){const SU=Tl.current;kl.canDrag&&SU&&(kl.didMove=!0,jl&&aR(),kl.delta=Bl.draggableDirection==="x"?UU.clientX-kl.start:UU.clientY-kl.start,kl.start!==UU.clientX&&(kl.canCloseOnClick=!1),SU.style.transform=`translate3d(${Bl.draggableDirection==="x"?`${kl.delta}px, var(--y)`:`0, calc(${kl.delta}px + var(--y))`},0)`,SU.style.opacity=""+(1-Math.abs(kl.delta/kl.removalDistance)))}function xR(){document.removeEventListener("pointermove",TR),document.removeEventListener("pointerup",xR);const UU=Tl.current;if(kl.canDrag&&kl.didMove&&UU){if(kl.canDrag=!1,Math.abs(kl.delta)>kl.removalDistance)return Hl(!0),Bl.closeToast(),void Bl.collapseAll();UU.style.transition="transform 0.2s, opacity 0.2s",UU.style.removeProperty("transform"),UU.style.removeProperty("opacity")}}(kR=eV.get((hR={id:Bl.toastId,containerId:Bl.containerId,fn:rl}).containerId||1))==null||kR.setToggle(hR.id,hR.fn),lV.useEffect(()=>{if(Bl.pauseOnFocusLoss)return document.hasFocus()||aR(),window.addEventListener("focus",AR),window.addEventListener("blur",aR),()=>{window.removeEventListener("focus",AR),window.removeEventListener("blur",aR)}},[Bl.pauseOnFocusLoss]);const pR={onPointerDown:function(UU){if(Bl.draggable===!0||Bl.draggable===UU.pointerType){kl.didMove=!1,document.addEventListener("pointermove",TR),document.addEventListener("pointerup",xR);const SU=Tl.current;kl.canCloseOnClick=!0,kl.canDrag=!0,SU.style.transition="none",Bl.draggableDirection==="x"?(kl.start=UU.clientX,kl.removalDistance=SU.offsetWidth*(Bl.draggablePercent/100)):(kl.start=UU.clientY,kl.removalDistance=SU.offsetHeight*(Bl.draggablePercent===80?1.5*Bl.draggablePercent:Bl.draggablePercent)/100)}},onPointerUp:function(UU){const{top:SU,bottom:xU,left:DR,right:BR}=Tl.current.getBoundingClientRect();UU.nativeEvent.type!=="touchend"&&Bl.pauseOnHover&&UU.clientX>=DR&&UU.clientX<=BR&&UU.clientY>=SU&&UU.clientY<=xU?aR():AR()}};return Dl&&ZR&&(pR.onMouseEnter=aR,Bl.stacked||(pR.onMouseLeave=AR)),QR&&(pR.onClick=UU=>{FR&&FR(UU),kl.canCloseOnClick&&JR()}),{playToast:AR,pauseToast:aR,isRunning:jl,preventExitTransition:Pl,toastRef:Tl,eventHandlers:pR}}function AV(Bl){let{delay:jl,isRunning:rl,closeToast:Pl,type:Hl="default",hide:Tl,className:kl,style:Dl,controlledProgress:ZR,progress:JR,rtl:FR,isIn:QR,theme:hR}=Bl;const kR=Tl||ZR&&JR===0,AR={...Dl,animationDuration:`${jl}ms`,animationPlayState:rl?"running":"paused"};ZR&&(AR.transform=`scaleX(${JR})`);const aR=UV.default("Toastify__progress-bar",ZR?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${hR}`,`Toastify__progress-bar--${Hl}`,{"Toastify__progress-bar--rtl":FR}),TR=IV(kl)?kl({rtl:FR,type:Hl,defaultClassName:aR}):UV.default(aR,kl),xR={[ZR&&JR>=1?"onTransitionEnd":"onAnimationEnd"]:ZR&&JR<1?null:()=>{QR&&Pl()}};return RV.default.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":kR},RV.default.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${hR} Toastify__progress-bar--${Hl}`}),RV.default.createElement("div",{role:"progressbar","aria-hidden":kR?"true":"false","aria-label":"notification timer",className:TR,style:AR,...xR}))}let pV=1;const HV=()=>""+pV++;function oV(Bl){return Bl&&(WV(Bl.toastId)||ZV(Bl.toastId))?Bl.toastId:HV()}function DV(Bl,jl){return TV(Bl,jl),jl.toastId}function wV(Bl,jl){return{...jl,type:jl&&jl.type||Bl,toastId:oV(jl)}}function _V(Bl){return(jl,rl)=>DV(jl,wV(Bl,rl))}function dl(Bl,jl){return DV(Bl,wV("default",jl))}dl.loading=(Bl,jl)=>DV(Bl,wV("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...jl})),dl.promise=function(Bl,jl,rl){let Pl,{pending:Hl,error:Tl,success:kl}=jl;Hl&&(Pl=WV(Hl)?dl.loading(Hl,rl):dl.loading(Hl.render,{...rl,...Hl}));const Dl={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},ZR=(FR,QR,hR)=>{if(QR==null)return void dl.dismiss(Pl);const kR={type:FR,...Dl,...rl,data:hR},AR=WV(QR)?{render:QR}:QR;return Pl?dl.update(Pl,{...kR,...AR}):dl(AR.render,{...kR,...AR}),hR},JR=IV(Bl)?Bl():Bl;return JR.then(FR=>ZR("success",kl,FR)).catch(FR=>ZR("error",Tl,FR)),JR},dl.success=_V("success"),dl.info=_V("info"),dl.error=_V("error"),dl.warning=_V("warning"),dl.warn=dl.warning,dl.dark=(Bl,jl)=>DV(Bl,wV("default",{theme:"dark",...jl})),dl.dismiss=function(Bl){(function(jl){var rl;if(GV()){if(jl==null||WV(rl=jl)||ZV(rl))eV.forEach(Pl=>{Pl.removeToast(jl)});else if(jl&&("containerId"in jl||"id"in jl)){const Pl=eV.get(jl.containerId);Pl?Pl.removeToast(jl.id):eV.forEach(Hl=>{Hl.removeToast(jl.id)})}}else JV=JV.filter(Pl=>jl!=null&&Pl.options.toastId!==jl)})(Bl)},dl.clearWaitingQueue=function(Bl){Bl===void 0&&(Bl={}),eV.forEach(jl=>{!jl.props.limit||Bl.containerId&&jl.id!==Bl.containerId||jl.clearQueue()})},dl.isActive=cV,dl.update=function(Bl,jl){jl===void 0&&(jl={});const rl=((Pl,Hl)=>{var Tl;let{containerId:kl}=Hl;return(Tl=eV.get(kl||1))==null?void 0:Tl.toasts.get(Pl)})(Bl,jl);if(rl){const{props:Pl,content:Hl}=rl,Tl={delay:100,...Pl,...jl,toastId:jl.toastId||Bl,updateId:HV()};Tl.toastId!==Bl&&(Tl.staleId=Bl);const kl=Tl.render||Hl;delete Tl.render,DV(kl,Tl)}},dl.done=Bl=>{dl.update(Bl,{progress:1})},dl.onChange=function(Bl){return nV.add(Bl),()=>{nV.delete(Bl)}},dl.play=Bl=>iV(!0,Bl),dl.pause=Bl=>iV(!1,Bl);const nl=typeof window<"u"?lV.useLayoutEffect:lV.useEffect,Il=Bl=>{let{theme:jl,type:rl,isLoading:Pl,...Hl}=Bl;return RV.default.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:jl==="colored"?"currentColor":`var(--toastify-icon-color-${rl})`,...Hl})},LV={info:function(Bl){return RV.default.createElement(Il,{...Bl},RV.default.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(Bl){return RV.default.createElement(Il,{...Bl},RV.default.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(Bl){return RV.default.createElement(Il,{...Bl},RV.default.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(Bl){return RV.default.createElement(Il,{...Bl},RV.default.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 RV.default.createElement("div",{className:"Toastify__spinner"})}},OV=Bl=>{const{isRunning:jl,preventExitTransition:rl,toastRef:Pl,eventHandlers:Hl,playToast:Tl}=MV(Bl),{closeButton:kl,children:Dl,autoClose:ZR,onClick:JR,type:FR,hideProgressBar:QR,closeToast:hR,transition:kR,position:AR,className:aR,style:TR,bodyClassName:xR,bodyStyle:pR,progressClassName:UU,progressStyle:SU,updateId:xU,role:DR,progress:BR,rtl:CU,toastId:bR,deleteToast:VR,isIn:mR,isLoading:YR,closeOnClick:iR,theme:$R}=Bl,lU=UV.default("Toastify__toast",`Toastify__toast-theme--${$R}`,`Toastify__toast--${FR}`,{"Toastify__toast--rtl":CU},{"Toastify__toast--close-on-click":iR}),hU=IV(aR)?aR({rtl:CU,position:AR,type:FR,defaultClassName:lU}):UV.default(lU,aR),GR=function(hZ){let{theme:zZ,type:jZ,isLoading:DZ,icon:kW}=hZ,fU=null;const nW={theme:zZ,type:jZ};return kW===!1||(IV(kW)?fU=kW({...nW,isLoading:DZ}):lV.isValidElement(kW)?fU=lV.cloneElement(kW,nW):DZ?fU=LV.spinner():(NW=>NW in LV)(jZ)&&(fU=LV[jZ](nW))),fU}(Bl),IU=!!BR||!ZR,FU={closeToast:hR,type:FR,theme:$R};let PU=null;return kl===!1||(PU=IV(kl)?kl(FU):lV.isValidElement(kl)?lV.cloneElement(kl,FU):function(hZ){let{closeToast:zZ,theme:jZ,ariaLabel:DZ="close"}=hZ;return RV.default.createElement("button",{className:`Toastify__close-button Toastify__close-button--${jZ}`,type:"button",onClick:kW=>{kW.stopPropagation(),zZ(kW)},"aria-label":DZ},RV.default.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},RV.default.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"})))}(FU)),RV.default.createElement(kR,{isIn:mR,done:VR,position:AR,preventExitTransition:rl,nodeRef:Pl,playToast:Tl},RV.default.createElement("div",{id:bR,onClick:JR,"data-in":mR,className:hU,...Hl,style:TR,ref:Pl},RV.default.createElement("div",{...mR&&{role:DR},className:IV(xR)?xR({type:FR}):UV.default("Toastify__toast-body",xR),style:pR},GR!=null&&RV.default.createElement("div",{className:UV.default("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!YR})},GR),RV.default.createElement("div",null,Dl)),PU,RV.default.createElement(AV,{...xU&&!IU?{key:`pb-${xU}`}:{},rtl:CU,theme:$R,delay:ZR,isRunning:jl,isIn:mR,closeToast:hR,hide:QR,type:FR,style:SU,className:UU,controlledProgress:IU,progress:BR||0})))},$V=function(Bl,jl){return jl===void 0&&(jl=!1),{enter:`Toastify--animate Toastify__${Bl}-enter`,exit:`Toastify--animate Toastify__${Bl}-exit`,appendPosition:jl}},Cl=NV($V("bounce",!0)),Zl=NV($V("slide",!0)),el=NV($V("zoom")),pl=NV($V("flip")),ml={position:"top-right",transition:Cl,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};return reactToastify.Bounce=Cl,reactToastify.Flip=pl,reactToastify.Icons=LV,reactToastify.Slide=Zl,reactToastify.ToastContainer=function(Bl){let jl={...ml,...Bl};const rl=Bl.stacked,[Pl,Hl]=lV.useState(!0),Tl=lV.useRef(null),{getToastToRender:kl,isToastActive:Dl,count:ZR}=tV(jl),{className:JR,style:FR,rtl:QR,containerId:hR}=jl;function kR(aR){const TR=UV.default("Toastify__toast-container",`Toastify__toast-container--${aR}`,{"Toastify__toast-container--rtl":QR});return IV(JR)?JR({position:aR,rtl:QR,defaultClassName:TR}):UV.default(TR,dV(JR))}function AR(){rl&&(Hl(!0),dl.play())}return nl(()=>{if(rl){var aR;const TR=Tl.current.querySelectorAll('[data-in="true"]'),xR=12,pR=(aR=jl.position)==null?void 0:aR.includes("top");let UU=0,SU=0;Array.from(TR).reverse().forEach((xU,DR)=>{const BR=xU;BR.classList.add("Toastify__toast--stacked"),DR>0&&(BR.dataset.collapsed=`${Pl}`),BR.dataset.pos||(BR.dataset.pos=pR?"top":"bot");const CU=UU*(Pl?.2:1)+(Pl?0:xR*DR);BR.style.setProperty("--y",`${pR?CU:-1*CU}px`),BR.style.setProperty("--g",`${xR}`),BR.style.setProperty("--s",""+(1-(Pl?SU:0))),UU+=BR.offsetHeight,SU+=.025})}},[Pl,ZR,rl]),RV.default.createElement("div",{ref:Tl,className:"Toastify",id:hR,onMouseEnter:()=>{rl&&(Hl(!1),dl.pause())},onMouseLeave:AR},kl((aR,TR)=>{const xR=TR.length?{...FR}:{...FR,pointerEvents:"none"};return RV.default.createElement("div",{className:kR(aR),style:xR,key:`container-${aR}`},TR.map(pR=>{let{content:UU,props:SU}=pR;return RV.default.createElement(OV,{...SU,stacked:rl,collapseAll:AR,isIn:Dl(SU.toastId,SU.containerId),style:SU.style,key:`toast-${SU.key}`},UU)}))}))},reactToastify.Zoom=el,reactToastify.collapseToast=FV,reactToastify.cssTransition=NV,reactToastify.toast=dl,reactToastify.useToast=MV,reactToastify.useToastContainer=tV,reactToastify}var injectStyle={},hasRequiredInjectStyle;function requireInjectStyle(){if(hasRequiredInjectStyle)return injectStyle;hasRequiredInjectStyle=1,Object.defineProperty(injectStyle,"__esModule",{value:!0}),injectStyle.injectStyle=lV;function lV(){var J=':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)}}',VV=document.createElement("style");VV.innerText=J,document.head.appendChild(VV)}return injectStyle}var SuperGrid_1,hasRequiredSuperGrid;function requireSuperGrid(){if(hasRequiredSuperGrid)return SuperGrid_1;hasRequiredSuperGrid=1;var lV=Object.defineProperty,J=Object.getOwnPropertyDescriptor,VV=Object.getOwnPropertyNames,RV=Object.prototype.hasOwnProperty,UV=(aV,GV)=>{for(var cV in GV)lV(aV,cV,{get:GV[cV],enumerable:!0})},ZV=(aV,GV,cV,TV)=>{if(GV&&typeof GV=="object"||typeof GV=="function")for(let iV of VV(GV))!RV.call(aV,iV)&&iV!==cV&&lV(aV,iV,{get:()=>GV[iV],enumerable:!(TV=J(GV,iV))||TV.enumerable});return aV},WV=aV=>ZV(lV({},"__esModule",{value:!0}),aV),IV={};UV(IV,{SuperGrid:()=>nV,toMMSI:()=>JV,toMeterSI:()=>eV}),SuperGrid_1=WV(IV);var dV=requireReact(),CV=require$$0,FV=requireJsxRuntime(),NV=(aV,GV,cV)=>{const TV=[];if(GV<aV)for(let iV=aV;iV>=GV;iV-=Math.abs(cV))TV.push(iV);else for(let iV=aV;iV<=GV;iV+=Math.abs(cV))TV.push(iV);return TV};function gV(aV,GV){return{x:Math.round(GV.x/aV)*aV,y:Math.round(GV.y/aV)*aV}}function eV(aV,GV=1){return aV<0?"-"+eV(-aV):aV<1e-6?"0m":aV>1e3?Math.floor(aV/1e3)+"km":aV>1&&GV>1?Math.round(aV)+"m":aV>1&&GV<=1?aV.toFixed(Math.ceil(-Math.log10(GV)))+"m":aV<1&&GV>=1/1e3?Math.round(aV*1e3)+"mm":aV<1&&GV<1/1e3?(aV*1e3).toFixed(Math.ceil(-Math.log10(GV*1e3)))+"mm":""}function JV(aV,GV=1){return eV(aV/1e3,GV/1e3)}var nV=aV=>{var GV;const cV=(0,dV.useRef)(null),[TV,iV]=(0,dV.useState)({x:0,y:0}),{majorColor:tV="rgba(0,0,0,0.2)",minorColor:MV="rgba(0,0,0,0.1)",textColor:AV=(GV=aV.majorColor)!=null?GV:"rgba(0,0,0,0.5)",width:pV,height:HV,screenSpaceCellSize:oV=200,stringifyCoord:DV=(nl,Il,LV)=>`${eV(nl,LV)}, ${eV(Il,LV)}`}=aV,wV=Math.ceil(pV/oV)+2,_V=Math.ceil(HV/oV)+2;(0,dV.useEffect)(()=>{if(!cV.current)return;const nl=cV.current.getContext("2d");if(!nl)return;const Il=oV/10**Math.floor(Math.log10(aV.transform.a)),LV=aV.transform.d<0?-1:1,$V=oV/10**Math.log10(aV.transform.a)/Il;function Cl(Tl,kl,Dl){const ZR=Tl;let JR,FR,QR;for(JR=kl.x;JR<=Dl.x;JR+=ZR)FR=(0,CV.applyToPoint)(aV.transform,{x:JR,y:kl.y}),QR=(0,CV.applyToPoint)(aV.transform,{x:JR,y:Dl.y}),nl.beginPath(),nl.moveTo(FR.x,FR.y),nl.lineTo(QR.x,QR.y),nl.stroke();const hR=NV(kl.y,Dl.y,ZR*LV);for(const kR of hR)FR=(0,CV.applyToPoint)(aV.transform,{x:kl.x,y:kR}),QR=(0,CV.applyToPoint)(aV.transform,{x:Dl.x,y:kR}),nl.beginPath(),nl.moveTo(FR.x,FR.y),nl.lineTo(QR.x,QR.y),nl.stroke()}function Zl(Tl,kl,Dl){const ZR=Tl;let JR;for(JR=kl.x;JR<=Dl.x;JR+=ZR)for(const FR of NV(kl.y,Dl.y,ZR*LV)){const QR=(0,CV.applyToPoint)(aV.transform,{x:JR,y:FR});nl.fillStyle=AV,nl.font="12px sans-serif",nl.fillText(DV(JR,FR,Tl),QR.x+2,QR.y-2)}}nl.clearRect(0,0,pV,HV);const el=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:0,y:0}),pl={x:Math.floor((el.x-Il)/Il)*Il,y:Math.floor((el.y-Il)/Il+(LV==-1?2:0))*Il},ml={x:pl.x+Il*wV,y:pl.y+Il*_V*LV},jl=Il*5,rl={x:Math.floor((el.x-jl)/jl)*jl,y:Math.floor((el.y-jl)/jl+(LV==-1?2:0))*jl},Pl={x:rl.x+jl*wV,y:rl.y+jl*_V*LV};nl.globalAlpha=1,nl.strokeStyle=tV,Cl(Il,pl,ml),Zl(jl,rl,Pl),nl.globalAlpha=1-$V,Cl(jl/10,rl,Pl),nl.globalAlpha=1-$V,nl.strokeStyle=MV,Cl(Il/10,pl,ml),nl.globalAlpha=Math.max(((1-$V)*10-5)/5,0),Zl(jl/10,rl,Pl),nl.globalAlpha=1;const Hl=(0,CV.applyToPoint)(aV.transform,TV);nl.font="12px sans-serif",nl.fillStyle=AV,nl.fillText(DV(TV.x,TV.y,Il),Hl.x+2,Hl.y-2),nl.strokeStyle=tV,nl.strokeRect(Hl.x-5,Hl.y-5,10,10)},[cV,aV.transform,TV,pV,HV]);const dl=nl=>{if(!cV.current)return;const Il=oV/10/10**Math.floor(Math.log10(aV.transform.a)),LV=cV.current.getBoundingClientRect(),OV=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:nl.clientX-LV.left,y:nl.clientY-LV.top}),$V=gV(Il,OV);iV($V)};return(0,FV.jsx)("canvas",{onMouseUp:nl=>{nl.button===1&&dl(nl)},onDoubleClick:dl,ref:cV,width:aV.width,height:aV.height})};return SuperGrid_1}var isDevelopment$1=!1;function sheetForTag(lV){if(lV.sheet)return lV.sheet;for(var J=0;J<document.styleSheets.length;J++)if(document.styleSheets[J].ownerNode===lV)return document.styleSheets[J]}function createStyleElement(lV){var J=document.createElement("style");return J.setAttribute("data-emotion",lV.key),lV.nonce!==void 0&&J.setAttribute("nonce",lV.nonce),J.appendChild(document.createTextNode("")),J.setAttribute("data-s",""),J}var StyleSheet=function(){function lV(VV){var RV=this;this._insertTag=function(UV){var ZV;RV.tags.length===0?RV.insertionPoint?ZV=RV.insertionPoint.nextSibling:RV.prepend?ZV=RV.container.firstChild:ZV=RV.before:ZV=RV.tags[RV.tags.length-1].nextSibling,RV.container.insertBefore(UV,ZV),RV.tags.push(UV)},this.isSpeedy=VV.speedy===void 0?!isDevelopment$1:VV.speedy,this.tags=[],this.ctr=0,this.nonce=VV.nonce,this.key=VV.key,this.container=VV.container,this.prepend=VV.prepend,this.insertionPoint=VV.insertionPoint,this.before=null}var J=lV.prototype;return J.hydrate=function(RV){RV.forEach(this._insertTag)},J.insert=function(RV){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(createStyleElement(this));var UV=this.tags[this.tags.length-1];if(this.isSpeedy){var ZV=sheetForTag(UV);try{ZV.insertRule(RV,ZV.cssRules.length)}catch{}}else UV.appendChild(document.createTextNode(RV));this.ctr++},J.flush=function(){this.tags.forEach(function(RV){var UV;return(UV=RV.parentNode)==null?void 0:UV.removeChild(RV)}),this.tags=[],this.ctr=0},lV}(),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(lV,J){return charat(lV,0)^45?(((J<<2^charat(lV,0))<<2^charat(lV,1))<<2^charat(lV,2))<<2^charat(lV,3):0}function trim(lV){return lV.trim()}function match(lV,J){return(lV=J.exec(lV))?lV[0]:lV}function replace(lV,J,VV){return lV.replace(J,VV)}function indexof(lV,J){return lV.indexOf(J)}function charat(lV,J){return lV.charCodeAt(J)|0}function substr(lV,J,VV){return lV.slice(J,VV)}function strlen(lV){return lV.length}function sizeof$1(lV){return lV.length}function append(lV,J){return J.push(lV),lV}function combine(lV,J){return lV.map(J).join("")}var line=1,column=1,length=0,position=0,character=0,characters="";function node(lV,J,VV,RV,UV,ZV,WV){return{value:lV,root:J,parent:VV,type:RV,props:UV,children:ZV,line,column,length:WV,return:""}}function copy(lV,J){return assign(node("",null,null,"",null,null,0),lV,{length:-lV.length},J)}function char(){return character}function prev(){return character=position>0?charat(characters,--position):0,column--,character===10&&(column=1,line--),character}function next(){return character=position<length?charat(characters,position++):0,column++,character===10&&(column=1,line++),character}function peek(){return charat(characters,position)}function caret(){return position}function slice(lV,J){return substr(characters,lV,J)}function token(lV){switch(lV){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(lV){return line=column=1,length=strlen(characters=lV),position=0,[]}function dealloc(lV){return characters="",lV}function delimit(lV){return trim(slice(position-1,delimiter(lV===91?lV+2:lV===40?lV+1:lV)))}function whitespace(lV){for(;(character=peek())&&character<33;)next();return token(lV)>2||token(character)>3?"":" "}function escaping(lV,J){for(;--J&&next()&&!(character<48||character>102||character>57&&character<65||character>70&&character<97););return slice(lV,caret()+(J<6&&peek()==32&&next()==32))}function delimiter(lV){for(;next();)switch(character){case lV:return position;case 34:case 39:lV!==34&&lV!==39&&delimiter(character);break;case 40:lV===41&&delimiter(lV);break;case 92:next();break}return position}function commenter(lV,J){for(;next()&&lV+character!==57;)if(lV+character===84&&peek()===47)break;return"/*"+slice(J,position-1)+"*"+from(lV===47?lV:next())}function identifier(lV){for(;!token(peek());)next();return slice(lV,position)}function compile(lV){return dealloc(parse$1("",null,null,null,[""],lV=alloc(lV),0,[0],lV))}function parse$1(lV,J,VV,RV,UV,ZV,WV,IV,dV){for(var CV=0,FV=0,NV=WV,gV=0,eV=0,JV=0,nV=1,aV=1,GV=1,cV=0,TV="",iV=UV,tV=ZV,MV=RV,AV=TV;aV;)switch(JV=cV,cV=next()){case 40:if(JV!=108&&charat(AV,NV-1)==58){indexof(AV+=replace(delimit(cV),"&","&\f"),"&\f")!=-1&&(GV=-1);break}case 34:case 39:case 91:AV+=delimit(cV);break;case 9:case 10:case 13:case 32:AV+=whitespace(JV);break;case 92:AV+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),J,VV),dV);break;default:AV+="/"}break;case 123*nV:IV[CV++]=strlen(AV)*GV;case 125*nV:case 59:case 0:switch(cV){case 0:case 125:aV=0;case 59+FV:GV==-1&&(AV=replace(AV,/\f/g,"")),eV>0&&strlen(AV)-NV&&append(eV>32?declaration(AV+";",RV,VV,NV-1):declaration(replace(AV," ","")+";",RV,VV,NV-2),dV);break;case 59:AV+=";";default:if(append(MV=ruleset(AV,J,VV,CV,FV,UV,IV,TV,iV=[],tV=[],NV),ZV),cV===123)if(FV===0)parse$1(AV,J,MV,MV,iV,ZV,NV,IV,tV);else switch(gV===99&&charat(AV,3)===110?100:gV){case 100:case 108:case 109:case 115:parse$1(lV,MV,MV,RV&&append(ruleset(lV,MV,MV,0,0,UV,IV,TV,UV,iV=[],NV),tV),UV,tV,NV,IV,RV?iV:tV);break;default:parse$1(AV,MV,MV,MV,[""],tV,0,IV,tV)}}CV=FV=eV=0,nV=GV=1,TV=AV="",NV=WV;break;case 58:NV=1+strlen(AV),eV=JV;default:if(nV<1){if(cV==123)--nV;else if(cV==125&&nV++==0&&prev()==125)continue}switch(AV+=from(cV),cV*nV){case 38:GV=FV>0?1:(AV+="\f",-1);break;case 44:IV[CV++]=(strlen(AV)-1)*GV,GV=1;break;case 64:peek()===45&&(AV+=delimit(next())),gV=peek(),FV=NV=strlen(TV=AV+=identifier(caret())),cV++;break;case 45:JV===45&&strlen(AV)==2&&(nV=0)}}return ZV}function ruleset(lV,J,VV,RV,UV,ZV,WV,IV,dV,CV,FV){for(var NV=UV-1,gV=UV===0?ZV:[""],eV=sizeof$1(gV),JV=0,nV=0,aV=0;JV<RV;++JV)for(var GV=0,cV=substr(lV,NV+1,NV=abs(nV=WV[JV])),TV=lV;GV<eV;++GV)(TV=trim(nV>0?gV[GV]+" "+cV:replace(cV,/&\f/g,gV[GV])))&&(dV[aV++]=TV);return node(lV,J,VV,UV===0?RULESET:IV,dV,CV,FV)}function comment(lV,J,VV){return node(lV,J,VV,COMMENT,from(char()),substr(lV,2,-2),0)}function declaration(lV,J,VV,RV){return node(lV,J,VV,DECLARATION,substr(lV,0,RV),substr(lV,RV+1,-1),RV)}function serialize(lV,J){for(var VV="",RV=sizeof$1(lV),UV=0;UV<RV;UV++)VV+=J(lV[UV],UV,lV,J)||"";return VV}function stringify$1(lV,J,VV,RV){switch(lV.type){case LAYER:if(lV.children.length)break;case IMPORT:case DECLARATION:return lV.return=lV.return||lV.value;case COMMENT:return"";case KEYFRAMES:return lV.return=lV.value+"{"+serialize(lV.children,RV)+"}";case RULESET:lV.value=lV.props.join(",")}return strlen(VV=serialize(lV.children,RV))?lV.return=lV.value+"{"+VV+"}":""}function middleware(lV){var J=sizeof$1(lV);return function(VV,RV,UV,ZV){for(var WV="",IV=0;IV<J;IV++)WV+=lV[IV](VV,RV,UV,ZV)||"";return WV}}function rulesheet(lV){return function(J){J.root||(J=J.return)&&lV(J)}}function memoize(lV){var J=Object.create(null);return function(VV){return J[VV]===void 0&&(J[VV]=lV(VV)),J[VV]}}var identifierWithPointTracking=function lV(J,VV,RV){for(var UV=0,ZV=0;UV=ZV,ZV=peek(),UV===38&&ZV===12&&(VV[RV]=1),!token(ZV);)next();return slice(J,position)},toRules=function lV(J,VV){var RV=-1,UV=44;do switch(token(UV)){case 0:UV===38&&peek()===12&&(VV[RV]=1),J[RV]+=identifierWithPointTracking(position-1,VV,RV);break;case 2:J[RV]+=delimit(UV);break;case 4:if(UV===44){J[++RV]=peek()===58?"&\f":"",VV[RV]=J[RV].length;break}default:J[RV]+=from(UV)}while(UV=next());return J},getRules=function lV(J,VV){return dealloc(toRules(alloc(J),VV))},fixedElements=new WeakMap,compat=function lV(J){if(!(J.type!=="rule"||!J.parent||J.length<1)){for(var VV=J.value,RV=J.parent,UV=J.column===RV.column&&J.line===RV.line;RV.type!=="rule";)if(RV=RV.parent,!RV)return;if(!(J.props.length===1&&VV.charCodeAt(0)!==58&&!fixedElements.get(RV))&&!UV){fixedElements.set(J,!0);for(var ZV=[],WV=getRules(VV,ZV),IV=RV.props,dV=0,CV=0;dV<WV.length;dV++)for(var FV=0;FV<IV.length;FV++,CV++)J.props[CV]=ZV[dV]?WV[dV].replace(/&\f/g,IV[FV]):IV[FV]+" "+WV[dV]}}},removeLabel=function lV(J){if(J.type==="decl"){var VV=J.value;VV.charCodeAt(0)===108&&VV.charCodeAt(2)===98&&(J.return="",J.value="")}};function prefix(lV,J){switch(hash(lV,J)){case 5103:return WEBKIT+"print-"+lV+lV;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+lV+lV;case 5349:case 4246:case 4810:case 6968:case 2756:return WEBKIT+lV+MOZ+lV+MS+lV+lV;case 6828:case 4268:return WEBKIT+lV+MS+lV+lV;case 6165:return WEBKIT+lV+MS+"flex-"+lV+lV;case 5187:return WEBKIT+lV+replace(lV,/(\w+).+(:[^]+)/,WEBKIT+"box-$1$2"+MS+"flex-$1$2")+lV;case 5443:return WEBKIT+lV+MS+"flex-item-"+replace(lV,/flex-|-self/,"")+lV;case 4675:return WEBKIT+lV+MS+"flex-line-pack"+replace(lV,/align-content|flex-|-self/,"")+lV;case 5548:return WEBKIT+lV+MS+replace(lV,"shrink","negative")+lV;case 5292:return WEBKIT+lV+MS+replace(lV,"basis","preferred-size")+lV;case 6060:return WEBKIT+"box-"+replace(lV,"-grow","")+WEBKIT+lV+MS+replace(lV,"grow","positive")+lV;case 4554:return WEBKIT+replace(lV,/([^-])(transform)/g,"$1"+WEBKIT+"$2")+lV;case 6187:return replace(replace(replace(lV,/(zoom-|grab)/,WEBKIT+"$1"),/(image-set)/,WEBKIT+"$1"),lV,"")+lV;case 5495:case 3959:return replace(lV,/(image-set\([^]*)/,WEBKIT+"$1$`$1");case 4968:return replace(replace(lV,/(.+:)(flex-)?(.*)/,WEBKIT+"box-pack:$3"+MS+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+WEBKIT+lV+lV;case 4095:case 3583:case 4068:case 2532:return replace(lV,/(.+)-inline(.+)/,WEBKIT+"$1$2")+lV;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(lV)-1-J>6)switch(charat(lV,J+1)){case 109:if(charat(lV,J+4)!==45)break;case 102:return replace(lV,/(.+:)(.+)-([^]+)/,"$1"+WEBKIT+"$2-$3$1"+MOZ+(charat(lV,J+3)==108?"$3":"$2-$3"))+lV;case 115:return~indexof(lV,"stretch")?prefix(replace(lV,"stretch","fill-available"),J)+lV:lV}break;case 4949:if(charat(lV,J+1)!==115)break;case 6444:switch(charat(lV,strlen(lV)-3-(~indexof(lV,"!important")&&10))){case 107:return replace(lV,":",":"+WEBKIT)+lV;case 101:return replace(lV,/(.+:)([^;!]+)(;|!.+)?/,"$1"+WEBKIT+(charat(lV,14)===45?"inline-":"")+"box$3$1"+WEBKIT+"$2$3$1"+MS+"$2box$3")+lV}break;case 5936:switch(charat(lV,J+11)){case 114:return WEBKIT+lV+MS+replace(lV,/[svh]\w+-[tblr]{2}/,"tb")+lV;case 108:return WEBKIT+lV+MS+replace(lV,/[svh]\w+-[tblr]{2}/,"tb-rl")+lV;case 45:return WEBKIT+lV+MS+replace(lV,/[svh]\w+-[tblr]{2}/,"lr")+lV}return WEBKIT+lV+MS+lV+lV}return lV}var prefixer=function lV(J,VV,RV,UV){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)})],UV);case RULESET:if(J.length)return combine(J.props,function(ZV){switch(match(ZV,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(J,{props:[replace(ZV,/:(read-\w+)/,":"+MOZ+"$1")]})],UV);case"::placeholder":return serialize([copy(J,{props:[replace(ZV,/:(plac\w+)/,":"+WEBKIT+"input-$1")]}),copy(J,{props:[replace(ZV,/:(plac\w+)/,":"+MOZ+"$1")]}),copy(J,{props:[replace(ZV,/:(plac\w+)/,MS+"input-$1")]})],UV)}return""})}},defaultStylisPlugins=[prefixer],createCache=function lV(J){var VV=J.key;if(VV==="css"){var RV=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(RV,function(nV){var aV=nV.getAttribute("data-emotion");aV.indexOf(" ")!==-1&&(document.head.appendChild(nV),nV.setAttribute("data-s",""))})}var UV=J.stylisPlugins||defaultStylisPlugins,ZV={},WV,IV=[];WV=J.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+VV+' "]'),function(nV){for(var aV=nV.getAttribute("data-emotion").split(" "),GV=1;GV<aV.length;GV++)ZV[aV[GV]]=!0;IV.push(nV)});var dV,CV=[compat,removeLabel];{var FV,NV=[stringify$1,rulesheet(function(nV){FV.insert(nV)})],gV=middleware(CV.concat(UV,NV)),eV=function(aV){return serialize(compile(aV),gV)};dV=function(aV,GV,cV,TV){FV=cV,eV(aV?aV+"{"+GV.styles+"}":GV.styles),TV&&(JV.inserted[GV.name]=!0)}}var JV={key:VV,sheet:new StyleSheet({key:VV,container:WV,nonce:J.nonce,speedy:J.speedy,prepend:J.prepend,insertionPoint:J.insertionPoint}),nonce:J.nonce,inserted:ZV,registered:{},insert:dV};return JV.sheet.hydrate(IV),JV};function murmur2(lV){for(var J=0,VV,RV=0,UV=lV.length;UV>=4;++RV,UV-=4)VV=lV.charCodeAt(RV)&255|(lV.charCodeAt(++RV)&255)<<8|(lV.charCodeAt(++RV)&255)<<16|(lV.charCodeAt(++RV)&255)<<24,VV=(VV&65535)*1540483477+((VV>>>16)*59797<<16),VV^=VV>>>24,J=(VV&65535)*1540483477+((VV>>>16)*59797<<16)^(J&65535)*1540483477+((J>>>16)*59797<<16);switch(UV){case 3:J^=(lV.charCodeAt(RV+2)&255)<<16;case 2:J^=(lV.charCodeAt(RV+1)&255)<<8;case 1:J^=lV.charCodeAt(RV)&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 lV(J){return J.charCodeAt(1)===45},isProcessableValue=function lV(J){return J!=null&&typeof J!="boolean"},processStyleName=memoize(function(lV){return isCustomProperty(lV)?lV:lV.replace(hyphenateRegex,"-$&").toLowerCase()}),processStyleValue=function lV(J,VV){switch(J){case"animation":case"animationName":if(typeof VV=="string")return VV.replace(animationRegex,function(RV,UV,ZV){return cursor={name:UV,styles:ZV,next:cursor},UV})}return unitlessKeys[J]!==1&&!isCustomProperty(J)&&typeof VV=="number"&&VV!==0?VV+"px":VV},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(lV,J,VV){if(VV==null)return"";var RV=VV;if(RV.__emotion_styles!==void 0)return RV;switch(typeof VV){case"boolean":return"";case"object":{var UV=VV;if(UV.anim===1)return cursor={name:UV.name,styles:UV.styles,next:cursor},UV.name;var ZV=VV;if(ZV.styles!==void 0){var WV=ZV.next;if(WV!==void 0)for(;WV!==void 0;)cursor={name:WV.name,styles:WV.styles,next:cursor},WV=WV.next;var IV=ZV.styles+";";return IV}return createStringFromObject(lV,J,VV)}}var dV=VV;if(J==null)return dV;var CV=J[dV];return CV!==void 0?CV:dV}function createStringFromObject(lV,J,VV){var RV="";if(Array.isArray(VV))for(var UV=0;UV<VV.length;UV++)RV+=handleInterpolation(lV,J,VV[UV])+";";else for(var ZV in VV){var WV=VV[ZV];if(typeof WV!="object"){var IV=WV;J!=null&&J[IV]!==void 0?RV+=ZV+"{"+J[IV]+"}":isProcessableValue(IV)&&(RV+=processStyleName(ZV)+":"+processStyleValue(ZV,IV)+";")}else{if(ZV==="NO_COMPONENT_SELECTOR"&&isDevelopment)throw new Error(noComponentSelectorMessage);if(Array.isArray(WV)&&typeof WV[0]=="string"&&(J==null||J[WV[0]]===void 0))for(var dV=0;dV<WV.length;dV++)isProcessableValue(WV[dV])&&(RV+=processStyleName(ZV)+":"+processStyleValue(ZV,WV[dV])+";");else{var CV=handleInterpolation(lV,J,WV);switch(ZV){case"animation":case"animationName":{RV+=processStyleName(ZV)+":"+CV+";";break}default:RV+=ZV+"{"+CV+"}"}}}}return RV}var labelPattern=/label:\s*([^\s;{]+)\s*(;|$)/g,cursor;function serializeStyles(lV,J,VV){if(lV.length===1&&typeof lV[0]=="object"&&lV[0]!==null&&lV[0].styles!==void 0)return lV[0];var RV=!0,UV="";cursor=void 0;var ZV=lV[0];if(ZV==null||ZV.raw===void 0)RV=!1,UV+=handleInterpolation(VV,J,ZV);else{var WV=ZV;UV+=WV[0]}for(var IV=1;IV<lV.length;IV++)if(UV+=handleInterpolation(VV,J,lV[IV]),RV){var dV=ZV;UV+=dV[IV]}labelPattern.lastIndex=0;for(var CV="",FV;(FV=labelPattern.exec(UV))!==null;)CV+="-"+FV[1];var NV=murmur2(UV)+CV;return{name:NV,styles:UV,next:cursor}}function getRegisteredStyles$1(lV,J,VV){var RV="";return VV.split(" ").forEach(function(UV){lV[UV]!==void 0?J.push(lV[UV]+";"):UV&&(RV+=UV+" ")}),RV}var registerStyles=function lV(J,VV,RV){var UV=J.key+"-"+VV.name;J.registered[UV]===void 0&&(J.registered[UV]=VV.styles)},insertStyles=function lV(J,VV,RV){registerStyles(J,VV);var UV=J.key+"-"+VV.name;if(J.inserted[VV.name]===void 0){var ZV=VV;do J.insert(VV===ZV?"."+UV:"",ZV,J.sheet,!0),ZV=ZV.next;while(ZV!==void 0)}};function insertWithoutScoping(lV,J){if(lV.inserted[J.name]===void 0)return lV.insert("",J,lV.sheet,!0)}function merge$1(lV,J,VV){var RV=[],UV=getRegisteredStyles$1(lV,RV,VV);return RV.length<2?VV:UV+J(RV)}var createEmotion=function lV(J){var VV=createCache(J);VV.sheet.speedy=function(IV){this.isSpeedy=IV},VV.compat=!0;var RV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];var NV=serializeStyles(CV,VV.registered,void 0);return insertStyles(VV,NV),VV.key+"-"+NV.name},UV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];var NV=serializeStyles(CV,VV.registered),gV="animation-"+NV.name;return insertWithoutScoping(VV,{name:NV.name,styles:"@keyframes "+gV+"{"+NV.styles+"}"}),gV},ZV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];var NV=serializeStyles(CV,VV.registered);insertWithoutScoping(VV,NV)},WV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];return merge$1(VV.registered,RV,classnames(CV))};return{css:RV,cx:WV,injectGlobal:ZV,keyframes:UV,hydrate:function(dV){dV.forEach(function(CV){VV.inserted[CV]=!0})},flush:function(){VV.registered={},VV.inserted={},VV.sheet.flush()},sheet:VV.sheet,cache:VV,getRegisteredStyles:getRegisteredStyles$1.bind(null,VV.registered),merge:merge$1.bind(null,VV.registered,RV)}},classnames=function lV(J){for(var VV="",RV=0;RV<J.length;RV++){var UV=J[RV];if(UV!=null){var ZV=void 0;switch(typeof UV){case"boolean":break;case"object":{if(Array.isArray(UV))ZV=lV(UV);else{ZV="";for(var WV in UV)UV[WV]&&WV&&(ZV&&(ZV+=" "),ZV+=WV)}break}default:ZV=UV}ZV&&(VV&&(VV+=" "),VV+=ZV)}}return VV},_createEmotion=createEmotion({key:"css"}),flush=_createEmotion.flush,hydrate=_createEmotion.hydrate,cx$1=_createEmotion.cx,merge=_createEmotion.merge,getRegisteredStyles=_createEmotion.getRegisteredStyles,injectGlobal=_createEmotion.injectGlobal,keyframes=_createEmotion.keyframes,css=_createEmotion.css,sheet=_createEmotion.sheet,cache=_createEmotion.cache;const emotionCss_esm=Object.freeze(Object.defineProperty({__proto__:null,cache,css,cx:cx$1,flush,getRegisteredStyles,hydrate,injectGlobal,keyframes,merge,sheet},Symbol.toStringTag,{value:"Module"})),require$$10=getAugmentedNamespace(emotionCss_esm);function doesLineIntersectLine([lV,J],[VV,RV],{lineThickness:UV=0}={}){return UV===0?doSegmentsIntersect(lV,J,VV,RV):segmentsDistance(lV,J,VV,RV)<=UV}function doSegmentsIntersect(lV,J,VV,RV){const UV=orientation(lV,J,VV),ZV=orientation(lV,J,RV),WV=orientation(VV,RV,lV),IV=orientation(VV,RV,J);return!!(UV!==ZV&&WV!==IV||UV===0&&onSegment(lV,VV,J)||ZV===0&&onSegment(lV,RV,J)||WV===0&&onSegment(VV,lV,RV)||IV===0&&onSegment(VV,J,RV))}function orientation(lV,J,VV){const RV=(J.y-lV.y)*(VV.x-J.x)-(J.x-lV.x)*(VV.y-J.y);return RV===0?0:RV>0?1:2}function onSegment(lV,J,VV){return J.x<=Math.max(lV.x,VV.x)&&J.x>=Math.min(lV.x,VV.x)&&J.y<=Math.max(lV.y,VV.y)&&J.y>=Math.min(lV.y,VV.y)}function segmentsDistance(lV,J,VV,RV){if(lV.x===J.x&&lV.y===J.y)return pointToSegmentDistance(lV,VV,RV);if(VV.x===RV.x&&VV.y===RV.y)return pointToSegmentDistance(VV,lV,J);if(doSegmentsIntersect(lV,J,VV,RV))return 0;const UV=[pointToSegmentDistance(lV,VV,RV),pointToSegmentDistance(J,VV,RV),pointToSegmentDistance(VV,lV,J),pointToSegmentDistance(RV,lV,J)];return Math.min(...UV)}function pointToSegmentDistance(lV,J,VV){const RV=(VV.x-J.x)**2+(VV.y-J.y)**2;if(RV===0)return distance(lV,J);let UV=((lV.x-J.x)*(VV.x-J.x)+(lV.y-J.y)*(VV.y-J.y))/RV;UV=Math.max(0,Math.min(1,UV));const ZV={x:J.x+UV*(VV.x-J.x),y:J.y+UV*(VV.y-J.y)};return distance(lV,ZV)}function distance(lV,J){const VV=lV.x-J.x,RV=lV.y-J.y;return Math.sqrt(VV*VV+RV*RV)}function findConnectedNetworks(lV){const J=new Map;let VV=0;function RV(UV){for(const[,WV]of J)if(WV.has(UV))return WV;const ZV=new Set;return J.set(`connectivity_net${VV++}`,ZV),ZV}for(const UV of lV){let ZV=null;for(const WV of UV){if(!ZV)ZV=RV(WV);else if(!ZV.has(WV)){const IV=RV(WV);if(IV!==ZV){for(const dV of IV)ZV.add(dV);J.delete(Array.from(J.entries()).find(([,dV])=>dV===IV)[0])}}ZV.add(WV)}}return Object.fromEntries(Array.from(J.entries()).map(([UV,ZV])=>[UV,Array.from(ZV)]))}var ConnectivityMap=class{constructor(lV){MI(this,"netMap");MI(this,"idToNetMap");this.netMap=lV,this.idToNetMap={};for(const[J,VV]of Object.entries(lV))for(const RV of VV)this.idToNetMap[RV]=J}addConnections(lV){for(const J of lV){const VV=new Set;for(const UV of J){const ZV=this.idToNetMap[UV];ZV&&VV.add(ZV)}let RV;if(VV.size===0)RV=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[RV]=[];else if(VV.size===1)RV=VV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{RV=VV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const UV of VV)if(UV!==RV){this.netMap[RV].push(...this.netMap[UV]),this.netMap[UV]=this.netMap[RV];for(const ZV of this.netMap[RV])this.idToNetMap[ZV]=RV}}for(const UV of J)this.netMap[RV].includes(UV)||this.netMap[RV].push(UV),this.idToNetMap[UV]=RV}}getIdsConnectedToNet(lV){return this.netMap[lV]||[]}getNetConnectedToId(lV){return this.idToNetMap[lV]}areIdsConnected(lV,J){const VV=this.getNetConnectedToId(lV),RV=this.getNetConnectedToId(J);return VV===RV||RV===lV||RV===lV}areAllIdsConnected(lV){const J=this.getNetConnectedToId(lV[0]);for(const VV of lV){const RV=this.getNetConnectedToId(VV);if(RV===void 0||RV!==J)return!1}return!0}},getSourcePortConnectivityMapFromCircuitJson=lV=>{const J=[];for(const RV of lV)RV.type==="source_trace"&&J.push([...RV.connected_source_port_ids??[],...RV.connected_source_net_ids??[]]);const VV=findConnectedNetworks(J);return new ConnectivityMap(VV)},getFullConnectivityMapFromCircuitJson=lV=>{const J=[];for(const RV of lV)if(RV.type==="source_trace")J.push([RV.source_trace_id,...RV.connected_source_port_ids??[],...RV.connected_source_net_ids??[]].filter(Boolean));else if(RV.type==="pcb_port"){const{pcb_port_id:UV,source_port_id:ZV}=RV;ZV&&UV&&J.push([ZV,UV])}else if(RV.type==="pcb_smtpad"){const{pcb_smtpad_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_plated_hole"){const{pcb_plated_hole_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_trace"){const{pcb_trace_id:UV,source_trace_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}const VV=findConnectedNetworks(J);return new ConnectivityMap(VV)},PcbConnectivityMap=class{constructor(lV){MI(this,"circuitJson");MI(this,"traceIdToElm");MI(this,"portIdToElm");MI(this,"connMap");this.circuitJson=lV||[],this.traceIdToElm=new Map,this.portIdToElm=new Map,lV?(this._buildTraceMap(),this._buildPortMap(),this.connMap=this._buildTraceConnectivityMap()):this.connMap=new ConnectivityMap({})}_buildPortMap(){for(const lV of this.circuitJson)lV.type==="pcb_port"&&this.portIdToElm.set(lV.pcb_port_id,lV)}_buildTraceMap(){for(const lV of this.circuitJson)lV.type==="pcb_trace"&&this.traceIdToElm.set(lV.pcb_trace_id,lV)}_buildTraceConnectivityMap(){const lV=[],J=Array.from(this.traceIdToElm.keys());for(let VV=0;VV<J.length;VV++)for(let RV=VV+1;RV<J.length;RV++){const UV=this.traceIdToElm.get(J[VV]),ZV=this.traceIdToElm.get(J[RV]);this._arePcbTracesConnected(UV,ZV)&&lV.push([J[VV],J[RV]])}for(const VV of this.portIdToElm.values())for(const RV of this.traceIdToElm.values())for(const UV of RV.route)UV.route_type==="wire"&&(UV.start_pcb_port_id===VV.pcb_port_id?lV.push([VV.pcb_port_id,RV.pcb_trace_id]):UV.end_pcb_port_id===VV.pcb_port_id&&lV.push([RV.pcb_trace_id,VV.pcb_port_id]));return new ConnectivityMap(findConnectedNetworks(lV))}addTrace(lV){this.traceIdToElm.set(lV.pcb_trace_id,lV);const J=[];for(const VV of lV.route)VV.route_type==="wire"&&(VV.start_pcb_port_id&&J.push([VV.start_pcb_port_id,lV.pcb_trace_id]),VV.end_pcb_port_id&&J.push([VV.end_pcb_port_id,lV.pcb_trace_id]));this.connMap.addConnections(J)}_arePcbTracesConnected(lV,J){for(let VV=0;VV<lV.route.length-1;VV++){const RV=lV.route[VV],UV=lV.route[VV+1];if(RV.route_type==="wire"&&UV.route_type==="wire")for(let ZV=0;ZV<J.route.length-1;ZV++){const WV=J.route[ZV],IV=J.route[ZV+1];if(WV.route_type!=="wire"||IV.route_type!=="wire")continue;if(doesLineIntersectLine([RV,UV],[WV,IV],{lineThickness:(RV.width+WV.width)/2}))return!0}}return!1}areTracesConnected(lV,J){return this.connMap.areIdsConnected(lV,J)}getAllTracesConnectedToTrace(lV){const J=this.connMap.getNetConnectedToId(lV);return J?this.connMap.getIdsConnectedToNet(J).filter(VV=>this.traceIdToElm.has(VV)).map(VV=>this.traceIdToElm.get(VV)):[]}getAllTracesConnectedToPort(lV){const J=this.connMap.getNetConnectedToId(lV);return J?this.connMap.getIdsConnectedToNet(J).filter(VV=>this.traceIdToElm.has(VV)).map(VV=>this.traceIdToElm.get(VV)):[]}};const dist$2=Object.freeze(Object.defineProperty({__proto__:null,ConnectivityMap,PcbConnectivityMap,findConnectedNetworks,getFullConnectivityMapFromCircuitJson,getSourcePortConnectivityMapFromCircuitJson},Symbol.toStringTag,{value:"Module"})),require$$11=getAugmentedNamespace(dist$2);var dist$1,hasRequiredDist$1;function requireDist$1(){if(hasRequiredDist$1)return dist$1;hasRequiredDist$1=1;function lV($l,VU){(VU==null||VU>$l.length)&&(VU=$l.length);for(var yR=0,eU=new Array(VU);yR<VU;yR++)eU[yR]=$l[yR];return eU}function J($l){if(Array.isArray($l))return $l}function VV($l){if(Array.isArray($l))return lV($l)}function RV($l){if($l===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return $l}function UV($l,VU,yR,eU,sR,PV,Rl){try{var Ml=$l[PV](Rl),wl=Ml.value}catch(eR){yR(eR);return}Ml.done?VU(wl):Promise.resolve(wl).then(eU,sR)}function ZV($l){return function(){var VU=this,yR=arguments;return new Promise(function(eU,sR){var PV=$l.apply(VU,yR);function Rl(wl){UV(PV,eU,sR,Rl,Ml,"next",wl)}function Ml(wl){UV(PV,eU,sR,Rl,Ml,"throw",wl)}Rl(void 0)})}}function WV($l,VU){if(!($l instanceof VU))throw new TypeError("Cannot call a class as a function")}function IV($l,VU,yR){return Il()?IV=Reflect.construct:IV=function(sR,PV,Rl){var Ml=[null];Ml.push.apply(Ml,PV);var wl=Function.bind.apply(sR,Ml),eR=new wl;return Rl&&HV(eR,Rl.prototype),eR},IV.apply(null,arguments)}function dV($l,VU){for(var yR=0;yR<VU.length;yR++){var eU=VU[yR];eU.enumerable=eU.enumerable||!1,eU.configurable=!0,"value"in eU&&(eU.writable=!0),Object.defineProperty($l,eU.key,eU)}}function CV($l,VU,yR){return VU&&dV($l.prototype,VU),yR&&dV($l,yR),$l}function FV($l,VU,yR){return VU in $l?Object.defineProperty($l,VU,{value:yR,enumerable:!0,configurable:!0,writable:!0}):$l[VU]=yR,$l}function NV($l){return NV=Object.setPrototypeOf?Object.getPrototypeOf:function(yR){return yR.__proto__||Object.getPrototypeOf(yR)},NV($l)}function gV($l,VU){if(typeof VU!="function"&&VU!==null)throw new TypeError("Super expression must either be null or a function");$l.prototype=Object.create(VU&&VU.prototype,{constructor:{value:$l,writable:!0,configurable:!0}}),VU&&HV($l,VU)}function eV($l,VU){return VU!=null&&typeof Symbol<"u"&&VU[Symbol.hasInstance]?!!VU[Symbol.hasInstance]($l):$l instanceof VU}function JV($l){return Function.toString.call($l).indexOf("[native code]")!==-1}function nV($l){if(typeof Symbol<"u"&&$l[Symbol.iterator]!=null||$l["@@iterator"]!=null)return Array.from($l)}function aV($l,VU){var yR=$l==null?null:typeof Symbol<"u"&&$l[Symbol.iterator]||$l["@@iterator"];if(yR!=null){var eU=[],sR=!0,PV=!1,Rl,Ml;try{for(yR=yR.call($l);!(sR=(Rl=yR.next()).done)&&(eU.push(Rl.value),!(VU&&eU.length===VU));sR=!0);}catch(wl){PV=!0,Ml=wl}finally{try{!sR&&yR.return!=null&&yR.return()}finally{if(PV)throw Ml}}return eU}}function GV(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function cV(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function TV($l){for(var VU=1;VU<arguments.length;VU++){var yR=arguments[VU]!=null?arguments[VU]:{},eU=Object.keys(yR);typeof Object.getOwnPropertySymbols=="function"&&(eU=eU.concat(Object.getOwnPropertySymbols(yR).filter(function(sR){return Object.getOwnPropertyDescriptor(yR,sR).enumerable}))),eU.forEach(function(sR){FV($l,sR,yR[sR])})}return $l}function iV($l,VU){var yR=Object.keys($l);if(Object.getOwnPropertySymbols){var eU=Object.getOwnPropertySymbols($l);yR.push.apply(yR,eU)}return yR}function tV($l,VU){return VU=VU??{},Object.getOwnPropertyDescriptors?Object.defineProperties($l,Object.getOwnPropertyDescriptors(VU)):iV(Object(VU)).forEach(function(yR){Object.defineProperty($l,yR,Object.getOwnPropertyDescriptor(VU,yR))}),$l}function MV($l,VU){if($l==null)return{};var yR=AV($l,VU),eU,sR;if(Object.getOwnPropertySymbols){var PV=Object.getOwnPropertySymbols($l);for(sR=0;sR<PV.length;sR++)eU=PV[sR],!(VU.indexOf(eU)>=0)&&Object.prototype.propertyIsEnumerable.call($l,eU)&&(yR[eU]=$l[eU])}return yR}function AV($l,VU){if($l==null)return{};var yR={},eU=Object.keys($l),sR,PV;for(PV=0;PV<eU.length;PV++)sR=eU[PV],!(VU.indexOf(sR)>=0)&&(yR[sR]=$l[sR]);return yR}function pV($l,VU){return VU&&(_V(VU)==="object"||typeof VU=="function")?VU:RV($l)}function HV($l,VU){return HV=Object.setPrototypeOf||function(eU,sR){return eU.__proto__=sR,eU},HV($l,VU)}function oV($l,VU){return J($l)||aV($l,VU)||dl($l,VU)||GV()}function DV($l,VU){return VU||(VU=$l.slice(0)),Object.freeze(Object.defineProperties($l,{raw:{value:Object.freeze(VU)}}))}function wV($l){return VV($l)||nV($l)||dl($l)||cV()}function _V($l){"@swc/helpers - typeof";return $l&&typeof Symbol<"u"&&$l.constructor===Symbol?"symbol":typeof $l}function dl($l,VU){if($l){if(typeof $l=="string")return lV($l,VU);var yR=Object.prototype.toString.call($l).slice(8,-1);if(yR==="Object"&&$l.constructor&&(yR=$l.constructor.name),yR==="Map"||yR==="Set")return Array.from(yR);if(yR==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(yR))return lV($l,VU)}}function nl($l){var VU=typeof Map=="function"?new Map:void 0;return nl=function(eU){if(eU===null||!JV(eU))return eU;if(typeof eU!="function")throw new TypeError("Super expression must either be null or a function");if(typeof VU<"u"){if(VU.has(eU))return VU.get(eU);VU.set(eU,sR)}function sR(){return IV(eU,arguments,NV(this).constructor)}return sR.prototype=Object.create(eU.prototype,{constructor:{value:sR,enumerable:!1,writable:!0,configurable:!0}}),HV(sR,eU)},nl($l)}function Il(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function LV($l){var VU=Il();return function(){var eU=NV($l),sR;if(VU){var PV=NV(this).constructor;sR=Reflect.construct(eU,arguments,PV)}else sR=eU.apply(this,arguments);return pV(this,sR)}}function OV($l,VU){var yR,eU,sR,PV,Rl={label:0,sent:function(){if(sR[0]&1)throw sR[1];return sR[1]},trys:[],ops:[]};return PV={next:Ml(0),throw:Ml(1),return:Ml(2)},typeof Symbol=="function"&&(PV[Symbol.iterator]=function(){return this}),PV;function Ml(eR){return function(ER){return wl([eR,ER])}}function wl(eR){if(yR)throw new TypeError("Generator is already executing.");for(;Rl;)try{if(yR=1,eU&&(sR=eR[0]&2?eU.return:eR[0]?eU.throw||((sR=eU.return)&&sR.call(eU),0):eU.next)&&!(sR=sR.call(eU,eR[1])).done)return sR;switch(eU=0,sR&&(eR=[eR[0]&2,sR.value]),eR[0]){case 0:case 1:sR=eR;break;case 4:return Rl.label++,{value:eR[1],done:!1};case 5:Rl.label++,eU=eR[1],eR=[0];continue;case 7:eR=Rl.ops.pop(),Rl.trys.pop();continue;default:if(sR=Rl.trys,!(sR=sR.length>0&&sR[sR.length-1])&&(eR[0]===6||eR[0]===2)){Rl=0;continue}if(eR[0]===3&&(!sR||eR[1]>sR[0]&&eR[1]<sR[3])){Rl.label=eR[1];break}if(eR[0]===6&&Rl.label<sR[1]){Rl.label=sR[1],sR=eR;break}if(sR&&Rl.label<sR[2]){Rl.label=sR[2],Rl.ops.push(eR);break}sR[2]&&Rl.ops.pop(),Rl.trys.pop();continue}eR=VU.call($l,Rl)}catch(ER){eR=[6,ER],eU=0}finally{yR=sR=0}if(eR[0]&5)throw eR[1];return{value:eR[0]?eR[1]:void 0,done:!0}}}var $V=function($l){YG[$l]=[];var VU=qN[$l].split("M").slice(1).map(function(eR){return eR.split("L").map(function(ER){return ER.trim().split(" ").map(parseFloat)})}),yR=!0,eU=!1,sR=void 0;try{for(var PV=VU[Symbol.iterator](),Rl;!(yR=(Rl=PV.next()).done);yR=!0)for(var Ml=Rl.value,wl=0;wl<Ml.length-1;wl++)YG[$l].push({x1:Ml[wl][0],y1:1-Ml[wl][1],x2:Ml[wl+1][0],y2:1-Ml[wl+1][1]})}catch(eR){eU=!0,sR=eR}finally{try{!yR&&PV.return!=null&&PV.return()}finally{if(eU)throw sR}}};function Cl(){var $l=DV([`
22050
22050
  margin-top: 2px;
22051
22051
  padding: 4px;