PageSourceSearch

https://cdn.v1v2.io/_next/static/chunks/e8f3ca49-16d4aaef9c5b6dfe.js

js v1v2.io collected 2026-09-25 21:07:00 UTC 56,797 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3812],{24652:(t,e,s)=>{let i;s.d(e,{I$:()=>td,TS:()=>tl,bP:()=>to,oH:()=>th});class r{static setLevel(t){n=t}static log(...t){n<=r.LEVEL.LOG&&console.log(...t)}static warn(...t){n<=r.LEVEL.WARN&&console.warn(...t)}static error(...t){n<=r.LEVEL.ERROR&&console.error(...t)}}r.LEVEL=Object.freeze({LOG:0,WARN:1,ERROR:2,SILENT:3});let n=r.LEVEL.WARN,h=[];for(let t=0;t<256;t++)h[t]=(t<16?"0":"")+t.toString(16);class o{static area(t,e,s){return(s.x-t.x)*(e.z-t.z)-(e.x-t.x)*(s.z-t.z)}static argmax(t){let e=Math.max(...t),s=[];for(let i=0,r=t.length;i<r;i++)t[i]===e&&s.push(i);return s}static choice(t,e=null){let s=Math.random();if(null===e)return t[Math.floor(Math.random()*t.length)];{let i=0,r=t.map((t,s)=>i+=e[s]).findIndex(t=>t>=s);return t[r]}}static clamp(t,e,s){return Math.max(e,Math.min(s,t))}static generateUUID(){let t=0xffffffff*Math.random()|0,e=0xffffffff*Math.random()|0,s=0xffffffff*Math.random()|0,i=0xffffffff*Math.random()|0;return(h[255&t]+h[t>>8&255]+h[t>>16&255]+h[t>>24&255]+"-"+h[255&e]+h[e>>8&255]+"-"+h[e>>16&15|64]+h[e>>24&255]+"-"+h[63&s|128]+h[s>>8&255]+"-"+h[s>>16&255]+h[s>>24&255]+h[255&i]+h[i>>8&255]+h[i>>16&255]+h[i>>24&255]).toUpperCase()}static randFloat(t,e){return t+Math.random()*(e-t)}static randInt(t,e){return t+Math.floor(Math.random()*(e-t+1))}}class l{constructor(t=0,e=0,s=0){this.x=t,this.y=e,this.z=s}set(t,e,s){return this.x=t,this.y=e,this.z=s,this}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}clone(){return new this.constructor().copy(this)}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.x/=t,this.y/=t,this.z/=t,this}divideVectors(t,e){return this.x=t.x/e.x,this.y=t.y/e.y,this.z=t.z/e.z,this}reflect(t){return this.sub(a.copy(t).multiplyScalar(2*this.dot(t)))}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}cross(t){let e=this.x,s=this.y,i=this.z;return this.x=s*t.z-i*t.y,this.y=i*t.x-e*t.z,this.z=e*t.y-s*t.x,this}crossVectors(t,e){let s=t.x,i=t.y,r=t.z,n=e.x,h=e.y,o=e.z;return this.x=i*o-r*h,this.y=r*n-s*o,this.z=s*h-i*n,this}angleTo(t){let e=Math.sqrt(this.squaredLength()*t.squaredLength());if(0===e)return 0;let s=this.dot(t)/e;return Math.acos(o.clamp(s,-1,1))}length(){return Math.sqrt(this.squaredLength())}squaredLength(){return this.dot(this)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}distanceTo(t){return Math.sqrt(this.squaredDistanceTo(t))}squaredDistanceTo(t){let e=this.x-t.x,s=this.y-t.y,i=this.z-t.z;return e*e+s*s+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}normalize(){return this.divideScalar(this.length()||1)}applyMatrix4(t){let e=this.x,s=this.y,i=this.z,r=t.elements,n=1/(r[3]*e+r[7]*s+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*s+r[8]*i+r[12])*n,this.y=(r[1]*e+r[5]*s+r[9]*i+r[13])*n,this.z=(r[2]*e+r[6]*s+r[10]*i+r[14])*n,this}applyRotation(t){let e=this.x,s=this.y,i=this.z,r=t.x,n=t.y,h=t.z,o=t.w,l=o*e+n*i-h*s,a=o*s+h*e-r*i,u=o*i+r*s-n*e,c=-r*e-n*s-h*i;return this.x=l*o+-(c*r)+-(a*h)- -(u*n),this.y=a*o+-(c*n)+-(u*r)- -(l*h),this.z=u*o+-(c*h)+-(l*n)- -(a*r),this}
1extractPositionFromMatrix(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}transformDirection(t){let e=this.x,s=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*s+r[8]*i,this.y=r[1]*e+r[5]*s+r[9]*i,this.z=r[2]*e+r[6]*s+r[10]*i,this.normalize()}fromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}fromMatrix4Column(t,e){return this.fromArray(t.elements,4*e)}fromSpherical(t,e,s){let i=Math.sin(e)*t;return this.x=i*Math.sin(s),this.y=Math.cos(e)*t,this.z=i*Math.cos(s),this}fromArray(t,e=0){return this.x=t[e+0],this.y=t[e+1],this.z=t[e+2],this}toArray(t,e=0){return t[e+0]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}}let a=new l,u=new l(0,1,0),c=new l,d=new l,m=new l,p=new l,f=[2,2,1],g=[1,0,0];class x{constructor(){this.elements=[1,0,0,0,1,0,0,0,1]}set(t,e,s,i,r,n,h,o,l){let a=this.elements;return a[0]=t,a[3]=e,a[6]=s,a[1]=i,a[4]=r,a[7]=n,a[2]=h,a[5]=o,a[8]=l,this}copy(t){let e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],this}clone(){return new this.constructor().copy(this)}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let s=t.elements,i=e.elements,r=this.elements,n=s[0],h=s[3],o=s[6],l=s[1],a=s[4],u=s[7],c=s[2],d=s[5],m=s[8],p=i[0],f=i[3],g=i[6],x=i[1],y=i[4],z=i[7],w=i[2],M=i[5],S=i[8];return r[0]=n*p+h*x+o*w,r[3]=n*f+h*y+o*M,r[6]=n*g+h*z+o*S,r[1]=l*p+a*x+u*w,r[4]=l*f+a*y+u*M,r[7]=l*g+a*z+u*S,r[2]=c*p+d*x+m*w,r[5]=c*f+d*y+m*M,r[8]=c*g+d*z+m*S,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}extractBasis(t,e,s){return t.fromMatrix3Column(this,0),e.fromMatrix3Column(this,1),s.fromMatrix3Column(this,2),this}makeBasis(t,e,s){return this.set(t.x,e.x,s.x,t.y,e.y,s.y,t.z,e.z,s.z),this}lookAt(t,e,s){return c.crossVectors(s,t).normalize(),d.crossVectors(u,e).normalize(),0===d.squaredLength()&&(p.copy(e).addScalar(Number.EPSILON),d.crossVectors(u,p).normalize()),m.crossVectors(e,d).normalize(),y.makeBasis(d,m,e),z.makeBasis(c,s,t),this.multiplyMatrices(y,z.transpose()),this}transpose(){let t;let e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getElementIndex(t,e){return 3*t+e}frobeniusNorm(){let t=this.elements,e=0;for(let s=0;s<9;s++)e+=t[s]*t[s];return Math.sqrt(e)}offDiagonalFrobeniusNorm(){let t=this.elements,e=0;for(let s=0;s<3;s++){let i=t[this.getElementIndex(f[s],g[s])];e+=2*i*i}return Math.sqrt(e)}eigenDecomposition(t){let e=0,s=0;t.unitary.identity(),t.diagonal.copy(this);let i=t.unitary,r=t.diagonal,n=Number.EPSILON*r.frobeniusNorm();for(;s<10&&r.offDiagonalFrobeniusNorm()>n;)r.shurDecomposition(y),z.copy(y).transpose(),r.multiply(y),r.premultiply(z),i.multiply(y),++e>2&&(s++,e=0);return t}shurDecomposition(t){let e=0,s=1,i=this.elements;for(let t=0;t<3;t++){let r=Math.abs(i[this.getElementIndex(f[t],g[t])]);r>e&&(e=r,s=t)}let r=1,n=0,h=g[s],o=f[s];if(Math.abs(i[this.getElementIndex(o,h)])>Number.EPSILON){let t;let e=(i[this.getElementIndex(o,o)]-i[this.getElementIndex(h,h)])/2/i[this.getElementIndex(o,h)];r=1/Math.sqrt(1+(t=e<0?-1/(-e+Math.sqrt(1+e*e)):1/(e+Math.sqrt(1+e*e)))*t),n=t*r}return t.identity(),t.elements[this.getElementIndex(h,h)]=r,t.elements[this.getElementIndex(o,o)]=r,t.elements[this.getElementIndex(o,h)]=n,t.elements[this.getElementIndex(h,o)]=-n,t}fromQuaternion(t){let e=this.elements,s=t.x,i=t.y,r=t.z,n=t.w,h=s+s,o=i+i,l=r+r,a=s*h,u=s*o,c=s*l,d=i*o,m=i*l,p=r*l,f=n*h,g=n*o,x=n*l;return e[0]=1-(d+p),e[3]=u-x,e[6]=c+g,e[1]=u+x,e[4]=1-(a+p),e[7]=m-f,e[2]=c-g,e[5]=m+f,e[8]=1-(a+d),this}fromMatrix4(t){let e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[4],e[4]=s[5],e[5]=s[6],e[6]=s[8],e[7]=s[9],e[8]=s[10],this}fromArray(t,e=0){let s=this.elements;for(let i=0;i<9;i++)s[i]=t[i+e];return this}toArray(t,e=0){let s=this.elements;return t[e+0]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t}equals(t){let e=this.elements,s=t.elements;for(let t=0;t<9;t++)if(e[t]!==s[t])return!1;return!0}}let y=new x,z=new x,w=new x,M=new l;class S{constructor(t=0,e=0,s=0,i=1){this.x=t,this.y=e,this.z=s,this.w=i}set(t,e,s,i){return this.x=t,this.y=e,this.z=s,this.w=i,this}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w,this}clone(){return new this.constructor().copy(this)}inverse(){return this.conjugate().normalize()}conjugate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}length(){return Math.sqrt(this.squaredLength())}squaredLength(){return this.dot(this)}normalize(){let t=this.length();return 0===t?(this.x=0,this.y=0,this.z=0,this.w=1):(t=1/t,this.x=this.x*t,this.y=this.y*t,this.z=this.z*t,this.w=this.w*t),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let s=t.x,i=t.y,r=t.z,n=t.w,h=e.x,o=e.y,l=e.z,a=e.w;return this.x=s*a+n*h+i*l-r*o,this.y=i*a+n*o+r*h-s*l,this.z=r*a+n*l+s*o-i*h,this.w=n*a-s*h-i*o-r*l,this}angleTo(t){return 2*Math.acos(Math.abs(o.clamp(this.dot(t),-1,1)))}rotateTo(t,e,s=1e-4){let i=this.angleTo(t);if(i<s)return!0;let r=Math.min(1,e/i);return this.slerp(t,r),!1}lookAt(t,e,s){w.lookAt(t,e,s),this.fromMatrix3(w)}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);let s=this.x,i=this.y,r=this.z,n=this.w,h=n*t.w+s*t.x+i*t.y+r*t.z;if(h<0?(this.w=-t.w,this.x=-t.x,this.y=-t.y,this.z=-t.z,h=-h):this.copy(t),h>=1)return this.w=n,this.x=s,this.y=i,this.z=r,this;let o=Math.sqrt(1-h*h);if(.001>Math.abs(o))return this.w=.5*(n+this.w),this.x=.5*(s+this.x),this.y=.5*(i+this.y),this.z=.5*(r+this.z),this;let l=Math.atan2(o,h),a=Math.sin((1-e)*l)/o,u=Math.sin(e*l)/o;return this.w=n*a+this.w*u,this.x=s*a+this.x*u,this.y=i*a+this.y*u,this.z=r*a+this.z*u,this}
1extractRotationFromMatrix(t){let e=w.elements,s=t.elements,i=1/M.fromMatrix4Column(t,0).length(),r=1/M.fromMatrix4Column(t,1).length(),n=1/M.fromMatrix4Column(t,2).length();return e[0]=s[0]*i,e[1]=s[1]*i,e[2]=s[2]*i,e[3]=s[4]*r,e[4]=s[5]*r,e[5]=s[6]*r,e[6]=s[8]*n,e[7]=s[9]*n,e[8]=s[10]*n,this.fromMatrix3(w),this}fromEuler(t,e,s){let i=Math.cos(e/2),r=Math.cos(t/2),n=Math.cos(s/2),h=Math.sin(e/2),o=Math.sin(t/2),l=Math.sin(s/2);return this.w=i*r*n+h*o*l,this.x=i*o*n+h*r*l,this.y=h*r*n-i*o*l,this.z=i*r*l-h*o*n,this}toEuler(t){let e=-2*(this.y*this.z-this.x*this.w);return Math.abs(e)>.9999?(t.x=.5*Math.PI*e,t.y=Math.atan2(this.x*this.z+this.w*this.y,.5-this.x*this.x-this.y*this.y),t.z=0):(t.x=Math.asin(e),t.y=Math.atan2(this.x*this.z+this.w*this.y,.5-this.x*this.x-this.y*this.y),t.z=Math.atan2(this.x*this.y+this.w*this.z,.5-this.x*this.x-this.z*this.z)),t}fromMatrix3(t){let e=t.elements,s=e[0],i=e[3],r=e[6],n=e[1],h=e[4],o=e[7],l=e[2],a=e[5],u=e[8],c=s+h+u;if(c>0){let t=.5/Math.sqrt(c+1);this.w=.25/t,this.x=(a-o)*t,this.y=(r-l)*t,this.z=(n-i)*t}else if(s>h&&s>u){let t=2*Math.sqrt(1+s-h-u);this.w=(a-o)/t,this.x=.25*t,this.y=(i+n)/t,this.z=(r+l)/t}else if(h>u){let t=2*Math.sqrt(1+h-s-u);this.w=(r-l)/t,this.x=(i+n)/t,this.y=.25*t,this.z=(o+a)/t}else{let t=2*Math.sqrt(1+u-s-h);this.w=(n-i)/t,this.x=(r+l)/t,this.y=(o+a)/t,this.z=.25*t}return this}fromArray(t,e=0){return this.x=t[e+0],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t,e=0){return t[e+0]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}}class O{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(t,e,s,i,r,n,h,o,l,a,u,c,d,m,p,f){let g=this.elements;return g[0]=t,g[4]=e,g[8]=s,g[12]=i,g[1]=r,g[5]=n,g[9]=h,g[13]=o,g[2]=l,g[6]=a,g[10]=u,g[14]=c,g[3]=d,g[7]=m,g[11]=p,g[15]=f,this}copy(t){let e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],e[9]=s[9],e[10]=s[10],e[11]=s[11],e[12]=s[12],e[13]=s[13],e[14]=s[14],e[15]=s[15],this}clone(){return new this.constructor().copy(this)}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let s=t.elements,i=e.elements,r=this.elements,n=s[0],h=s[4],o=s[8],l=s[12],a=s[1],u=s[5],c=s[9],d=s[13],m=s[2],p=s[6],f=s[10],g=s[14],x=s[3],y=s[7],z=s[11],w=s[15],M=i[0],S=i[4],O=i[8],b=i[12],v=i[1],_=i[5],N=i[9],A=i[13],E=i[2],T=i[6],P=i[10],V=i[14],C=i[3],D=i[7],q=i[11],k=i[15];return r[0]=n*M+h*v+o*E+l*C,r[4]=n*S+h*_+o*T+l*D,r[8]=n*O+h*N+o*P+l*q,r[12]=n*b+h*A+o*V+l*k,r[1]=a*M+u*v+c*E+d*C,r[5]=a*S+u*_+c*T+d*D,r[9]=a*O+u*N+c*P+d*q,r[13]=a*b+u*A+c*V+d*k,r[2]=m*M+p*v+f*E+g*C,r[6]=m*S+p*_+f*T+g*D,r[10]=m*O+p*N+f*P+g*q,r[14]=m*b+p*A+f*V+g*k,r[3]=x*M+y*v+z*E+w*C,r[7]=x*S+y*_+z*T+w*D,r[11]=x*O+y*N+z*P+w*q,r[15]=x*b+y*A+z*V+w*k,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}extractBasis(t,e,s){return t.fromMatrix4Column(this,0),e.fromMatrix4Column(this,1),s.fromMatrix4Column(this,2),this}makeBasis(t,e,s){return this.set(t.x,e.x,s.x,0,t.y,e.y,s.y,0,t.z,e.z,s.z,0,0,0,0,1),this}compose(t,e,s){return this.fromQuaternion(e),this.scale(s),this.setPosition(t),this}scale(t){let e=this.elements,s=t.x,i=t.y,r=t.z;return e[0]*=s,e[4]*=i,e[8]*=r,e[1]*=s,e[5]*=i,e[9]*=r,e[2]*=s,e[6]*=i,e[10]*=r,e[3]*=s,e[7]*=i,e[11]*=r,this}setPosition(t){let e=this.elements;return e[12]=t.x,e[13]=t.y,e[14]=t.z,this}transpose(){let t;let e=this.elements;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}getInverse(t){let e=this.elements,s=t.elements,i=e[0],r=e[1],n=e[2],h=e[3],o=e[4],l=e[5],a=e[6],u=e[7],c=e[8],d=e[9],m=e[10],p=e[11],f=e[12],g=e[13],x=e[14],y=e[15],z=d*x*u-g*m*u+g*a*p-l*x*p-d*a*y+l*m*y,w=f*m*u-c*x*u-f*a*p+o*x*p+c*a*y-o*m*y,M=c*g*u-f*d*u+f*l*p-o*g*p-c*l*y+o*d*y,S=f*d*a-c*g*a-f*l*m+o*g*m+c*l*x-o*d*x,O=i*z+r*w+n*M+h*S;if(0===O)return t.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let b=1/O;return s[0]=z*b,s[1]=(g*m*h-d*x*h-g*n*p+r*x*p+d*n*y-r*m*y)*b,s[2]=(l*x*h-g*a
1*h+g*n*u-r*x*u-l*n*y+r*a*y)*b,s[3]=(d*a*h-l*m*h-d*n*u+r*m*u+l*n*p-r*a*p)*b,s[4]=w*b,s[5]=(c*x*h-f*m*h+f*n*p-i*x*p-c*n*y+i*m*y)*b,s[6]=(f*a*h-o*x*h-f*n*u+i*x*u+o*n*y-i*a*y)*b,s[7]=(o*m*h-c*a*h+c*n*u-i*m*u-o*n*p+i*a*p)*b,s[8]=M*b,s[9]=(f*d*h-c*g*h-f*r*p+i*g*p+c*r*y-i*d*y)*b,s[10]=(o*g*h-f*l*h+f*r*u-i*g*u-o*r*y+i*l*y)*b,s[11]=(c*l*h-o*d*h-c*r*u+i*d*u+o*r*p-i*l*p)*b,s[12]=S*b,s[13]=(c*g*n-f*d*n+f*r*m-i*g*m-c*r*x+i*d*x)*b,s[14]=(f*l*n-o*g*n-f*r*a+i*g*a+o*r*x-i*l*x)*b,s[15]=(o*d*n-c*l*n+c*r*a-i*d*a-o*r*m+i*l*m)*b,t}getMaxScale(){let t=this.elements;return Math.sqrt(Math.max(t[0]*t[0]+t[1]*t[1]+t[2]*t[2],t[4]*t[4]+t[5]*t[5]+t[6]*t[6],t[8]*t[8]+t[9]*t[9]+t[10]*t[10]))}fromQuaternion(t){let e=this.elements,s=t.x,i=t.y,r=t.z,n=t.w,h=s+s,o=i+i,l=r+r,a=s*h,u=s*o,c=s*l,d=i*o,m=i*l,p=r*l,f=n*h,g=n*o,x=n*l;return e[0]=1-(d+p),e[4]=u-x,e[8]=c+g,e[1]=u+x,e[5]=1-(a+p),e[9]=m-f,e[2]=c-g,e[6]=m+f,e[10]=1-(a+d),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}fromMatrix3(t){let e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=0,e[4]=s[3],e[5]=s[4],e[6]=s[5],e[7]=0,e[8]=s[6],e[9]=s[7],e[10]=s[8],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}fromArray(t,e=0){let s=this.elements;for(let i=0;i<16;i++)s[i]=t[i+e];return this}toArray(t,e=0){let s=this.elements;return t[e+0]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t[e+9]=s[9],t[e+10]=s[10],t[e+11]=s[11],t[e+12]=s[12],t[e+13]=s[13],t[e+14]=s[14],t[e+15]=s[15],t}equals(t){let e=this.elements,s=t.elements;for(let t=0;t<16;t++)if(e[t]!==s[t])return!1;return!0}}new S,new l,new l,new S,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l;let b=new l,v=new l,_=new l,N=[new l,new l,new l,new l,new l,new l,new l,new l];class A{constructor(t=new l,e=new l){this.min=t,this.max=e}set(t,e){return this.min=t,this.max=e,this}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}clone(){return new this.constructor().copy(this)}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max),e}containsPoint(t){return!(t.x<this.min.x)&&!(t.x>this.max.x)&&!(t.y<this.min.y)&&!(t.y>this.max.y)&&!(t.z<this.min.z)&&!(t.z>this.max.z)}expand(t){return this.min.min(t),this.max.max(t),this}getCenter(t){return t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return t.subVectors(this.max,this.min)}intersectsAABB(t){return!(t.max.x<this.min.x)&&!(t.min.x>this.max.x)&&!(t.max.y<this.min.y)&&!(t.min.y>this.max.y)&&!(t.max.z<this.min.z)&&!(t.min.z>this.max.z)}intersectsBoundingSphere(t){return this.clampPoint(t.center,b),b.squaredDistanceTo(t.center)<=t.radius*t.radius}intersectsPlane(t){let e=t.normal;this.getCenter(v),_.subVectors(this.max,v);let s=_.x*Math.abs(e.x)+_.y*Math.abs(e.y)+_.z*Math.abs(e.z);return Math.abs(t.distanceToPoint(v))<=s}getNormalFromSurfacePoint(t,e){let s;e.set(0,0,0);let i=1/0;return this.getCenter(v),this.getSize(_),b.copy(t).sub(v),(s=Math.abs(_.x-Math.abs(b.x)))<i&&(i=s,e.set(1*Math.sign(b.x),0,0)),(s=Math.abs(_.y-Math.abs(b.y)))<i&&(i=s,e.set(0,1*Math.sign(b.y),0)),(s=Math.abs(_.z-Math.abs(b.z)))<i&&e.set(0,0,1*Math.sign(b.z)),e}fromCenterAndSize(t,e){return b.copy(e).multiplyScalar(.5),this.min.copy(t).sub(b),this.max.copy(t).add(b),this}fromPoints(t){this.min.set(1/0,1/0,1/0),this.max.set(-1/0,-1/0,-1/0);for(let e=0,s=t.length;e<s;e++)this.expand(t[e]);return this}applyMatrix4(t){let e=this.min,s=this.max;return N[0].set(e.x,e.y,e.z).applyMatrix4(t),N[1].set(e.x,e.y,s.z).applyMatrix4(t),N[2].set(e.x,s.y,e.z).applyMatrix4(t),N[3].set(e.x,s.y,s.z).applyMatrix4(t),N[4].set(s.x,e.y,e.z).applyMatrix4(t),N[5].set(s.x,e.y,s.z).applyMatrix4(t),N[6].set(s.x,s.y,e.z).applyMatrix4(t),N[7].set(s.x,s.y,s.z).applyMatrix4(t),this.fromPoints(N)}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}toJSON(){return{type:this.constructor.name,min:this.min.toArray([]),max:this.max.toArray([])}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}}let E=new A;class T{constructor(t=new l,e=0){this.center=t,this.radius=e}set(t,e){return this.center=t,this.radius=e,this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}clone(){return new this.constructor().copy(this)}clampPoint(t,e){return e.copy(t),this.center.squaredDistanceTo(t)>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}containsPoint(t){return t.squaredDistanceTo(this.center)<=this.radius*this.radius}intersectsBoundingSphere(t){let e=this.radius+t.radius;return t.center.squaredDistanceTo(this.center)<=e*e}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}getNormalFromSurfacePoint(t,e){return e.subVectors(t,this.center).normalize()}fromPoints(t){return E.fromPoints(t),E.getCenter(this.center),this.radius=this.center.distanceTo(E.max),this}
1applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScale(),this}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}toJSON(){return{type:this.constructor.name,center:this.center.toArray([]),radius:this.radius}}fromJSON(t){return this.center.fromArray(t.center),this.radius=t.radius,this}}let P=new l,V=new l,C=new l,D=new l,q=new l,k=new O,F=new O,J=new A;class B{constructor(t=new l,e=new l){this.origin=t,this.direction=e}set(t,e){return this.origin=t,this.direction=e,this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}clone(){return new this.constructor().copy(this)}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}intersectBoundingSphere(t,e){P.subVectors(t.center,this.origin);let s=P.dot(this.direction),i=P.dot(P)-s*s,r=t.radius*t.radius;if(i>r)return null;let n=Math.sqrt(r-i),h=s-n,o=s+n;return h<0&&o<0?null:h<0?this.at(o,e):this.at(h,e)}intersectsBoundingSphere(t){let e;let s=new l,i=s.subVectors(t.center,this.origin).dot(this.direction);return i<0?e=this.origin.squaredDistanceTo(t.center):(s.copy(this.direction).multiplyScalar(i).add(this.origin),e=s.squaredDistanceTo(t.center)),e<=t.radius*t.radius}intersectAABB(t,e){let s,i,r,n,h,o;let l=1/this.direction.x,a=1/this.direction.y,u=1/this.direction.z,c=this.origin;return(l>=0?(s=(t.min.x-c.x)*l,i=(t.max.x-c.x)*l):(s=(t.max.x-c.x)*l,i=(t.min.x-c.x)*l),a>=0?(r=(t.min.y-c.y)*a,n=(t.max.y-c.y)*a):(r=(t.max.y-c.y)*a,n=(t.min.y-c.y)*a),s>n||r>i)?null:((r>s||s!=s)&&(s=r),(n<i||i!=i)&&(i=n),u>=0?(h=(t.min.z-c.z)*u,o=(t.max.z-c.z)*u):(h=(t.max.z-c.z)*u,o=(t.min.z-c.z)*u),s>o||h>i)?null:((h>s||s!=s)&&(s=h),(o<i||i!=i)&&(i=o),i<0)?null:this.at(s>=0?s:i,e)}intersectsAABB(t){return null!==this.intersectAABB(t,P)}intersectPlane(t,e){let s;let i=t.normal.dot(this.direction);if(0===i){if(0!==t.distanceToPoint(this.origin))return null;s=0}else s=-(this.origin.dot(t.normal)+t.constant)/i;return s>=0?this.at(s,e):null}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return!!(0===e||t.normal.dot(this.direction)*e<0)}intersectOBB(t,e){return(t.getSize(q),J.fromCenterAndSize(P.set(0,0,0),q),k.fromMatrix3(t.rotation),k.setPosition(t.center),R.copy(this).applyMatrix4(k.getInverse(F)),R.intersectAABB(J,e))?e.applyMatrix4(k):null}intersectsOBB(t){return null!==this.intersectOBB(t,P)}intersectConvexHull(t,e){let s=t.faces,i=-1/0,r=1/0;for(let t=0,e=s.length;t<e;t++){let e=s[t].plane,n=e.distanceToPoint(this.origin),h=e.normal.dot(this.direction);if(n>0&&h>=0)return null;let o=0!==h?-n/h:0;if(!(o<=0)&&(h>0?r=Math.min(o,r):i=Math.max(o,i),i>r))return null}return i!==-1/0?this.at(i,e):this.at(r,e),e}intersectsConvexHull(t){return null!==this.intersectConvexHull(t,P)}intersectTriangle(t,e,s){let i;let r=t.a,n=t.b,h=t.c;V.subVectors(n,r),C.subVectors(h,r),D.crossVectors(V,C);let o=this.direction.dot(D);if(o>0){if(e)return null;i=1}else{if(!(o<0))return null;i=-1,o=-o}P.subVectors(this.origin,r);let l=i*this.direction.dot(C.crossVectors(P,C));if(l<0)return null;let a=i*this.direction.dot(V.cross(P));if(a<0||l+a>o)return null;let u=-i*P.dot(D);return u<0?null:this.at(u/o,s)}intersectBVH(t,e){return t.root.intersectRay(this,e)}intersectsBVH(t){return t.root.intersectsRay(this)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}}let R=new B;new O,new l,new l,new l,new T,new B(new l(0,0,0),new l(0,0,1)),new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new l,new T,new l,new T;let I=new l,U=new l,L=new l;class H{constructor(t=new l(0,0,1),e=0){this.normal=t,this.constant=e}set(t,e){return this.normal=t,this.constant=e,this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}clone(){return new this.constructor().copy(this)}distanceToPoint(t){return this.normal.dot(t)+this.constant}fromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}fromCoplanarPoints(t,e,s){return I.subVectors(s,e).cross(U.subVectors(t,e)).normalize(),this.fromNormalAndCoplanarPoint(I,t),this}intersectPlane(t,e){L.crossVectors(this.normal,t.normal);let s=L.dot(L);
1return 0===s?null:(I.copy(t.normal).multiplyScalar(this.constant),U.copy(this.normal).multiplyScalar(t.constant),e.crossVectors(I.sub(U),L).divideScalar(s),e)}intersectsPlane(t){return 1!==Math.abs(this.normal.dot(t.normal))}projectPoint(t,e){return I.copy(this.normal).multiplyScalar(this.distanceToPoint(t)),e.subVectors(t,I),e}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}}new T,new l,new l,new l,new B,new H,new O,new l,new l,new l,new l;class Y{clearDegreeOfMembership(){}getDegreeOfMembership(){}updateDegreeOfMembership(){}toJSON(){return{type:this.constructor.name}}}class j extends Y{constructor(t=[]){super(),this.terms=t}clearDegreeOfMembership(){let t=this.terms;for(let e=0,s=t.length;e<s;e++)t[e].clearDegreeOfMembership();return this}updateDegreeOfMembership(t){let e=this.terms;for(let s=0,i=e.length;s<i;s++)e[s].updateDegreeOfMembership(t);return this}toJSON(){let t=super.toJSON();t.terms=[];for(let e=0,s=this.terms.length;e<s;e++){let s=this.terms[e];s instanceof j?t.terms.push(s.toJSON()):t.terms.push(s.uuid)}return t}}class K extends j{constructor(){let t=Array.from(arguments);super(t)}getDegreeOfMembership(){let t=this.terms,e=1/0;for(let s=0,i=t.length;s<i;s++){let i=t[s].getDegreeOfMembership();i<e&&(e=i)}return e}}class Q extends j{constructor(t=null){super(null!==t?[t]:[])}clearDegreeOfMembership(){return this.terms[0].clearDegreeOfMembership(),this}getDegreeOfMembership(){return Math.sqrt(this.terms[0].getDegreeOfMembership())}updateDegreeOfMembership(t){return this.terms[0].updateDegreeOfMembership(Math.sqrt(t)),this}}class Z extends j{constructor(){let t=Array.from(arguments);super(t)}getDegreeOfMembership(){let t=this.terms,e=-1/0;for(let s=0,i=t.length;s<i;s++){let i=t[s].getDegreeOfMembership();i>e&&(e=i)}return e}}class W extends j{constructor(t=null){super(null!==t?[t]:[])}clearDegreeOfMembership(){return this.terms[0].clearDegreeOfMembership(),this}getDegreeOfMembership(){let t=this.terms[0].getDegreeOfMembership();return t*t}updateDegreeOfMembership(t){return this.terms[0].updateDegreeOfMembership(t*t),this}}class X extends Y{constructor(t=0){super(),this.degreeOfMembership=0,this.representativeValue=t,this.left=0,this.right=0,this._uuid=null}get uuid(){return null===this._uuid&&(this._uuid=o.generateUUID()),this._uuid}computeDegreeOfMembership(){}clearDegreeOfMembership(){return this.degreeOfMembership=0,this}getDegreeOfMembership(){return this.degreeOfMembership}updateDegreeOfMembership(t){return t>this.degreeOfMembership&&(this.degreeOfMembership=t),this}toJSON(){let t=super.toJSON();return t.degreeOfMembership=this.degreeOfMembership,t.representativeValue=this.representativeValue,t.left=this.left,t.right=this.right,t.uuid=this.uuid,t}fromJSON(t){return this.degreeOfMembership=t.degreeOfMembership,this.representativeValue=t.representativeValue,this.left=t.left,this.right=t.right,this._uuid=t.uuid,this}}class G extends X{constructor(t=0,e=0,s=0){super((e+t)/2),this.left=t,this.midpoint=e,this.right=s}computeDegreeOfMembership(t){let e=this.midpoint,s=this.left,i=this.right;return t>=s&&t<=e?1:t>e&&t<=i?1/(i-e)*(i-t):0}toJSON(){let t=super.toJSON();return t.midpoint=this.midpoint,t}fromJSON(t){return super.fromJSON(t),this.midpoint=t.midpoint,this}}class $ extends X{constructor(t=0,e=0,s=0){super((e+s)/2),this.left=t,this.midpoint=e,this.right=s}computeDegreeOfMembership(t){let e=this.midpoint,s=this.left,i=this.right;return t>=s&&t<=e?1/(e-s)*(t-s):t>e&&t<=i?1:0}toJSON(){let t=super.toJSON();return t.midpoint=this.midpoint,t}fromJSON(t){return super.fromJSON(t),this.midpoint=t.midpoint,this}}class tt extends X{constructor(t=0,e=0,s=0){super(e),this.left=t,this.midpoint=e,this.right=s}computeDegreeOfMembership(t){let e=this.left,s=this.right;return t>=e&&t<=s?1:0}toJSON(){let t=super.toJSON();return t.midpoint=this.midpoint,t}fromJSON(t){return super.fromJSON(t),this.midpoint=t.midpoint,this}}class te extends X{constructor(t=0,e=0,s=0){super(e),this.left=t,this.midpoint=e,this.right=s}computeDegreeOfMembership(t){let e=this.midpoint,s=this.left,i=this.right;return t>=s&&t<=e?1/(e-s)*(t-s):t>e&&t<=i?1/(i-e)*(i-t):0}toJSON(){let t=super.toJSON();return t.midpoint=this.midpoint,t}fromJSON(t){return super.fromJSON(t),this.midpoint=t.midpoint,this}}class ts{constructor(t=null,e=null){this.antecedent=t,this.consequence=e}initConsequence(){return this.consequence.clearDegreeOfMembership(),this}evaluate(){return this.consequence.updateDegreeOfMembership(this.antecedent.getDegreeOfMembership()),this}toJSON(){let t={},e=this.antecedent,s=this.consequence;return t.type=this.constructor.name,t.antecedent=e instanceof j?e.toJSON():e.uuid,t.consequence=s instanceof j?s.toJSON():s.uuid,t}fromJSON(t,e){function s(t){if("string"==typeof t)return e.get(t)||null;{let e;let i=t.type;switch(i){case"FuzzyAND":e=new K;break;case"FuzzyOR":e=new Z;break;case"FuzzyVERY":e=new W;break;case"FuzzyFAIRLY":e=new Q;break;default:r.error("YUKA.FuzzyRule: Unsupported operator type:",i);return}let n=t.terms;for(let t=0,i=n.length;t<i;t++)e.terms.push(s(n[t]));return e}}return this.antecedent=s(t.antecedent),this.consequence=s(t.consequence),this}}class ti{constructor(){this.fuzzySets=[],this.minRange=1/0,this.maxRange=-1/0}add(t){return this.fuzzySets.push(t),t.left<this.minRange&&(this.minRange=t.left),t.right>this.maxRange&&(this.maxRange=t.right),this}remove(t){let e=this.fuzzySets,s=e.indexOf(t);e.splice(s,1),this.minRange=1/0,this.maxRange=-1/0;for(let t=0,s=e.length;t<s;t++){let s=e[t];s.left<this.minRange&&(this.minRange=s.left),s.right>this.maxRange&&(this.maxRange=s.right)}return this}fuzzify(t){if(t<this.minRange||t>this.maxRange){r.warn("YUKA.FuzzyVariable: Value for fuzzification out of range.");return}let e=this.fuzzySets;for(let s=0,i=e.length;s<i;s++){let i=e[s];i.degreeOfMembership=i.computeDegreeOfMembership(t)}return this}defuzzifyMaxAv(){let t=this.fuzzySets,e=0,s=0;for(let i=0,r=t.length;i<r;i++){let r=t[i];e+=r.degreeOfMembership,s+=r.representativeValue*r.degreeOfMembership}return 0===e?0:s/e}
1defuzzifyCentroid(t=10){let e=this.fuzzySets,s=(this.maxRange-this.minRange)/t,i=0,r=0;for(let n=1;n<=t;n++){let t=this.minRange+n*s;for(let s=0,n=e.length;s<n;s++){let n=e[s],h=Math.min(n.degreeOfMembership,n.computeDegreeOfMembership(t));i+=h,r+=t*h}}return 0===i?0:r/i}toJSON(){let t={type:this.constructor.name,fuzzySets:[],minRange:this.minRange.toString(),maxRange:this.maxRange.toString()};for(let e=0,s=this.fuzzySets.length;e<s;e++){let s=this.fuzzySets[e];t.fuzzySets.push(s.toJSON())}return t}fromJSON(t){this.minRange=parseFloat(t.minRange),this.maxRange=parseFloat(t.maxRange);for(let e=0,s=t.fuzzySets.length;e<s;e++){let s=t.fuzzySets[e];switch(s.type){case"LeftShoulderFuzzySet":this.fuzzySets.push(new G().fromJSON(s));break;case"RightShoulderFuzzySet":this.fuzzySets.push(new $().fromJSON(s));break;case"SingletonFuzzySet":this.fuzzySets.push(new tt().fromJSON(s));break;case"TriangularFuzzySet":this.fuzzySets.push(new te().fromJSON(s));break;default:r.error("YUKA.FuzzyVariable: Unsupported fuzzy set type:",s.type)}}return this}}class tr{constructor(){this.rules=[],this.flvs=new Map}addFLV(t,e){return this.flvs.set(t,e),this}removeFLV(t){return this.flvs.delete(t),this}addRule(t){return this.rules.push(t),this}removeRule(t){let e=this.rules,s=e.indexOf(t);return e.splice(s,1),this}fuzzify(t,e){return this.flvs.get(t).fuzzify(e),this}defuzzify(t,e=tr.DEFUZ_TYPE.MAXAV){let s;let i=this.flvs,n=this.rules;this._initConsequences();for(let t=0,e=n.length;t<e;t++)n[t].evaluate();let h=i.get(t);switch(e){case tr.DEFUZ_TYPE.MAXAV:s=h.defuzzifyMaxAv();break;
1case tr.DEFUZ_TYPE.CENTROID:s=h.defuzzifyCentroid();break;default:r.warn("YUKA.FuzzyModule: Unknown defuzzification method:",e),s=h.defuzzifyMaxAv()}return s}_initConsequences(){let t=this.rules;for(let e=0,s=t.length;e<s;e++)t[e].initConsequence();return this}toJSON(){let t={rules:[],flvs:[]},e=this.rules;for(let s=0,i=e.length;s<i;s++)t.rules.push(e[s].toJSON());for(let[e,s]of this.flvs)t.flvs.push({name:e,flv:s.toJSON()});return t}fromJSON(t){let e=new Map,s=t.flvs;for(let t=0,i=s.length;t<i;t++){let i=s[t],r=i.name,n=new ti().fromJSON(i.flv);for(let t of(this.addFLV(r,n),n.fuzzySets))e.set(t.uuid,t)}let i=t.rules;for(let t=0,s=i.length;t<s;t++){let s=i[t],r=new ts().fromJSON(s,e);this.addRule(r)}return this}}tr.DEFUZ_TYPE=Object.freeze({MAXAV:0,CENTROID:1});class tn{constructor(t=null){this.owner=t,this.status=tn.STATUS.INACTIVE}activate(){}execute(){}terminate(){}handleMessage(){return!1}active(){return this.status===tn.STATUS.ACTIVE}inactive(){return this.status===tn.STATUS.INACTIVE}completed(){return this.status===tn.STATUS.COMPLETED}failed(){return this.status===tn.STATUS.FAILED}replanIfFailed(){return!0===this.failed()&&(this.status=tn.STATUS.INACTIVE),this}activateIfInactive(){return!0===this.inactive()&&(this.status=tn.STATUS.ACTIVE,this.activate()),this}toJSON(){return{type:this.constructor.name,owner:this.owner.uuid,status:this.status}}fromJSON(t){return this.owner=t.owner,this.status=t.status,this}resolveReferences(t){return this.owner=t.get(this.owner)||null,this}}tn.STATUS=Object.freeze({ACTIVE:"active",INACTIVE:"inactive",COMPLETED:"completed",FAILED:"failed"});class th{constructor(t=-1,e=-1,s=0){this.from=t,this.to=e,this.cost=s}copy(t){return this.from=t.from,this.to=t.to,this.cost=t.cost,this}clone(){return new this.constructor().copy(this)}toJSON(){return{type:this.constructor.name,from:this.from,to:this.to,cost:this.cost}}fromJSON(t){return this.from=t.from,this.to=t.to,this.cost=t.cost,this}}class to{constructor(t=-1){this.index=t}toJSON(){return{type:this.constructor.name,index:this.index}}fromJSON(t){return this.index=t.index,this}}class tl{constructor(){this.digraph=!1,this._nodes=new Map,this._edges=new Map}addNode(t){let e=t.index;return this._nodes.set(e,t),this._edges.set(e,[]),this}addEdge(t){if(this._edges.get(t.from).push(t),!1===this.digraph){let e=t.clone();e.from=t.to,e.to=t.from,this._edges.get(t.to).push(e)}return this}getNode(t){return this._nodes.get(t)||null}getEdge(t,e){if(this.hasNode(t)&&this.hasNode(e)){let s=this._edges.get(t);for(let t=0,i=s.length;t<i;t++){let i=s[t];if(i.to===e)return i}}return null}getNodes(t){return t.length=0,t.push(...this._nodes.values()),t}getEdgesOfNode(t,e){let s=this._edges.get(t);return void 0!==s&&(e.length=0,e.push(...s)),e}getNodeCount(){return this._nodes.size}getEdgeCount(){let t=0;for(let e of this._edges.values())t+=e.length;return t}removeNode(t){if(this._nodes.delete(t.index),!1===this.digraph)for(let e of this._edges.get(t.index)){let s=this._edges.get(e.to);for(let e=s.length-1;e>=0;e--){let i=s[e];if(i.to===t.index){let t=s.indexOf(i);s.splice(t,1);break}}}else for(let t of this._edges.values())for(let e=t.length-1;e>=0;e--){let s=t[e];if(!this.hasNode(s.to)||!this.hasNode(s.from)){let e=t.indexOf(s);t.splice(e,1)}}return this._edges.delete(t.index),this}removeEdge(t){let e=this._edges.get(t.from);if(void 0!==e){let s=e.indexOf(t);if(e.splice(s,1),!1===this.digraph){let e=this._edges.get(t.to);for(let s=0,i=e.length;s<i;s++){let i=e[s];if(i.to===t.from){let t=e.indexOf(i);e.splice(t,1);break}}}}return this}hasNode(t){return this._nodes.has(t)}hasEdge(t,e){if(!(this.hasNode(t)&&this.hasNode(e)))return!1;{let s=this._edges.get(t);for(let t=0,i=s.length;t<i;t++)if(s[t].to===e)return!0;return!1}}clear(){return this._nodes.clear(),this._edges.clear(),this}toJSON(){let t={type:this.constructor.name,digraph:this.digraph},e=[],s=[];for(let[t,i]of this._nodes.entries()){let r=[];this.getEdgesOfNode(t,r);for(let t=0,s=r.length;t<s;t++)e.push(r[t].toJSON());s.push(i.toJSON())}return t._edges=e,t._nodes=s,t}fromJSON(t){this.digraph=t.digraph;for(let e=0,s=t._nodes.length;e<s;e++)this.addNode(new to().fromJSON(t._nodes[e]));for(let e=0,s=t._edges.length;e<s;e++)this.addEdge(new th().fromJSON(t._edges[e]));return this}}class ta{static calculate(t,e,s){let i=t.getNode(e),r=t.getNode(s);return i.position.distanceTo(r.position)}}class tu{constructor(t=tc){this.data=[],this.length=0,this.compare=t}
1push(t){this.data.push(t),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return null;let t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}peek(){return this.data[0]||null}_up(t){let e=this.data,s=this.compare,i=e[t];for(;t>0;){let r=t-1>>1,n=e[r];if(s(i,n)>=0)break;e[t]=n,t=r}e[t]=i}_down(t){let e=this.data,s=this.compare,i=e[t],r=this.length>>1;for(;t<r;){let r=(t<<1)+1,n=r+1,h=e[r];if(n<this.length&&0>s(e[n],h)&&(r=n,h=e[n]),s(h,i)>=0)break;e[t]=h,t=r}e[t]=i}}function tc(t,e){return t<e?-1:t>e?1:0}class td{constructor(t=null,e=-1,s=-1){this.graph=t,this.source=e,this.target=s,this.found=!1,this.heuristic=ta,this._cost=new Map,this._shortestPathTree=new Map,this._searchFrontier=new Map}search(){let t=[],e=new tu(tm);for(e.push({cost:0,index:this.source});e.length>0;){let s=e.pop().index;if(!this._shortestPathTree.has(s)){if(!0===this._searchFrontier.has(s)&&this._shortestPathTree.set(s,this._searchFrontier.get(s)),s===this.target)return this.found=!0,this;this.graph.getEdgesOfNode(s,t);for(let i=0,r=t.length;i<r;i++){let r=t[i],n=(this._cost.get(s)||0)+r.cost,h=n+this.heuristic.calculate(this.graph,r.to,this.target);(!1===this._searchFrontier.has(r.to)||n<this._cost.get(r.to))&&(this._cost.set(r.to,n),this._searchFrontier.set(r.to,r),e.push({cost:h,index:r.to}))}}}return this.found=!1,this}getPath(){let t=[];if(!1===this.found||-1===this.target)return t;let e=this.target;for(t.push(e);e!==this.source;)t.unshift(e=this._shortestPathTree.get(e).from);return t}getSearchTree(){return[...this._shortestPathTree.values()]}clear(){return this.found=!1,this._cost.clear(),this._shortestPathTree.clear(),this._searchFrontier.clear(),this}}function tm(t,e){return t.cost<e.cost?-1:t.cost>e.cost?1:0}new l,new l,new l,new l(1,0,0),new l(0,1,0),new l(0,0,1),new l,new l,new l,new l;let tp=new l,tf=new l;class tg{constructor(t=new l,e=new l){this.from=t,this.to=e}set(t,e){return this.from=t,this.to=e,this}copy(t){return this.from.copy(t.from),this.to.copy(t.to),this}clone(){return new this.constructor().copy(this)}delta(t){return t.subVectors(this.to,this.from)}at(t,e){return this.delta(e).multiplyScalar(t).add(this.from)}closestPointToPoint(t,e,s){let i=this.closestPointToPointParameter(t,e);return this.at(i,s)}closestPointToPointParameter(t,e=!0){tp.subVectors(t,this.from),tf.subVectors(this.to,this.from);let s=tf.dot(tf),i=tf.dot(tp)/s;return e&&(i=o.clamp(i,0,1)),i}equals(t){return t.from.equals(this.from)&&t.to.equals(this.to)}}let tx=new l,ty=new l,tz=new l,tw=new l,tM=new l,tS=new l,tO=new l;class tb{intersects(t,e){return!(this._checkFaceDirections(t,e)||this._checkFaceDirections(e,t)||this._checkEdgeDirections(t,e))}_checkFaceDirections(t,e){let s=t.faces;for(let t=0,i=s.length;t<i;t++){let i=s[t].plane;ty.copy(i.normal).multiplyScalar(-1);let r=this._getSupportVertex(e,ty);if(i.distanceToPoint(r)>0)return!0}return!1}_checkEdgeDirections(t,e){let s=t.edges,i=e.edges;for(let e=0,r=s.length;e<r;e++){let r=s[e];for(let e=0,s=i.length;e<s;e++){let s=i[e];if(r.getDirection(tz),s.getDirection(tw),this._minkowskiFace(r,tz,s,tw)&&this._distanceBetweenEdges(r,tz,s,tw,t)>0)return!0}}return!1}_getSupportVertex(t,e){let s=-1/0,i=null,r=t.vertices;for(let t=0,n=r.length;t<n;t++){let n=r[t],h=n.dot(e);h>s&&(s=h,i=n)}return i}_minkowskiFace(t,e,s,i){let r=t.polygon.plane.normal,n=t.twin.polygon.plane.normal;tM.copy(s.polygon.plane.normal),tS.copy(s.twin.polygon.plane.normal),tM.multiplyScalar(-1),tS.multiplyScalar(-1);let h=tM.dot(e),o=tS.dot(e),l=r.dot(i),a=n.dot(i);return h*o<0&&l*a<0&&h*a>0}_distanceBetweenEdges(t,e,s,i,r){return 1===Math.abs(e.dot(i))?-1/0:(tx.crossVectors(e,i).normalize(),0>tx.dot(tO.subVectors(t.vertex,r.centroid))&&tx.multiplyScalar(-1),tx.dot(tO.subVectors(s.vertex,t.vertex)))}}class tv{constructor(t=new l){this.vertex=t,this.next=null,this.prev=null,this.twin=null,this.polygon=null}tail(){return this.prev?this.prev.vertex:null}head(){return this.vertex}length(){let t=this.tail(),e=this.head();return null!==t?t.distanceTo(e):-1}squaredLength(){let t=this.tail(),e=this.head();return null!==t?t.squaredDistanceTo(e):-1}linkOpponent(t){return this.twin=t,t.twin=this,this}getDirection(t){return t.subVectors(this.vertex,this.prev.vertex).normalize()}}class t_{constructor(){this.centroid=new l,this.edge=null,this.plane=new H}fromContour(t){let e=[];
1if(t.length<3)return r.error("YUKA.Polygon: Unable to create polygon from contour. It needs at least three points."),this;for(let s=0,i=t.length;s<i;s++){let i=new tv(t[s]);e.push(i)}for(let t=0,s=e.length;t<s;t++){let i,r,n;0===t?(i=e[t],r=e[s-1],n=e[t+1]):t===s-1?(i=e[t],r=e[t-1],n=e[0]):(i=e[t],r=e[t-1],n=e[t+1]),i.prev=r,i.next=n,i.polygon=this}return this.edge=e[0],this.plane.fromCoplanarPoints(t[0],t[1],t[2]),this}computeCentroid(){let t=this.centroid,e=this.edge,s=0;t.set(0,0,0);do t.add(e.vertex),s++,e=e.next;while(e!==this.edge);return t.divideScalar(s),this}contains(t,e=.001){let s=this.plane,i=this.edge;do{if(!1===tN(i.tail(),i.head(),t))return!1;i=i.next}while(i!==this.edge);return!(Math.abs(s.distanceToPoint(t))>e)}convex(t=!0){let e=this.edge;do{let s=e.tail(),i=e.head(),r=e.next.head();if(t){if(!1===tN(s,i,r))return!1}else if(!1===tN(r,i,s))return!1;e=e.next}while(e!==this.edge);return!0}coplanar(t=.001){let e=this.plane,s=this.edge;do{if(Math.abs(e.distanceToPoint(s.vertex))>t)return!1;s=s.next}while(s!==this.edge);return!0}distanceToPoint(t){return this.plane.distanceToPoint(t)}getContour(t){let e=this.edge;t.length=0;do t.push(e.vertex),e=e.next;while(e!==this.edge);return t}}function tN(t,e,s){return o.area(t,e,s)>=0}class tA{constructor(){this.faces=[],this.edges=[],this.vertices=[],this.centroid=new l}computeCentroid(){let t=this.centroid,e=this.faces;t.set(0,0,0);for(let s=0,i=e.length;s<i;s++){let i=e[s];t.add(i.centroid)}return t.divideScalar(e.length),this}computeUniqueVertices(){let t=this.faces,e=this.vertices;e.length=0;let s=new Set;for(let e=0,i=t.length;e<i;e++){let i=t[e],r=i.edge;do s.add(r.vertex),r=r.next;while(r!==i.edge)}return e.push(...s),this}computeUniqueEdges(){let t=this.faces,e=this.edges;e.length=0;for(let s=0,i=t.length;s<i;s++){let i=t[s],r=i.edge;do!1===e.includes(r.twin)&&e.push(r),r=r.next;while(r!==i.edge)}return this}fromAABB(t){this.faces.length=0,this.vertices.length=0;let e=t.min,s=t.max,i=[new l(s.x,s.y,s.z),new l(s.x,s.y,e.z),new l(s.x,e.y,s.z),new l(s.x,e.y,e.z),new l(e.x,s.y,s.z),new l(e.x,s.y,e.z),new l(e.x,e.y,s.z),new l(e.x,e.y,e.z)];this.vertices.push(...i);let r=new t_().fromContour([i[4],i[0],i[1],i[5]]),n=new t_().fromContour([i[2],i[3],i[1],i[0]]),h=new t_().fromContour([i[6],i[2],i[0],i[4]]),o=new t_().fromContour([i[3],i[7],i[5],i[1]]),a=new t_().fromContour([i[3],i[2],i[6],i[7]]),u=new t_().fromContour([i[7],i[6],i[4],i[5]]);return r.edge.linkOpponent(u.edge.prev),r.edge.next.linkOpponent(h.edge.prev),r.edge.next.next.linkOpponent(n.edge.prev),r.edge.prev.linkOpponent(o.edge.prev),a.edge.linkOpponent(o.edge.next),a.edge.next.linkOpponent(n.edge.next),a.edge.next.next.linkOpponent(h.edge.next),a.edge.prev.linkOpponent(u.edge.next),u.edge.linkOpponent(o.edge.next.next),o.edge.linkOpponent(n.edge.next.next),n.edge.linkOpponent(h.edge.next.next),h.edge.linkOpponent(u.edge.next.next),this.faces.push(r,n,h,o,a,u),r.computeCentroid(),n.computeCentroid(),h.computeCentroid(),o.computeCentroid(),a.computeCentroid(),u.computeCentroid(),t.getCenter(this.centroid),this.computeUniqueEdges(),this}}let tE=new tg,tT=new H,tP=new l,tV=new l(0,1,0),tC=new tb;class tD extends tA{constructor(){super(),this.mergeFaces=!0,this._tolerance=-1,this._vertices=[],this._assigned=new tF,this._unassigned=new tF}containsPoint(t){let e=this.faces;for(let s=0,i=e.length;s<i;s++)if(e[s].distanceToPoint(t)>this._tolerance)return!1;return!0}intersectsAABB(t){if(void 0===i)i=new tA().fromAABB(t);else{let e=t.min,s=t.max,r=i.vertices;r[0].set(s.x,s.y,s.z),r[1].set(s.x,s.y,e.z),r[2].set(s.x,e.y,s.z),r[3].set(s.x,e.y,e.z),r[4].set(e.x,s.y,s.z),r[5].set(e.x,s.y,e.z),r[6].set(e.x,e.y,s.z),r[7].set(e.x,e.y,e.z),t.getCenter(i.centroid)}return tC.intersects(this,i)}intersectsConvexHull(t){return tC.intersects(this,t)}fromPoints(t){if(t.length<4)return r.error("YUKA.ConvexHull: The given points array needs at least four points."),this;for(let e=0,s=t.length;e<s;e++)this._vertices.push(new tk(t[e]));return this._generate(),this}_addAdjoiningFace(t,e){let s=new tq(t.point,e.prev.vertex,e.vertex);return this.faces.push(s),s.getEdge(-1).linkOpponent(e.twin),s.getEdge(0)}
1_addNewFaces(t,e){let s=[],i=null,r=null;for(let n=0,h=e.length;n<h;n++){let h=this._addAdjoiningFace(t,e[n]);null===i?i=h:h.next.linkOpponent(r),s.push(h.polygon),r=h}return i.next.linkOpponent(r),s}_addVertexToFace(t,e){return t.face=e,null===e.outside?(this._assigned.append(t),e.outside=t):this._assigned.insertAfter(e.outside,t),this}_addVertexToHull(t){let e=[];this._unassigned.clear(),this._computeHorizon(t.point,null,t.face,e);let s=this._addNewFaces(t,e);return this._resolveUnassignedPoints(s),this}_reset(){return this._vertices.length=0,this._assigned.clear(),this._unassigned.clear(),this}_computeInitialHull(){let t,e,s,i,r,n;let h=this._vertices,o=this._computeExtremes(),l=o.min,a=o.max;n=a.x.point.x-l.x.point.x,t=l.x,e=a.x,(r=a.y.point.y-l.y.point.y)>n&&(t=l.y,e=a.y,n=r),(r=a.z.point.z-l.z.point.z)>n&&(t=l.z,e=a.z),n=-1/0,tE.set(t.point,e.point);for(let i=0,o=h.length;i<o;i++){let o=h[i];o!==t&&o!==e&&(tE.closestPointToPoint(o.point,!0,tP),(r=tP.squaredDistanceTo(o.point))>n&&(n=r,s=o))}n=-1/0,tT.fromCoplanarPoints(t.point,e.point,s.point);for(let o=0,l=h.length;o<l;o++){let l=h[o];l!==t&&l!==e&&l!==s&&(r=Math.abs(tT.distanceToPoint(l.point)))>n&&(n=r,i=l)}if(0===tT.distanceToPoint(i.point))throw"ERROR: YUKA.ConvexHull: All extreme points lie in a single plane. Unable to compute convex hull.";let u=this.faces;0>tT.distanceToPoint(i.point)?(u.push(new tq(t.point,e.point,s.point),new tq(i.point,e.point,t.point),new tq(i.point,s.point,e.point),new tq(i.point,t.point,s.point)),u[1].getEdge(2).linkOpponent(u[0].getEdge(1)),u[2].getEdge(2).linkOpponent(u[0].getEdge(2)),u[3].getEdge(2).linkOpponent(u[0].getEdge(0)),u[1].getEdge(1).linkOpponent(u[2].getEdge(0)),u[2].getEdge(1).linkOpponent(u[3].getEdge(0)),u[3].getEdge(1).linkOpponent(u[1].getEdge(0))):(u.push(new tq(t.point,s.point,e.point),new tq(i.point,t.point,e.point),new tq(i.point,e.point,s.point),new tq(i.point,s.point,t.point)),u[1].getEdge(2).linkOpponent(u[0].getEdge(0)),u[2].getEdge(2).linkOpponent(u[0].getEdge(2)),u[3].getEdge(2).linkOpponent(u[0].getEdge(1)),u[1].getEdge(0).linkOpponent(u[2].getEdge(1)),u[2].getEdge(0).linkOpponent(u[3].getEdge(1)),u[3].getEdge(0).linkOpponent(u[1].getEdge(1)));for(let o=0,l=h.length;o<l;o++){let l=h[o];if(l!==t&&l!==e&&l!==s&&l!==i){n=this._tolerance;let t=null;for(let e=0;e<4;e++)(r=u[e].distanceToPoint(l.point))>n&&(n=r,t=u[e]);null!==t&&this._addVertexToFace(l,t)}}return this}_computeExtremes(){let t=new l(1/0,1/0,1/0),e=new l(-1/0,-1/0,-1/0),s={x:null,y:null,z:null},i={x:null,y:null,z:null};for(let r=0,n=this._vertices.length;r<n;r++){let n=this._vertices[r],h=n.point;h.x<t.x&&(t.x=h.x,s.x=n),h.y<t.y&&(t.y=h.y,s.y=n),h.z<t.z&&(t.z=h.z,s.z=n),h.x>e.x&&(e.x=h.x,i.x=n),h.y>
1e.y&&(e.y=h.y,i.y=n),h.z>e.z&&(e.z=h.z,i.z=n)}return this._tolerance=3*Number.EPSILON*(Math.max(Math.abs(t.x),Math.abs(e.x))+Math.max(Math.abs(t.y),Math.abs(e.y))+Math.max(Math.abs(t.z),Math.abs(e.z))),{min:s,max:i}}_computeHorizon(t,e,s,i){let r;if(s.outside){let t=s.outside;this._removeAllVerticesFromFace(s),this._unassigned.appendChain(t)}s.active=!1,r=null===e?e=s.getEdge(0):e.next;do{let e=r.twin,s=e.polygon;s.active&&(s.distanceToPoint(t)>this._tolerance?this._computeHorizon(t,e,s,i):i.push(r)),r=r.next}while(r!==e);return this}_generate(){let t;for(this.faces.length=0,this._computeInitialHull();t=this._nextVertexToAdd();)this._addVertexToHull(t);return this._updateFaces(),this._postprocessHull(),this._reset(),this}_postprocessHull(){let t=this.faces,e=this.edges;if(!0===this.mergeFaces){let s={leftPrev:null,leftNext:null,rightPrev:null,rightNext:null};this.computeUniqueEdges(),e.sort((t,e)=>e.length()-t.length());for(let i=0,r=e.length;i<r;i++){let r=e[i];if(!1===this._mergePossible(r))continue;s.prev=r.prev,s.next=r.next,s.prevTwin=r.twin.prev,s.nextTwin=r.twin.next,r.prev.next=r.twin.next,r.next.prev=r.twin.prev,r.twin.prev.next=r.next,r.twin.next.prev=r.prev;let n=r.polygon;n.edge=r.prev;let h=n.plane.normal.dot(tV)>=0;if(!0===n.convex(h)&&!0===n.coplanar(this._tolerance)){let e=n.edge;do e.polygon=n,e=e.next;while(e!==n.edge);let s=t.indexOf(r.twin.polygon);t.splice(s,1)}else s.prev.next=r,s.next.prev=r,s.prevTwin.next=r.twin,s.nextTwin.prev=r.twin,n.edge=r}for(let e=0,s=t.length;e<s;e++)t[e].computeCentroid()}return this.computeCentroid(),this.computeUniqueEdges(),this.computeUniqueVertices(),this}_mergePossible(t){let e=t.polygon,s=t.twin;do{if(s!==t.twin&&s.twin.polygon===e)return!1;s=s.next}while(t.twin!==s);return!0}_nextVertexToAdd(){let t=null;if(!1===this._assigned.empty()){let e=0,s=this._assigned.first(),i=s.face;do{let r=i.distanceToPoint(s.point);r>e&&(e=r,t=s),s=s.next}while(null!==s&&s.face===i)}return t}_updateFaces(){let t=this.faces,e=[];for(let s=0,i=t.length;s<i;s++){let i=t[s];i.active&&e.push(i)}return this.faces.length=0,this.faces.push(...e),this}_removeAllVerticesFromFace(t){if(null!==t.outside){let e=t.outside;e.face=null;let s=t.outside;for(;null!==s.next&&s.next.face===t;)(s=s.next).face=null;t.outside=null,this._assigned.removeChain(e,s)}return this}_removeVertexFromFace(t,e){return t.face=null,t===e.outside&&(null!==t.next&&t.next.face===e?e.outside=t.next:e.outside=null),this._assigned.remove(t),this}_resolveUnassignedPoints(t){if(!1===this._unassigned.empty()){let e=this._unassigned.first();do{let s=e.next,i=this._tolerance,r=null;for(let s=0,n=t.length;s<n;s++){let n=t[s];if(n.active){let t=n.distanceToPoint(e.point);t>i&&(i=t,r=n)}}null!==r&&this._addVertexToFace(e,r),e=s}while(null!==e)}return this}}class tq extends t_{constructor(t=new l,e=new l,s=new l){super(),this.outside=null,this.active=!0,this.fromContour([t,e,s]),this.computeCentroid()}getEdge(t){let e=this.edge;for(;t>0;)e=e.next,t--;for(;t<0;)e=e.prev,t++;return e}}class tk{constructor(t=new l){this.point=t,this.prev=null,this.next=null,this.face=null}}class tF{constructor(){this.head=null,this.tail=null}first(){return this.head}last(){return this.tail}clear(){return this.head=this.tail=null,this}insertAfter(t,e){return e.prev=t,e.next=t.next,e.next?e.next.prev=e:this.tail=e,t.next=e,this}append(t){return null===this.head?this.head=t:this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t,this}appendChain(t){for(null===this.head?this.head=t:this.tail.next=t,t.prev=this.tail;null!==t.next;)t=t.next;return this.tail=t,this}remove(t){return null===t.prev?this.head=t.next:t.prev.next=t.next,null===t.next?this.tail=t.prev:t.next.prev=t.prev,t.prev=null,t.next=null,this}removeChain(t,e){return null===t.prev?this.head=e.next:t.prev.next=e.next,null===e.next?this.tail=t.prev:e.next.prev=t.prev,t.prev=null,e.next=null,this}empty(){return null===this.head}}let tJ={unitary:new x,diagonal:new x},tB={c:null,u:[new l,new l,new l],e:[]},tR={c:null,u:[new l,new l,new l],e:[]},tI=[[],[],[]],tU=[[],[],[]],tL=[],tH=new l,tY=new l,tj=new l,tK=new l,tQ=new l;class tZ{constructor(t=new l,e=new l,s=new x){this.center=t,this.halfSizes=e,this.rotation=s}set(t,e,s){return this.center=t,this.halfSizes=e,this.rotation=s,this}copy(t){return this.center.copy(t.center),this.halfSizes.copy(t.halfSizes),this.rotation.copy(t.rotation),this}clone(){return new this.constructor().copy(this)}getSize(t){return t.copy(this.halfSizes).multiplyScalar(2)}clampPoint(t,e){let s=this.halfSizes;tK.subVectors(t,this.center),this.rotation.extractBasis(tH,tY,tj),e.copy(this.center);let i=o.clamp(tK.dot(tH),-s.x,s.x);e.add(tH.multiplyScalar(i));let r=o.clamp(tK.dot(tY),-s.y,s.y);e.add(tY.multiplyScalar(r));let n=o.clamp(tK.dot(tj),-s.z,s.z);return e.add(tj.multiplyScalar(n)),e}containsPoint(t){return tK.subVectors(t,this.center),this.rotation.extractBasis(tH,tY,tj),Math.abs(tK.dot(tH))<=this.halfSizes.x&&Math.abs(tK.dot(tY))<=this.halfSizes.y&&Math.abs(tK.dot(tj))<=this.halfSizes.z}intersectsAABB(t){return this.intersectsOBB(tW.fromAABB(t))}intersectsBoundingSphere(t){return this.clampPoint(t.center,tQ),tQ.squaredDistanceTo(t.center)<=t.radius*t.radius}intersectsOBB(t,e=Number.EPSILON){let s,i;tB.c=this.center,tB.e[0]=this.halfSizes.x,tB.e[1]=this.halfSizes.y,tB.e[2]=this.halfSizes.z,this.rotation.extractBasis(tB.u[0],tB.u[1],tB.u[2]),tR.c=t.center,tR.e[0]=t.halfSizes.x,tR.e[1]=t.halfSizes.y,tR.e[2]=t.halfSizes.z,t.rotation.extractBasis(tR.u[0],tR.u[1],tR.u[2]);for(let t=0;t<3;t++)for(let e=0;e<3;e++)tI[t][e]=tB.u[t].dot(tR.u[e]);tK.subVectors(tR.c,tB.c),tL[0]=tK.dot(tB.u[0]),tL[1]=tK.dot(tB.u[1]),tL[2]=tK.dot(tB.u[2]);for(let t=0;t<3;t++)for(let s=0;s<3;s++)tU[t][s]=Math.abs(tI[t][s])+e;for(let t=0;t<3;t++)if(s=tB.e[t],i=tR.e[0]*tU[t][0]+tR.e[1]*tU[t][1]+tR.e[2]*tU[t][2],Math.abs(tL[t])>s+i)return!1;for(let t=0;t<3;t++)if(s=tB.e[0]*tU[0][t]+tB.e[1]*tU[1][t]+tB.e[2]*tU[2][t],i=tR.e[t],Math.abs(tL[0]*tI[0][t]+tL[1]*tI[1][t]+tL[2]*tI[2][t])>s+i)return!1;return s=tB.e[1]*tU[2][0]+tB.e[2]*tU[1][0],i=tR.e[1]*tU[0][2]+tR.e[2]*tU[0][1],!(Math.abs(tL[2]*tI[1][0]-tL[1]*tI[2][0])>s+i)&&(s=tB.e[1]*tU[2][1]+tB.e[2]*tU[1][1],i=tR.e[0]*tU[0][2]+tR.e[2]*tU[0][0],!(Math.abs(tL[2]*tI[1][1]-tL[1]*tI[2][1])>s+i)&&(s=tB.e[1]*tU[2][2]+tB.e[2]*tU[1][2],i=tR.e[0]*tU[0][1]+tR.e[1]*tU[0][0],!(Math.abs(tL[2]*tI[1][2]-tL[1]*tI[2][2])>s+i)&&(s=tB.e[0]*tU[2][0]+tB.e[2]*tU[0][0],i=tR.e[1]*tU[1][2]+tR.e[2]*tU[1][1],!(Math.abs(tL[0]*tI[2][0]-tL[2]*tI[0][0])>s+i)&&(s=tB.e[0]*tU[2][1]+tB.e[2]*tU[0][1],i=tR.e[0]*tU[1][2]+tR.e[2]*tU[1][0],!(Math.abs(tL[0]*tI[2][1]-tL[2]*tI[0][1])>s+i)&&(s=tB.e[0]*tU[2][2]+tB.e[2]*tU[0][2],i=tR.e[0]*tU[1][1]+tR.e[1]*tU[1][0],!(Math.abs(tL[0]*tI[2][2]-tL[2]*tI[0][2])>s+i)&&(s=tB.e[0]*tU[1][0]+tB.e[1]*tU[0][0],i=tR.e[1]*tU[2][2]+tR.e[2]*tU[2][1],!(Math.abs(tL[1]*tI[0][0]-tL[0]*tI[1][0])>s+i)&&(s=tB.e[0]*tU[1][1]+tB.e[1]*tU[0][1],i=tR.e[0]*tU[2][2]+tR.e[2]*tU[2][0],!(Math.abs(tL[1]*tI[0][1]-tL[0]*tI[1][1])>s+i)&&(s=tB.e[0]*tU[1][2]+tB.e[1]*tU[0][2],i=tR.e[0]*tU[2][1]+tR.e[1]*tU[2][0],!(Math.abs(tL[1]*tI[0][2]-tL[0]*tI[1][2])>s+i)))))))))}intersectsPlane(t){this.rotation.extractBasis(tH,tY,tj);let e=this.halfSizes.x*Math.abs(t.normal.dot(tH))+this.halfSizes.y*Math.abs(t.normal.dot(tY))+this.halfSizes.z*Math.abs(t.normal.dot(tj));return Math.abs(t.normal.dot(this.center)-t.constant)<=e}fromAABB(t){return t.getCenter(this.center),t.getSize(this.halfSizes).multiplyScalar(.5),this.rotation.identity(),this}fromPoints(t){let e,s,i,r,n,h;let o=new tD().fromPoints(t).faces,a=[],u=[];for(let t=0,e=o.length;t<e;t++){let e=o[t],s=e.edge;a.length=0;do a.push(s),s=s.next;while(s!==e.edge);let i=a.length-2;for(let t=1;t<=i;t++){let e=a[0].vertex,s=a[t+0].vertex,i=a[t+1].vertex;u.push(e.x,e.y,e.z),u.push(s.x,s.y,s.z),u.push(i.x,i.y,i.z)}}let c=new l,d=new l,m=new l,p=new l,f=new l,g=new l,y=new l,z=new l,w=0;e=s=i=r=n=h=0;for(let t=0,o=u.length;t<o;t+=9){c.fromArray(u,t),d.fromArray(u,t+3),m.fromArray(u,t+6),y.set(0,0,0),y.add(c).add(d).add(m).divideScalar(3),p.subVectors(d,c),f.subVectors(m,c);let o=g.crossVectors(p,f).length()/2;z.add(g.copy(y).multiplyScalar(o)),w+=o,e+=(9*y.x*y.x+c.x*c.x+d.x*d.x+m.x*m.x)*(o/12),s+=(9*y.x*y.y+c.x*c.y+d.x*d.y+m.x*m.y)*(o/12),i+=(9*y.x*y.z+c.x*c.z+d.x*d.z+m.x*m.z)*(o/12),r+=(9*y.y*y.y+c.y*c.y+d.y*d.y+m.y*m.y)*(o/12),n+=(9*y.y*y.z+c.y*c.z+d.y*d.z+m.y*m.z)*(o/12),h+=(9*y.z*y.z+c.z*c.z+d.z*d.z+m.z*m.z)*(o/12)}z.divideScalar(w),e/=w,s/=w,i/=w,r/=w,n/=w,h/=w,e-=z.x*z.x,s-=z.x*z.y,i-=z.x*z.z,r-=z.y*z.y,n-=z.y*z.z,h-=z.z*z.z;let M=new x;M.elements[0]=e,M.elements[1]=s,M.elements[2]=i,M.elements[3]=s,M.elements[4]=r,M.elements[5]=n,M.elements[6]=i,M.elements[7]=n,M.elements[8]=h,M.eigenDecomposition(tJ);
1let S=tJ.unitary,O=new l,b=new l,v=new l;S.extractBasis(O,b,v);let _=-1/0,N=-1/0,A=-1/0,E=1/0,T=1/0,P=1/0;for(let e=0,s=t.length;e<s;e++){let s=t[e];_=Math.max(O.dot(s),_),N=Math.max(b.dot(s),N),A=Math.max(v.dot(s),A),E=Math.min(O.dot(s),E),T=Math.min(b.dot(s),T),P=Math.min(v.dot(s),P)}return O.multiplyScalar(.5*(E+_)),b.multiplyScalar(.5*(T+N)),v.multiplyScalar(.5*(P+A)),this.center.add(O).add(b).add(v),this.halfSizes.x=_-E,this.halfSizes.y=N-T,this.halfSizes.z=A-P,this.halfSizes.multiplyScalar(.5),this.rotation.copy(S),this}equals(t){return t.center.equals(this.center)&&t.halfSizes.equals(this.halfSizes)&&t.rotation.equals(this.rotation)}toJSON(){return{type:this.constructor.name,center:this.center.toArray([]),halfSizes:this.halfSizes.toArray([]),rotation:this.rotation.toArray([])}}fromJSON(t){return this.center.fromArray(t.center),this.halfSizes.fromArray(t.halfSizes),this.rotation.fromArray(t.rotation),this}}let tW=new tZ;new l,new l,new l,new l,new tg,new l,Int8Array,Uint8Array,Int16Array,Uint16Array,Uint32Array,Float32Array,new l,new A,new l,new l,new B,new l,new l,new l,new l,new l,new tg,new l}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.