Browse Source

Updated builds.

Mr.doob 8 years ago
parent
commit
54d4d62c7d
3 changed files with 398 additions and 370 deletions
  1. 38 24
      build/three.js
  2. 322 322
      build/three.min.js
  3. 38 24
      build/three.module.js

+ 38 - 24
build/three.js

@@ -21271,9 +21271,11 @@
 
 		};
 
+		var influencesList = {};
+
 		function absNumericalSort( a, b ) {
 
-			return Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] );
+			return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );
 
 		}
 
@@ -21295,55 +21297,67 @@
 
 			// morph targets
 
-			var morphTargetInfluences = object.morphTargetInfluences;
-
-			if ( morphTargetInfluences !== undefined ) {
+			var objectInfluences = object.morphTargetInfluences;
 
-				// TODO Remove allocations
+			if ( objectInfluences !== undefined ) {
 
-				var activeInfluences = [];
+				var influences = influencesList[ geometry.id ];
 
-				for ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {
+				if ( influences === undefined ) {
 
-					var influence = morphTargetInfluences[ i ];
-					activeInfluences.push( [ influence, i ] );
+					influencesList[ geometry.id ] = influences = new Array( objectInfluences.length );
 
 				}
 
-				activeInfluences.sort( absNumericalSort );
+				for ( var i = 0, l = objectInfluences.length; i < l; i ++ ) {
+
+					var influence = influences[ i ];
+
+					if ( influence === undefined ) {
+
+						influences[ i ] = influence = new Array( 2 );
 
-				if ( activeInfluences.length > 8 ) {
+					}
 
-					activeInfluences.length = 8;
+					influence[ 0 ] = i;
+					influence[ 1 ] = objectInfluences[ i ];
 
 				}
 
-				var morphAttributes = geometry.morphAttributes;
+				influences.sort( absNumericalSort );
+
+				var morphTargets = material.morphTargets && geometry.morphAttributes.position;
+				var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
 
-				for ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {
+				for ( var i = 0, l = Math.min( influences.length, 8 ); i < l; i ++ ) {
 
-					var influence = activeInfluences[ i ];
-					morphInfluences[ i ] = influence[ 0 ];
+					var morphTargetId = 'morphTarget' + i;
+					var morphNormalId = 'morphNormal' + i;
 
-					if ( influence[ 0 ] !== 0 ) {
+					var influence = influences[ i ];
 
-						var index = influence[ 1 ];
+					var index = influence[ 0 ];
+					var value = influence[ 1 ];
 
-						if ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] );
-						if ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );
+					if ( value !== 0 ) {
+
+						if ( morphTargets ) geometry.addAttribute( morphTargetId, morphTargets[ index ] );
+						if ( morphNormals ) geometry.addAttribute( morphNormalId, morphNormals[ index ] );
 
 					} else {
 
-						if ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i );
-						if ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i );
+						if ( morphTargets ) geometry.removeAttribute( morphTargetId );
+						if ( morphNormals ) geometry.removeAttribute( morphNormalId );
 
 					}
 
+					morphInfluences[ i ] = value;
+
 				}
 
-				for ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) {
+				for ( var i = Math.min( influences.length, 8 ), il = morphInfluences.length; i < il; i ++ ) {
 
-					morphInfluences[ i ] = 0.0;
+					morphInfluences[ i ] = 0;
 
 				}
 

+ 322 - 322
build/three.min.js

@@ -2,240 +2,240 @@
 (function(m,oa){"object"===typeof exports&&"undefined"!==typeof module?oa(exports):"function"===typeof define&&define.amd?define(["exports"],oa):oa(m.THREE=m.THREE||{})})(this,function(m){function oa(){}function D(a,b){this.x=a||0;this.y=b||0}function V(a,b,c,d,e,f,g,h,k,l){Object.defineProperty(this,"id",{value:nf++});this.uuid=P.generateUUID();this.name="";this.image=void 0!==a?a:V.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=void 0!==b?b:V.DEFAULT_MAPPING;this.wrapS=void 0!==c?c:1001;this.wrapT=
 void 0!==d?d:1001;this.magFilter=void 0!==e?e:1006;this.minFilter=void 0!==f?f:1008;this.anisotropy=void 0!==k?k:1;this.format=void 0!==g?g:1023;this.type=void 0!==h?h:1009;this.offset=new D(0,0);this.repeat=new D(1,1);this.generateMipmaps=!0;this.premultiplyAlpha=!1;this.flipY=!0;this.unpackAlignment=4;this.encoding=void 0!==l?l:3E3;this.version=0;this.onUpdate=null}function ca(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}function Ab(a,b,c){this.uuid=P.generateUUID();this.width=
 a;this.height=b;this.scissor=new ca(0,0,a,b);this.scissorTest=!1;this.viewport=new ca(0,0,a,b);c=c||{};void 0===c.minFilter&&(c.minFilter=1006);this.texture=new V(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy,c.encoding);this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.depthTexture=void 0!==c.depthTexture?c.depthTexture:null}function Bb(a,b,c){Ab.call(this,a,b,c);this.activeMipMapLevel=
-this.activeCubeFace=0}function ka(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._w=void 0!==d?d:1}function p(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}function J(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function bb(a,b,c,d,e,f,g,h,k,l,n,q){V.call(this,null,f,g,h,k,l,d,e,n,q);this.image={data:a,width:b,height:c};this.magFilter=void 0!==k?k:1003;this.minFilter=void 0!==
+this.activeCubeFace=0}function ka(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._w=void 0!==d?d:1}function n(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}function J(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function bb(a,b,c,d,e,f,g,h,k,l,p,q){V.call(this,null,f,g,h,k,l,d,e,p,q);this.image={data:a,width:b,height:c};this.magFilter=void 0!==k?k:1003;this.minFilter=void 0!==
 l?l:1003;this.flipY=this.generateMipmaps=!1;this.unpackAlignment=1}function Va(a,b,c,d,e,f,g,h,k,l){a=void 0!==a?a:[];V.call(this,a,void 0!==b?b:301,c,d,e,f,g,h,k,l);this.flipY=!1}function Cb(a,b,c){var d=a[0];if(0>=d||0<d)return a;var e=b*c,f=Ae[e];void 0===f&&(f=new Float32Array(e),Ae[e]=f);if(0!==b)for(d.toArray(f,0),d=1,e=0;d!==b;++d)e+=c,a[d].toArray(f,e);return f}function Be(a,b){var c=Ce[b];void 0===c&&(c=new Int32Array(b),Ce[b]=c);for(var d=0;d!==b;++d)c[d]=a.allocTextureUnit();return c}function of(a,
 b){a.uniform1f(this.addr,b)}function pf(a,b){a.uniform1i(this.addr,b)}function qf(a,b){void 0===b.x?a.uniform2fv(this.addr,b):a.uniform2f(this.addr,b.x,b.y)}function rf(a,b){void 0!==b.x?a.uniform3f(this.addr,b.x,b.y,b.z):void 0!==b.r?a.uniform3f(this.addr,b.r,b.g,b.b):a.uniform3fv(this.addr,b)}function sf(a,b){void 0===b.x?a.uniform4fv(this.addr,b):a.uniform4f(this.addr,b.x,b.y,b.z,b.w)}function tf(a,b){a.uniformMatrix2fv(this.addr,!1,b.elements||b)}function uf(a,b){void 0===b.elements?a.uniformMatrix3fv(this.addr,
 !1,b):(De.set(b.elements),a.uniformMatrix3fv(this.addr,!1,De))}function vf(a,b){void 0===b.elements?a.uniformMatrix4fv(this.addr,!1,b):(Ee.set(b.elements),a.uniformMatrix4fv(this.addr,!1,Ee))}function wf(a,b,c){var d=c.allocTextureUnit();a.uniform1i(this.addr,d);c.setTexture2D(b||Fe,d)}function xf(a,b,c){var d=c.allocTextureUnit();a.uniform1i(this.addr,d);c.setTextureCube(b||Ge,d)}function He(a,b){a.uniform2iv(this.addr,b)}function Ie(a,b){a.uniform3iv(this.addr,b)}function Je(a,b){a.uniform4iv(this.addr,
 b)}function yf(a){switch(a){case 5126:return of;case 35664:return qf;case 35665:return rf;case 35666:return sf;case 35674:return tf;case 35675:return uf;case 35676:return vf;case 35678:case 36198:return wf;case 35680:return xf;case 5124:case 35670:return pf;case 35667:case 35671:return He;case 35668:case 35672:return Ie;case 35669:case 35673:return Je}}function zf(a,b){a.uniform1fv(this.addr,b)}function Af(a,b){a.uniform1iv(this.addr,b)}function Bf(a,b){a.uniform2fv(this.addr,Cb(b,this.size,2))}function Cf(a,
 b){a.uniform3fv(this.addr,Cb(b,this.size,3))}function Df(a,b){a.uniform4fv(this.addr,Cb(b,this.size,4))}function Ef(a,b){a.uniformMatrix2fv(this.addr,!1,Cb(b,this.size,4))}function Ff(a,b){a.uniformMatrix3fv(this.addr,!1,Cb(b,this.size,9))}function Gf(a,b){a.uniformMatrix4fv(this.addr,!1,Cb(b,this.size,16))}function Hf(a,b,c){var d=b.length,e=Be(c,d);a.uniform1iv(this.addr,e);for(a=0;a!==d;++a)c.setTexture2D(b[a]||Fe,e[a])}function If(a,b,c){var d=b.length,e=Be(c,d);a.uniform1iv(this.addr,e);for(a=
 0;a!==d;++a)c.setTextureCube(b[a]||Ge,e[a])}function Jf(a){switch(a){case 5126:return zf;case 35664:return Bf;case 35665:return Cf;case 35666:return Df;case 35674:return Ef;case 35675:return Ff;case 35676:return Gf;case 35678:return Hf;case 35680:return If;case 5124:case 35670:return Af;case 35667:case 35671:return He;case 35668:case 35672:return Ie;case 35669:case 35673:return Je}}function Kf(a,b,c){this.id=a;this.addr=c;this.setValue=yf(b.type)}function Lf(a,b,c){this.id=a;this.addr=c;this.size=
-b.size;this.setValue=Jf(b.type)}function Ke(a){this.id=a;this.seq=[];this.map={}}function cb(a,b,c){this.seq=[];this.map={};this.renderer=c;c=a.getProgramParameter(b,a.ACTIVE_UNIFORMS);for(var d=0;d<c;++d){var e=a.getActiveUniform(b,d),f=a.getUniformLocation(b,e.name),g=this,h=e.name,k=h.length;for(Sd.lastIndex=0;;){var l=Sd.exec(h),n=Sd.lastIndex,q=l[1],r=l[3];"]"===l[2]&&(q|=0);if(void 0===r||"["===r&&n+2===k){h=g;e=void 0===r?new Kf(q,e,f):new Lf(q,e,f);h.seq.push(e);h.map[e.id]=e;break}else r=
-g.map[q],void 0===r&&(r=new Ke(q),q=g,g=r,q.seq.push(g),q.map[g.id]=g),g=r}}}function E(a,b,c){return void 0===b&&void 0===c?this.set(a):this.setRGB(a,b,c)}function hd(a,b){this.min=void 0!==a?a:new D(Infinity,Infinity);this.max=void 0!==b?b:new D(-Infinity,-Infinity)}function Mf(a,b,c,d,e){var f,g,h,k,l,n,q,r,t,m,w,v,A,y,H,B;this.render=function(a,u,wa,la){if(0!==a.length){u=new p;var L=la.w/la.z,ya=.5*la.z,id=.5*la.w,ga=16/la.w,Ea=new D(ga*L,ga),K=new p(1,1,0),M=new D(1,1),U=new hd;U.min.set(la.x,
-la.y);U.max.set(la.x+(la.z-16),la.y+(la.w-16));if(void 0===y){var ga=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),Ma=new Uint16Array([0,1,2,0,2,3]);w=b.createBuffer();v=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,w);b.bufferData(b.ARRAY_BUFFER,ga,b.STATIC_DRAW);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,v);b.bufferData(b.ELEMENT_ARRAY_BUFFER,Ma,b.STATIC_DRAW);H=b.createTexture();B=b.createTexture();c.bindTexture(b.TEXTURE_2D,H);b.texImage2D(b.TEXTURE_2D,0,b.RGB,16,16,0,b.RGB,b.UNSIGNED_BYTE,
+b.size;this.setValue=Jf(b.type)}function Ke(a){this.id=a;this.seq=[];this.map={}}function cb(a,b,c){this.seq=[];this.map={};this.renderer=c;c=a.getProgramParameter(b,a.ACTIVE_UNIFORMS);for(var d=0;d<c;++d){var e=a.getActiveUniform(b,d),f=a.getUniformLocation(b,e.name),g=this,h=e.name,k=h.length;for(Sd.lastIndex=0;;){var l=Sd.exec(h),p=Sd.lastIndex,q=l[1],t=l[3];"]"===l[2]&&(q|=0);if(void 0===t||"["===t&&p+2===k){h=g;e=void 0===t?new Kf(q,e,f):new Lf(q,e,f);h.seq.push(e);h.map[e.id]=e;break}else t=
+g.map[q],void 0===t&&(t=new Ke(q),q=g,g=t,q.seq.push(g),q.map[g.id]=g),g=t}}}function E(a,b,c){return void 0===b&&void 0===c?this.set(a):this.setRGB(a,b,c)}function hd(a,b){this.min=void 0!==a?a:new D(Infinity,Infinity);this.max=void 0!==b?b:new D(-Infinity,-Infinity)}function Mf(a,b,c,d,e){var f,g,h,k,l,p,q,t,r,m,w,u,A,y,H,B;this.render=function(a,v,wa,la){if(0!==a.length){v=new n;var L=la.w/la.z,ya=.5*la.z,id=.5*la.w,ga=16/la.w,Fa=new D(ga*L,ga),K=new n(1,1,0),M=new D(1,1),U=new hd;U.min.set(la.x,
+la.y);U.max.set(la.x+(la.z-16),la.y+(la.w-16));if(void 0===y){var ga=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),Ma=new Uint16Array([0,1,2,0,2,3]);w=b.createBuffer();u=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,w);b.bufferData(b.ARRAY_BUFFER,ga,b.STATIC_DRAW);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,u);b.bufferData(b.ELEMENT_ARRAY_BUFFER,Ma,b.STATIC_DRAW);H=b.createTexture();B=b.createTexture();c.bindTexture(b.TEXTURE_2D,H);b.texImage2D(b.TEXTURE_2D,0,b.RGB,16,16,0,b.RGB,b.UNSIGNED_BYTE,
 null);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);c.bindTexture(b.TEXTURE_2D,B);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,16,16,0,b.RGBA,b.UNSIGNED_BYTE,null);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,
 b.TEXTURE_MAG_FILTER,b.NEAREST);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);var ga=A={vertexShader:"uniform lowp int renderType;\nuniform vec3 screenPosition;\nuniform vec2 scale;\nuniform float rotation;\nuniform sampler2D occlusionMap;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nvUV = uv;\nvec2 pos = position;\nif ( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\nvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\nvVisibility =        visibility.r / 9.0;\nvVisibility *= 1.0 - visibility.g / 9.0;\nvVisibility *=       visibility.b / 9.0;\nvVisibility *= 1.0 - visibility.a / 9.0;\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",
 fragmentShader:"uniform lowp int renderType;\nuniform sampler2D map;\nuniform float opacity;\nuniform vec3 color;\nvarying vec2 vUV;\nvarying float vVisibility;\nvoid main() {\nif ( renderType == 0 ) {\ngl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\n} else if ( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 texture = texture2D( map, vUV );\ntexture.a *= opacity * vVisibility;\ngl_FragColor = texture;\ngl_FragColor.rgb *= color;\n}\n}"},Ma=b.createProgram(),x=b.createShader(b.FRAGMENT_SHADER),
-X=b.createShader(b.VERTEX_SHADER),z="precision "+e.precision+" float;\n";b.shaderSource(x,z+ga.fragmentShader);b.shaderSource(X,z+ga.vertexShader);b.compileShader(x);b.compileShader(X);b.attachShader(Ma,x);b.attachShader(Ma,X);b.linkProgram(Ma);y=Ma;t=b.getAttribLocation(y,"position");m=b.getAttribLocation(y,"uv");f=b.getUniformLocation(y,"renderType");g=b.getUniformLocation(y,"map");h=b.getUniformLocation(y,"occlusionMap");k=b.getUniformLocation(y,"opacity");l=b.getUniformLocation(y,"color");n=b.getUniformLocation(y,
-"scale");q=b.getUniformLocation(y,"rotation");r=b.getUniformLocation(y,"screenPosition")}c.useProgram(y);c.initAttributes();c.enableAttribute(t);c.enableAttribute(m);c.disableUnusedAttributes();b.uniform1i(h,0);b.uniform1i(g,1);b.bindBuffer(b.ARRAY_BUFFER,w);b.vertexAttribPointer(t,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(m,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,v);c.disable(b.CULL_FACE);c.buffers.depth.setMask(!1);Ma=0;for(x=a.length;Ma<x;Ma++)if(ga=16/la.w,Ea.set(ga*L,ga),X=a[Ma],
-u.set(X.matrixWorld.elements[12],X.matrixWorld.elements[13],X.matrixWorld.elements[14]),u.applyMatrix4(wa.matrixWorldInverse),u.applyMatrix4(wa.projectionMatrix),K.copy(u),M.x=la.x+K.x*ya+ya-8,M.y=la.y+K.y*id+id-8,!0===U.containsPoint(M)){c.activeTexture(b.TEXTURE0);c.bindTexture(b.TEXTURE_2D,null);c.activeTexture(b.TEXTURE1);c.bindTexture(b.TEXTURE_2D,H);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGB,M.x,M.y,16,16,0);b.uniform1i(f,0);b.uniform2f(n,Ea.x,Ea.y);b.uniform3f(r,K.x,K.y,K.z);c.disable(b.BLEND);
+X=b.createShader(b.VERTEX_SHADER),z="precision "+e.precision+" float;\n";b.shaderSource(x,z+ga.fragmentShader);b.shaderSource(X,z+ga.vertexShader);b.compileShader(x);b.compileShader(X);b.attachShader(Ma,x);b.attachShader(Ma,X);b.linkProgram(Ma);y=Ma;r=b.getAttribLocation(y,"position");m=b.getAttribLocation(y,"uv");f=b.getUniformLocation(y,"renderType");g=b.getUniformLocation(y,"map");h=b.getUniformLocation(y,"occlusionMap");k=b.getUniformLocation(y,"opacity");l=b.getUniformLocation(y,"color");p=b.getUniformLocation(y,
+"scale");q=b.getUniformLocation(y,"rotation");t=b.getUniformLocation(y,"screenPosition")}c.useProgram(y);c.initAttributes();c.enableAttribute(r);c.enableAttribute(m);c.disableUnusedAttributes();b.uniform1i(h,0);b.uniform1i(g,1);b.bindBuffer(b.ARRAY_BUFFER,w);b.vertexAttribPointer(r,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(m,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,u);c.disable(b.CULL_FACE);c.buffers.depth.setMask(!1);Ma=0;for(x=a.length;Ma<x;Ma++)if(ga=16/la.w,Fa.set(ga*L,ga),X=a[Ma],
+v.set(X.matrixWorld.elements[12],X.matrixWorld.elements[13],X.matrixWorld.elements[14]),v.applyMatrix4(wa.matrixWorldInverse),v.applyMatrix4(wa.projectionMatrix),K.copy(v),M.x=la.x+K.x*ya+ya-8,M.y=la.y+K.y*id+id-8,!0===U.containsPoint(M)){c.activeTexture(b.TEXTURE0);c.bindTexture(b.TEXTURE_2D,null);c.activeTexture(b.TEXTURE1);c.bindTexture(b.TEXTURE_2D,H);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGB,M.x,M.y,16,16,0);b.uniform1i(f,0);b.uniform2f(p,Fa.x,Fa.y);b.uniform3f(t,K.x,K.y,K.z);c.disable(b.BLEND);
 c.enable(b.DEPTH_TEST);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0);c.activeTexture(b.TEXTURE0);c.bindTexture(b.TEXTURE_2D,B);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGBA,M.x,M.y,16,16,0);b.uniform1i(f,1);c.disable(b.DEPTH_TEST);c.activeTexture(b.TEXTURE1);c.bindTexture(b.TEXTURE_2D,H);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0);X.positionScreen.copy(K);X.customUpdateCallback?X.customUpdateCallback(X):X.updateLensFlares();b.uniform1i(f,2);c.enable(b.BLEND);for(var z=0,F=X.lensFlares.length;z<F;z++){var E=
-X.lensFlares[z];.001<E.opacity&&.001<E.scale&&(K.x=E.x,K.y=E.y,K.z=E.z,ga=E.size*E.scale/la.w,Ea.x=ga*L,Ea.y=ga,b.uniform3f(r,K.x,K.y,K.z),b.uniform2f(n,Ea.x,Ea.y),b.uniform1f(q,E.rotation),b.uniform1f(k,E.opacity),b.uniform3f(l,E.color.r,E.color.g,E.color.b),c.setBlending(E.blending,E.blendEquation,E.blendSrc,E.blendDst),d.setTexture2D(E.texture,1),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0))}}c.enable(b.CULL_FACE);c.enable(b.DEPTH_TEST);c.buffers.depth.setMask(!0);c.reset()}}}function oc(a,
-b,c,d,e,f,g,h,k){V.call(this,a,b,c,d,e,f,g,h,k);this.needsUpdate=!0}function Nf(a,b,c,d,e){var f,g,h,k,l,n,q,r,t,m,w,v,A,y,H,B,L;function ya(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:b.id-a.id}var wa,la,ea,Le,id=new p,ga=new ka,Ea=new p;this.render=function(u,p,U){if(0!==u.length){if(void 0===ea){var M=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),K=new Uint16Array([0,1,2,0,2,3]);wa=b.createBuffer();la=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,
+X.lensFlares[z];.001<E.opacity&&.001<E.scale&&(K.x=E.x,K.y=E.y,K.z=E.z,ga=E.size*E.scale/la.w,Fa.x=ga*L,Fa.y=ga,b.uniform3f(t,K.x,K.y,K.z),b.uniform2f(p,Fa.x,Fa.y),b.uniform1f(q,E.rotation),b.uniform1f(k,E.opacity),b.uniform3f(l,E.color.r,E.color.g,E.color.b),c.setBlending(E.blending,E.blendEquation,E.blendSrc,E.blendDst),d.setTexture2D(E.texture,1),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0))}}c.enable(b.CULL_FACE);c.enable(b.DEPTH_TEST);c.buffers.depth.setMask(!0);c.reset()}}}function oc(a,
+b,c,d,e,f,g,h,k){V.call(this,a,b,c,d,e,f,g,h,k);this.needsUpdate=!0}function Nf(a,b,c,d,e){var f,g,h,k,l,p,q,t,r,m,w,u,A,y,H,B,L;function ya(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:b.id-a.id}var wa,la,ea,Le,id=new n,ga=new ka,Fa=new n;this.render=function(v,n,U){if(0!==v.length){if(void 0===ea){var M=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),K=new Uint16Array([0,1,2,0,2,3]);wa=b.createBuffer();la=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,
 wa);b.bufferData(b.ARRAY_BUFFER,M,b.STATIC_DRAW);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,la);b.bufferData(b.ELEMENT_ARRAY_BUFFER,K,b.STATIC_DRAW);M=b.createProgram();K=b.createShader(b.VERTEX_SHADER);var x=b.createShader(b.FRAGMENT_SHADER);b.shaderSource(K,["precision "+e.precision+" float;","#define SHADER_NAME SpriteMaterial\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position * scale;\nvec2 rotatedPosition;\nrotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\nrotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\nvec4 finalPosition;\nfinalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition;\nfinalPosition = projectionMatrix * finalPosition;\ngl_Position = finalPosition;\n}"].join("\n"));
 b.shaderSource(x,["precision "+e.precision+" float;","#define SHADER_NAME SpriteMaterial\nuniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nuniform int fogType;\nuniform vec3 fogColor;\nuniform float fogDensity;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\nif ( texture.a < alphaTest ) discard;\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\nif ( fogType > 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n"));
-b.compileShader(K);b.compileShader(x);b.attachShader(M,K);b.attachShader(M,x);b.linkProgram(M);ea=M;B=b.getAttribLocation(ea,"position");L=b.getAttribLocation(ea,"uv");f=b.getUniformLocation(ea,"uvOffset");g=b.getUniformLocation(ea,"uvScale");h=b.getUniformLocation(ea,"rotation");k=b.getUniformLocation(ea,"scale");l=b.getUniformLocation(ea,"color");n=b.getUniformLocation(ea,"map");q=b.getUniformLocation(ea,"opacity");r=b.getUniformLocation(ea,"modelViewMatrix");t=b.getUniformLocation(ea,"projectionMatrix");
-m=b.getUniformLocation(ea,"fogType");w=b.getUniformLocation(ea,"fogDensity");v=b.getUniformLocation(ea,"fogNear");A=b.getUniformLocation(ea,"fogFar");y=b.getUniformLocation(ea,"fogColor");H=b.getUniformLocation(ea,"alphaTest");M=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");M.width=8;M.height=8;K=M.getContext("2d");K.fillStyle="white";K.fillRect(0,0,8,8);Le=new oc(M)}c.useProgram(ea);c.initAttributes();c.enableAttribute(B);c.enableAttribute(L);c.disableUnusedAttributes();c.disable(b.CULL_FACE);
-c.enable(b.BLEND);b.bindBuffer(b.ARRAY_BUFFER,wa);b.vertexAttribPointer(B,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(L,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,la);b.uniformMatrix4fv(t,!1,U.projectionMatrix.elements);c.activeTexture(b.TEXTURE0);b.uniform1i(n,0);K=M=0;(x=p.fog)?(b.uniform3f(y,x.color.r,x.color.g,x.color.b),x.isFog?(b.uniform1f(v,x.near),b.uniform1f(A,x.far),b.uniform1i(m,1),K=M=1):x.isFogExp2&&(b.uniform1f(w,x.density),b.uniform1i(m,2),K=M=2)):(b.uniform1i(m,0),K=M=0);
-for(var z=0,D=u.length;z<D;z++)x=u[z],x.modelViewMatrix.multiplyMatrices(U.matrixWorldInverse,x.matrixWorld),x.z=-x.modelViewMatrix.elements[14];u.sort(ya);for(var E=[],z=0,D=u.length;z<D;z++){x=u[z];var G=x.material;if(!1!==G.visible){x.onBeforeRender(a,p,U,void 0,G,void 0);b.uniform1f(H,G.alphaTest);b.uniformMatrix4fv(r,!1,x.modelViewMatrix.elements);x.matrixWorld.decompose(id,ga,Ea);E[0]=Ea.x;E[1]=Ea.y;var F=0;p.fog&&G.fog&&(F=K);M!==F&&(b.uniform1i(m,F),M=F);null!==G.map?(b.uniform2f(f,G.map.offset.x,
+b.compileShader(K);b.compileShader(x);b.attachShader(M,K);b.attachShader(M,x);b.linkProgram(M);ea=M;B=b.getAttribLocation(ea,"position");L=b.getAttribLocation(ea,"uv");f=b.getUniformLocation(ea,"uvOffset");g=b.getUniformLocation(ea,"uvScale");h=b.getUniformLocation(ea,"rotation");k=b.getUniformLocation(ea,"scale");l=b.getUniformLocation(ea,"color");p=b.getUniformLocation(ea,"map");q=b.getUniformLocation(ea,"opacity");t=b.getUniformLocation(ea,"modelViewMatrix");r=b.getUniformLocation(ea,"projectionMatrix");
+m=b.getUniformLocation(ea,"fogType");w=b.getUniformLocation(ea,"fogDensity");u=b.getUniformLocation(ea,"fogNear");A=b.getUniformLocation(ea,"fogFar");y=b.getUniformLocation(ea,"fogColor");H=b.getUniformLocation(ea,"alphaTest");M=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");M.width=8;M.height=8;K=M.getContext("2d");K.fillStyle="white";K.fillRect(0,0,8,8);Le=new oc(M)}c.useProgram(ea);c.initAttributes();c.enableAttribute(B);c.enableAttribute(L);c.disableUnusedAttributes();c.disable(b.CULL_FACE);
+c.enable(b.BLEND);b.bindBuffer(b.ARRAY_BUFFER,wa);b.vertexAttribPointer(B,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(L,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,la);b.uniformMatrix4fv(r,!1,U.projectionMatrix.elements);c.activeTexture(b.TEXTURE0);b.uniform1i(p,0);K=M=0;(x=n.fog)?(b.uniform3f(y,x.color.r,x.color.g,x.color.b),x.isFog?(b.uniform1f(u,x.near),b.uniform1f(A,x.far),b.uniform1i(m,1),K=M=1):x.isFogExp2&&(b.uniform1f(w,x.density),b.uniform1i(m,2),K=M=2)):(b.uniform1i(m,0),K=M=0);
+for(var z=0,D=v.length;z<D;z++)x=v[z],x.modelViewMatrix.multiplyMatrices(U.matrixWorldInverse,x.matrixWorld),x.z=-x.modelViewMatrix.elements[14];v.sort(ya);for(var E=[],z=0,D=v.length;z<D;z++){x=v[z];var G=x.material;if(!1!==G.visible){x.onBeforeRender(a,n,U,void 0,G,void 0);b.uniform1f(H,G.alphaTest);b.uniformMatrix4fv(t,!1,x.modelViewMatrix.elements);x.matrixWorld.decompose(id,ga,Fa);E[0]=Fa.x;E[1]=Fa.y;var F=0;n.fog&&G.fog&&(F=K);M!==F&&(b.uniform1i(m,F),M=F);null!==G.map?(b.uniform2f(f,G.map.offset.x,
 G.map.offset.y),b.uniform2f(g,G.map.repeat.x,G.map.repeat.y)):(b.uniform2f(f,0,0),b.uniform2f(g,1,1));b.uniform1f(q,G.opacity);b.uniform3f(l,G.color.r,G.color.g,G.color.b);b.uniform1f(h,G.rotation);b.uniform2fv(k,E);c.setBlending(G.blending,G.blendEquation,G.blendSrc,G.blendDst,G.blendEquationAlpha,G.blendSrcAlpha,G.blendDstAlpha,G.premultipliedAlpha);c.buffers.depth.setTest(G.depthTest);c.buffers.depth.setMask(G.depthWrite);d.setTexture2D(G.map||Le,0);b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,
-0);x.onAfterRender(a,p,U,void 0,G,void 0)}}c.enable(b.CULL_FACE);c.reset()}}}function N(){Object.defineProperty(this,"id",{value:Of++});this.uuid=P.generateUUID();this.name="";this.type="Material";this.lights=this.fog=!0;this.blending=1;this.side=0;this.flatShading=!1;this.vertexColors=0;this.opacity=1;this.transparent=!1;this.blendSrc=204;this.blendDst=205;this.blendEquation=100;this.blendEquationAlpha=this.blendDstAlpha=this.blendSrcAlpha=null;this.depthFunc=3;this.depthWrite=this.depthTest=!0;
+0);x.onAfterRender(a,n,U,void 0,G,void 0)}}c.enable(b.CULL_FACE);c.reset()}}}function N(){Object.defineProperty(this,"id",{value:Of++});this.uuid=P.generateUUID();this.name="";this.type="Material";this.lights=this.fog=!0;this.blending=1;this.side=0;this.flatShading=!1;this.vertexColors=0;this.opacity=1;this.transparent=!1;this.blendSrc=204;this.blendDst=205;this.blendEquation=100;this.blendEquationAlpha=this.blendDstAlpha=this.blendSrcAlpha=null;this.depthFunc=3;this.depthWrite=this.depthTest=!0;
 this.clippingPlanes=null;this.clipShadows=this.clipIntersection=!1;this.colorWrite=!0;this.precision=null;this.polygonOffset=!1;this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.dithering=!1;this.alphaTest=0;this.premultipliedAlpha=!1;this.overdraw=0;this.needsUpdate=this.visible=!0}function qa(a){N.call(this);this.type="ShaderMaterial";this.defines={};this.uniforms={};this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}";this.fragmentShader=
 "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.morphNormals=this.morphTargets=this.skinning=this.clipping=this.lights=this.fog=!1;this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1};this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]};this.index0AttributeName=void 0;void 0!==a&&(void 0!==a.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),
-this.setValues(a))}function Wa(a){N.call(this);this.type="MeshDepthMaterial";this.depthPacking=3200;this.morphTargets=this.skinning=!1;this.displacementMap=this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=this.fog=!1;this.setValues(a)}function Xa(a){N.call(this);this.type="MeshDistanceMaterial";this.referencePosition=new p;this.nearDistance=1;this.farDistance=1E3;this.morphTargets=this.skinning=!1;this.displacementMap=
-this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.lights=this.fog=!1;this.setValues(a)}function Qa(a,b){this.min=void 0!==a?a:new p(Infinity,Infinity,Infinity);this.max=void 0!==b?b:new p(-Infinity,-Infinity,-Infinity)}function Ba(a,b){this.center=void 0!==a?a:new p;this.radius=void 0!==b?b:0}function ma(){this.elements=[1,0,0,0,1,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}function za(a,
-b){this.normal=void 0!==a?a:new p(1,0,0);this.constant=void 0!==b?b:0}function jd(a,b,c,d,e,f){this.planes=[void 0!==a?a:new za,void 0!==b?b:new za,void 0!==c?c:new za,void 0!==d?d:new za,void 0!==e?e:new za,void 0!==f?f:new za]}function Me(a,b,c){function d(b,c,d,e,f,g){var h=b.geometry;var k=q;var l=b.customDepthMaterial;d&&(k=r,l=b.customDistanceMaterial);l?k=l:(l=!1,c.morphTargets&&(h&&h.isBufferGeometry?l=h.morphAttributes&&h.morphAttributes.position&&0<h.morphAttributes.position.length:h&&h.isGeometry&&
-(l=h.morphTargets&&0<h.morphTargets.length)),b.isSkinnedMesh&&!1===c.skinning&&console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",b),b=b.isSkinnedMesh&&c.skinning,h=0,l&&(h|=1),b&&(h|=2),k=k[h]);a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&(h=k.uuid,l=c.uuid,b=t[h],void 0===b&&(b={},t[h]=b),h=b[l],void 0===h&&(h=k.clone(),b[l]=h),k=h);k.visible=c.visible;k.wireframe=c.wireframe;l=c.side;B.renderSingleSided&&2==l&&(l=0);B.renderReverseSided&&
+this.setValues(a))}function Wa(a){N.call(this);this.type="MeshDepthMaterial";this.depthPacking=3200;this.morphTargets=this.skinning=!1;this.displacementMap=this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=this.fog=!1;this.setValues(a)}function Xa(a){N.call(this);this.type="MeshDistanceMaterial";this.referencePosition=new n;this.nearDistance=1;this.farDistance=1E3;this.morphTargets=this.skinning=!1;this.displacementMap=
+this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.lights=this.fog=!1;this.setValues(a)}function Qa(a,b){this.min=void 0!==a?a:new n(Infinity,Infinity,Infinity);this.max=void 0!==b?b:new n(-Infinity,-Infinity,-Infinity)}function Ba(a,b){this.center=void 0!==a?a:new n;this.radius=void 0!==b?b:0}function ma(){this.elements=[1,0,0,0,1,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}function za(a,
+b){this.normal=void 0!==a?a:new n(1,0,0);this.constant=void 0!==b?b:0}function jd(a,b,c,d,e,f){this.planes=[void 0!==a?a:new za,void 0!==b?b:new za,void 0!==c?c:new za,void 0!==d?d:new za,void 0!==e?e:new za,void 0!==f?f:new za]}function Me(a,b,c){function d(b,c,d,e,f,g){var h=b.geometry;var k=q;var l=b.customDepthMaterial;d&&(k=t,l=b.customDistanceMaterial);l?k=l:(l=!1,c.morphTargets&&(h&&h.isBufferGeometry?l=h.morphAttributes&&h.morphAttributes.position&&0<h.morphAttributes.position.length:h&&h.isGeometry&&
+(l=h.morphTargets&&0<h.morphTargets.length)),b.isSkinnedMesh&&!1===c.skinning&&console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",b),b=b.isSkinnedMesh&&c.skinning,h=0,l&&(h|=1),b&&(h|=2),k=k[h]);a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&(h=k.uuid,l=c.uuid,b=r[h],void 0===b&&(b={},r[h]=b),h=b[l],void 0===h&&(h=k.clone(),b[l]=h),k=h);k.visible=c.visible;k.wireframe=c.wireframe;l=c.side;B.renderSingleSided&&2==l&&(l=0);B.renderReverseSided&&
 (0===l?l=1:1===l&&(l=0));k.side=l;k.clipShadows=c.clipShadows;k.clippingPlanes=c.clippingPlanes;k.clipIntersection=c.clipIntersection;k.wireframeLinewidth=c.wireframeLinewidth;k.linewidth=c.linewidth;d&&k.isMeshDistanceMaterial&&(k.referencePosition.copy(e),k.nearDistance=f,k.farDistance=g);return k}function e(c,g,h,k){var l;if(!1!==c.visible){if(c.layers.test(g.layers)&&(c.isMesh||c.isLine||c.isPoints)&&c.castShadow&&(!c.frustumCulled||f.intersectsObject(c))){c.modelViewMatrix.multiplyMatrices(h.matrixWorldInverse,
-c.matrixWorld);var q=b.update(c),r=c.material;if(Array.isArray(r))for(var t=q.groups,y=0,m=t.length;y<m;y++){var u=t[y];(l=r[u.materialIndex])&&l.visible&&(l=d(c,l,k,n,h.near,h.far),a.renderBufferDirect(h,null,q,l,c,u))}else r.visible&&(l=d(c,r,k,n,h.near,h.far),a.renderBufferDirect(h,null,q,l,c,null))}c=c.children;q=0;for(r=c.length;q<r;q++)e(c[q],g,h,k)}}var f=new jd,g=new J,h=new D,k=new D(c,c),l=new p,n=new p,q=Array(4),r=Array(4),t={},m=[new p(1,0,0),new p(-1,0,0),new p(0,0,1),new p(0,0,-1),
-new p(0,1,0),new p(0,-1,0)],w=[new p(0,1,0),new p(0,1,0),new p(0,1,0),new p(0,1,0),new p(0,0,1),new p(0,0,-1)],v=[new ca,new ca,new ca,new ca,new ca,new ca];for(c=0;4!==c;++c){var A=0!==(c&1),y=0!==(c&2),H=new Wa({depthPacking:3201,morphTargets:A,skinning:y});q[c]=H;A=new Xa({morphTargets:A,skinning:y});r[c]=A}var B=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=1;this.renderSingleSided=this.renderReverseSided=!0;this.render=function(b,c,d){if(!1!==B.enabled&&(!1!==B.autoUpdate||
-!1!==B.needsUpdate)&&0!==b.length){var q=a.state;q.disable(a.context.BLEND);q.buffers.color.setClear(1,1,1,1);q.buffers.depth.setTest(!0);q.setScissorTest(!1);for(var r,t=0,y=b.length;t<y;t++){var u=b[t];r=u.shadow;var H=u&&u.isPointLight;if(void 0===r)console.warn("THREE.WebGLShadowMap:",u,"has no shadow.");else{var p=r.camera;h.copy(r.mapSize);h.min(k);if(H){var A=h.x,L=h.y;v[0].set(2*A,L,A,L);v[1].set(0,L,A,L);v[2].set(3*A,L,A,L);v[3].set(A,L,A,L);v[4].set(3*A,0,A,L);v[5].set(A,0,A,L);h.x*=4;h.y*=
-2}null===r.map&&(r.map=new Ab(h.x,h.y,{minFilter:1003,magFilter:1003,format:1023}),r.map.texture.name=u.name+".shadowMap",p.updateProjectionMatrix());r.isSpotLightShadow&&r.update(u);A=r.map;L=r.matrix;n.setFromMatrixPosition(u.matrixWorld);p.position.copy(n);H?(r=6,L.makeTranslation(-n.x,-n.y,-n.z)):(r=1,l.setFromMatrixPosition(u.target.matrixWorld),p.lookAt(l),p.updateMatrixWorld(),L.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),L.multiply(p.projectionMatrix),L.multiply(p.matrixWorldInverse));a.setRenderTarget(A);
-a.clear();for(u=0;u<r;u++)H&&(l.copy(p.position),l.add(m[u]),p.up.copy(w[u]),p.lookAt(l),p.updateMatrixWorld(),q.viewport(v[u])),g.multiplyMatrices(p.projectionMatrix,p.matrixWorldInverse),f.setFromMatrix(g),e(c,d,p,H)}}B.needsUpdate=!1}}}function Pf(a){var b={};return{get:function(a){a.isInterleavedBufferAttribute&&(a=a.data);return b[a.uuid]},remove:function(c){c.isInterleavedBufferAttribute&&(c=c.data);var d=b[c.uuid];d&&(a.deleteBuffer(d.buffer),delete b[c.uuid])},update:function(c,d){c.isInterleavedBufferAttribute&&
+c.matrixWorld);var q=b.update(c),t=c.material;if(Array.isArray(t))for(var r=q.groups,y=0,m=r.length;y<m;y++){var v=r[y];(l=t[v.materialIndex])&&l.visible&&(l=d(c,l,k,p,h.near,h.far),a.renderBufferDirect(h,null,q,l,c,v))}else t.visible&&(l=d(c,t,k,p,h.near,h.far),a.renderBufferDirect(h,null,q,l,c,null))}c=c.children;q=0;for(t=c.length;q<t;q++)e(c[q],g,h,k)}}var f=new jd,g=new J,h=new D,k=new D(c,c),l=new n,p=new n,q=Array(4),t=Array(4),r={},m=[new n(1,0,0),new n(-1,0,0),new n(0,0,1),new n(0,0,-1),
+new n(0,1,0),new n(0,-1,0)],w=[new n(0,1,0),new n(0,1,0),new n(0,1,0),new n(0,1,0),new n(0,0,1),new n(0,0,-1)],u=[new ca,new ca,new ca,new ca,new ca,new ca];for(c=0;4!==c;++c){var A=0!==(c&1),y=0!==(c&2),H=new Wa({depthPacking:3201,morphTargets:A,skinning:y});q[c]=H;A=new Xa({morphTargets:A,skinning:y});t[c]=A}var B=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=1;this.renderSingleSided=this.renderReverseSided=!0;this.render=function(b,c,d){if(!1!==B.enabled&&(!1!==B.autoUpdate||
+!1!==B.needsUpdate)&&0!==b.length){var q=a.state;q.disable(a.context.BLEND);q.buffers.color.setClear(1,1,1,1);q.buffers.depth.setTest(!0);q.setScissorTest(!1);for(var t,r=0,y=b.length;r<y;r++){var v=b[r];t=v.shadow;var H=v&&v.isPointLight;if(void 0===t)console.warn("THREE.WebGLShadowMap:",v,"has no shadow.");else{var n=t.camera;h.copy(t.mapSize);h.min(k);if(H){var A=h.x,L=h.y;u[0].set(2*A,L,A,L);u[1].set(0,L,A,L);u[2].set(3*A,L,A,L);u[3].set(A,L,A,L);u[4].set(3*A,0,A,L);u[5].set(A,0,A,L);h.x*=4;h.y*=
+2}null===t.map&&(t.map=new Ab(h.x,h.y,{minFilter:1003,magFilter:1003,format:1023}),t.map.texture.name=v.name+".shadowMap",n.updateProjectionMatrix());t.isSpotLightShadow&&t.update(v);A=t.map;L=t.matrix;p.setFromMatrixPosition(v.matrixWorld);n.position.copy(p);H?(t=6,L.makeTranslation(-p.x,-p.y,-p.z)):(t=1,l.setFromMatrixPosition(v.target.matrixWorld),n.lookAt(l),n.updateMatrixWorld(),L.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),L.multiply(n.projectionMatrix),L.multiply(n.matrixWorldInverse));a.setRenderTarget(A);
+a.clear();for(v=0;v<t;v++)H&&(l.copy(n.position),l.add(m[v]),n.up.copy(w[v]),n.lookAt(l),n.updateMatrixWorld(),q.viewport(u[v])),g.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),f.setFromMatrix(g),e(c,d,n,H)}}B.needsUpdate=!1}}}function Pf(a){var b={};return{get:function(a){a.isInterleavedBufferAttribute&&(a=a.data);return b[a.uuid]},remove:function(c){c.isInterleavedBufferAttribute&&(c=c.data);var d=b[c.uuid];d&&(a.deleteBuffer(d.buffer),delete b[c.uuid])},update:function(c,d){c.isInterleavedBufferAttribute&&
 (c=c.data);var e=b[c.uuid];if(void 0===e){var e=c.uuid,f=c.array,g=c.dynamic?a.DYNAMIC_DRAW:a.STATIC_DRAW,h=a.createBuffer();a.bindBuffer(d,h);a.bufferData(d,f,g);c.onUploadCallback();d=a.FLOAT;f instanceof Float32Array?d=a.FLOAT:f instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):f instanceof Uint16Array?d=a.UNSIGNED_SHORT:f instanceof Int16Array?d=a.SHORT:f instanceof Uint32Array?d=a.UNSIGNED_INT:f instanceof Int32Array?d=a.INT:f instanceof
 Int8Array?d=a.BYTE:f instanceof Uint8Array&&(d=a.UNSIGNED_BYTE);b[e]={buffer:h,type:d,bytesPerElement:f.BYTES_PER_ELEMENT,version:c.version}}else e.version<c.version&&(f=c,h=f.array,g=f.updateRange,a.bindBuffer(d,e.buffer),!1===f.dynamic?a.bufferData(d,h,a.STATIC_DRAW):-1===g.count?a.bufferSubData(d,0,h):0===g.count?console.error("THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually."):
-(a.bufferSubData(d,g.offset*h.BYTES_PER_ELEMENT,h.subarray(g.offset,g.offset+g.count)),g.count=-1),e.version=c.version)}}}function Ya(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||Ya.DefaultOrder}function Td(){this.mask=1}function z(){Object.defineProperty(this,"id",{value:Qf++});this.uuid=P.generateUUID();this.name="";this.type="Object3D";this.parent=null;this.children=[];this.up=z.DefaultUp.clone();var a=new p,b=new Ya,c=new ka,d=new p(1,1,1);b.onChange(function(){c.setFromEuler(b,
+(a.bufferSubData(d,g.offset*h.BYTES_PER_ELEMENT,h.subarray(g.offset,g.offset+g.count)),g.count=-1),e.version=c.version)}}}function Ya(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||Ya.DefaultOrder}function Td(){this.mask=1}function z(){Object.defineProperty(this,"id",{value:Qf++});this.uuid=P.generateUUID();this.name="";this.type="Object3D";this.parent=null;this.children=[];this.up=z.DefaultUp.clone();var a=new n,b=new Ya,c=new ka,d=new n(1,1,1);b.onChange(function(){c.setFromEuler(b,
 !1)});c.onChange(function(){b.setFromQuaternion(c,void 0,!1)});Object.defineProperties(this,{position:{enumerable:!0,value:a},rotation:{enumerable:!0,value:b},quaternion:{enumerable:!0,value:c},scale:{enumerable:!0,value:d},modelViewMatrix:{value:new J},normalMatrix:{value:new ma}});this.matrix=new J;this.matrixWorld=new J;this.matrixAutoUpdate=z.DefaultMatrixAutoUpdate;this.matrixWorldNeedsUpdate=!1;this.layers=new Td;this.visible=!0;this.receiveShadow=this.castShadow=!1;this.frustumCulled=!0;this.renderOrder=
 0;this.userData={}}function Na(){z.call(this);this.type="Camera";this.matrixWorldInverse=new J;this.projectionMatrix=new J}function Db(a,b,c,d,e,f){Na.call(this);this.type="OrthographicCamera";this.zoom=1;this.view=null;this.left=a;this.right=b;this.top=c;this.bottom=d;this.near=void 0!==e?e:.1;this.far=void 0!==f?f:2E3;this.updateProjectionMatrix()}function Y(a,b,c,d){Na.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!==c?c:.1;this.far=void 0!==d?d:
-2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function Ra(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d&&d.isVector3?d:new p;this.vertexNormals=Array.isArray(d)?d:[];this.color=e&&e.isColor?e:new E;this.vertexColors=Array.isArray(e)?e:[];this.materialIndex=void 0!==f?f:0}function I(){Object.defineProperty(this,"id",{value:Ud++});this.uuid=P.generateUUID();this.name="";this.type="Geometry";this.vertices=[];this.colors=
+2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function Ra(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d&&d.isVector3?d:new n;this.vertexNormals=Array.isArray(d)?d:[];this.color=e&&e.isColor?e:new E;this.vertexColors=Array.isArray(e)?e:[];this.materialIndex=void 0!==f?f:0}function I(){Object.defineProperty(this,"id",{value:Ud++});this.uuid=P.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.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=this.verticesNeedUpdate=this.elementsNeedUpdate=!1}function O(a,b,c){if(Array.isArray(a))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.uuid=P.generateUUID();this.name=
 "";this.array=a;this.itemSize=b;this.count=void 0!==a?a.length/b:0;this.normalized=!0===c;this.dynamic=!1;this.updateRange={offset:0,count:-1};this.onUploadCallback=function(){};this.version=0}function pc(a,b){O.call(this,new Int8Array(a),b)}function qc(a,b){O.call(this,new Uint8Array(a),b)}function rc(a,b){O.call(this,new Uint8ClampedArray(a),b)}function sc(a,b){O.call(this,new Int16Array(a),b)}function db(a,b){O.call(this,new Uint16Array(a),b)}function tc(a,b){O.call(this,new Int32Array(a),b)}function eb(a,
 b){O.call(this,new Uint32Array(a),b)}function x(a,b){O.call(this,new Float32Array(a),b)}function uc(a,b){O.call(this,new Float64Array(a),b)}function Ne(){this.indices=[];this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.uvsNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.verticesNeedUpdate=!1}function Vd(a){if(0===a.length)return-Infinity;
 for(var b=a[0],c=1,d=a.length;c<d;++c)a[c]>b&&(b=a[c]);return b}function F(){Object.defineProperty(this,"id",{value:Ud++});this.uuid=P.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity}}function Eb(a,b,c,d,e,f){I.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.fromBufferGeometry(new fb(a,
-b,c,d,e,f));this.mergeVertices()}function fb(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,m,ya,wa,la){var y=f/ya,u=g/wa,v=f/2,w=g/2,H=m/2;g=ya+1;var B=wa+1,A=f=0,L,x,z=new p;for(x=0;x<B;x++){var D=x*u-w;for(L=0;L<g;L++)z[a]=(L*y-v)*d,z[b]=D*e,z[c]=H,l.push(z.x,z.y,z.z),z[a]=0,z[b]=0,z[c]=0<m?1:-1,n.push(z.x,z.y,z.z),q.push(L/ya),q.push(1-x/wa),f+=1}for(x=0;x<wa;x++)for(L=0;L<ya;L++)a=r+L+g*(x+1),b=r+(L+1)+g*(x+1),c=r+(L+1)+g*x,k.push(r+L+g*x,a,c),k.push(a,b,c),A+=6;h.addGroup(t,A,la);t+=A;r+=f}F.call(this);
-this.type="BoxBufferGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};var h=this;d=Math.floor(d)||1;e=Math.floor(e)||1;f=Math.floor(f)||1;var k=[],l=[],n=[],q=[],r=0,t=0;g("z","y","x",-1,-1,c,b,a,f,e,0);g("z","y","x",1,-1,c,b,-a,f,e,1);g("x","z","y",1,1,a,c,b,d,f,2);g("x","z","y",1,-1,a,c,-b,d,f,3);g("x","y","z",1,-1,a,b,c,d,e,4);g("x","y","z",-1,-1,a,b,-c,d,e,5);this.setIndex(k);this.addAttribute("position",new x(l,3));this.addAttribute("normal",
-new x(n,3));this.addAttribute("uv",new x(q,2))}function vc(a,b,c,d){I.call(this);this.type="PlaneGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};this.fromBufferGeometry(new gb(a,b,c,d));this.mergeVertices()}function gb(a,b,c,d){F.call(this);this.type="PlaneBufferGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};var e=a/2,f=b/2;c=Math.floor(c)||1;d=Math.floor(d)||1;var g=c+1,h=d+1,k=a/c,l=b/d,n=[],q=[],r=[],t=[];for(a=0;a<h;a++){var m=a*l-f;
-for(b=0;b<g;b++)q.push(b*k-e,-m,0),r.push(0,0,1),t.push(b/c),t.push(1-a/d)}for(a=0;a<d;a++)for(b=0;b<c;b++)e=b+g*(a+1),f=b+1+g*(a+1),h=b+1+g*a,n.push(b+g*a,e,h),n.push(e,f,h);this.setIndex(n);this.addAttribute("position",new x(q,3));this.addAttribute("normal",new x(r,3));this.addAttribute("uv",new x(t,2))}function sa(a){N.call(this);this.type="MeshBasicMaterial";this.color=new E(16777215);this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.envMap=this.alphaMap=
-this.specularMap=null;this.combine=0;this.reflectivity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.lights=this.morphTargets=this.skinning=!1;this.setValues(a)}function hb(a,b){this.origin=void 0!==a?a:new p;this.direction=void 0!==b?b:new p}function Fb(a,b){this.start=void 0!==a?a:new p;this.end=void 0!==b?b:new p}function Sa(a,b,c){this.a=void 0!==a?a:new p;this.b=void 0!==b?b:new p;this.c=void 0!==c?c:new p}function na(a,
-b){z.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new F;this.material=void 0!==b?b:new sa({color:16777215*Math.random()});this.drawMode=0;this.updateMorphTargets()}function Rf(a,b,c,d){function e(a,c){b.buffers.color.setClear(a.r,a.g,a.b,c,d)}var f=new E(0),g=0,h,k,l,n;return{getClearColor:function(){return f},setClearColor:function(a,b){f.set(a);g=void 0!==b?b:1;e(f,g)},getClearAlpha:function(){return g},setClearAlpha:function(a){g=a;e(f,g)},render:function(b,d,t){b=b.background;null===
-b?e(f,g):b&&b.isColor&&(e(b,1),t=!0);(a.autoClear||t)&&a.clear(a.autoClearColor,a.autoClearDepth,a.autoClearStencil);b&&b.isCubeTexture?(void 0===l&&(l=new Y,n=new na(new fb(5,5,5),new qa({uniforms:ib.cube.uniforms,vertexShader:ib.cube.vertexShader,fragmentShader:ib.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1}))),l.projectionMatrix.copy(d.projectionMatrix),l.matrixWorld.extractRotation(d.matrixWorld),l.matrixWorldInverse.getInverse(l.matrixWorld),n.material.uniforms.tCube.value=b,
-n.modelViewMatrix.multiplyMatrices(l.matrixWorldInverse,n.matrixWorld),c.update(n.geometry),a.renderBufferDirect(l,null,n.geometry,n.material,n,null)):b&&b.isTexture&&(void 0===h&&(h=new Db(-1,1,1,-1,0,1),k=new na(new gb(2,2),new sa({depthTest:!1,depthWrite:!1,fog:!1}))),k.material.map=b,c.update(k.geometry),a.renderBufferDirect(h,null,k.geometry,k.material,k,null))}}}function Sf(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.program&&b.program&&a.program!==b.program?a.program.id-
-b.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function Tf(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function Uf(){var a=[],b=-1,c=[],d=-1;return{opaque:a,transparent:c,init:function(){d=b=-1},push:function(e,f,g,h,k){if(g.transparent){var l=c;var n=++d}else l=a,n=++b;(n=l[n])?(n.id=e.id,n.object=e,n.geometry=f,n.material=g,n.program=g.program,n.renderOrder=e.renderOrder,n.z=h,n.group=k):(n=
-{id:e.id,object:e,geometry:f,material:g,program:g.program,renderOrder:e.renderOrder,z:h,group:k},l.push(n))},finish:function(){a.length=b+1;c.length=d+1},sort:function(){a.sort(Sf);c.sort(Tf)}}}function Vf(){var a={};return{get:function(b,c){b=b.id+","+c.id;c=a[b];void 0===c&&(c=new Uf,a[b]=c);return c},dispose:function(){a={}}}}function Wf(a,b,c){var d,e,f;this.setMode=function(a){d=a};this.setIndex=function(a){e=a.type;f=a.bytesPerElement};this.render=function(b,h){a.drawElements(d,h,e,b*f);c.calls++;
+b,c,d,e,f));this.mergeVertices()}function fb(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,m,ya,wa,la){var y=f/ya,v=g/wa,u=f/2,w=g/2,H=m/2;g=ya+1;var B=wa+1,A=f=0,L,x,z=new n;for(x=0;x<B;x++){var D=x*v-w;for(L=0;L<g;L++)z[a]=(L*y-u)*d,z[b]=D*e,z[c]=H,l.push(z.x,z.y,z.z),z[a]=0,z[b]=0,z[c]=0<m?1:-1,p.push(z.x,z.y,z.z),q.push(L/ya),q.push(1-x/wa),f+=1}for(x=0;x<wa;x++)for(L=0;L<ya;L++)a=t+L+g*(x+1),b=t+(L+1)+g*(x+1),c=t+(L+1)+g*x,k.push(t+L+g*x,a,c),k.push(a,b,c),A+=6;h.addGroup(r,A,la);r+=A;t+=f}F.call(this);
+this.type="BoxBufferGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};var h=this;d=Math.floor(d)||1;e=Math.floor(e)||1;f=Math.floor(f)||1;var k=[],l=[],p=[],q=[],t=0,r=0;g("z","y","x",-1,-1,c,b,a,f,e,0);g("z","y","x",1,-1,c,b,-a,f,e,1);g("x","z","y",1,1,a,c,b,d,f,2);g("x","z","y",1,-1,a,c,-b,d,f,3);g("x","y","z",1,-1,a,b,c,d,e,4);g("x","y","z",-1,-1,a,b,-c,d,e,5);this.setIndex(k);this.addAttribute("position",new x(l,3));this.addAttribute("normal",
+new x(p,3));this.addAttribute("uv",new x(q,2))}function vc(a,b,c,d){I.call(this);this.type="PlaneGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};this.fromBufferGeometry(new gb(a,b,c,d));this.mergeVertices()}function gb(a,b,c,d){F.call(this);this.type="PlaneBufferGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};var e=a/2,f=b/2;c=Math.floor(c)||1;d=Math.floor(d)||1;var g=c+1,h=d+1,k=a/c,l=b/d,p=[],q=[],t=[],r=[];for(a=0;a<h;a++){var m=a*l-f;
+for(b=0;b<g;b++)q.push(b*k-e,-m,0),t.push(0,0,1),r.push(b/c),r.push(1-a/d)}for(a=0;a<d;a++)for(b=0;b<c;b++)e=b+g*(a+1),f=b+1+g*(a+1),h=b+1+g*a,p.push(b+g*a,e,h),p.push(e,f,h);this.setIndex(p);this.addAttribute("position",new x(q,3));this.addAttribute("normal",new x(t,3));this.addAttribute("uv",new x(r,2))}function sa(a){N.call(this);this.type="MeshBasicMaterial";this.color=new E(16777215);this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.envMap=this.alphaMap=
+this.specularMap=null;this.combine=0;this.reflectivity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.lights=this.morphTargets=this.skinning=!1;this.setValues(a)}function hb(a,b){this.origin=void 0!==a?a:new n;this.direction=void 0!==b?b:new n}function Fb(a,b){this.start=void 0!==a?a:new n;this.end=void 0!==b?b:new n}function Sa(a,b,c){this.a=void 0!==a?a:new n;this.b=void 0!==b?b:new n;this.c=void 0!==c?c:new n}function na(a,
+b){z.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new F;this.material=void 0!==b?b:new sa({color:16777215*Math.random()});this.drawMode=0;this.updateMorphTargets()}function Rf(a,b,c,d){function e(a,c){b.buffers.color.setClear(a.r,a.g,a.b,c,d)}var f=new E(0),g=0,h,k,l,p;return{getClearColor:function(){return f},setClearColor:function(a,b){f.set(a);g=void 0!==b?b:1;e(f,g)},getClearAlpha:function(){return g},setClearAlpha:function(a){g=a;e(f,g)},render:function(b,d,r){b=b.background;null===
+b?e(f,g):b&&b.isColor&&(e(b,1),r=!0);(a.autoClear||r)&&a.clear(a.autoClearColor,a.autoClearDepth,a.autoClearStencil);b&&b.isCubeTexture?(void 0===l&&(l=new Y,p=new na(new fb(5,5,5),new qa({uniforms:ib.cube.uniforms,vertexShader:ib.cube.vertexShader,fragmentShader:ib.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1}))),l.projectionMatrix.copy(d.projectionMatrix),l.matrixWorld.extractRotation(d.matrixWorld),l.matrixWorldInverse.getInverse(l.matrixWorld),p.material.uniforms.tCube.value=b,
+p.modelViewMatrix.multiplyMatrices(l.matrixWorldInverse,p.matrixWorld),c.update(p.geometry),a.renderBufferDirect(l,null,p.geometry,p.material,p,null)):b&&b.isTexture&&(void 0===h&&(h=new Db(-1,1,1,-1,0,1),k=new na(new gb(2,2),new sa({depthTest:!1,depthWrite:!1,fog:!1}))),k.material.map=b,c.update(k.geometry),a.renderBufferDirect(h,null,k.geometry,k.material,k,null))}}}function Sf(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.program&&b.program&&a.program!==b.program?a.program.id-
+b.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function Tf(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function Uf(){var a=[],b=-1,c=[],d=-1;return{opaque:a,transparent:c,init:function(){d=b=-1},push:function(e,f,g,h,k){if(g.transparent){var l=c;var p=++d}else l=a,p=++b;(p=l[p])?(p.id=e.id,p.object=e,p.geometry=f,p.material=g,p.program=g.program,p.renderOrder=e.renderOrder,p.z=h,p.group=k):(p=
+{id:e.id,object:e,geometry:f,material:g,program:g.program,renderOrder:e.renderOrder,z:h,group:k},l.push(p))},finish:function(){a.length=b+1;c.length=d+1},sort:function(){a.sort(Sf);c.sort(Tf)}}}function Vf(){var a={};return{get:function(b,c){b=b.id+","+c.id;c=a[b];void 0===c&&(c=new Uf,a[b]=c);return c},dispose:function(){a={}}}}function Wf(a,b,c){var d,e,f;this.setMode=function(a){d=a};this.setIndex=function(a){e=a.type;f=a.bytesPerElement};this.render=function(b,h){a.drawElements(d,h,e,b*f);c.calls++;
 c.vertices+=h;d===a.TRIANGLES?c.faces+=h/3:d===a.POINTS&&(c.points+=h)};this.renderInstances=function(g,h,k){var l=b.get("ANGLE_instanced_arrays");null===l?console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."):(l.drawElementsInstancedANGLE(d,k,e,h*f,g.maxInstancedCount),c.calls++,c.vertices+=k*g.maxInstancedCount,d===a.TRIANGLES?c.faces+=g.maxInstancedCount*k/3:d===a.POINTS&&(c.points+=g.maxInstancedCount*
 k))}}function Xf(a,b,c){var d;this.setMode=function(a){d=a};this.render=function(b,f){a.drawArrays(d,b,f);c.calls++;c.vertices+=f;d===a.TRIANGLES?c.faces+=f/3:d===a.POINTS&&(c.points+=f)};this.renderInstances=function(e,f,g){var h=b.get("ANGLE_instanced_arrays");if(null===h)console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{var k=e.attributes.position;k.isInterleavedBufferAttribute?(g=k.data.count,h.drawArraysInstancedANGLE(d,
 0,g,e.maxInstancedCount)):h.drawArraysInstancedANGLE(d,f,g,e.maxInstancedCount);c.calls++;c.vertices+=g*e.maxInstancedCount;d===a.TRIANGLES?c.faces+=e.maxInstancedCount*g/3:d===a.POINTS&&(c.points+=e.maxInstancedCount*g)}}}function Yf(a,b,c){function d(a){a=a.target;var g=e[a.id];null!==g.index&&b.remove(g.index);for(var k in g.attributes)b.remove(g.attributes[k]);a.removeEventListener("dispose",d);delete e[a.id];if(k=f[a.id])b.remove(k),delete f[a.id];if(k=f[g.id])b.remove(k),delete f[g.id];c.geometries--}
 var e={},f={};return{get:function(a,b){var f=e[b.id];if(f)return f;b.addEventListener("dispose",d);b.isBufferGeometry?f=b:b.isGeometry&&(void 0===b._bufferGeometry&&(b._bufferGeometry=(new F).setFromObject(a)),f=b._bufferGeometry);e[b.id]=f;c.geometries++;return f},update:function(c){var d=c.index,e=c.attributes;null!==d&&b.update(d,a.ELEMENT_ARRAY_BUFFER);for(var f in e)b.update(e[f],a.ARRAY_BUFFER);c=c.morphAttributes;for(f in c)for(var d=c[f],e=0,g=d.length;e<g;e++)b.update(d[e],a.ARRAY_BUFFER)},
-getWireframeAttribute:function(c){var d=f[c.id];if(d)return d;d=[];var e=c.index;var g=c.attributes;if(null!==e){var n=e.array;for(var q=0,r=n.length;q<r;q+=3){var t=n[q+0];g=n[q+1];e=n[q+2];d.push(t,g,g,e,e,t)}}else for(n=g.position.array,q=0,r=n.length/3-1;q<r;q+=3)t=q+0,g=q+1,e=q+2,d.push(t,g,g,e,e,t);d=new (65535<Vd(d)?eb:db)(d,1);b.update(d,a.ELEMENT_ARRAY_BUFFER);return f[c.id]=d}}}function Zf(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c=
-{direction:new p,color:new E,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new D};break;case "SpotLight":c={position:new p,direction:new p,color:new E,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new D};break;case "PointLight":c={position:new p,color:new E,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new D,shadowCameraNear:1,shadowCameraFar:1E3};break;case "HemisphereLight":c={direction:new p,skyColor:new E,groundColor:new E};
-break;case "RectAreaLight":c={color:new E,position:new p,halfWidth:new p,halfHeight:new p}}return a[b.id]=c}}}function $f(){var a=new Zf,b={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]},c=new p,d=new J,e=new J;return{setup:function(f,g,h){for(var k,l=0,n=0,q=0,r=0,t=0,m=0,w=0,v=0,p=h.matrixWorldInverse,y=0,H=f.length;y<H;y++){var B=f[y];k=B.color;
-var L=B.intensity,ya=B.distance,wa=B.shadow&&B.shadow.map?B.shadow.map.texture:null;if(B.isAmbientLight)l+=k.r*L,n+=k.g*L,q+=k.b*L;else if(B.isDirectionalLight){h=a.get(B);h.color.copy(B.color).multiplyScalar(B.intensity);h.direction.setFromMatrixPosition(B.matrixWorld);c.setFromMatrixPosition(B.target.matrixWorld);h.direction.sub(c);h.direction.transformDirection(p);if(h.shadow=B.castShadow)k=B.shadow,h.shadowBias=k.bias,h.shadowRadius=k.radius,h.shadowMapSize=k.mapSize;b.directionalShadowMap[r]=
-wa;b.directionalShadowMatrix[r]=B.shadow.matrix;b.directional[r]=h;r++}else if(B.isSpotLight){h=a.get(B);h.position.setFromMatrixPosition(B.matrixWorld);h.position.applyMatrix4(p);h.color.copy(k).multiplyScalar(L);h.distance=ya;h.direction.setFromMatrixPosition(B.matrixWorld);c.setFromMatrixPosition(B.target.matrixWorld);h.direction.sub(c);h.direction.transformDirection(p);h.coneCos=Math.cos(B.angle);h.penumbraCos=Math.cos(B.angle*(1-B.penumbra));h.decay=0===B.distance?0:B.decay;if(h.shadow=B.castShadow)k=
-B.shadow,h.shadowBias=k.bias,h.shadowRadius=k.radius,h.shadowMapSize=k.mapSize;b.spotShadowMap[m]=wa;b.spotShadowMatrix[m]=B.shadow.matrix;b.spot[m]=h;m++}else if(B.isRectAreaLight)h=a.get(B),h.color.copy(k).multiplyScalar(L/(B.width*B.height)),h.position.setFromMatrixPosition(B.matrixWorld),h.position.applyMatrix4(p),e.identity(),d.copy(B.matrixWorld),d.premultiply(p),e.extractRotation(d),h.halfWidth.set(.5*B.width,0,0),h.halfHeight.set(0,.5*B.height,0),h.halfWidth.applyMatrix4(e),h.halfHeight.applyMatrix4(e),
-b.rectArea[w]=h,w++;else if(B.isPointLight){h=a.get(B);h.position.setFromMatrixPosition(B.matrixWorld);h.position.applyMatrix4(p);h.color.copy(B.color).multiplyScalar(B.intensity);h.distance=B.distance;h.decay=0===B.distance?0:B.decay;if(h.shadow=B.castShadow)k=B.shadow,h.shadowBias=k.bias,h.shadowRadius=k.radius,h.shadowMapSize=k.mapSize,h.shadowCameraNear=k.camera.near,h.shadowCameraFar=k.camera.far;b.pointShadowMap[t]=wa;b.pointShadowMatrix[t]=B.shadow.matrix;b.point[t]=h;t++}else B.isHemisphereLight&&
-(h=a.get(B),h.direction.setFromMatrixPosition(B.matrixWorld),h.direction.transformDirection(p),h.direction.normalize(),h.skyColor.copy(B.color).multiplyScalar(L),h.groundColor.copy(B.groundColor).multiplyScalar(L),b.hemi[v]=h,v++)}b.ambient[0]=l;b.ambient[1]=n;b.ambient[2]=q;b.directional.length=r;b.spot.length=m;b.rectArea.length=w;b.point.length=t;b.hemi.length=v;b.hash=r+","+t+","+m+","+w+","+v+","+g.length},state:b}}function ag(a,b){var c={};return{update:function(d){var e=b.frame,f=d.geometry,
+getWireframeAttribute:function(c){var d=f[c.id];if(d)return d;d=[];var e=c.index;var g=c.attributes;if(null!==e){var p=e.array;for(var q=0,t=p.length;q<t;q+=3){var r=p[q+0];g=p[q+1];e=p[q+2];d.push(r,g,g,e,e,r)}}else for(p=g.position.array,q=0,t=p.length/3-1;q<t;q+=3)r=q+0,g=q+1,e=q+2,d.push(r,g,g,e,e,r);d=new (65535<Vd(d)?eb:db)(d,1);b.update(d,a.ELEMENT_ARRAY_BUFFER);return f[c.id]=d}}}function Zf(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c=
+{direction:new n,color:new E,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new D};break;case "SpotLight":c={position:new n,direction:new n,color:new E,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new D};break;case "PointLight":c={position:new n,color:new E,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new D,shadowCameraNear:1,shadowCameraFar:1E3};break;case "HemisphereLight":c={direction:new n,skyColor:new E,groundColor:new E};
+break;case "RectAreaLight":c={color:new E,position:new n,halfWidth:new n,halfHeight:new n}}return a[b.id]=c}}}function $f(){var a=new Zf,b={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]},c=new n,d=new J,e=new J;return{setup:function(f,g,h){for(var k,l=0,p=0,q=0,t=0,r=0,m=0,w=0,u=0,n=h.matrixWorldInverse,y=0,H=f.length;y<H;y++){var B=f[y];k=B.color;
+var L=B.intensity,ya=B.distance,wa=B.shadow&&B.shadow.map?B.shadow.map.texture:null;if(B.isAmbientLight)l+=k.r*L,p+=k.g*L,q+=k.b*L;else if(B.isDirectionalLight){h=a.get(B);h.color.copy(B.color).multiplyScalar(B.intensity);h.direction.setFromMatrixPosition(B.matrixWorld);c.setFromMatrixPosition(B.target.matrixWorld);h.direction.sub(c);h.direction.transformDirection(n);if(h.shadow=B.castShadow)k=B.shadow,h.shadowBias=k.bias,h.shadowRadius=k.radius,h.shadowMapSize=k.mapSize;b.directionalShadowMap[t]=
+wa;b.directionalShadowMatrix[t]=B.shadow.matrix;b.directional[t]=h;t++}else if(B.isSpotLight){h=a.get(B);h.position.setFromMatrixPosition(B.matrixWorld);h.position.applyMatrix4(n);h.color.copy(k).multiplyScalar(L);h.distance=ya;h.direction.setFromMatrixPosition(B.matrixWorld);c.setFromMatrixPosition(B.target.matrixWorld);h.direction.sub(c);h.direction.transformDirection(n);h.coneCos=Math.cos(B.angle);h.penumbraCos=Math.cos(B.angle*(1-B.penumbra));h.decay=0===B.distance?0:B.decay;if(h.shadow=B.castShadow)k=
+B.shadow,h.shadowBias=k.bias,h.shadowRadius=k.radius,h.shadowMapSize=k.mapSize;b.spotShadowMap[m]=wa;b.spotShadowMatrix[m]=B.shadow.matrix;b.spot[m]=h;m++}else if(B.isRectAreaLight)h=a.get(B),h.color.copy(k).multiplyScalar(L/(B.width*B.height)),h.position.setFromMatrixPosition(B.matrixWorld),h.position.applyMatrix4(n),e.identity(),d.copy(B.matrixWorld),d.premultiply(n),e.extractRotation(d),h.halfWidth.set(.5*B.width,0,0),h.halfHeight.set(0,.5*B.height,0),h.halfWidth.applyMatrix4(e),h.halfHeight.applyMatrix4(e),
+b.rectArea[w]=h,w++;else if(B.isPointLight){h=a.get(B);h.position.setFromMatrixPosition(B.matrixWorld);h.position.applyMatrix4(n);h.color.copy(B.color).multiplyScalar(B.intensity);h.distance=B.distance;h.decay=0===B.distance?0:B.decay;if(h.shadow=B.castShadow)k=B.shadow,h.shadowBias=k.bias,h.shadowRadius=k.radius,h.shadowMapSize=k.mapSize,h.shadowCameraNear=k.camera.near,h.shadowCameraFar=k.camera.far;b.pointShadowMap[r]=wa;b.pointShadowMatrix[r]=B.shadow.matrix;b.point[r]=h;r++}else B.isHemisphereLight&&
+(h=a.get(B),h.direction.setFromMatrixPosition(B.matrixWorld),h.direction.transformDirection(n),h.direction.normalize(),h.skyColor.copy(B.color).multiplyScalar(L),h.groundColor.copy(B.groundColor).multiplyScalar(L),b.hemi[u]=h,u++)}b.ambient[0]=l;b.ambient[1]=p;b.ambient[2]=q;b.directional.length=t;b.spot.length=m;b.rectArea.length=w;b.point.length=r;b.hemi.length=u;b.hash=t+","+r+","+m+","+w+","+u+","+g.length},state:b}}function ag(a,b){var c={};return{update:function(d){var e=b.frame,f=d.geometry,
 g=a.get(d,f);c[g.id]!==e&&(f.isGeometry&&g.updateFromObject(d),a.update(g),c[g.id]=e);return g},clear:function(){c={}}}}function bg(a){a=a.split("\n");for(var b=0;b<a.length;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function Oe(a,b,c){var d=a.createShader(b);a.shaderSource(d,c);a.compileShader(d);!1===a.getShaderParameter(d,a.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==a.getShaderInfoLog(d)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",b===a.VERTEX_SHADER?
 "vertex":"fragment",a.getShaderInfoLog(d),bg(c));return d}function Pe(a){switch(a){case 3E3:return["Linear","( value )"];case 3001:return["sRGB","( value )"];case 3002:return["RGBE","( value )"];case 3004:return["RGBM","( value, 7.0 )"];case 3005:return["RGBM","( value, 16.0 )"];case 3006:return["RGBD","( value, 256.0 )"];case 3007:return["Gamma","( value, float( GAMMA_FACTOR ) )"];default:throw Error("unsupported encoding: "+a);}}function Wd(a,b){b=Pe(b);return"vec4 "+a+"( vec4 value ) { return "+
 b[0]+"ToLinear"+b[1]+"; }"}function cg(a,b){b=Pe(b);return"vec4 "+a+"( vec4 value ) { return LinearTo"+b[0]+b[1]+"; }"}function dg(a,b){switch(b){case 1:b="Linear";break;case 2:b="Reinhard";break;case 3:b="Uncharted2";break;case 4:b="OptimizedCineon";break;default:throw Error("unsupported toneMapping: "+b);}return"vec3 "+a+"( vec3 color ) { return "+b+"ToneMapping( color ); }"}function eg(a,b,c){a=a||{};return[a.derivatives||b.envMapCubeUV||b.bumpMap||b.normalMap||b.flatShading?"#extension GL_OES_standard_derivatives : enable":
 "",(a.fragDepth||b.logarithmicDepthBuffer)&&c.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",a.drawBuffers&&c.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(a.shaderTextureLOD||b.envMap)&&c.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(wc).join("\n")}function fg(a){var b=[],c;for(c in a){var d=a[c];!1!==d&&b.push("#define "+c+" "+d)}return b.join("\n")}function wc(a){return""!==a}function Qe(a,b){return a.replace(/NUM_DIR_LIGHTS/g,
 b.numDirLights).replace(/NUM_SPOT_LIGHTS/g,b.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,b.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,b.numPointLights).replace(/NUM_HEMI_LIGHTS/g,b.numHemiLights)}function Xd(a){return a.replace(/^[ \t]*#include +<([\w\d.]+)>/gm,function(a,c){a=R[c];if(void 0===a)throw Error("Can not resolve #include <"+c+">");return Xd(a)})}function Re(a){return a.replace(/for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(a,c,d,e){a="";for(c=parseInt(c);c<
-parseInt(d);c++)a+=e.replace(/\[ i \]/g,"[ "+c+" ]");return a})}function gg(a,b,c,d,e,f){var g=a.context,h=d.defines,k=e.vertexShader,l=e.fragmentShader,n="SHADOWMAP_TYPE_BASIC";1===f.shadowMapType?n="SHADOWMAP_TYPE_PCF":2===f.shadowMapType&&(n="SHADOWMAP_TYPE_PCF_SOFT");var q="ENVMAP_TYPE_CUBE",r="ENVMAP_MODE_REFLECTION",t="ENVMAP_BLENDING_MULTIPLY";if(f.envMap){switch(d.envMap.mapping){case 301:case 302:q="ENVMAP_TYPE_CUBE";break;case 306:case 307:q="ENVMAP_TYPE_CUBE_UV";break;case 303:case 304:q=
-"ENVMAP_TYPE_EQUIREC";break;case 305:q="ENVMAP_TYPE_SPHERE"}switch(d.envMap.mapping){case 302:case 304:r="ENVMAP_MODE_REFRACTION"}switch(d.combine){case 0:t="ENVMAP_BLENDING_MULTIPLY";break;case 1:t="ENVMAP_BLENDING_MIX";break;case 2:t="ENVMAP_BLENDING_ADD"}}var m=0<a.gammaFactor?a.gammaFactor:1,w=eg(d.extensions,f,b),v=fg(h),p=g.createProgram();d.isRawShaderMaterial?(h=[v,"\n"].filter(wc).join("\n"),b=[w,v,"\n"].filter(wc).join("\n")):(h=["precision "+f.precision+" float;","precision "+f.precision+
-" int;","#define SHADER_NAME "+e.name,v,f.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+m,"#define MAX_BONES "+f.maxBones,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+r:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.displacementMap&&
+parseInt(d);c++)a+=e.replace(/\[ i \]/g,"[ "+c+" ]");return a})}function gg(a,b,c,d,e,f){var g=a.context,h=d.defines,k=e.vertexShader,l=e.fragmentShader,p="SHADOWMAP_TYPE_BASIC";1===f.shadowMapType?p="SHADOWMAP_TYPE_PCF":2===f.shadowMapType&&(p="SHADOWMAP_TYPE_PCF_SOFT");var q="ENVMAP_TYPE_CUBE",t="ENVMAP_MODE_REFLECTION",r="ENVMAP_BLENDING_MULTIPLY";if(f.envMap){switch(d.envMap.mapping){case 301:case 302:q="ENVMAP_TYPE_CUBE";break;case 306:case 307:q="ENVMAP_TYPE_CUBE_UV";break;case 303:case 304:q=
+"ENVMAP_TYPE_EQUIREC";break;case 305:q="ENVMAP_TYPE_SPHERE"}switch(d.envMap.mapping){case 302:case 304:t="ENVMAP_MODE_REFRACTION"}switch(d.combine){case 0:r="ENVMAP_BLENDING_MULTIPLY";break;case 1:r="ENVMAP_BLENDING_MIX";break;case 2:r="ENVMAP_BLENDING_ADD"}}var m=0<a.gammaFactor?a.gammaFactor:1,w=eg(d.extensions,f,b),u=fg(h),n=g.createProgram();d.isRawShaderMaterial?(h=[u,"\n"].filter(wc).join("\n"),b=[w,u,"\n"].filter(wc).join("\n")):(h=["precision "+f.precision+" float;","precision "+f.precision+
+" int;","#define SHADER_NAME "+e.name,u,f.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+m,"#define MAX_BONES "+f.maxBones,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+t:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.displacementMap&&
 f.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexColors?"#define USE_COLOR":"",f.flatShading?"#define FLAT_SHADED":"",f.skinning?"#define USE_SKINNING":"",f.useVertexTexture?"#define BONE_TEXTURE":"",f.morphTargets?"#define USE_MORPHTARGETS":"",f.morphNormals&&!1===f.flatShading?"#define USE_MORPHNORMALS":"",f.doubleSided?
-"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+f.numClippingPlanes,f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+n:"",f.sizeAttenuation?"#define USE_SIZEATTENUATION":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&b.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;",
+"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+f.numClippingPlanes,f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+p:"",f.sizeAttenuation?"#define USE_SIZEATTENUATION":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&b.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;",
 "uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;",
-"\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(wc).join("\n"),b=[w,"precision "+f.precision+" float;","precision "+f.precision+" int;","#define SHADER_NAME "+e.name,v,f.alphaTest?"#define ALPHATEST "+f.alphaTest:"","#define GAMMA_FACTOR "+m,f.useFog&&f.fog?"#define USE_FOG":
-"",f.useFog&&f.fogExp?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+q:"",f.envMap?"#define "+r:"",f.envMap?"#define "+t:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?
-"#define USE_ALPHAMAP":"",f.vertexColors?"#define USE_COLOR":"",f.gradientMap?"#define USE_GRADIENTMAP":"",f.flatShading?"#define FLAT_SHADED":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+f.numClippingPlanes,"#define UNION_CLIPPING_PLANES "+(f.numClippingPlanes-f.numClipIntersection),f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+n:"",f.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",f.physicallyCorrectLights?
+"\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(wc).join("\n"),b=[w,"precision "+f.precision+" float;","precision "+f.precision+" int;","#define SHADER_NAME "+e.name,u,f.alphaTest?"#define ALPHATEST "+f.alphaTest:"","#define GAMMA_FACTOR "+m,f.useFog&&f.fog?"#define USE_FOG":
+"",f.useFog&&f.fogExp?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+q:"",f.envMap?"#define "+t:"",f.envMap?"#define "+r:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?
+"#define USE_ALPHAMAP":"",f.vertexColors?"#define USE_COLOR":"",f.gradientMap?"#define USE_GRADIENTMAP":"",f.flatShading?"#define FLAT_SHADED":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+f.numClippingPlanes,"#define UNION_CLIPPING_PLANES "+(f.numClippingPlanes-f.numClipIntersection),f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+p:"",f.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",f.physicallyCorrectLights?
 "#define PHYSICALLY_CORRECT_LIGHTS":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&b.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"",f.envMap&&b.get("EXT_shader_texture_lod")?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",0!==f.toneMapping?"#define TONE_MAPPING":"",0!==f.toneMapping?R.tonemapping_pars_fragment:"",0!==f.toneMapping?dg("toneMapping",f.toneMapping):"",f.dithering?"#define DITHERING":"",f.outputEncoding||
 f.mapEncoding||f.envMapEncoding||f.emissiveMapEncoding?R.encodings_pars_fragment:"",f.mapEncoding?Wd("mapTexelToLinear",f.mapEncoding):"",f.envMapEncoding?Wd("envMapTexelToLinear",f.envMapEncoding):"",f.emissiveMapEncoding?Wd("emissiveMapTexelToLinear",f.emissiveMapEncoding):"",f.outputEncoding?cg("linearToOutputTexel",f.outputEncoding):"",f.depthPacking?"#define DEPTH_PACKING "+d.depthPacking:"","\n"].filter(wc).join("\n"));k=Xd(k);k=Qe(k,f);l=Xd(l);l=Qe(l,f);d.isShaderMaterial||(k=Re(k),l=Re(l));
-l=b+l;k=Oe(g,g.VERTEX_SHADER,h+k);l=Oe(g,g.FRAGMENT_SHADER,l);g.attachShader(p,k);g.attachShader(p,l);void 0!==d.index0AttributeName?g.bindAttribLocation(p,0,d.index0AttributeName):!0===f.morphTargets&&g.bindAttribLocation(p,0,"position");g.linkProgram(p);f=g.getProgramInfoLog(p);e=g.getShaderInfoLog(k);n=g.getShaderInfoLog(l);r=q=!0;if(!1===g.getProgramParameter(p,g.LINK_STATUS))q=!1,console.error("THREE.WebGLProgram: shader error: ",g.getError(),"gl.VALIDATE_STATUS",g.getProgramParameter(p,g.VALIDATE_STATUS),
-"gl.getProgramInfoLog",f,e,n);else if(""!==f)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",f);else if(""===e||""===n)r=!1;r&&(this.diagnostics={runnable:q,material:d,programLog:f,vertexShader:{log:e,prefix:h},fragmentShader:{log:n,prefix:b}});g.deleteShader(k);g.deleteShader(l);var y;this.getUniforms=function(){void 0===y&&(y=new cb(g,p,a));return y};var H;this.getAttributes=function(){if(void 0===H){for(var a={},b=g.getProgramParameter(p,g.ACTIVE_ATTRIBUTES),c=0;c<b;c++){var d=g.getActiveAttrib(p,
-c).name;a[d]=g.getAttribLocation(p,d)}H=a}return H};this.destroy=function(){g.deleteProgram(p);this.program=void 0};Object.defineProperties(this,{uniforms:{get:function(){console.warn("THREE.WebGLProgram: .uniforms is now .getUniforms().");return this.getUniforms()}},attributes:{get:function(){console.warn("THREE.WebGLProgram: .attributes is now .getAttributes().");return this.getAttributes()}}});this.id=hg++;this.code=c;this.usedTimes=1;this.program=p;this.vertexShader=k;this.fragmentShader=l;return this}
+l=b+l;k=Oe(g,g.VERTEX_SHADER,h+k);l=Oe(g,g.FRAGMENT_SHADER,l);g.attachShader(n,k);g.attachShader(n,l);void 0!==d.index0AttributeName?g.bindAttribLocation(n,0,d.index0AttributeName):!0===f.morphTargets&&g.bindAttribLocation(n,0,"position");g.linkProgram(n);f=g.getProgramInfoLog(n);e=g.getShaderInfoLog(k);p=g.getShaderInfoLog(l);t=q=!0;if(!1===g.getProgramParameter(n,g.LINK_STATUS))q=!1,console.error("THREE.WebGLProgram: shader error: ",g.getError(),"gl.VALIDATE_STATUS",g.getProgramParameter(n,g.VALIDATE_STATUS),
+"gl.getProgramInfoLog",f,e,p);else if(""!==f)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",f);else if(""===e||""===p)t=!1;t&&(this.diagnostics={runnable:q,material:d,programLog:f,vertexShader:{log:e,prefix:h},fragmentShader:{log:p,prefix:b}});g.deleteShader(k);g.deleteShader(l);var y;this.getUniforms=function(){void 0===y&&(y=new cb(g,n,a));return y};var H;this.getAttributes=function(){if(void 0===H){for(var a={},b=g.getProgramParameter(n,g.ACTIVE_ATTRIBUTES),c=0;c<b;c++){var d=g.getActiveAttrib(n,
+c).name;a[d]=g.getAttribLocation(n,d)}H=a}return H};this.destroy=function(){g.deleteProgram(n);this.program=void 0};Object.defineProperties(this,{uniforms:{get:function(){console.warn("THREE.WebGLProgram: .uniforms is now .getUniforms().");return this.getUniforms()}},attributes:{get:function(){console.warn("THREE.WebGLProgram: .attributes is now .getAttributes().");return this.getAttributes()}}});this.id=hg++;this.code=c;this.usedTimes=1;this.program=n;this.vertexShader=k;this.fragmentShader=l;return this}
 function ig(a,b,c){function d(a,b){if(a)a.isTexture?c=a.encoding:a.isWebGLRenderTarget&&(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),c=a.texture.encoding);else var c=3E3;3E3===c&&b&&(c=3007);return c}var e=[],f={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"phong",
 MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points"},g="precision supportsVertexTextures map mapEncoding envMap envMapMode envMapEncoding lightMap aoMap emissiveMap emissiveMapEncoding bumpMap normalMap displacementMap specularMap roughnessMap metalnessMap gradientMap alphaMap combine vertexColors fog useFog fogExp flatShading sizeAttenuation logarithmicDepthBuffer skinning maxBones useVertexTexture morphTargets morphNormals maxMorphTargets maxMorphNormals premultipliedAlpha numDirLights numPointLights numSpotLights numHemiLights numRectAreaLights shadowMapEnabled shadowMapType toneMapping physicallyCorrectLights alphaTest doubleSided flipSided numClippingPlanes numClipIntersection depthPacking dithering".split(" ");
-this.getParameters=function(b,e,g,n,q,r,t){var h=f[b.type];if(t.isSkinnedMesh){var k=t.skeleton.bones;if(c.floatVertexTextures)k=1024;else{var l=Math.min(Math.floor((c.maxVertexUniforms-20)/4),k.length);l<k.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+k.length+" bones. This GPU supports "+l+"."),k=0):k=l}}else k=0;l=c.precision;null!==b.precision&&(l=c.getMaxPrecision(b.precision),l!==b.precision&&console.warn("THREE.WebGLProgram.getParameters:",b.precision,"not supported, using",l,"instead."));
+this.getParameters=function(b,e,g,p,q,t,r){var h=f[b.type];if(r.isSkinnedMesh){var k=r.skeleton.bones;if(c.floatVertexTextures)k=1024;else{var l=Math.min(Math.floor((c.maxVertexUniforms-20)/4),k.length);l<k.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+k.length+" bones. This GPU supports "+l+"."),k=0):k=l}}else k=0;l=c.precision;null!==b.precision&&(l=c.getMaxPrecision(b.precision),l!==b.precision&&console.warn("THREE.WebGLProgram.getParameters:",b.precision,"not supported, using",l,"instead."));
 var m=a.getRenderTarget();return{shaderID:h,precision:l,supportsVertexTextures:c.vertexTextures,outputEncoding:d(m?m.texture:null,a.gammaOutput),map:!!b.map,mapEncoding:d(b.map,a.gammaInput),envMap:!!b.envMap,envMapMode:b.envMap&&b.envMap.mapping,envMapEncoding:d(b.envMap,a.gammaInput),envMapCubeUV:!!b.envMap&&(306===b.envMap.mapping||307===b.envMap.mapping),lightMap:!!b.lightMap,aoMap:!!b.aoMap,emissiveMap:!!b.emissiveMap,emissiveMapEncoding:d(b.emissiveMap,a.gammaInput),bumpMap:!!b.bumpMap,normalMap:!!b.normalMap,
-displacementMap:!!b.displacementMap,roughnessMap:!!b.roughnessMap,metalnessMap:!!b.metalnessMap,specularMap:!!b.specularMap,alphaMap:!!b.alphaMap,gradientMap:!!b.gradientMap,combine:b.combine,vertexColors:b.vertexColors,fog:!!n,useFog:b.fog,fogExp:n&&n.isFogExp2,flatShading:b.flatShading,sizeAttenuation:b.sizeAttenuation,logarithmicDepthBuffer:c.logarithmicDepthBuffer,skinning:b.skinning&&0<k,maxBones:k,useVertexTexture:c.floatVertexTextures,morphTargets:b.morphTargets,morphNormals:b.morphNormals,
-maxMorphTargets:a.maxMorphTargets,maxMorphNormals:a.maxMorphNormals,numDirLights:e.directional.length,numPointLights:e.point.length,numSpotLights:e.spot.length,numRectAreaLights:e.rectArea.length,numHemiLights:e.hemi.length,numClippingPlanes:q,numClipIntersection:r,dithering:b.dithering,shadowMapEnabled:a.shadowMap.enabled&&t.receiveShadow&&0<g.length,shadowMapType:a.shadowMap.type,toneMapping:a.toneMapping,physicallyCorrectLights:a.physicallyCorrectLights,premultipliedAlpha:b.premultipliedAlpha,
+displacementMap:!!b.displacementMap,roughnessMap:!!b.roughnessMap,metalnessMap:!!b.metalnessMap,specularMap:!!b.specularMap,alphaMap:!!b.alphaMap,gradientMap:!!b.gradientMap,combine:b.combine,vertexColors:b.vertexColors,fog:!!p,useFog:b.fog,fogExp:p&&p.isFogExp2,flatShading:b.flatShading,sizeAttenuation:b.sizeAttenuation,logarithmicDepthBuffer:c.logarithmicDepthBuffer,skinning:b.skinning&&0<k,maxBones:k,useVertexTexture:c.floatVertexTextures,morphTargets:b.morphTargets,morphNormals:b.morphNormals,
+maxMorphTargets:a.maxMorphTargets,maxMorphNormals:a.maxMorphNormals,numDirLights:e.directional.length,numPointLights:e.point.length,numSpotLights:e.spot.length,numRectAreaLights:e.rectArea.length,numHemiLights:e.hemi.length,numClippingPlanes:q,numClipIntersection:t,dithering:b.dithering,shadowMapEnabled:a.shadowMap.enabled&&r.receiveShadow&&0<g.length,shadowMapType:a.shadowMap.type,toneMapping:a.toneMapping,physicallyCorrectLights:a.physicallyCorrectLights,premultipliedAlpha:b.premultipliedAlpha,
 alphaTest:b.alphaTest,doubleSided:2===b.side,flipSided:1===b.side,depthPacking:void 0!==b.depthPacking?b.depthPacking:!1}};this.getProgramCode=function(b,c){var d=[];c.shaderID?d.push(c.shaderID):(d.push(b.fragmentShader),d.push(b.vertexShader));if(void 0!==b.defines)for(var e in b.defines)d.push(e),d.push(b.defines[e]);for(e=0;e<g.length;e++)d.push(c[g[e]]);d.push(b.onBeforeCompile.toString());d.push(a.gammaOutput);return d.join()};this.acquireProgram=function(c,d,f,g){for(var h,k=0,l=e.length;k<
-l;k++){var n=e[k];if(n.code===g){h=n;++h.usedTimes;break}}void 0===h&&(h=new gg(a,b,g,c,d,f),e.push(h));return h};this.releaseProgram=function(a){if(0===--a.usedTimes){var b=e.indexOf(a);e[b]=e[e.length-1];e.pop();a.destroy()}};this.programs=e}function jg(a,b,c,d,e,f,g){function h(a,b){if(a.width>b||a.height>b){b/=Math.max(a.width,a.height);var c=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");c.width=Math.floor(a.width*b);c.height=Math.floor(a.height*b);c.getContext("2d").drawImage(a,
-0,0,a.width,a.height,0,0,c.width,c.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+c.width+"x"+c.height,a);return c}return a}function k(a){return P.isPowerOfTwo(a.width)&&P.isPowerOfTwo(a.height)}function l(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function n(b){return 1003===b||1004===b||1005===b?a.NEAREST:a.LINEAR}function q(b){b=b.target;b.removeEventListener("dispose",q);a:{var c=d.get(b);if(b.image&&c.__image__webglTextureCube)a.deleteTexture(c.__image__webglTextureCube);
-else{if(void 0===c.__webglInit)break a;a.deleteTexture(c.__webglTexture)}d.remove(b)}g.textures--}function r(b){b=b.target;b.removeEventListener("dispose",r);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer),
-c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.remove(b.texture);d.remove(b)}g.textures--}function t(b,n){var r=d.get(b);if(0<b.version&&r.__version!==b.version){var t=b.image;if(void 0===t)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",b);else if(!1===t.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",b);else{void 0===r.__webglInit&&(r.__webglInit=!0,b.addEventListener("dispose",q),r.__webglTexture=
-a.createTexture(),g.textures++);c.activeTexture(a.TEXTURE0+n);c.bindTexture(a.TEXTURE_2D,r.__webglTexture);a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,b.premultiplyAlpha);a.pixelStorei(a.UNPACK_ALIGNMENT,b.unpackAlignment);var u=h(b.image,e.maxTextureSize);(1001!==b.wrapS||1001!==b.wrapT||1003!==b.minFilter&&1006!==b.minFilter)&&!1===k(u)&&(n=u,n instanceof HTMLImageElement||n instanceof HTMLCanvasElement?(t=document.createElementNS("http://www.w3.org/1999/xhtml",
-"canvas"),t.width=P.nearestPowerOfTwo(n.width),t.height=P.nearestPowerOfTwo(n.height),t.getContext("2d").drawImage(n,0,0,t.width,t.height),console.warn("THREE.WebGLRenderer: image is not power of two ("+n.width+"x"+n.height+"). Resized to "+t.width+"x"+t.height,n),u=t):u=n);n=k(u);var t=f(b.format),y=f(b.type);m(a.TEXTURE_2D,b,n);var v=b.mipmaps;if(b.isDepthTexture){v=a.DEPTH_COMPONENT;if(1015===b.type){if(!A)throw Error("Float Depth Texture only supported in WebGL2.0");v=a.DEPTH_COMPONENT32F}else A&&
-(v=a.DEPTH_COMPONENT16);1026===b.format&&v===a.DEPTH_COMPONENT&&1012!==b.type&&1014!==b.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),b.type=1012,y=f(b.type));1027===b.format&&(v=a.DEPTH_STENCIL,1020!==b.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),b.type=1020,y=f(b.type)));c.texImage2D(a.TEXTURE_2D,0,v,u.width,u.height,0,t,y,null)}else if(b.isDataTexture)if(0<v.length&&
-n){for(var p=0,w=v.length;p<w;p++)u=v[p],c.texImage2D(a.TEXTURE_2D,p,t,u.width,u.height,0,t,y,u.data);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,t,u.width,u.height,0,t,y,u.data);else if(b.isCompressedTexture)for(p=0,w=v.length;p<w;p++)u=v[p],1023!==b.format&&1022!==b.format?-1<c.getCompressedTextureFormats().indexOf(t)?c.compressedTexImage2D(a.TEXTURE_2D,p,t,u.width,u.height,0,u.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):
-c.texImage2D(a.TEXTURE_2D,p,t,u.width,u.height,0,t,y,u.data);else if(0<v.length&&n){p=0;for(w=v.length;p<w;p++)u=v[p],c.texImage2D(a.TEXTURE_2D,p,t,t,y,u);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,t,t,y,u);l(b,n)&&a.generateMipmap(a.TEXTURE_2D);r.__version=b.version;if(b.onUpdate)b.onUpdate(b);return}}c.activeTexture(a.TEXTURE0+n);c.bindTexture(a.TEXTURE_2D,r.__webglTexture)}function m(c,g,h){h?(a.texParameteri(c,a.TEXTURE_WRAP_S,f(g.wrapS)),a.texParameteri(c,a.TEXTURE_WRAP_T,f(g.wrapT)),
-a.texParameteri(c,a.TEXTURE_MAG_FILTER,f(g.magFilter)),a.texParameteri(c,a.TEXTURE_MIN_FILTER,f(g.minFilter))):(a.texParameteri(c,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(c,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),1001===g.wrapS&&1001===g.wrapT||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.",g),a.texParameteri(c,a.TEXTURE_MAG_FILTER,n(g.magFilter)),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n(g.minFilter)),
+l;k++){var p=e[k];if(p.code===g){h=p;++h.usedTimes;break}}void 0===h&&(h=new gg(a,b,g,c,d,f),e.push(h));return h};this.releaseProgram=function(a){if(0===--a.usedTimes){var b=e.indexOf(a);e[b]=e[e.length-1];e.pop();a.destroy()}};this.programs=e}function jg(a,b,c,d,e,f,g){function h(a,b){if(a.width>b||a.height>b){b/=Math.max(a.width,a.height);var c=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");c.width=Math.floor(a.width*b);c.height=Math.floor(a.height*b);c.getContext("2d").drawImage(a,
+0,0,a.width,a.height,0,0,c.width,c.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+c.width+"x"+c.height,a);return c}return a}function k(a){return P.isPowerOfTwo(a.width)&&P.isPowerOfTwo(a.height)}function l(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function p(b){return 1003===b||1004===b||1005===b?a.NEAREST:a.LINEAR}function q(b){b=b.target;b.removeEventListener("dispose",q);a:{var c=d.get(b);if(b.image&&c.__image__webglTextureCube)a.deleteTexture(c.__image__webglTextureCube);
+else{if(void 0===c.__webglInit)break a;a.deleteTexture(c.__webglTexture)}d.remove(b)}g.textures--}function t(b){b=b.target;b.removeEventListener("dispose",t);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer),
+c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.remove(b.texture);d.remove(b)}g.textures--}function r(b,p){var t=d.get(b);if(0<b.version&&t.__version!==b.version){var r=b.image;if(void 0===r)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",b);else if(!1===r.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",b);else{void 0===t.__webglInit&&(t.__webglInit=!0,b.addEventListener("dispose",q),t.__webglTexture=
+a.createTexture(),g.textures++);c.activeTexture(a.TEXTURE0+p);c.bindTexture(a.TEXTURE_2D,t.__webglTexture);a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,b.premultiplyAlpha);a.pixelStorei(a.UNPACK_ALIGNMENT,b.unpackAlignment);var v=h(b.image,e.maxTextureSize);(1001!==b.wrapS||1001!==b.wrapT||1003!==b.minFilter&&1006!==b.minFilter)&&!1===k(v)&&(p=v,p instanceof HTMLImageElement||p instanceof HTMLCanvasElement?(r=document.createElementNS("http://www.w3.org/1999/xhtml",
+"canvas"),r.width=P.nearestPowerOfTwo(p.width),r.height=P.nearestPowerOfTwo(p.height),r.getContext("2d").drawImage(p,0,0,r.width,r.height),console.warn("THREE.WebGLRenderer: image is not power of two ("+p.width+"x"+p.height+"). Resized to "+r.width+"x"+r.height,p),v=r):v=p);p=k(v);var r=f(b.format),y=f(b.type);m(a.TEXTURE_2D,b,p);var u=b.mipmaps;if(b.isDepthTexture){u=a.DEPTH_COMPONENT;if(1015===b.type){if(!A)throw Error("Float Depth Texture only supported in WebGL2.0");u=a.DEPTH_COMPONENT32F}else A&&
+(u=a.DEPTH_COMPONENT16);1026===b.format&&u===a.DEPTH_COMPONENT&&1012!==b.type&&1014!==b.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),b.type=1012,y=f(b.type));1027===b.format&&(u=a.DEPTH_STENCIL,1020!==b.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),b.type=1020,y=f(b.type)));c.texImage2D(a.TEXTURE_2D,0,u,v.width,v.height,0,r,y,null)}else if(b.isDataTexture)if(0<u.length&&
+p){for(var n=0,w=u.length;n<w;n++)v=u[n],c.texImage2D(a.TEXTURE_2D,n,r,v.width,v.height,0,r,y,v.data);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,r,v.width,v.height,0,r,y,v.data);else if(b.isCompressedTexture)for(n=0,w=u.length;n<w;n++)v=u[n],1023!==b.format&&1022!==b.format?-1<c.getCompressedTextureFormats().indexOf(r)?c.compressedTexImage2D(a.TEXTURE_2D,n,r,v.width,v.height,0,v.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):
+c.texImage2D(a.TEXTURE_2D,n,r,v.width,v.height,0,r,y,v.data);else if(0<u.length&&p){n=0;for(w=u.length;n<w;n++)v=u[n],c.texImage2D(a.TEXTURE_2D,n,r,r,y,v);b.generateMipmaps=!1}else c.texImage2D(a.TEXTURE_2D,0,r,r,y,v);l(b,p)&&a.generateMipmap(a.TEXTURE_2D);t.__version=b.version;if(b.onUpdate)b.onUpdate(b);return}}c.activeTexture(a.TEXTURE0+p);c.bindTexture(a.TEXTURE_2D,t.__webglTexture)}function m(c,g,h){h?(a.texParameteri(c,a.TEXTURE_WRAP_S,f(g.wrapS)),a.texParameteri(c,a.TEXTURE_WRAP_T,f(g.wrapT)),
+a.texParameteri(c,a.TEXTURE_MAG_FILTER,f(g.magFilter)),a.texParameteri(c,a.TEXTURE_MIN_FILTER,f(g.minFilter))):(a.texParameteri(c,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(c,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),1001===g.wrapS&&1001===g.wrapT||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.",g),a.texParameteri(c,a.TEXTURE_MAG_FILTER,p(g.magFilter)),a.texParameteri(c,a.TEXTURE_MIN_FILTER,p(g.minFilter)),
 1003!==g.minFilter&&1006!==g.minFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.",g));!(h=b.get("EXT_texture_filter_anisotropic"))||1015===g.type&&null===b.get("OES_texture_float_linear")||1016===g.type&&null===b.get("OES_texture_half_float_linear")||!(1<g.anisotropy||d.get(g).__currentAnisotropy)||(a.texParameterf(c,h.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(g.anisotropy,e.getMaxAnisotropy())),d.get(g).__currentAnisotropy=
-g.anisotropy)}function p(b,e,g,h){var k=f(e.texture.format),l=f(e.texture.type);c.texImage2D(h,0,k,e.width,e.height,0,k,l,null);a.bindFramebuffer(a.FRAMEBUFFER,b);a.framebufferTexture2D(a.FRAMEBUFFER,g,h,d.get(e.texture).__webglTexture,0);a.bindFramebuffer(a.FRAMEBUFFER,null)}function v(b,c){a.bindRenderbuffer(a.RENDERBUFFER,b);c.depthBuffer&&!c.stencilBuffer?(a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_COMPONENT16,c.width,c.height),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.RENDERBUFFER,
-b)):c.depthBuffer&&c.stencilBuffer?(a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_STENCIL,c.width,c.height),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.RENDERBUFFER,b)):a.renderbufferStorage(a.RENDERBUFFER,a.RGBA4,c.width,c.height);a.bindRenderbuffer(a.RENDERBUFFER,null)}var A="undefined"!==typeof WebGL2RenderingContext&&a instanceof WebGL2RenderingContext;this.setTexture2D=t;this.setTextureCube=function(b,n){var r=d.get(b);if(6===b.image.length)if(0<b.version&&r.__version!==
-b.version){r.__image__webglTextureCube||(b.addEventListener("dispose",q),r.__image__webglTextureCube=a.createTexture(),g.textures++);c.activeTexture(a.TEXTURE0+n);c.bindTexture(a.TEXTURE_CUBE_MAP,r.__image__webglTextureCube);a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);n=b&&b.isCompressedTexture;for(var t=b.image[0]&&b.image[0].isDataTexture,u=[],v=0;6>v;v++)u[v]=n||t?t?b.image[v].image:b.image[v]:h(b.image[v],e.maxCubemapSize);var p=k(u[0]),y=f(b.format),w=f(b.type);m(a.TEXTURE_CUBE_MAP,b,p);for(v=
-0;6>v;v++)if(n)for(var A,H=u[v].mipmaps,x=0,z=H.length;x<z;x++)A=H[x],1023!==b.format&&1022!==b.format?-1<c.getCompressedTextureFormats().indexOf(y)?c.compressedTexImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+v,x,y,A.width,A.height,0,A.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+v,x,y,A.width,A.height,0,y,w,A.data);else t?c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+v,0,y,u[v].width,u[v].height,
-0,y,w,u[v].data):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+v,0,y,y,w,u[v]);l(b,p)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);r.__version=b.version;if(b.onUpdate)b.onUpdate(b)}else c.activeTexture(a.TEXTURE0+n),c.bindTexture(a.TEXTURE_CUBE_MAP,r.__image__webglTextureCube)};this.setTextureCubeDynamic=function(b,e){c.activeTexture(a.TEXTURE0+e);c.bindTexture(a.TEXTURE_CUBE_MAP,d.get(b).__webglTexture)};this.setupRenderTarget=function(b){var e=d.get(b),f=d.get(b.texture);b.addEventListener("dispose",r);f.__webglTexture=
-a.createTexture();g.textures++;var h=!0===b.isWebGLRenderTargetCube,q=k(b);if(h){e.__webglFramebuffer=[];for(var n=0;6>n;n++)e.__webglFramebuffer[n]=a.createFramebuffer()}else e.__webglFramebuffer=a.createFramebuffer();if(h){c.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);m(a.TEXTURE_CUBE_MAP,b.texture,q);for(n=0;6>n;n++)p(e.__webglFramebuffer[n],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+n);l(b.texture,q)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);c.bindTexture(a.TEXTURE_CUBE_MAP,null)}else c.bindTexture(a.TEXTURE_2D,
-f.__webglTexture),m(a.TEXTURE_2D,b.texture,q),p(e.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),l(b.texture,q)&&a.generateMipmap(a.TEXTURE_2D),c.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){e=d.get(b);f=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error("target.depthTexture not supported in Cube render targets");if(b&&b.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported");a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer);if(!b.depthTexture||
-!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);t(b.depthTexture,0);e=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.TEXTURE_2D,e,0);else if(1027===
-b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.TEXTURE_2D,e,0);else throw Error("Unknown depthTexture format");}else if(f)for(e.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer[f]),e.__webglDepthbuffer[f]=a.createRenderbuffer(),v(e.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer),e.__webglDepthbuffer=a.createRenderbuffer(),v(e.__webglDepthbuffer,b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};
+g.anisotropy)}function n(b,e,g,h){var k=f(e.texture.format),l=f(e.texture.type);c.texImage2D(h,0,k,e.width,e.height,0,k,l,null);a.bindFramebuffer(a.FRAMEBUFFER,b);a.framebufferTexture2D(a.FRAMEBUFFER,g,h,d.get(e.texture).__webglTexture,0);a.bindFramebuffer(a.FRAMEBUFFER,null)}function u(b,c){a.bindRenderbuffer(a.RENDERBUFFER,b);c.depthBuffer&&!c.stencilBuffer?(a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_COMPONENT16,c.width,c.height),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.RENDERBUFFER,
+b)):c.depthBuffer&&c.stencilBuffer?(a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_STENCIL,c.width,c.height),a.framebufferRenderbuffer(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.RENDERBUFFER,b)):a.renderbufferStorage(a.RENDERBUFFER,a.RGBA4,c.width,c.height);a.bindRenderbuffer(a.RENDERBUFFER,null)}var A="undefined"!==typeof WebGL2RenderingContext&&a instanceof WebGL2RenderingContext;this.setTexture2D=r;this.setTextureCube=function(b,p){var t=d.get(b);if(6===b.image.length)if(0<b.version&&t.__version!==
+b.version){t.__image__webglTextureCube||(b.addEventListener("dispose",q),t.__image__webglTextureCube=a.createTexture(),g.textures++);c.activeTexture(a.TEXTURE0+p);c.bindTexture(a.TEXTURE_CUBE_MAP,t.__image__webglTextureCube);a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);p=b&&b.isCompressedTexture;for(var r=b.image[0]&&b.image[0].isDataTexture,v=[],u=0;6>u;u++)v[u]=p||r?r?b.image[u].image:b.image[u]:h(b.image[u],e.maxCubemapSize);var n=k(v[0]),y=f(b.format),w=f(b.type);m(a.TEXTURE_CUBE_MAP,b,n);for(u=
+0;6>u;u++)if(p)for(var A,H=v[u].mipmaps,x=0,z=H.length;x<z;x++)A=H[x],1023!==b.format&&1022!==b.format?-1<c.getCompressedTextureFormats().indexOf(y)?c.compressedTexImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+u,x,y,A.width,A.height,0,A.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+u,x,y,A.width,A.height,0,y,w,A.data);else r?c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+u,0,y,v[u].width,v[u].height,
+0,y,w,v[u].data):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+u,0,y,y,w,v[u]);l(b,n)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);t.__version=b.version;if(b.onUpdate)b.onUpdate(b)}else c.activeTexture(a.TEXTURE0+p),c.bindTexture(a.TEXTURE_CUBE_MAP,t.__image__webglTextureCube)};this.setTextureCubeDynamic=function(b,e){c.activeTexture(a.TEXTURE0+e);c.bindTexture(a.TEXTURE_CUBE_MAP,d.get(b).__webglTexture)};this.setupRenderTarget=function(b){var e=d.get(b),f=d.get(b.texture);b.addEventListener("dispose",t);f.__webglTexture=
+a.createTexture();g.textures++;var h=!0===b.isWebGLRenderTargetCube,q=k(b);if(h){e.__webglFramebuffer=[];for(var p=0;6>p;p++)e.__webglFramebuffer[p]=a.createFramebuffer()}else e.__webglFramebuffer=a.createFramebuffer();if(h){c.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);m(a.TEXTURE_CUBE_MAP,b.texture,q);for(p=0;6>p;p++)n(e.__webglFramebuffer[p],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+p);l(b.texture,q)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);c.bindTexture(a.TEXTURE_CUBE_MAP,null)}else c.bindTexture(a.TEXTURE_2D,
+f.__webglTexture),m(a.TEXTURE_2D,b.texture,q),n(e.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),l(b.texture,q)&&a.generateMipmap(a.TEXTURE_2D),c.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){e=d.get(b);f=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error("target.depthTexture not supported in Cube render targets");if(b&&b.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported");a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer);if(!b.depthTexture||
+!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);r(b.depthTexture,0);e=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.TEXTURE_2D,e,0);else if(1027===
+b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.TEXTURE_2D,e,0);else throw Error("Unknown depthTexture format");}else if(f)for(e.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer[f]),e.__webglDepthbuffer[f]=a.createRenderbuffer(),u(e.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer),e.__webglDepthbuffer=a.createRenderbuffer(),u(e.__webglDepthbuffer,b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};
 this.updateRenderTargetMipmap=function(b){var e=b.texture,f=k(b);l(e,f)&&(b=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,e=d.get(e).__webglTexture,c.bindTexture(b,e),a.generateMipmap(b),c.bindTexture(b,null))}}function kg(){var a={};return{get:function(b){b=b.uuid;var c=a[b];void 0===c&&(c={},a[b]=c);return c},remove:function(b){delete a[b.uuid]},clear:function(){a={}}}}function lg(a,b,c){function d(b,c,d){var e=new Uint8Array(4),f=a.createTexture();a.bindTexture(b,f);a.texParameteri(b,
-a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b<d;b++)a.texImage2D(c+b,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,e);return f}function e(b){!0!==y[b]&&(a.enable(b),y[b]=!0)}function f(b){!1!==y[b]&&(a.disable(b),y[b]=!1)}function g(b,d,g,h,k,l,q,n){0!==b?e(a.BLEND):f(a.BLEND);if(5!==b){if(b!==L||n!==F)switch(b){case 2:n?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE,a.ONE,a.ONE)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,
-a.ONE));break;case 3:n?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.ZERO,a.ONE_MINUS_SRC_COLOR,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR));break;case 4:n?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.SRC_COLOR,a.ZERO,a.SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR));break;default:n?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE_MINUS_SRC_ALPHA,
-a.ONE,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA))}E=D=ea=z=x=ya=null}else{k=k||d;l=l||g;q=q||h;if(d!==ya||k!==ea)a.blendEquationSeparate(c(d),c(k)),ya=d,ea=k;if(g!==x||h!==z||l!==D||q!==E)a.blendFuncSeparate(c(g),c(h),c(l),c(q)),x=g,z=h,D=l,E=q}L=b;F=n}function h(b){J!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),J=b)}function k(b){0!==b?(e(a.CULL_FACE),b!==K&&(1===b?a.cullFace(a.BACK):2===
-b?a.cullFace(a.FRONT):a.cullFace(a.FRONT_AND_BACK))):f(a.CULL_FACE);K=b}function l(b,c,d){if(b){if(e(a.POLYGON_OFFSET_FILL),U!==c||I!==d)a.polygonOffset(c,d),U=c,I=d}else f(a.POLYGON_OFFSET_FILL)}function n(b){void 0===b&&(b=a.TEXTURE0+X-1);O!==b&&(a.activeTexture(b),O=b)}var q=new function(){var b=!1,c=new ca,d=null,e=new ca(0,0,0,0);return{setMask:function(c){d===c||b||(a.colorMask(c,c,c,c),d=c)},setLocked:function(a){b=a},setClear:function(b,d,f,g,h){!0===h&&(b*=g,d*=g,f*=g);c.set(b,d,f,g);!1===
-e.equals(c)&&(a.clearColor(b,d,f,g),e.copy(c))},reset:function(){b=!1;d=null;e.set(-1,0,0,0)}}},r=new function(){var b=!1,c=null,d=null,g=null;return{setTest:function(b){b?e(a.DEPTH_TEST):f(a.DEPTH_TEST)},setMask:function(d){c===d||b||(a.depthMask(d),c=d)},setFunc:function(b){if(d!==b){if(b)switch(b){case 0:a.depthFunc(a.NEVER);break;case 1:a.depthFunc(a.ALWAYS);break;case 2:a.depthFunc(a.LESS);break;case 3:a.depthFunc(a.LEQUAL);break;case 4:a.depthFunc(a.EQUAL);break;case 5:a.depthFunc(a.GEQUAL);
-break;case 6:a.depthFunc(a.GREATER);break;case 7:a.depthFunc(a.NOTEQUAL);break;default:a.depthFunc(a.LEQUAL)}else a.depthFunc(a.LEQUAL);d=b}},setLocked:function(a){b=a},setClear:function(b){g!==b&&(a.clearDepth(b),g=b)},reset:function(){b=!1;g=d=c=null}}},t=new function(){var b=!1,c=null,d=null,g=null,h=null,k=null,l=null,q=null,n=null;return{setTest:function(b){b?e(a.STENCIL_TEST):f(a.STENCIL_TEST)},setMask:function(d){c===d||b||(a.stencilMask(d),c=d)},setFunc:function(b,c,e){if(d!==b||g!==c||h!==
-e)a.stencilFunc(b,c,e),d=b,g=c,h=e},setOp:function(b,c,d){if(k!==b||l!==c||q!==d)a.stencilOp(b,c,d),k=b,l=c,q=d},setLocked:function(a){b=a},setClear:function(b){n!==b&&(a.clearStencil(b),n=b)},reset:function(){b=!1;n=q=l=k=h=g=d=c=null}}},m=a.getParameter(a.MAX_VERTEX_ATTRIBS),p=new Uint8Array(m),v=new Uint8Array(m),A=new Uint8Array(m),y={},H=null,B=null,L=null,ya=null,x=null,z=null,ea=null,D=null,E=null,F=!1,J=null,K=null,M=null,U=null,I=null,Q=null,X=a.getParameter(a.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
-m=parseFloat(/^WebGL\ ([0-9])/.exec(a.getParameter(a.VERSION))[1]),P=1<=parseFloat(m),O=null,N={},G=new ca,aa=new ca,R={};R[a.TEXTURE_2D]=d(a.TEXTURE_2D,a.TEXTURE_2D,1);R[a.TEXTURE_CUBE_MAP]=d(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6);q.setClear(0,0,0,1);r.setClear(1);t.setClear(0);e(a.DEPTH_TEST);r.setFunc(3);h(!1);k(1);e(a.CULL_FACE);e(a.BLEND);g(1);return{buffers:{color:q,depth:r,stencil:t},initAttributes:function(){for(var a=0,b=p.length;a<b;a++)p[a]=0},enableAttribute:function(c){p[c]=
-1;0===v[c]&&(a.enableVertexAttribArray(c),v[c]=1);0!==A[c]&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,0),A[c]=0)},enableAttributeAndDivisor:function(c,d){p[c]=1;0===v[c]&&(a.enableVertexAttribArray(c),v[c]=1);A[c]!==d&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,d),A[c]=d)},disableUnusedAttributes:function(){for(var b=0,c=v.length;b!==c;++b)v[b]!==p[b]&&(a.disableVertexAttribArray(b),v[b]=0)},enable:e,disable:f,getCompressedTextureFormats:function(){if(null===H&&
+a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b<d;b++)a.texImage2D(c+b,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,e);return f}function e(b){!0!==y[b]&&(a.enable(b),y[b]=!0)}function f(b){!1!==y[b]&&(a.disable(b),y[b]=!1)}function g(b,d,g,h,k,l,q,p){0!==b?e(a.BLEND):f(a.BLEND);if(5!==b){if(b!==L||p!==F)switch(b){case 2:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE,a.ONE,a.ONE)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,
+a.ONE));break;case 3:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.ZERO,a.ONE_MINUS_SRC_COLOR,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR));break;case 4:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.SRC_COLOR,a.ZERO,a.SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR));break;default:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE_MINUS_SRC_ALPHA,
+a.ONE,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA))}E=D=ea=z=x=ya=null}else{k=k||d;l=l||g;q=q||h;if(d!==ya||k!==ea)a.blendEquationSeparate(c(d),c(k)),ya=d,ea=k;if(g!==x||h!==z||l!==D||q!==E)a.blendFuncSeparate(c(g),c(h),c(l),c(q)),x=g,z=h,D=l,E=q}L=b;F=p}function h(b){J!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),J=b)}function k(b){0!==b?(e(a.CULL_FACE),b!==K&&(1===b?a.cullFace(a.BACK):2===
+b?a.cullFace(a.FRONT):a.cullFace(a.FRONT_AND_BACK))):f(a.CULL_FACE);K=b}function l(b,c,d){if(b){if(e(a.POLYGON_OFFSET_FILL),U!==c||I!==d)a.polygonOffset(c,d),U=c,I=d}else f(a.POLYGON_OFFSET_FILL)}function p(b){void 0===b&&(b=a.TEXTURE0+X-1);O!==b&&(a.activeTexture(b),O=b)}var q=new function(){var b=!1,c=new ca,d=null,e=new ca(0,0,0,0);return{setMask:function(c){d===c||b||(a.colorMask(c,c,c,c),d=c)},setLocked:function(a){b=a},setClear:function(b,d,f,g,h){!0===h&&(b*=g,d*=g,f*=g);c.set(b,d,f,g);!1===
+e.equals(c)&&(a.clearColor(b,d,f,g),e.copy(c))},reset:function(){b=!1;d=null;e.set(-1,0,0,0)}}},t=new function(){var b=!1,c=null,d=null,g=null;return{setTest:function(b){b?e(a.DEPTH_TEST):f(a.DEPTH_TEST)},setMask:function(d){c===d||b||(a.depthMask(d),c=d)},setFunc:function(b){if(d!==b){if(b)switch(b){case 0:a.depthFunc(a.NEVER);break;case 1:a.depthFunc(a.ALWAYS);break;case 2:a.depthFunc(a.LESS);break;case 3:a.depthFunc(a.LEQUAL);break;case 4:a.depthFunc(a.EQUAL);break;case 5:a.depthFunc(a.GEQUAL);
+break;case 6:a.depthFunc(a.GREATER);break;case 7:a.depthFunc(a.NOTEQUAL);break;default:a.depthFunc(a.LEQUAL)}else a.depthFunc(a.LEQUAL);d=b}},setLocked:function(a){b=a},setClear:function(b){g!==b&&(a.clearDepth(b),g=b)},reset:function(){b=!1;g=d=c=null}}},r=new function(){var b=!1,c=null,d=null,g=null,h=null,k=null,l=null,q=null,p=null;return{setTest:function(b){b?e(a.STENCIL_TEST):f(a.STENCIL_TEST)},setMask:function(d){c===d||b||(a.stencilMask(d),c=d)},setFunc:function(b,c,e){if(d!==b||g!==c||h!==
+e)a.stencilFunc(b,c,e),d=b,g=c,h=e},setOp:function(b,c,d){if(k!==b||l!==c||q!==d)a.stencilOp(b,c,d),k=b,l=c,q=d},setLocked:function(a){b=a},setClear:function(b){p!==b&&(a.clearStencil(b),p=b)},reset:function(){b=!1;p=q=l=k=h=g=d=c=null}}},m=a.getParameter(a.MAX_VERTEX_ATTRIBS),n=new Uint8Array(m),u=new Uint8Array(m),A=new Uint8Array(m),y={},H=null,B=null,L=null,ya=null,x=null,z=null,ea=null,D=null,E=null,F=!1,J=null,K=null,M=null,U=null,I=null,Q=null,X=a.getParameter(a.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
+m=parseFloat(/^WebGL\ ([0-9])/.exec(a.getParameter(a.VERSION))[1]),P=1<=parseFloat(m),O=null,N={},G=new ca,aa=new ca,R={};R[a.TEXTURE_2D]=d(a.TEXTURE_2D,a.TEXTURE_2D,1);R[a.TEXTURE_CUBE_MAP]=d(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6);q.setClear(0,0,0,1);t.setClear(1);r.setClear(0);e(a.DEPTH_TEST);t.setFunc(3);h(!1);k(1);e(a.CULL_FACE);e(a.BLEND);g(1);return{buffers:{color:q,depth:t,stencil:r},initAttributes:function(){for(var a=0,b=n.length;a<b;a++)n[a]=0},enableAttribute:function(c){n[c]=
+1;0===u[c]&&(a.enableVertexAttribArray(c),u[c]=1);0!==A[c]&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,0),A[c]=0)},enableAttributeAndDivisor:function(c,d){n[c]=1;0===u[c]&&(a.enableVertexAttribArray(c),u[c]=1);A[c]!==d&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,d),A[c]=d)},disableUnusedAttributes:function(){for(var b=0,c=u.length;b!==c;++b)u[b]!==n[b]&&(a.disableVertexAttribArray(b),u[b]=0)},enable:e,disable:f,getCompressedTextureFormats:function(){if(null===H&&
 (H=[],b.get("WEBGL_compressed_texture_pvrtc")||b.get("WEBGL_compressed_texture_s3tc")||b.get("WEBGL_compressed_texture_etc1")))for(var c=a.getParameter(a.COMPRESSED_TEXTURE_FORMATS),d=0;d<c.length;d++)H.push(c[d]);return H},useProgram:function(b){return B!==b?(a.useProgram(b),B=b,!0):!1},setBlending:g,setMaterial:function(b){2===b.side?f(a.CULL_FACE):e(a.CULL_FACE);h(1===b.side);!0===b.transparent?g(b.blending,b.blendEquation,b.blendSrc,b.blendDst,b.blendEquationAlpha,b.blendSrcAlpha,b.blendDstAlpha,
-b.premultipliedAlpha):g(0);r.setFunc(b.depthFunc);r.setTest(b.depthTest);r.setMask(b.depthWrite);q.setMask(b.colorWrite);l(b.polygonOffset,b.polygonOffsetFactor,b.polygonOffsetUnits)},setFlipSided:h,setCullFace:k,setLineWidth:function(b){b!==M&&(P&&a.lineWidth(b),M=b)},setPolygonOffset:l,getScissorTest:function(){return Q},setScissorTest:function(b){(Q=b)?e(a.SCISSOR_TEST):f(a.SCISSOR_TEST)},activeTexture:n,bindTexture:function(b,c){null===O&&n();var d=N[O];void 0===d&&(d={type:void 0,texture:void 0},
+b.premultipliedAlpha):g(0);t.setFunc(b.depthFunc);t.setTest(b.depthTest);t.setMask(b.depthWrite);q.setMask(b.colorWrite);l(b.polygonOffset,b.polygonOffsetFactor,b.polygonOffsetUnits)},setFlipSided:h,setCullFace:k,setLineWidth:function(b){b!==M&&(P&&a.lineWidth(b),M=b)},setPolygonOffset:l,getScissorTest:function(){return Q},setScissorTest:function(b){(Q=b)?e(a.SCISSOR_TEST):f(a.SCISSOR_TEST)},activeTexture:p,bindTexture:function(b,c){null===O&&p();var d=N[O];void 0===d&&(d={type:void 0,texture:void 0},
 N[O]=d);if(d.type!==b||d.texture!==c)a.bindTexture(b,c||R[b]),d.type=b,d.texture=c},compressedTexImage2D:function(){try{a.compressedTexImage2D.apply(a,arguments)}catch(Yd){console.error("THREE.WebGLState:",Yd)}},texImage2D:function(){try{a.texImage2D.apply(a,arguments)}catch(Yd){console.error("THREE.WebGLState:",Yd)}},scissor:function(b){!1===G.equals(b)&&(a.scissor(b.x,b.y,b.z,b.w),G.copy(b))},viewport:function(b){!1===aa.equals(b)&&(a.viewport(b.x,b.y,b.z,b.w),aa.copy(b))},reset:function(){for(var b=
-0;b<v.length;b++)1===v[b]&&(a.disableVertexAttribArray(b),v[b]=0);y={};O=H=null;N={};K=J=L=B=null;q.reset();r.reset();t.reset()}}}function mg(a,b,c){function d(b){if("highp"===b){if(0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.HIGH_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.HIGH_FLOAT).precision)return"highp";b="mediump"}return"mediump"===b&&0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.MEDIUM_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.MEDIUM_FLOAT).precision?
-"mediump":"lowp"}var e,f=void 0!==c.precision?c.precision:"highp",g=d(f);g!==f&&(console.warn("THREE.WebGLRenderer:",f,"not supported, using",g,"instead."),f=g);c=!0===c.logarithmicDepthBuffer&&!!b.get("EXT_frag_depth");var g=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),h=a.getParameter(a.MAX_VERTEX_TEXTURE_IMAGE_UNITS),k=a.getParameter(a.MAX_TEXTURE_SIZE),l=a.getParameter(a.MAX_CUBE_MAP_TEXTURE_SIZE),n=a.getParameter(a.MAX_VERTEX_ATTRIBS),q=a.getParameter(a.MAX_VERTEX_UNIFORM_VECTORS),r=a.getParameter(a.MAX_VARYING_VECTORS),
-t=a.getParameter(a.MAX_FRAGMENT_UNIFORM_VECTORS),m=0<h,p=!!b.get("OES_texture_float");return{getMaxAnisotropy:function(){if(void 0!==e)return e;var c=b.get("EXT_texture_filter_anisotropic");return e=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:d,precision:f,logarithmicDepthBuffer:c,maxTextures:g,maxVertexTextures:h,maxTextureSize:k,maxCubemapSize:l,maxAttributes:n,maxVertexUniforms:q,maxVaryings:r,maxFragmentUniforms:t,vertexTextures:m,floatFragmentTextures:p,floatVertexTextures:m&&
-p}}function nd(a){Y.call(this);this.cameras=a||[]}function ng(a){function b(){if(d.isPresenting){var b=d.getEyeParameters("left"),e=b.renderWidth,b=b.renderHeight;r=a.getPixelRatio();q=a.getSize();a.setDrawingBufferSize(2*e,b,1)}else c.enabled&&a.setDrawingBufferSize(q.width,q.height,r)}var c=this,d=null,e=null;"VRFrameData"in window&&(e=new window.VRFrameData);var f=new J,g=new J,h=new J,k=new Y;k.bounds=new ca(0,0,.5,1);k.layers.enable(1);var l=new Y;l.bounds=new ca(.5,0,.5,1);l.layers.enable(2);
-var n=new nd([k,l]);n.layers.enable(1);n.layers.enable(2);var q,r;window.addEventListener("vrdisplaypresentchange",b,!1);this.standing=this.enabled=!1;this.getDevice=function(){return d};this.setDevice=function(a){void 0!==a&&(d=a)};this.getCamera=function(a){if(null===d)return a;d.depthNear=a.near;d.depthFar=a.far;d.getFrameData(e);var b=e.pose;null!==b.position?a.position.fromArray(b.position):a.position.set(0,0,0);null!==b.orientation&&a.quaternion.fromArray(b.orientation);a.updateMatrixWorld();
-b=d.stageParameters;this.standing&&b&&(g.fromArray(b.sittingToStandingTransform),h.getInverse(g),a.matrixWorld.multiply(g),a.matrixWorldInverse.multiply(h));if(!1===d.isPresenting)return a;n.matrixWorld.copy(a.matrixWorld);n.matrixWorldInverse.copy(a.matrixWorldInverse);k.matrixWorldInverse.fromArray(e.leftViewMatrix);l.matrixWorldInverse.fromArray(e.rightViewMatrix);this.standing&&b&&(k.matrixWorldInverse.multiply(h),l.matrixWorldInverse.multiply(h));a=a.parent;null!==a&&(f.getInverse(a.matrixWorld),
-k.matrixWorldInverse.multiply(f),l.matrixWorldInverse.multiply(f));k.matrixWorld.getInverse(k.matrixWorldInverse);l.matrixWorld.getInverse(l.matrixWorldInverse);k.projectionMatrix.fromArray(e.leftProjectionMatrix);l.projectionMatrix.fromArray(e.rightProjectionMatrix);n.projectionMatrix.copy(k.projectionMatrix);a=d.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&k.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&l.bounds.fromArray(a.rightBounds));
-return n};this.getStandingMatrix=function(){return g};this.submitFrame=function(){d&&d.isPresenting&&d.submitFrame()};this.dispose=function(){window.removeEventListener("vrdisplaypresentchange",b)}}function og(a){var b={};return{get:function(c){if(void 0!==b[c])return b[c];switch(c){case "WEBGL_depth_texture":var d=a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break;case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||
+0;b<u.length;b++)1===u[b]&&(a.disableVertexAttribArray(b),u[b]=0);y={};O=H=null;N={};K=J=L=B=null;q.reset();t.reset();r.reset()}}}function mg(a,b,c){function d(b){if("highp"===b){if(0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.HIGH_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.HIGH_FLOAT).precision)return"highp";b="mediump"}return"mediump"===b&&0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.MEDIUM_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.MEDIUM_FLOAT).precision?
+"mediump":"lowp"}var e,f=void 0!==c.precision?c.precision:"highp",g=d(f);g!==f&&(console.warn("THREE.WebGLRenderer:",f,"not supported, using",g,"instead."),f=g);c=!0===c.logarithmicDepthBuffer&&!!b.get("EXT_frag_depth");var g=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),h=a.getParameter(a.MAX_VERTEX_TEXTURE_IMAGE_UNITS),k=a.getParameter(a.MAX_TEXTURE_SIZE),l=a.getParameter(a.MAX_CUBE_MAP_TEXTURE_SIZE),p=a.getParameter(a.MAX_VERTEX_ATTRIBS),q=a.getParameter(a.MAX_VERTEX_UNIFORM_VECTORS),t=a.getParameter(a.MAX_VARYING_VECTORS),
+r=a.getParameter(a.MAX_FRAGMENT_UNIFORM_VECTORS),m=0<h,n=!!b.get("OES_texture_float");return{getMaxAnisotropy:function(){if(void 0!==e)return e;var c=b.get("EXT_texture_filter_anisotropic");return e=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:d,precision:f,logarithmicDepthBuffer:c,maxTextures:g,maxVertexTextures:h,maxTextureSize:k,maxCubemapSize:l,maxAttributes:p,maxVertexUniforms:q,maxVaryings:t,maxFragmentUniforms:r,vertexTextures:m,floatFragmentTextures:n,floatVertexTextures:m&&
+n}}function nd(a){Y.call(this);this.cameras=a||[]}function ng(a){function b(){if(d.isPresenting){var b=d.getEyeParameters("left"),e=b.renderWidth,b=b.renderHeight;t=a.getPixelRatio();q=a.getSize();a.setDrawingBufferSize(2*e,b,1)}else c.enabled&&a.setDrawingBufferSize(q.width,q.height,t)}var c=this,d=null,e=null;"VRFrameData"in window&&(e=new window.VRFrameData);var f=new J,g=new J,h=new J,k=new Y;k.bounds=new ca(0,0,.5,1);k.layers.enable(1);var l=new Y;l.bounds=new ca(.5,0,.5,1);l.layers.enable(2);
+var p=new nd([k,l]);p.layers.enable(1);p.layers.enable(2);var q,t;window.addEventListener("vrdisplaypresentchange",b,!1);this.standing=this.enabled=!1;this.getDevice=function(){return d};this.setDevice=function(a){void 0!==a&&(d=a)};this.getCamera=function(a){if(null===d)return a;d.depthNear=a.near;d.depthFar=a.far;d.getFrameData(e);var b=e.pose;null!==b.position?a.position.fromArray(b.position):a.position.set(0,0,0);null!==b.orientation&&a.quaternion.fromArray(b.orientation);a.updateMatrixWorld();
+b=d.stageParameters;this.standing&&b&&(g.fromArray(b.sittingToStandingTransform),h.getInverse(g),a.matrixWorld.multiply(g),a.matrixWorldInverse.multiply(h));if(!1===d.isPresenting)return a;p.matrixWorld.copy(a.matrixWorld);p.matrixWorldInverse.copy(a.matrixWorldInverse);k.matrixWorldInverse.fromArray(e.leftViewMatrix);l.matrixWorldInverse.fromArray(e.rightViewMatrix);this.standing&&b&&(k.matrixWorldInverse.multiply(h),l.matrixWorldInverse.multiply(h));a=a.parent;null!==a&&(f.getInverse(a.matrixWorld),
+k.matrixWorldInverse.multiply(f),l.matrixWorldInverse.multiply(f));k.matrixWorld.getInverse(k.matrixWorldInverse);l.matrixWorld.getInverse(l.matrixWorldInverse);k.projectionMatrix.fromArray(e.leftProjectionMatrix);l.projectionMatrix.fromArray(e.rightProjectionMatrix);p.projectionMatrix.copy(k.projectionMatrix);a=d.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&k.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&l.bounds.fromArray(a.rightBounds));
+return p};this.getStandingMatrix=function(){return g};this.submitFrame=function(){d&&d.isPresenting&&d.submitFrame()};this.dispose=function(){window.removeEventListener("vrdisplaypresentchange",b)}}function og(a){var b={};return{get:function(c){if(void 0!==b[c])return b[c];switch(c){case "WEBGL_depth_texture":var d=a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break;case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||
 a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case "WEBGL_compressed_texture_etc1":d=
 a.getExtension("WEBGL_compressed_texture_etc1");break;default:d=a.getExtension(c)}null===d&&console.warn("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}}function pg(){function a(){l.value!==d&&(l.value=d,l.needsUpdate=0<e);c.numPlanes=e;c.numIntersection=0}function b(a,b,d,e){var f=null!==a?a.length:0,g=null;if(0!==f){g=l.value;if(!0!==e||null===g){e=d+4*f;b=b.matrixWorldInverse;k.getNormalMatrix(b);if(null===g||g.length<e)g=new Float32Array(e);for(e=0;e!==f;++e,d+=4)h.copy(a[e]).applyMatrix4(b,
-k),h.normal.toArray(g,d),g[d+3]=h.constant}l.value=g;l.needsUpdate=!0}c.numPlanes=f;return g}var c=this,d=null,e=0,f=!1,g=!1,h=new za,k=new ma,l={value:null,needsUpdate:!1};this.uniform=l;this.numIntersection=this.numPlanes=0;this.init=function(a,c,g){var h=0!==a.length||c||0!==e||f;f=c;d=b(a,g,0);e=a.length;return h};this.beginShadows=function(){g=!0;b(null)};this.endShadows=function(){g=!1;a()};this.setState=function(c,h,k,t,m,p){if(!f||null===c||0===c.length||g&&!k)g?b(null):a();else{k=g?0:e;var q=
-4*k,n=m.clippingState||null;l.value=n;n=b(c,t,q,p);for(c=0;c!==q;++c)n[c]=d[c];m.clippingState=n;this.numIntersection=h?this.numPlanes:0;this.numPlanes+=k}}}function $d(a){function b(){ia=new og(C);ia.get("WEBGL_depth_texture");ia.get("OES_texture_float");ia.get("OES_texture_float_linear");ia.get("OES_texture_half_float");ia.get("OES_texture_half_float_linear");ia.get("OES_standard_derivatives");ia.get("ANGLE_instanced_arrays");ia.get("OES_element_index_uint")&&(F.MaxIndex=4294967296);ba=new mg(C,
+k),h.normal.toArray(g,d),g[d+3]=h.constant}l.value=g;l.needsUpdate=!0}c.numPlanes=f;return g}var c=this,d=null,e=0,f=!1,g=!1,h=new za,k=new ma,l={value:null,needsUpdate:!1};this.uniform=l;this.numIntersection=this.numPlanes=0;this.init=function(a,c,g){var h=0!==a.length||c||0!==e||f;f=c;d=b(a,g,0);e=a.length;return h};this.beginShadows=function(){g=!0;b(null)};this.endShadows=function(){g=!1;a()};this.setState=function(c,h,k,r,m,n){if(!f||null===c||0===c.length||g&&!k)g?b(null):a();else{k=g?0:e;var q=
+4*k,p=m.clippingState||null;l.value=p;p=b(c,r,q,n);for(c=0;c!==q;++c)p[c]=d[c];m.clippingState=p;this.numIntersection=h?this.numPlanes:0;this.numPlanes+=k}}}function $d(a){function b(){ia=new og(C);ia.get("WEBGL_depth_texture");ia.get("OES_texture_float");ia.get("OES_texture_float_linear");ia.get("OES_texture_half_float");ia.get("OES_texture_half_float_linear");ia.get("OES_standard_derivatives");ia.get("ANGLE_instanced_arrays");ia.get("OES_element_index_uint")&&(F.MaxIndex=4294967296);ba=new mg(C,
 ia,a);Z=new lg(C,ia,w);Z.scissor(G.copy(kd).multiplyScalar(ta));Z.viewport(V.copy(ha).multiplyScalar(ta));T=new kg;ja=new jg(C,ia,Z,T,ba,w,na);qa=new Pf(C);ra=new Yf(C,qa,na);va=new ag(ra,da);oa=new ig(K,ia,ba);ua=new $f;sa=new Vf;pa=new Rf(K,Z,ra,x);xa=new Xf(C,ia,da);za=new Wf(C,ia,da);Aa=new Mf(K,C,Z,ja,ba);Ba=new Nf(K,C,Z,ja,ba);K.info.programs=oa.programs;K.context=C;K.capabilities=ba;K.extensions=ia;K.properties=T;K.renderLists=sa;K.state=Z}function c(a){a.preventDefault();console.log("THREE.WebGLRenderer: Context Lost.");
-M=!0}function d(a){console.log("THREE.WebGLRenderer: Context Restored.");M=!1;b()}function e(a){a=a.target;a.removeEventListener("dispose",e);f(a);T.remove(a)}function f(a){var b=T.get(a).program;a.program=void 0;void 0!==b&&oa.releaseProgram(b)}function g(a,b,c){a.render(function(a){K.renderBufferImmediate(a,b,c)})}function h(a,b){return Math.abs(b[0])-Math.abs(a[0])}function k(a,b,c){if(a.visible){if(a.layers.test(b.layers))if(a.isLight)z.push(a),a.castShadow&&ea.push(a);else if(a.isSprite)a.frustumCulled&&
+M=!0}function d(a){console.log("THREE.WebGLRenderer: Context Restored.");M=!1;b()}function e(a){a=a.target;a.removeEventListener("dispose",e);f(a);T.remove(a)}function f(a){var b=T.get(a).program;a.program=void 0;void 0!==b&&oa.releaseProgram(b)}function g(a,b,c){a.render(function(a){K.renderBufferImmediate(a,b,c)})}function h(a,b){return Math.abs(b[1])-Math.abs(a[1])}function k(a,b,c){if(a.visible){if(a.layers.test(b.layers))if(a.isLight)z.push(a),a.castShadow&&ea.push(a);else if(a.isSprite)a.frustumCulled&&
 !ka.intersectsSprite(a)||ga.push(a);else if(a.isLensFlare)I.push(a);else if(a.isImmediateRenderObject)c&&Gb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(md),D.push(a,null,a.material,Gb.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&a.skeleton.update(),!a.frustumCulled||ka.intersectsObject(a)){c&&Gb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(md);var d=va.update(a),e=a.material;if(Array.isArray(e))for(var f=d.groups,g=0,h=f.length;g<h;g++){var l=f[g],q=e[l.materialIndex];
-q&&q.visible&&D.push(a,d,q,Gb.z,l)}else e.visible&&D.push(a,d,e,Gb.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)k(a[g],b,c)}}function l(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,l=void 0===d?g.material:d,g=g.group;if(c.isArrayCamera){S=c;for(var q=c.cameras,r=0,t=q.length;r<t;r++){var m=q[r];if(h.layers.test(m.layers)){var u=m.bounds,p=u.x*W,v=u.y*Y,od=u.z*W,u=u.w*Y;Z.viewport(V.set(p,v,od,u).multiplyScalar(ta));Z.scissor(G.set(p,v,od,u).multiplyScalar(ta));Z.setScissorTest(!0);
-n(h,b,m,k,l,g)}}}else S=null,n(h,b,c,k,l,g)}}function n(a,b,c,d,e,f){a.onBeforeRender(K,b,c,d,e,f);a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){Z.setMaterial(e);var h=r(c,b.fog,e,a);X="";g(a,h,e)}else K.renderBufferDirect(c,b.fog,d,e,a,f);a.onAfterRender(K,b,c,d,e,f)}function q(a,b,c){var d=T.get(a);c=oa.getParameters(a,ua.state,ea,b,Fa.numPlanes,Fa.numIntersection,c);var g=oa.getProgramCode(a,
+q&&q.visible&&D.push(a,d,q,Gb.z,l)}else e.visible&&D.push(a,d,e,Gb.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)k(a[g],b,c)}}function l(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,l=void 0===d?g.material:d,g=g.group;if(c.isArrayCamera){S=c;for(var q=c.cameras,t=0,r=q.length;t<r;t++){var m=q[t];if(h.layers.test(m.layers)){var v=m.bounds,n=v.x*W,u=v.y*Y,od=v.z*W,v=v.w*Y;Z.viewport(V.set(n,u,od,v).multiplyScalar(ta));Z.scissor(G.set(n,u,od,v).multiplyScalar(ta));Z.setScissorTest(!0);
+p(h,b,m,k,l,g)}}}else S=null,p(h,b,c,k,l,g)}}function p(a,b,c,d,e,f){a.onBeforeRender(K,b,c,d,e,f);a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){Z.setMaterial(e);var h=t(c,b.fog,e,a);X="";g(a,h,e)}else K.renderBufferDirect(c,b.fog,d,e,a,f);a.onAfterRender(K,b,c,d,e,f)}function q(a,b,c){var d=T.get(a);c=oa.getParameters(a,ua.state,ea,b,Ga.numPlanes,Ga.numIntersection,c);var g=oa.getProgramCode(a,
 c),h=d.program,k=!0;if(void 0===h)a.addEventListener("dispose",e);else if(h.code!==g)f(a);else{if(void 0!==c.shaderID)return;k=!1}k&&(c.shaderID?(h=ib[c.shaderID],d.shader={name:a.type,uniforms:Ca.clone(h.uniforms),vertexShader:h.vertexShader,fragmentShader:h.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader),h=oa.acquireProgram(a,d.shader,c,g),d.program=h,a.program=h);c=h.getAttributes();if(a.morphTargets)for(g=
-a.numSupportedMorphTargets=0;g<K.maxMorphTargets;g++)0<=c["morphTarget"+g]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(g=a.numSupportedMorphNormals=0;g<K.maxMorphNormals;g++)0<=c["morphNormal"+g]&&a.numSupportedMorphNormals++;c=d.shader.uniforms;if(!a.isShaderMaterial&&!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=Fa.numPlanes,d.numIntersection=Fa.numIntersection,c.clippingPlanes=Fa.uniform;d.fog=b;d.lightsHash=ua.state.hash;a.lights&&(c.ambientLightColor.value=ua.state.ambient,
+a.numSupportedMorphTargets=0;g<K.maxMorphTargets;g++)0<=c["morphTarget"+g]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(g=a.numSupportedMorphNormals=0;g<K.maxMorphNormals;g++)0<=c["morphNormal"+g]&&a.numSupportedMorphNormals++;c=d.shader.uniforms;if(!a.isShaderMaterial&&!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=Ga.numPlanes,d.numIntersection=Ga.numIntersection,c.clippingPlanes=Ga.uniform;d.fog=b;d.lightsHash=ua.state.hash;a.lights&&(c.ambientLightColor.value=ua.state.ambient,
 c.directionalLights.value=ua.state.directional,c.spotLights.value=ua.state.spot,c.rectAreaLights.value=ua.state.rectArea,c.pointLights.value=ua.state.point,c.hemisphereLights.value=ua.state.hemi,c.directionalShadowMap.value=ua.state.directionalShadowMap,c.directionalShadowMatrix.value=ua.state.directionalShadowMatrix,c.spotShadowMap.value=ua.state.spotShadowMap,c.spotShadowMatrix.value=ua.state.spotShadowMatrix,c.pointShadowMap.value=ua.state.pointShadowMap,c.pointShadowMatrix.value=ua.state.pointShadowMatrix);
-a=d.program.getUniforms();a=cb.seqWithValue(a.seq,c);d.uniformsList=a}function r(a,b,c,d){fa=0;var e=T.get(c);ld&&(Zd||a!==R)&&Fa.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===R&&c.id===N);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==ua.state.hash?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===Fa.numPlanes&&e.numIntersection===Fa.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(q(c,
-b,d),c.needsUpdate=!1);var f=!1,g=!1,h=!1,k=e.program,l=k.getUniforms(),n=e.shader.uniforms;Z.useProgram(k.program)&&(h=g=f=!0);c.id!==N&&(N=c.id,g=!0);if(f||a!==R){l.setValue(C,"projectionMatrix",a.projectionMatrix);ba.logarithmicDepthBuffer&&l.setValue(C,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));R!==(S||a)&&(R=S||a,h=g=!0);if(c.isShaderMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)f=l.map.cameraPosition,void 0!==f&&f.setValue(C,Gb.setFromMatrixPosition(a.matrixWorld));
-(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&l.setValue(C,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(l.setOptional(C,d,"bindMatrix"),l.setOptional(C,d,"bindMatrixInverse"),a=d.skeleton))if(f=a.bones,ba.floatVertexTextures){if(void 0===a.boneTexture){var f=Math.sqrt(4*f.length),f=P.nextPowerOfTwo(Math.ceil(f)),f=Math.max(f,4),r=new Float32Array(f*f*4);r.set(a.boneMatrices);var u=new bb(r,f,f,1023,1015);a.boneMatrices=
-r;a.boneTexture=u;a.boneTextureSize=f}l.setValue(C,"boneTexture",a.boneTexture);l.setValue(C,"boneTextureSize",a.boneTextureSize)}else l.setOptional(C,a,"boneMatrices");if(g){l.setValue(C,"toneMappingExposure",K.toneMappingExposure);l.setValue(C,"toneMappingWhitePoint",K.toneMappingWhitePoint);c.lights&&(g=h,n.ambientLightColor.needsUpdate=g,n.directionalLights.needsUpdate=g,n.pointLights.needsUpdate=g,n.spotLights.needsUpdate=g,n.rectAreaLights.needsUpdate=g,n.hemisphereLights.needsUpdate=g);b&&
-c.fog&&(n.fogColor.value=b.color,b.isFog?(n.fogNear.value=b.near,n.fogFar.value=b.far):b.isFogExp2&&(n.fogDensity.value=b.density));if(c.isMeshBasicMaterial||c.isMeshLambertMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.isMeshNormalMaterial||c.isMeshDepthMaterial||c.isMeshDistanceMaterial){n.opacity.value=c.opacity;n.diffuse.value=c.color;c.emissive&&n.emissive.value.copy(c.emissive).multiplyScalar(c.emissiveIntensity);n.map.value=c.map;n.specularMap.value=c.specularMap;n.alphaMap.value=
-c.alphaMap;c.lightMap&&(n.lightMap.value=c.lightMap,n.lightMapIntensity.value=c.lightMapIntensity);c.aoMap&&(n.aoMap.value=c.aoMap,n.aoMapIntensity.value=c.aoMapIntensity);if(c.map)var p=c.map;else c.specularMap?p=c.specularMap:c.displacementMap?p=c.displacementMap:c.normalMap?p=c.normalMap:c.bumpMap?p=c.bumpMap:c.roughnessMap?p=c.roughnessMap:c.metalnessMap?p=c.metalnessMap:c.alphaMap?p=c.alphaMap:c.emissiveMap&&(p=c.emissiveMap);void 0!==p&&(p.isWebGLRenderTarget&&(p=p.texture),b=p.offset,p=p.repeat,
-n.offsetRepeat.value.set(b.x,b.y,p.x,p.y));n.envMap.value=c.envMap;n.flipEnvMap.value=c.envMap&&c.envMap.isCubeTexture?-1:1;n.reflectivity.value=c.reflectivity;n.refractionRatio.value=c.refractionRatio}c.isLineBasicMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity):c.isLineDashedMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity,n.dashSize.value=c.dashSize,n.totalSize.value=c.dashSize+c.gapSize,n.scale.value=c.scale):c.isPointsMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity,
-n.size.value=c.size*ta,n.scale.value=.5*Y,n.map.value=c.map,null!==c.map&&(p=c.map.offset,c=c.map.repeat,n.offsetRepeat.value.set(p.x,p.y,c.x,c.y))):c.isMeshLambertMaterial?c.emissiveMap&&(n.emissiveMap.value=c.emissiveMap):c.isMeshToonMaterial?(t(n,c),c.gradientMap&&(n.gradientMap.value=c.gradientMap)):c.isMeshPhongMaterial?t(n,c):c.isMeshPhysicalMaterial?(n.clearCoat.value=c.clearCoat,n.clearCoatRoughness.value=c.clearCoatRoughness,m(n,c)):c.isMeshStandardMaterial?m(n,c):c.isMeshDepthMaterial?c.displacementMap&&
-(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias):c.isMeshDistanceMaterial?(c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias),n.referencePosition.value.copy(c.referencePosition),n.nearDistance.value=c.nearDistance,n.farDistance.value=c.farDistance):c.isMeshNormalMaterial&&(c.bumpMap&&(n.bumpMap.value=c.bumpMap,n.bumpScale.value=
-c.bumpScale),c.normalMap&&(n.normalMap.value=c.normalMap,n.normalScale.value.copy(c.normalScale)),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias));void 0!==n.ltcMat&&(n.ltcMat.value=Q.LTC_MAT_TEXTURE);void 0!==n.ltcMag&&(n.ltcMag.value=Q.LTC_MAG_TEXTURE);cb.upload(C,e.uniformsList,n,K)}l.setValue(C,"modelViewMatrix",d.modelViewMatrix);l.setValue(C,"normalMatrix",d.normalMatrix);l.setValue(C,"modelMatrix",
-d.matrixWorld);return k}function t(a,b){a.specular.value=b.specular;a.shininess.value=Math.max(b.shininess,1E-4);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function m(a,b){a.roughness.value=
+a=d.program.getUniforms();a=cb.seqWithValue(a.seq,c);d.uniformsList=a}function t(a,b,c,d){fa=0;var e=T.get(c);ld&&(Zd||a!==R)&&Ga.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===R&&c.id===N);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==ua.state.hash?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===Ga.numPlanes&&e.numIntersection===Ga.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(q(c,
+b,d),c.needsUpdate=!1);var f=!1,g=!1,h=!1,k=e.program,l=k.getUniforms(),p=e.shader.uniforms;Z.useProgram(k.program)&&(h=g=f=!0);c.id!==N&&(N=c.id,g=!0);if(f||a!==R){l.setValue(C,"projectionMatrix",a.projectionMatrix);ba.logarithmicDepthBuffer&&l.setValue(C,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));R!==(S||a)&&(R=S||a,h=g=!0);if(c.isShaderMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)f=l.map.cameraPosition,void 0!==f&&f.setValue(C,Gb.setFromMatrixPosition(a.matrixWorld));
+(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&l.setValue(C,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(l.setOptional(C,d,"bindMatrix"),l.setOptional(C,d,"bindMatrixInverse"),a=d.skeleton))if(f=a.bones,ba.floatVertexTextures){if(void 0===a.boneTexture){var f=Math.sqrt(4*f.length),f=P.nextPowerOfTwo(Math.ceil(f)),f=Math.max(f,4),t=new Float32Array(f*f*4);t.set(a.boneMatrices);var v=new bb(t,f,f,1023,1015);a.boneMatrices=
+t;a.boneTexture=v;a.boneTextureSize=f}l.setValue(C,"boneTexture",a.boneTexture);l.setValue(C,"boneTextureSize",a.boneTextureSize)}else l.setOptional(C,a,"boneMatrices");if(g){l.setValue(C,"toneMappingExposure",K.toneMappingExposure);l.setValue(C,"toneMappingWhitePoint",K.toneMappingWhitePoint);c.lights&&(g=h,p.ambientLightColor.needsUpdate=g,p.directionalLights.needsUpdate=g,p.pointLights.needsUpdate=g,p.spotLights.needsUpdate=g,p.rectAreaLights.needsUpdate=g,p.hemisphereLights.needsUpdate=g);b&&
+c.fog&&(p.fogColor.value=b.color,b.isFog?(p.fogNear.value=b.near,p.fogFar.value=b.far):b.isFogExp2&&(p.fogDensity.value=b.density));if(c.isMeshBasicMaterial||c.isMeshLambertMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.isMeshNormalMaterial||c.isMeshDepthMaterial||c.isMeshDistanceMaterial){p.opacity.value=c.opacity;p.diffuse.value=c.color;c.emissive&&p.emissive.value.copy(c.emissive).multiplyScalar(c.emissiveIntensity);p.map.value=c.map;p.specularMap.value=c.specularMap;p.alphaMap.value=
+c.alphaMap;c.lightMap&&(p.lightMap.value=c.lightMap,p.lightMapIntensity.value=c.lightMapIntensity);c.aoMap&&(p.aoMap.value=c.aoMap,p.aoMapIntensity.value=c.aoMapIntensity);if(c.map)var n=c.map;else c.specularMap?n=c.specularMap:c.displacementMap?n=c.displacementMap:c.normalMap?n=c.normalMap:c.bumpMap?n=c.bumpMap:c.roughnessMap?n=c.roughnessMap:c.metalnessMap?n=c.metalnessMap:c.alphaMap?n=c.alphaMap:c.emissiveMap&&(n=c.emissiveMap);void 0!==n&&(n.isWebGLRenderTarget&&(n=n.texture),b=n.offset,n=n.repeat,
+p.offsetRepeat.value.set(b.x,b.y,n.x,n.y));p.envMap.value=c.envMap;p.flipEnvMap.value=c.envMap&&c.envMap.isCubeTexture?-1:1;p.reflectivity.value=c.reflectivity;p.refractionRatio.value=c.refractionRatio}c.isLineBasicMaterial?(p.diffuse.value=c.color,p.opacity.value=c.opacity):c.isLineDashedMaterial?(p.diffuse.value=c.color,p.opacity.value=c.opacity,p.dashSize.value=c.dashSize,p.totalSize.value=c.dashSize+c.gapSize,p.scale.value=c.scale):c.isPointsMaterial?(p.diffuse.value=c.color,p.opacity.value=c.opacity,
+p.size.value=c.size*ta,p.scale.value=.5*Y,p.map.value=c.map,null!==c.map&&(n=c.map.offset,c=c.map.repeat,p.offsetRepeat.value.set(n.x,n.y,c.x,c.y))):c.isMeshLambertMaterial?c.emissiveMap&&(p.emissiveMap.value=c.emissiveMap):c.isMeshToonMaterial?(r(p,c),c.gradientMap&&(p.gradientMap.value=c.gradientMap)):c.isMeshPhongMaterial?r(p,c):c.isMeshPhysicalMaterial?(p.clearCoat.value=c.clearCoat,p.clearCoatRoughness.value=c.clearCoatRoughness,m(p,c)):c.isMeshStandardMaterial?m(p,c):c.isMeshDepthMaterial?c.displacementMap&&
+(p.displacementMap.value=c.displacementMap,p.displacementScale.value=c.displacementScale,p.displacementBias.value=c.displacementBias):c.isMeshDistanceMaterial?(c.displacementMap&&(p.displacementMap.value=c.displacementMap,p.displacementScale.value=c.displacementScale,p.displacementBias.value=c.displacementBias),p.referencePosition.value.copy(c.referencePosition),p.nearDistance.value=c.nearDistance,p.farDistance.value=c.farDistance):c.isMeshNormalMaterial&&(c.bumpMap&&(p.bumpMap.value=c.bumpMap,p.bumpScale.value=
+c.bumpScale),c.normalMap&&(p.normalMap.value=c.normalMap,p.normalScale.value.copy(c.normalScale)),c.displacementMap&&(p.displacementMap.value=c.displacementMap,p.displacementScale.value=c.displacementScale,p.displacementBias.value=c.displacementBias));void 0!==p.ltcMat&&(p.ltcMat.value=Q.LTC_MAT_TEXTURE);void 0!==p.ltcMag&&(p.ltcMag.value=Q.LTC_MAG_TEXTURE);cb.upload(C,e.uniformsList,p,K)}l.setValue(C,"modelViewMatrix",d.modelViewMatrix);l.setValue(C,"normalMatrix",d.normalMatrix);l.setValue(C,"modelMatrix",
+d.matrixWorld);return k}function r(a,b){a.specular.value=b.specular;a.shininess.value=Math.max(b.shininess,1E-4);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function m(a,b){a.roughness.value=
 b.roughness;a.metalness.value=b.metalness;b.roughnessMap&&(a.roughnessMap.value=b.roughnessMap);b.metalnessMap&&(a.metalnessMap.value=b.metalnessMap);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias);
 b.envMap&&(a.envMapIntensity.value=b.envMapIntensity)}function w(a){if(1E3===a)return C.REPEAT;if(1001===a)return C.CLAMP_TO_EDGE;if(1002===a)return C.MIRRORED_REPEAT;if(1003===a)return C.NEAREST;if(1004===a)return C.NEAREST_MIPMAP_NEAREST;if(1005===a)return C.NEAREST_MIPMAP_LINEAR;if(1006===a)return C.LINEAR;if(1007===a)return C.LINEAR_MIPMAP_NEAREST;if(1008===a)return C.LINEAR_MIPMAP_LINEAR;if(1009===a)return C.UNSIGNED_BYTE;if(1017===a)return C.UNSIGNED_SHORT_4_4_4_4;if(1018===a)return C.UNSIGNED_SHORT_5_5_5_1;
 if(1019===a)return C.UNSIGNED_SHORT_5_6_5;if(1010===a)return C.BYTE;if(1011===a)return C.SHORT;if(1012===a)return C.UNSIGNED_SHORT;if(1013===a)return C.INT;if(1014===a)return C.UNSIGNED_INT;if(1015===a)return C.FLOAT;if(1016===a){var b=ia.get("OES_texture_half_float");if(null!==b)return b.HALF_FLOAT_OES}if(1021===a)return C.ALPHA;if(1022===a)return C.RGB;if(1023===a)return C.RGBA;if(1024===a)return C.LUMINANCE;if(1025===a)return C.LUMINANCE_ALPHA;if(1026===a)return C.DEPTH_COMPONENT;if(1027===a)return C.DEPTH_STENCIL;
 if(100===a)return C.FUNC_ADD;if(101===a)return C.FUNC_SUBTRACT;if(102===a)return C.FUNC_REVERSE_SUBTRACT;if(200===a)return C.ZERO;if(201===a)return C.ONE;if(202===a)return C.SRC_COLOR;if(203===a)return C.ONE_MINUS_SRC_COLOR;if(204===a)return C.SRC_ALPHA;if(205===a)return C.ONE_MINUS_SRC_ALPHA;if(206===a)return C.DST_ALPHA;if(207===a)return C.ONE_MINUS_DST_ALPHA;if(208===a)return C.DST_COLOR;if(209===a)return C.ONE_MINUS_DST_COLOR;if(210===a)return C.SRC_ALPHA_SATURATE;if(2001===a||2002===a||2003===
 a||2004===a)if(b=ia.get("WEBGL_compressed_texture_s3tc"),null!==b){if(2001===a)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(2002===a)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(2003===a)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(2004===a)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(2100===a||2101===a||2102===a||2103===a)if(b=ia.get("WEBGL_compressed_texture_pvrtc"),null!==b){if(2100===a)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(2101===a)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(2102===a)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
-if(2103===a)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(2151===a&&(b=ia.get("WEBGL_compressed_texture_etc1"),null!==b))return b.COMPRESSED_RGB_ETC1_WEBGL;if(103===a||104===a)if(b=ia.get("EXT_blend_minmax"),null!==b){if(103===a)return b.MIN_EXT;if(104===a)return b.MAX_EXT}return 1020===a&&(b=ia.get("WEBGL_depth_texture"),null!==b)?b.UNSIGNED_INT_24_8_WEBGL:0}console.log("THREE.WebGLRenderer","87dev");a=a||{};var v=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml",
-"canvas"),A=void 0!==a.context?a.context:null,y=void 0!==a.alpha?a.alpha:!1,H=void 0!==a.depth?a.depth:!0,B=void 0!==a.stencil?a.stencil:!0,L=void 0!==a.antialias?a.antialias:!1,x=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,wa=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,z=[],ea=[],D=null,E=new Float32Array(8),ga=[],I=[];this.domElement=v;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=
-[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMappingWhitePoint=this.toneMappingExposure=this.toneMapping=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var K=this,M=!1,U=null,O=null,N=-1,X="",R=null,S=null,V=new ca,G=new ca,aa=null,fa=0,W=v.width,Y=v.height,ta=1,ha=new ca(0,0,W,Y),kd=new ca(0,0,W,Y),Se=!1,ka=new jd,Fa=new pg,ld=!1,Zd=!1,md=new J,Gb=new p,na={geometries:0,textures:0},da={frame:0,calls:0,vertices:0,faces:0,
-points:0};this.info={render:da,memory:na,programs:null};try{y={alpha:y,depth:H,stencil:B,antialias:L,premultipliedAlpha:x,preserveDrawingBuffer:wa};var C=A||v.getContext("webgl",y)||v.getContext("experimental-webgl",y);if(null===C){if(null!==v.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}void 0===C.getShaderPrecisionFormat&&(C.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});v.addEventListener("webglcontextlost",
-c,!1);v.addEventListener("webglcontextrestored",d,!1)}catch(od){console.error("THREE.WebGLRenderer: "+od)}var ia,ba,Z,T,ja,qa,ra,va,ua,oa,sa,pa,xa,za,Aa,Ba;b();var ma=new ng(K);this.vr=ma;var Da=new Me(K,va,ba.maxTextureSize);this.shadowMap=Da;this.getContext=function(){return C};this.getContextAttributes=function(){return C.getContextAttributes()};this.forceContextLoss=function(){var a=ia.get("WEBGL_lose_context");a&&a.loseContext()};this.forceContextRestore=function(){var a=ia.get("WEBGL_lose_context");
-a&&a.restoreContext()};this.getPixelRatio=function(){return ta};this.setPixelRatio=function(a){void 0!==a&&(ta=a,this.setSize(W,Y,!1))};this.getSize=function(){return{width:W,height:Y}};this.setSize=function(a,b,c){var d=ma.getDevice();d&&d.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(W=a,Y=b,v.width=a*ta,v.height=b*ta,!1!==c&&(v.style.width=a+"px",v.style.height=b+"px"),this.setViewport(0,0,a,b))};this.getDrawingBufferSize=function(){return{width:W*
-ta,height:Y*ta}};this.setDrawingBufferSize=function(a,b,c){W=a;Y=b;ta=c;v.width=a*c;v.height=b*c;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){ha.set(a,Y-b-d,c,d);Z.viewport(V.copy(ha).multiplyScalar(ta))};this.setScissor=function(a,b,c,d){kd.set(a,Y-b-d,c,d);Z.scissor(G.copy(kd).multiplyScalar(ta))};this.setScissorTest=function(a){Z.setScissorTest(Se=a)};this.getClearColor=pa.getClearColor;this.setClearColor=pa.setClearColor;this.getClearAlpha=pa.getClearAlpha;this.setClearAlpha=
-pa.setClearAlpha;this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=C.COLOR_BUFFER_BIT;if(void 0===b||b)d|=C.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=C.STENCIL_BUFFER_BIT;C.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.dispose=function(){v.removeEventListener("webglcontextlost",c,!1);v.removeEventListener("webglcontextrestored",
+if(2103===a)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(2151===a&&(b=ia.get("WEBGL_compressed_texture_etc1"),null!==b))return b.COMPRESSED_RGB_ETC1_WEBGL;if(103===a||104===a)if(b=ia.get("EXT_blend_minmax"),null!==b){if(103===a)return b.MIN_EXT;if(104===a)return b.MAX_EXT}return 1020===a&&(b=ia.get("WEBGL_depth_texture"),null!==b)?b.UNSIGNED_INT_24_8_WEBGL:0}console.log("THREE.WebGLRenderer","87dev");a=a||{};var u=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml",
+"canvas"),A=void 0!==a.context?a.context:null,y=void 0!==a.alpha?a.alpha:!1,H=void 0!==a.depth?a.depth:!0,B=void 0!==a.stencil?a.stencil:!0,L=void 0!==a.antialias?a.antialias:!1,x=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,wa=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,z=[],ea=[],D=null,E=new Float32Array(8),ga=[],I=[];this.domElement=u;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=
+[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMappingWhitePoint=this.toneMappingExposure=this.toneMapping=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var K=this,M=!1,U=null,O=null,N=-1,X="",R=null,S=null,V=new ca,G=new ca,aa=null,fa=0,W=u.width,Y=u.height,ta=1,ha=new ca(0,0,W,Y),kd=new ca(0,0,W,Y),Se=!1,ka=new jd,Ga=new pg,ld=!1,Zd=!1,md=new J,Gb=new n,na={geometries:0,textures:0},da={frame:0,calls:0,vertices:0,faces:0,
+points:0};this.info={render:da,memory:na,programs:null};try{y={alpha:y,depth:H,stencil:B,antialias:L,premultipliedAlpha:x,preserveDrawingBuffer:wa};var C=A||u.getContext("webgl",y)||u.getContext("experimental-webgl",y);if(null===C){if(null!==u.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}void 0===C.getShaderPrecisionFormat&&(C.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});u.addEventListener("webglcontextlost",
+c,!1);u.addEventListener("webglcontextrestored",d,!1)}catch(od){console.error("THREE.WebGLRenderer: "+od)}var ia,ba,Z,T,ja,qa,ra,va,ua,oa,sa,pa,xa,za,Aa,Ba;b();var ma=new ng(K);this.vr=ma;var Da=new Me(K,va,ba.maxTextureSize);this.shadowMap=Da;this.getContext=function(){return C};this.getContextAttributes=function(){return C.getContextAttributes()};this.forceContextLoss=function(){var a=ia.get("WEBGL_lose_context");a&&a.loseContext()};this.forceContextRestore=function(){var a=ia.get("WEBGL_lose_context");
+a&&a.restoreContext()};this.getPixelRatio=function(){return ta};this.setPixelRatio=function(a){void 0!==a&&(ta=a,this.setSize(W,Y,!1))};this.getSize=function(){return{width:W,height:Y}};this.setSize=function(a,b,c){var d=ma.getDevice();d&&d.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(W=a,Y=b,u.width=a*ta,u.height=b*ta,!1!==c&&(u.style.width=a+"px",u.style.height=b+"px"),this.setViewport(0,0,a,b))};this.getDrawingBufferSize=function(){return{width:W*
+ta,height:Y*ta}};this.setDrawingBufferSize=function(a,b,c){W=a;Y=b;ta=c;u.width=a*c;u.height=b*c;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){ha.set(a,Y-b-d,c,d);Z.viewport(V.copy(ha).multiplyScalar(ta))};this.setScissor=function(a,b,c,d){kd.set(a,Y-b-d,c,d);Z.scissor(G.copy(kd).multiplyScalar(ta))};this.setScissorTest=function(a){Z.setScissorTest(Se=a)};this.getClearColor=pa.getClearColor;this.setClearColor=pa.setClearColor;this.getClearAlpha=pa.getClearAlpha;this.setClearAlpha=
+pa.setClearAlpha;this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=C.COLOR_BUFFER_BIT;if(void 0===b||b)d|=C.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=C.STENCIL_BUFFER_BIT;C.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.dispose=function(){u.removeEventListener("webglcontextlost",c,!1);u.removeEventListener("webglcontextrestored",
 d,!1);sa.dispose();ma.dispose()};this.renderBufferImmediate=function(a,b,c){Z.initAttributes();var d=T.get(a);a.hasPositions&&!d.position&&(d.position=C.createBuffer());a.hasNormals&&!d.normal&&(d.normal=C.createBuffer());a.hasUvs&&!d.uv&&(d.uv=C.createBuffer());a.hasColors&&!d.color&&(d.color=C.createBuffer());b=b.getAttributes();a.hasPositions&&(C.bindBuffer(C.ARRAY_BUFFER,d.position),C.bufferData(C.ARRAY_BUFFER,a.positionArray,C.DYNAMIC_DRAW),Z.enableAttribute(b.position),C.vertexAttribPointer(b.position,
 3,C.FLOAT,!1,0,0));if(a.hasNormals){C.bindBuffer(C.ARRAY_BUFFER,d.normal);if(!c.isMeshPhongMaterial&&!c.isMeshStandardMaterial&&!c.isMeshNormalMaterial&&!0===c.flatShading)for(var e=0,f=3*a.count;e<f;e+=9){var g=a.normalArray,h=(g[e+0]+g[e+3]+g[e+6])/3,k=(g[e+1]+g[e+4]+g[e+7])/3,l=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=k;g[e+2]=l;g[e+3]=h;g[e+4]=k;g[e+5]=l;g[e+6]=h;g[e+7]=k;g[e+8]=l}C.bufferData(C.ARRAY_BUFFER,a.normalArray,C.DYNAMIC_DRAW);Z.enableAttribute(b.normal);C.vertexAttribPointer(b.normal,
-3,C.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(C.bindBuffer(C.ARRAY_BUFFER,d.uv),C.bufferData(C.ARRAY_BUFFER,a.uvArray,C.DYNAMIC_DRAW),Z.enableAttribute(b.uv),C.vertexAttribPointer(b.uv,2,C.FLOAT,!1,0,0));a.hasColors&&0!==c.vertexColors&&(C.bindBuffer(C.ARRAY_BUFFER,d.color),C.bufferData(C.ARRAY_BUFFER,a.colorArray,C.DYNAMIC_DRAW),Z.enableAttribute(b.color),C.vertexAttribPointer(b.color,3,C.FLOAT,!1,0,0));Z.disableUnusedAttributes();C.drawArrays(C.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,
-b,c,d,e,f){Z.setMaterial(d);var g=r(a,b,d,e);a=c.id+"_"+g.id+"_"+(!0===d.wireframe);var k=!1;a!==X&&(X=a,k=!0);var l=e.morphTargetInfluences;if(void 0!==l){var n=[];a=0;for(var q=l.length;a<q;a++)b=l[a],n.push([b,a]);n.sort(h);8<n.length&&(n.length=8);k=c.morphAttributes;a=0;for(q=n.length;a<q;a++)b=n[a],E[a]=b[0],0!==b[0]?(b=b[1],!0===d.morphTargets&&k.position&&c.addAttribute("morphTarget"+a,k.position[b]),!0===d.morphNormals&&k.normal&&c.addAttribute("morphNormal"+a,k.normal[b])):(!0===d.morphTargets&&
-c.removeAttribute("morphTarget"+a),!0===d.morphNormals&&c.removeAttribute("morphNormal"+a));a=n.length;for(b=E.length;a<b;a++)E[a]=0;g.getUniforms().setValue(C,"morphTargetInfluences",E);k=!0}b=c.index;q=c.attributes.position;n=1;!0===d.wireframe&&(b=ra.getWireframeAttribute(c),n=2);a=xa;if(null!==b){var t=qa.get(b);a=za;a.setIndex(t)}if(k){k=void 0;if(c&&c.isInstancedBufferGeometry&&null===ia.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
-else{void 0===k&&(k=0);Z.initAttributes();var l=c.attributes,g=g.getAttributes(),m=d.defaultAttributeValues;for(x in g){var u=g[x];if(0<=u){var p=l[x];if(void 0!==p){var v=p.normalized,w=p.itemSize,y=qa.get(p);if(void 0!==y){var B=y.buffer,A=y.type,y=y.bytesPerElement;if(p.isInterleavedBufferAttribute){var H=p.data,L=H.stride,p=p.offset;H&&H.isInstancedInterleavedBuffer?(Z.enableAttributeAndDivisor(u,H.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=H.meshPerAttribute*H.count)):
-Z.enableAttribute(u);C.bindBuffer(C.ARRAY_BUFFER,B);C.vertexAttribPointer(u,w,A,v,L*y,(k*L+p)*y)}else p.isInstancedBufferAttribute?(Z.enableAttributeAndDivisor(u,p.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=p.meshPerAttribute*p.count)):Z.enableAttribute(u),C.bindBuffer(C.ARRAY_BUFFER,B),C.vertexAttribPointer(u,w,A,v,0,k*w*y)}}else if(void 0!==m&&(v=m[x],void 0!==v))switch(v.length){case 2:C.vertexAttrib2fv(u,v);break;case 3:C.vertexAttrib3fv(u,v);break;case 4:C.vertexAttrib4fv(u,
-v);break;default:C.vertexAttrib1fv(u,v)}}}Z.disableUnusedAttributes()}null!==b&&C.bindBuffer(C.ELEMENT_ARRAY_BUFFER,t.buffer)}t=0;null!==b?t=b.count:void 0!==q&&(t=q.count);b=c.drawRange.start*n;q=null!==f?f.start*n:0;var x=Math.max(b,q);f=Math.max(0,Math.min(t,b+c.drawRange.count*n,q+(null!==f?f.count*n:Infinity))-1-x+1);if(0!==f){if(e.isMesh)if(!0===d.wireframe)Z.setLineWidth(d.wireframeLinewidth*(null===U?ta:1)),a.setMode(C.LINES);else switch(e.drawMode){case 0:a.setMode(C.TRIANGLES);break;case 1:a.setMode(C.TRIANGLE_STRIP);
-break;case 2:a.setMode(C.TRIANGLE_FAN)}else e.isLine?(d=d.linewidth,void 0===d&&(d=1),Z.setLineWidth(d*(null===U?ta:1)),e.isLineSegments?a.setMode(C.LINES):e.isLineLoop?a.setMode(C.LINE_LOOP):a.setMode(C.LINE_STRIP)):e.isPoints&&a.setMode(C.POINTS);c&&c.isInstancedBufferGeometry?0<c.maxInstancedCount&&a.renderInstances(c,x,f):a.render(x,f)}};this.compile=function(a,b){z.length=0;ea.length=0;a.traverse(function(a){a.isLight&&(z.push(a),a.castShadow&&ea.push(a))});ua.setup(z,ea,b);a.traverse(function(b){if(b.material)if(Array.isArray(b.material))for(var c=
+3,C.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(C.bindBuffer(C.ARRAY_BUFFER,d.uv),C.bufferData(C.ARRAY_BUFFER,a.uvArray,C.DYNAMIC_DRAW),Z.enableAttribute(b.uv),C.vertexAttribPointer(b.uv,2,C.FLOAT,!1,0,0));a.hasColors&&0!==c.vertexColors&&(C.bindBuffer(C.ARRAY_BUFFER,d.color),C.bufferData(C.ARRAY_BUFFER,a.colorArray,C.DYNAMIC_DRAW),Z.enableAttribute(b.color),C.vertexAttribPointer(b.color,3,C.FLOAT,!1,0,0));Z.disableUnusedAttributes();C.drawArrays(C.TRIANGLES,0,a.count);a.count=0};var Ea={};this.renderBufferDirect=
+function(a,b,c,d,e,f){Z.setMaterial(d);var g=t(a,b,d,e);a=c.id+"_"+g.id+"_"+(!0===d.wireframe);var k=!1;a!==X&&(X=a,k=!0);a=e.morphTargetInfluences;if(void 0!==a){var l=Ea[c.id];void 0===l&&(Ea[c.id]=l=Array(a.length));b=0;for(var p=a.length;b<p;b++)k=l[b],void 0===k&&(l[b]=k=Array(2)),k[0]=b,k[1]=a[b];l.sort(h);var q=d.morphTargets&&c.morphAttributes.position,r=d.morphNormals&&c.morphAttributes.normal;b=0;for(p=Math.min(l.length,8);b<p;b++){var m="morphTarget"+b,v="morphNormal"+b;k=l[b];a=k[0];k=
+k[1];0!==k?(q&&c.addAttribute(m,q[a]),r&&c.addAttribute(v,r[a])):(q&&c.removeAttribute(m),r&&c.removeAttribute(v));E[b]=k}b=Math.min(l.length,8);for(a=E.length;b<a;b++)E[b]=0;g.getUniforms().setValue(C,"morphTargetInfluences",E);k=!0}a=c.index;p=c.attributes.position;l=1;!0===d.wireframe&&(a=ra.getWireframeAttribute(c),l=2);b=xa;if(null!==a){var n=qa.get(a);b=za;b.setIndex(n)}if(k){k=void 0;if(c&&c.isInstancedBufferGeometry&&null===ia.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
+else{void 0===k&&(k=0);Z.initAttributes();var q=c.attributes,g=g.getAttributes(),r=d.defaultAttributeValues;for(x in g)if(m=g[x],0<=m){var u=q[x];if(void 0!==u){var v=u.normalized,w=u.itemSize,y=qa.get(u);if(void 0!==y){var B=y.buffer,A=y.type,y=y.bytesPerElement;if(u.isInterleavedBufferAttribute){var H=u.data,L=H.stride,u=u.offset;H&&H.isInstancedInterleavedBuffer?(Z.enableAttributeAndDivisor(m,H.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=H.meshPerAttribute*H.count)):Z.enableAttribute(m);
+C.bindBuffer(C.ARRAY_BUFFER,B);C.vertexAttribPointer(m,w,A,v,L*y,(k*L+u)*y)}else u.isInstancedBufferAttribute?(Z.enableAttributeAndDivisor(m,u.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=u.meshPerAttribute*u.count)):Z.enableAttribute(m),C.bindBuffer(C.ARRAY_BUFFER,B),C.vertexAttribPointer(m,w,A,v,0,k*w*y)}}else if(void 0!==r&&(v=r[x],void 0!==v))switch(v.length){case 2:C.vertexAttrib2fv(m,v);break;case 3:C.vertexAttrib3fv(m,v);break;case 4:C.vertexAttrib4fv(m,v);break;default:C.vertexAttrib1fv(m,
+v)}}Z.disableUnusedAttributes()}null!==a&&C.bindBuffer(C.ELEMENT_ARRAY_BUFFER,n.buffer)}n=0;null!==a?n=a.count:void 0!==p&&(n=p.count);a=c.drawRange.start*l;p=null!==f?f.start*l:0;var x=Math.max(a,p);f=Math.max(0,Math.min(n,a+c.drawRange.count*l,p+(null!==f?f.count*l:Infinity))-1-x+1);if(0!==f){if(e.isMesh)if(!0===d.wireframe)Z.setLineWidth(d.wireframeLinewidth*(null===U?ta:1)),b.setMode(C.LINES);else switch(e.drawMode){case 0:b.setMode(C.TRIANGLES);break;case 1:b.setMode(C.TRIANGLE_STRIP);break;
+case 2:b.setMode(C.TRIANGLE_FAN)}else e.isLine?(d=d.linewidth,void 0===d&&(d=1),Z.setLineWidth(d*(null===U?ta:1)),e.isLineSegments?b.setMode(C.LINES):e.isLineLoop?b.setMode(C.LINE_LOOP):b.setMode(C.LINE_STRIP)):e.isPoints&&b.setMode(C.POINTS);c&&c.isInstancedBufferGeometry?0<c.maxInstancedCount&&b.renderInstances(c,x,f):b.render(x,f)}};this.compile=function(a,b){z.length=0;ea.length=0;a.traverse(function(a){a.isLight&&(z.push(a),a.castShadow&&ea.push(a))});ua.setup(z,ea,b);a.traverse(function(b){if(b.material)if(Array.isArray(b.material))for(var c=
 0;c<b.material.length;c++)q(b.material[c],a.fog,b);else q(b.material,a.fog,b)})};this.animate=function(a){function b(){a();(ma.getDevice()||window).requestAnimationFrame(b)}(ma.getDevice()||window).requestAnimationFrame(b)};this.render=function(a,b,c,d){if(!b||!b.isCamera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else if(!M){X="";N=-1;R=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();ma.enabled&&(b=ma.getCamera(b));
-md.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);ka.setFromMatrix(md);z.length=0;ea.length=0;ga.length=0;I.length=0;Zd=this.localClippingEnabled;ld=Fa.init(this.clippingPlanes,Zd,b);D=sa.get(a,b);D.init();k(a,b,K.sortObjects);D.finish();!0===K.sortObjects&&D.sort();ld&&Fa.beginShadows();Da.render(ea,a,b);ua.setup(z,ea,b);ld&&Fa.endShadows();da.frame++;da.calls=0;da.vertices=0;da.faces=0;da.points=0;void 0===c&&(c=null);this.setRenderTarget(c);pa.render(a,b,d);d=D.opaque;var e=D.transparent;
+md.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);ka.setFromMatrix(md);z.length=0;ea.length=0;ga.length=0;I.length=0;Zd=this.localClippingEnabled;ld=Ga.init(this.clippingPlanes,Zd,b);D=sa.get(a,b);D.init();k(a,b,K.sortObjects);D.finish();!0===K.sortObjects&&D.sort();ld&&Ga.beginShadows();Da.render(ea,a,b);ua.setup(z,ea,b);ld&&Ga.endShadows();da.frame++;da.calls=0;da.vertices=0;da.faces=0;da.points=0;void 0===c&&(c=null);this.setRenderTarget(c);pa.render(a,b,d);d=D.opaque;var e=D.transparent;
 if(a.overrideMaterial){var f=a.overrideMaterial;d.length&&l(d,a,b,f);e.length&&l(e,a,b,f)}else d.length&&l(d,a,b),e.length&&l(e,a,b);Ba.render(ga,a,b);Aa.render(I,a,b,V);c&&ja.updateRenderTargetMipmap(c);Z.buffers.depth.setTest(!0);Z.buffers.depth.setMask(!0);Z.buffers.color.setMask(!0);ma.enabled&&ma.submitFrame()}};this.setFaceCulling=function(a,b){Z.setCullFace(a);Z.setFlipSided(0===b)};this.allocTextureUnit=function(){var a=fa;a>=ba.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+
 a+" texture units while this GPU supports only "+ba.maxTextures);fa+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);ja.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);ja.setTexture2D(b,
 c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?ja.setTextureCube(b,c):ja.setTextureCubeDynamic(b,c)}}();this.getRenderTarget=function(){return U};this.setRenderTarget=function(a){(U=a)&&void 0===T.get(a).__webglFramebuffer&&ja.setupRenderTarget(a);
 var b=null,c=!1;a?(b=T.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],c=!0),V.copy(a.viewport),G.copy(a.scissor),aa=a.scissorTest):(V.copy(ha).multiplyScalar(ta),G.copy(kd).multiplyScalar(ta),aa=Se);O!==b&&(C.bindFramebuffer(C.FRAMEBUFFER,b),O=b);Z.viewport(V);Z.scissor(G);Z.setScissorTest(aa);c&&(c=T.get(a.texture),C.framebufferTexture2D(C.FRAMEBUFFER,C.COLOR_ATTACHMENT0,C.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,c.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=
-function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=T.get(a).__webglFramebuffer;if(g){var h=!1;g!==O&&(C.bindFramebuffer(C.FRAMEBUFFER,g),h=!0);try{var k=a.texture,l=k.format,n=k.type;1023!==l&&w(l)!==C.getParameter(C.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===n||w(n)===C.getParameter(C.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(ia.get("OES_texture_float")||ia.get("WEBGL_color_buffer_float"))||
-1016===n&&ia.get("EXT_color_buffer_half_float")?C.checkFramebufferStatus(C.FRAMEBUFFER)===C.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&C.readPixels(b,c,d,e,w(l),w(n),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&C.bindFramebuffer(C.FRAMEBUFFER,O)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")}}
-function Hb(a,b){this.name="";this.color=new E(a);this.density=void 0!==b?b:2.5E-4}function Ib(a,b,c){this.name="";this.color=new E(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3}function pd(){z.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ae(a,b,c,d,e){z.call(this);this.lensFlares=[];this.positionScreen=new p;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,c,d,e)}function Za(a){N.call(this);this.type="SpriteMaterial";
+function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=T.get(a).__webglFramebuffer;if(g){var h=!1;g!==O&&(C.bindFramebuffer(C.FRAMEBUFFER,g),h=!0);try{var k=a.texture,l=k.format,p=k.type;1023!==l&&w(l)!==C.getParameter(C.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===p||w(p)===C.getParameter(C.IMPLEMENTATION_COLOR_READ_TYPE)||1015===p&&(ia.get("OES_texture_float")||ia.get("WEBGL_color_buffer_float"))||
+1016===p&&ia.get("EXT_color_buffer_half_float")?C.checkFramebufferStatus(C.FRAMEBUFFER)===C.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&C.readPixels(b,c,d,e,w(l),w(p),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&C.bindFramebuffer(C.FRAMEBUFFER,O)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")}}
+function Hb(a,b){this.name="";this.color=new E(a);this.density=void 0!==b?b:2.5E-4}function Ib(a,b,c){this.name="";this.color=new E(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3}function pd(){z.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ae(a,b,c,d,e){z.call(this);this.lensFlares=[];this.positionScreen=new n;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,c,d,e)}function Za(a){N.call(this);this.type="SpriteMaterial";
 this.color=new E(16777215);this.map=null;this.rotation=0;this.lights=this.fog=!1;this.setValues(a)}function xc(a){z.call(this);this.type="Sprite";this.material=void 0!==a?a:new Za}function yc(){z.call(this);this.type="LOD";Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function zc(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton boneInverses is the wrong length."),
 this.boneInverses=[],a=0,b=this.bones.length;a<b;a++)this.boneInverses.push(new J)}function qd(){z.call(this);this.type="Bone"}function rd(a,b){na.call(this,a,b);this.type="SkinnedMesh";this.bindMode="attached";this.bindMatrix=new J;this.bindMatrixInverse=new J;a=this.initBones();a=new zc(a);this.bind(a,this.matrixWorld);this.normalizeSkinWeights()}function fa(a){N.call(this);this.type="LineBasicMaterial";this.color=new E(16777215);this.linewidth=1;this.linejoin=this.linecap="round";this.lights=!1;
 this.setValues(a)}function ra(a,b,c){if(1===c)return console.warn("THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead."),new S(a,b);z.call(this);this.type="Line";this.geometry=void 0!==a?a:new F;this.material=void 0!==b?b:new fa({color:16777215*Math.random()})}function S(a,b){ra.call(this,a,b);this.type="LineSegments"}function sd(a,b){ra.call(this,a,b);this.type="LineLoop"}function Da(a){N.call(this);this.type="PointsMaterial";this.color=new E(16777215);
-this.map=null;this.size=1;this.sizeAttenuation=!0;this.lights=!1;this.setValues(a)}function Jb(a,b){z.call(this);this.type="Points";this.geometry=void 0!==a?a:new F;this.material=void 0!==b?b:new Da({color:16777215*Math.random()})}function Ac(){z.call(this);this.type="Group"}function td(a,b,c,d,e,f,g,h,k){function l(){requestAnimationFrame(l);a.readyState>=a.HAVE_CURRENT_DATA&&(n.needsUpdate=!0)}V.call(this,a,b,c,d,e,f,g,h,k);this.generateMipmaps=!1;var n=this;l()}function Kb(a,b,c,d,e,f,g,h,k,l,
-n,q){V.call(this,null,f,g,h,k,l,d,e,n,q);this.image={width:b,height:c};this.mipmaps=a;this.generateMipmaps=this.flipY=!1}function Bc(a,b,c,d,e,f,g,h,k,l){l=void 0!==l?l:1026;if(1026!==l&&1027!==l)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===c&&1026===l&&(c=1012);void 0===c&&1027===l&&(c=1020);V.call(this,null,d,e,f,g,h,l,c,k);this.image={width:a,height:b};this.magFilter=void 0!==g?g:1003;this.minFilter=void 0!==h?h:1003;this.generateMipmaps=
-this.flipY=!1}function Lb(a){F.call(this);this.type="WireframeGeometry";var b=[],c,d,e,f=[0,0],g={},h=["a","b","c"];if(a&&a.isGeometry){var k=a.faces;var l=0;for(d=k.length;l<d;l++){var n=k[l];for(c=0;3>c;c++){var q=n[h[c]];var r=n[h[(c+1)%3]];f[0]=Math.min(q,r);f[1]=Math.max(q,r);q=f[0]+","+f[1];void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]})}}for(q in g)l=g[q],h=a.vertices[l.index1],b.push(h.x,h.y,h.z),h=a.vertices[l.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry){var h=new p;if(null!==
-a.index){k=a.attributes.position;n=a.index;var t=a.groups;0===t.length&&(t=[{start:0,count:n.count,materialIndex:0}]);a=0;for(e=t.length;a<e;++a)for(l=t[a],c=l.start,d=l.count,l=c,d=c+d;l<d;l+=3)for(c=0;3>c;c++)q=n.getX(l+c),r=n.getX(l+(c+1)%3),f[0]=Math.min(q,r),f[1]=Math.max(q,r),q=f[0]+","+f[1],void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]});for(q in g)l=g[q],h.fromBufferAttribute(k,l.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(k,l.index2),b.push(h.x,h.y,h.z)}else for(k=a.attributes.position,
+this.map=null;this.size=1;this.sizeAttenuation=!0;this.lights=!1;this.setValues(a)}function Jb(a,b){z.call(this);this.type="Points";this.geometry=void 0!==a?a:new F;this.material=void 0!==b?b:new Da({color:16777215*Math.random()})}function Ac(){z.call(this);this.type="Group"}function td(a,b,c,d,e,f,g,h,k){function l(){requestAnimationFrame(l);a.readyState>=a.HAVE_CURRENT_DATA&&(p.needsUpdate=!0)}V.call(this,a,b,c,d,e,f,g,h,k);this.generateMipmaps=!1;var p=this;l()}function Kb(a,b,c,d,e,f,g,h,k,l,
+p,q){V.call(this,null,f,g,h,k,l,d,e,p,q);this.image={width:b,height:c};this.mipmaps=a;this.generateMipmaps=this.flipY=!1}function Bc(a,b,c,d,e,f,g,h,k,l){l=void 0!==l?l:1026;if(1026!==l&&1027!==l)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===c&&1026===l&&(c=1012);void 0===c&&1027===l&&(c=1020);V.call(this,null,d,e,f,g,h,l,c,k);this.image={width:a,height:b};this.magFilter=void 0!==g?g:1003;this.minFilter=void 0!==h?h:1003;this.generateMipmaps=
+this.flipY=!1}function Lb(a){F.call(this);this.type="WireframeGeometry";var b=[],c,d,e,f=[0,0],g={},h=["a","b","c"];if(a&&a.isGeometry){var k=a.faces;var l=0;for(d=k.length;l<d;l++){var p=k[l];for(c=0;3>c;c++){var q=p[h[c]];var t=p[h[(c+1)%3]];f[0]=Math.min(q,t);f[1]=Math.max(q,t);q=f[0]+","+f[1];void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]})}}for(q in g)l=g[q],h=a.vertices[l.index1],b.push(h.x,h.y,h.z),h=a.vertices[l.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry){var h=new n;if(null!==
+a.index){k=a.attributes.position;p=a.index;var r=a.groups;0===r.length&&(r=[{start:0,count:p.count,materialIndex:0}]);a=0;for(e=r.length;a<e;++a)for(l=r[a],c=l.start,d=l.count,l=c,d=c+d;l<d;l+=3)for(c=0;3>c;c++)q=p.getX(l+c),t=p.getX(l+(c+1)%3),f[0]=Math.min(q,t),f[1]=Math.max(q,t),q=f[0]+","+f[1],void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]});for(q in g)l=g[q],h.fromBufferAttribute(k,l.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(k,l.index2),b.push(h.x,h.y,h.z)}else for(k=a.attributes.position,
 l=0,d=k.count/3;l<d;l++)for(c=0;3>c;c++)g=3*l+c,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z),g=3*l+(c+1)%3,h.fromBufferAttribute(k,g),b.push(h.x,h.y,h.z)}this.addAttribute("position",new x(b,3))}function Cc(a,b,c){I.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b,stacks:c};this.fromBufferGeometry(new Mb(a,b,c));this.mergeVertices()}function Mb(a,b,c){F.call(this);this.type="ParametricBufferGeometry";this.parameters={func:a,slices:b,stacks:c};var d=[],e=[],f=[],g=[],h=
-new p,k=new p,l=new p,n=new p,q=new p,r,t,m=b+1;for(r=0;r<=c;r++){var w=r/c;for(t=0;t<=b;t++){var v=t/b,k=a(v,w,k);e.push(k.x,k.y,k.z);0<=v-1E-5?(l=a(v-1E-5,w,l),n.subVectors(k,l)):(l=a(v+1E-5,w,l),n.subVectors(l,k));0<=w-1E-5?(l=a(v,w-1E-5,l),q.subVectors(k,l)):(l=a(v,w+1E-5,l),q.subVectors(l,k));h.crossVectors(n,q).normalize();f.push(h.x,h.y,h.z);g.push(v,w)}}for(r=0;r<c;r++)for(t=0;t<b;t++)a=r*m+t+1,h=(r+1)*m+t+1,k=(r+1)*m+t,d.push(r*m+t,a,k),d.push(a,h,k);this.setIndex(d);this.addAttribute("position",
+new n,k=new n,l=new n,p=new n,q=new n,t,r,m=b+1;for(t=0;t<=c;t++){var w=t/c;for(r=0;r<=b;r++){var u=r/b,k=a(u,w,k);e.push(k.x,k.y,k.z);0<=u-1E-5?(l=a(u-1E-5,w,l),p.subVectors(k,l)):(l=a(u+1E-5,w,l),p.subVectors(l,k));0<=w-1E-5?(l=a(u,w-1E-5,l),q.subVectors(k,l)):(l=a(u,w+1E-5,l),q.subVectors(l,k));h.crossVectors(p,q).normalize();f.push(h.x,h.y,h.z);g.push(u,w)}}for(t=0;t<c;t++)for(r=0;r<b;r++)a=t*m+r+1,h=(t+1)*m+r+1,k=(t+1)*m+r,d.push(t*m+r,a,k),d.push(a,h,k);this.setIndex(d);this.addAttribute("position",
 new x(e,3));this.addAttribute("normal",new x(f,3));this.addAttribute("uv",new x(g,2))}function Dc(a,b,c,d){I.call(this);this.type="PolyhedronGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};this.fromBufferGeometry(new va(a,b,c,d));this.mergeVertices()}function va(a,b,c,d){function e(a){h.push(a.x,a.y,a.z)}function f(b,c){b*=3;c.x=a[b+0];c.y=a[b+1];c.z=a[b+2]}function g(a,b,c,d){0>d&&1===a.x&&(k[b]=a.x-1);0===c.x&&0===c.z&&(k[b]=d/2/Math.PI+.5)}F.call(this);this.type="PolyhedronBufferGeometry";
-this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],k=[];(function(a){for(var c=new p,d=new p,g=new p,h=0;h<b.length;h+=3){f(b[h+0],c);f(b[h+1],d);f(b[h+2],g);var k,l,m=c,A=d,y=g,H=Math.pow(2,a),B=[];for(l=0;l<=H;l++){B[l]=[];var L=m.clone().lerp(y,l/H),x=A.clone().lerp(y,l/H),z=H-l;for(k=0;k<=z;k++)B[l][k]=0===k&&l===H?L:L.clone().lerp(x,k/z)}for(l=0;l<H;l++)for(k=0;k<2*(H-l)-1;k++)m=Math.floor(k/2),0===k%2?(e(B[l][m+1]),e(B[l+1][m]),e(B[l][m])):(e(B[l][m+1]),e(B[l+1][m+
-1]),e(B[l+1][m]))}})(d);(function(a){for(var b=new p,c=0;c<h.length;c+=3)b.x=h[c+0],b.y=h[c+1],b.z=h[c+2],b.normalize().multiplyScalar(a),h[c+0]=b.x,h[c+1]=b.y,h[c+2]=b.z})(c);(function(){for(var a=new p,b=0;b<h.length;b+=3)a.x=h[b+0],a.y=h[b+1],a.z=h[b+2],k.push(Math.atan2(a.z,-a.x)/2/Math.PI+.5,1-(Math.atan2(-a.y,Math.sqrt(a.x*a.x+a.z*a.z))/Math.PI+.5));for(var a=new p,b=new p,c=new p,d=new p,e=new D,f=new D,m=new D,v=0,A=0;v<h.length;v+=9,A+=6){a.set(h[v+0],h[v+1],h[v+2]);b.set(h[v+3],h[v+4],h[v+
-5]);c.set(h[v+6],h[v+7],h[v+8]);e.set(k[A+0],k[A+1]);f.set(k[A+2],k[A+3]);m.set(k[A+4],k[A+5]);d.copy(a).add(b).add(c).divideScalar(3);var y=Math.atan2(d.z,-d.x);g(e,A+0,a,y);g(f,A+2,b,y);g(m,A+4,c,y)}for(a=0;a<k.length;a+=6)b=k[a+0],c=k[a+2],d=k[a+4],e=Math.min(b,c,d),.9<Math.max(b,c,d)&&.1>e&&(.2>b&&(k[a+0]+=1),.2>c&&(k[a+2]+=1),.2>d&&(k[a+4]+=1))})();this.addAttribute("position",new x(h,3));this.addAttribute("normal",new x(h.slice(),3));this.addAttribute("uv",new x(k,2));0===d?this.computeVertexNormals():
+this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],k=[];(function(a){for(var c=new n,d=new n,g=new n,h=0;h<b.length;h+=3){f(b[h+0],c);f(b[h+1],d);f(b[h+2],g);var k,l,m=c,A=d,y=g,H=Math.pow(2,a),B=[];for(l=0;l<=H;l++){B[l]=[];var L=m.clone().lerp(y,l/H),x=A.clone().lerp(y,l/H),z=H-l;for(k=0;k<=z;k++)B[l][k]=0===k&&l===H?L:L.clone().lerp(x,k/z)}for(l=0;l<H;l++)for(k=0;k<2*(H-l)-1;k++)m=Math.floor(k/2),0===k%2?(e(B[l][m+1]),e(B[l+1][m]),e(B[l][m])):(e(B[l][m+1]),e(B[l+1][m+
+1]),e(B[l+1][m]))}})(d);(function(a){for(var b=new n,c=0;c<h.length;c+=3)b.x=h[c+0],b.y=h[c+1],b.z=h[c+2],b.normalize().multiplyScalar(a),h[c+0]=b.x,h[c+1]=b.y,h[c+2]=b.z})(c);(function(){for(var a=new n,b=0;b<h.length;b+=3)a.x=h[b+0],a.y=h[b+1],a.z=h[b+2],k.push(Math.atan2(a.z,-a.x)/2/Math.PI+.5,1-(Math.atan2(-a.y,Math.sqrt(a.x*a.x+a.z*a.z))/Math.PI+.5));for(var a=new n,b=new n,c=new n,d=new n,e=new D,f=new D,m=new D,u=0,A=0;u<h.length;u+=9,A+=6){a.set(h[u+0],h[u+1],h[u+2]);b.set(h[u+3],h[u+4],h[u+
+5]);c.set(h[u+6],h[u+7],h[u+8]);e.set(k[A+0],k[A+1]);f.set(k[A+2],k[A+3]);m.set(k[A+4],k[A+5]);d.copy(a).add(b).add(c).divideScalar(3);var y=Math.atan2(d.z,-d.x);g(e,A+0,a,y);g(f,A+2,b,y);g(m,A+4,c,y)}for(a=0;a<k.length;a+=6)b=k[a+0],c=k[a+2],d=k[a+4],e=Math.min(b,c,d),.9<Math.max(b,c,d)&&.1>e&&(.2>b&&(k[a+0]+=1),.2>c&&(k[a+2]+=1),.2>d&&(k[a+4]+=1))})();this.addAttribute("position",new x(h,3));this.addAttribute("normal",new x(h.slice(),3));this.addAttribute("uv",new x(k,2));0===d?this.computeVertexNormals():
 this.normalizeNormals()}function Ec(a,b){I.call(this);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Nb(a,b));this.mergeVertices()}function Nb(a,b){va.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Fc(a,b){I.call(this);this.type="OctahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new jb(a,b));this.mergeVertices()}
 function jb(a,b){va.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],a,b);this.type="OctahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Gc(a,b){I.call(this);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Ob(a,b));this.mergeVertices()}function Ob(a,b){var c=(1+Math.sqrt(5))/2;va.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,0,1],[0,11,
 5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,b);this.type="IcosahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Hc(a,b){I.call(this);this.type="DodecahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Pb(a,b));this.mergeVertices()}function Pb(a,b){var c=(1+Math.sqrt(5))/2,d=1/c;va.call(this,[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-d,-c,0,-d,c,0,
 d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c,0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],a,b);this.type="DodecahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Ic(a,b,c,d,e,f){I.call(this);this.type="TubeGeometry";this.parameters={path:a,
-tubularSegments:b,radius:c,radialSegments:d,closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new Qb(a,b,c,d,e);this.tangents=a.tangents;this.normals=a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function Qb(a,b,c,d,e){function f(e){var f=a.getPointAt(e/b),l=g.normals[e];e=g.binormals[e];for(q=0;q<=d;q++){var n=q/d*Math.PI*2,t=Math.sin(n),n=-Math.cos(n);k.x=n*l.x+t*e.x;k.y=n*l.y+t*e.y;k.z=n*l.z+t*e.z;k.normalize();m.push(k.x,
-k.y,k.z);h.x=f.x+c*k.x;h.y=f.y+c*k.y;h.z=f.z+c*k.z;r.push(h.x,h.y,h.z)}}F.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new p,k=new p,l=new D,n,q,r=[],m=[],u=[],w=[];for(n=0;n<b;n++)f(n);f(!1===e?b:0);for(n=0;n<=b;n++)for(q=0;q<=d;q++)l.x=n/b,l.y=q/d,u.push(l.x,l.y);(function(){for(q=
-1;q<=b;q++)for(n=1;n<=d;n++){var a=(d+1)*q+(n-1),c=(d+1)*q+n,e=(d+1)*(q-1)+n;w.push((d+1)*(q-1)+(n-1),a,e);w.push(a,c,e)}})();this.setIndex(w);this.addAttribute("position",new x(r,3));this.addAttribute("normal",new x(m,3));this.addAttribute("uv",new x(u,2))}function Jc(a,b,c,d,e,f,g){I.call(this);this.type="TorusKnotGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};void 0!==g&&console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.");
-this.fromBufferGeometry(new Rb(a,b,c,d,e,f));this.mergeVertices()}function Rb(a,b,c,d,e,f){function g(a,b,c,d,e){var f=Math.sin(a);b=c/b*a;c=Math.cos(b);e.x=d*(2+c)*.5*Math.cos(a);e.y=d*(2+c)*f*.5;e.z=d*Math.sin(b)*.5}F.call(this);this.type="TorusKnotBufferGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};a=a||100;b=b||40;c=Math.floor(c)||64;d=Math.floor(d)||8;e=e||2;f=f||3;var h=[],k=[],l=[],n=[],q,r=new p,m=new p,u=new p,w=new p,v=new p,A=new p,y=new p;for(q=
-0;q<=c;++q){var H=q/c*e*Math.PI*2;g(H,e,f,a,u);g(H+.01,e,f,a,w);A.subVectors(w,u);y.addVectors(w,u);v.crossVectors(A,y);y.crossVectors(v,A);v.normalize();y.normalize();for(H=0;H<=d;++H){var B=H/d*Math.PI*2,L=-b*Math.cos(B),B=b*Math.sin(B);r.x=u.x+(L*y.x+B*v.x);r.y=u.y+(L*y.y+B*v.y);r.z=u.z+(L*y.z+B*v.z);k.push(r.x,r.y,r.z);m.subVectors(r,u).normalize();l.push(m.x,m.y,m.z);n.push(q/c);n.push(H/d)}}for(H=1;H<=c;H++)for(q=1;q<=d;q++)a=(d+1)*H+(q-1),b=(d+1)*H+q,e=(d+1)*(H-1)+q,h.push((d+1)*(H-1)+(q-1),
-a,e),h.push(a,b,e);this.setIndex(h);this.addAttribute("position",new x(k,3));this.addAttribute("normal",new x(l,3));this.addAttribute("uv",new x(n,2))}function Kc(a,b,c,d,e){I.call(this);this.type="TorusGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};this.fromBufferGeometry(new Sb(a,b,c,d,e));this.mergeVertices()}function Sb(a,b,c,d,e){F.call(this);this.type="TorusBufferGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};a=a||100;
-b=b||40;c=Math.floor(c)||8;d=Math.floor(d)||6;e=e||2*Math.PI;var f=[],g=[],h=[],k=[],l=new p,n=new p,q=new p,r,m;for(r=0;r<=c;r++)for(m=0;m<=d;m++){var u=m/d*e,w=r/c*Math.PI*2;n.x=(a+b*Math.cos(w))*Math.cos(u);n.y=(a+b*Math.cos(w))*Math.sin(u);n.z=b*Math.sin(w);g.push(n.x,n.y,n.z);l.x=a*Math.cos(u);l.y=a*Math.sin(u);q.subVectors(n,l).normalize();h.push(q.x,q.y,q.z);k.push(m/d);k.push(r/c)}for(r=1;r<=c;r++)for(m=1;m<=d;m++)a=(d+1)*(r-1)+m-1,b=(d+1)*(r-1)+m,e=(d+1)*r+m,f.push((d+1)*r+m-1,a,e),f.push(a,
-b,e);this.setIndex(f);this.addAttribute("position",new x(g,3));this.addAttribute("normal",new x(h,3));this.addAttribute("uv",new x(k,2))}function $a(a,b){I.call(this);this.type="ExtrudeGeometry";this.parameters={shapes:a,options:b};this.fromBufferGeometry(new Ga(a,b));this.mergeVertices()}function Ga(a,b){"undefined"!==typeof a&&(F.call(this),this.type="ExtrudeBufferGeometry",a=Array.isArray(a)?a:[a],this.addShapeList(a,b),this.computeVertexNormals())}function Lc(a,b){I.call(this);this.type="TextGeometry";
-this.parameters={text:a,parameters:b};this.fromBufferGeometry(new Tb(a,b));this.mergeVertices()}function Tb(a,b){b=b||{};var c=b.font;if(!c||!c.isFont)return console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),new I;a=c.generateShapes(a,b.size,b.curveSegments);b.amount=void 0!==b.height?b.height:50;void 0===b.bevelThickness&&(b.bevelThickness=10);void 0===b.bevelSize&&(b.bevelSize=8);void 0===b.bevelEnabled&&(b.bevelEnabled=!1);Ga.call(this,a,b);this.type="TextBufferGeometry"}
+tubularSegments:b,radius:c,radialSegments:d,closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new Qb(a,b,c,d,e);this.tangents=a.tangents;this.normals=a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function Qb(a,b,c,d,e){function f(e){var f=a.getPointAt(e/b),l=g.normals[e];e=g.binormals[e];for(q=0;q<=d;q++){var p=q/d*Math.PI*2,r=Math.sin(p),p=-Math.cos(p);k.x=p*l.x+r*e.x;k.y=p*l.y+r*e.y;k.z=p*l.z+r*e.z;k.normalize();m.push(k.x,
+k.y,k.z);h.x=f.x+c*k.x;h.y=f.y+c*k.y;h.z=f.z+c*k.z;t.push(h.x,h.y,h.z)}}F.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new n,k=new n,l=new D,p,q,t=[],m=[],v=[],w=[];for(p=0;p<b;p++)f(p);f(!1===e?b:0);for(p=0;p<=b;p++)for(q=0;q<=d;q++)l.x=p/b,l.y=q/d,v.push(l.x,l.y);(function(){for(q=
+1;q<=b;q++)for(p=1;p<=d;p++){var a=(d+1)*q+(p-1),c=(d+1)*q+p,e=(d+1)*(q-1)+p;w.push((d+1)*(q-1)+(p-1),a,e);w.push(a,c,e)}})();this.setIndex(w);this.addAttribute("position",new x(t,3));this.addAttribute("normal",new x(m,3));this.addAttribute("uv",new x(v,2))}function Jc(a,b,c,d,e,f,g){I.call(this);this.type="TorusKnotGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};void 0!==g&&console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.");
+this.fromBufferGeometry(new Rb(a,b,c,d,e,f));this.mergeVertices()}function Rb(a,b,c,d,e,f){function g(a,b,c,d,e){var f=Math.sin(a);b=c/b*a;c=Math.cos(b);e.x=d*(2+c)*.5*Math.cos(a);e.y=d*(2+c)*f*.5;e.z=d*Math.sin(b)*.5}F.call(this);this.type="TorusKnotBufferGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};a=a||100;b=b||40;c=Math.floor(c)||64;d=Math.floor(d)||8;e=e||2;f=f||3;var h=[],k=[],l=[],p=[],q,t=new n,m=new n,v=new n,w=new n,u=new n,A=new n,y=new n;for(q=
+0;q<=c;++q){var H=q/c*e*Math.PI*2;g(H,e,f,a,v);g(H+.01,e,f,a,w);A.subVectors(w,v);y.addVectors(w,v);u.crossVectors(A,y);y.crossVectors(u,A);u.normalize();y.normalize();for(H=0;H<=d;++H){var B=H/d*Math.PI*2,L=-b*Math.cos(B),B=b*Math.sin(B);t.x=v.x+(L*y.x+B*u.x);t.y=v.y+(L*y.y+B*u.y);t.z=v.z+(L*y.z+B*u.z);k.push(t.x,t.y,t.z);m.subVectors(t,v).normalize();l.push(m.x,m.y,m.z);p.push(q/c);p.push(H/d)}}for(H=1;H<=c;H++)for(q=1;q<=d;q++)a=(d+1)*H+(q-1),b=(d+1)*H+q,e=(d+1)*(H-1)+q,h.push((d+1)*(H-1)+(q-1),
+a,e),h.push(a,b,e);this.setIndex(h);this.addAttribute("position",new x(k,3));this.addAttribute("normal",new x(l,3));this.addAttribute("uv",new x(p,2))}function Kc(a,b,c,d,e){I.call(this);this.type="TorusGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};this.fromBufferGeometry(new Sb(a,b,c,d,e));this.mergeVertices()}function Sb(a,b,c,d,e){F.call(this);this.type="TorusBufferGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};a=a||100;
+b=b||40;c=Math.floor(c)||8;d=Math.floor(d)||6;e=e||2*Math.PI;var f=[],g=[],h=[],k=[],l=new n,p=new n,q=new n,t,m;for(t=0;t<=c;t++)for(m=0;m<=d;m++){var v=m/d*e,w=t/c*Math.PI*2;p.x=(a+b*Math.cos(w))*Math.cos(v);p.y=(a+b*Math.cos(w))*Math.sin(v);p.z=b*Math.sin(w);g.push(p.x,p.y,p.z);l.x=a*Math.cos(v);l.y=a*Math.sin(v);q.subVectors(p,l).normalize();h.push(q.x,q.y,q.z);k.push(m/d);k.push(t/c)}for(t=1;t<=c;t++)for(m=1;m<=d;m++)a=(d+1)*(t-1)+m-1,b=(d+1)*(t-1)+m,e=(d+1)*t+m,f.push((d+1)*t+m-1,a,e),f.push(a,
+b,e);this.setIndex(f);this.addAttribute("position",new x(g,3));this.addAttribute("normal",new x(h,3));this.addAttribute("uv",new x(k,2))}function $a(a,b){I.call(this);this.type="ExtrudeGeometry";this.parameters={shapes:a,options:b};this.fromBufferGeometry(new Ea(a,b));this.mergeVertices()}function Ea(a,b){"undefined"!==typeof a&&(F.call(this),this.type="ExtrudeBufferGeometry",a=Array.isArray(a)?a:[a],this.addShapeList(a,b),this.computeVertexNormals())}function Lc(a,b){I.call(this);this.type="TextGeometry";
+this.parameters={text:a,parameters:b};this.fromBufferGeometry(new Tb(a,b));this.mergeVertices()}function Tb(a,b){b=b||{};var c=b.font;if(!c||!c.isFont)return console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),new I;a=c.generateShapes(a,b.size,b.curveSegments);b.amount=void 0!==b.height?b.height:50;void 0===b.bevelThickness&&(b.bevelThickness=10);void 0===b.bevelSize&&(b.bevelSize=8);void 0===b.bevelEnabled&&(b.bevelEnabled=!1);Ea.call(this,a,b);this.type="TextBufferGeometry"}
 function Mc(a,b,c,d,e,f,g){I.call(this);this.type="SphereGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c,phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};this.fromBufferGeometry(new kb(a,b,c,d,e,f,g));this.mergeVertices()}function kb(a,b,c,d,e,f,g){F.call(this);this.type="SphereBufferGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c,phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};a=a||50;b=Math.max(3,Math.floor(b)||8);c=Math.max(2,Math.floor(c)||6);d=void 0!==
-d?d:0;e=void 0!==e?e:2*Math.PI;f=void 0!==f?f:0;g=void 0!==g?g:Math.PI;var h=f+g,k,l,n=0,q=[],r=new p,m=new p,u=[],w=[],v=[],A=[];for(l=0;l<=c;l++){var y=[],H=l/c;for(k=0;k<=b;k++){var B=k/b;r.x=-a*Math.cos(d+B*e)*Math.sin(f+H*g);r.y=a*Math.cos(f+H*g);r.z=a*Math.sin(d+B*e)*Math.sin(f+H*g);w.push(r.x,r.y,r.z);m.set(r.x,r.y,r.z).normalize();v.push(m.x,m.y,m.z);A.push(B,1-H);y.push(n++)}q.push(y)}for(l=0;l<c;l++)for(k=0;k<b;k++)a=q[l][k+1],d=q[l][k],e=q[l+1][k],g=q[l+1][k+1],(0!==l||0<f)&&u.push(a,d,
-g),(l!==c-1||h<Math.PI)&&u.push(d,e,g);this.setIndex(u);this.addAttribute("position",new x(w,3));this.addAttribute("normal",new x(v,3));this.addAttribute("uv",new x(A,2))}function Nc(a,b,c,d,e,f){I.call(this);this.type="RingGeometry";this.parameters={innerRadius:a,outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e,thetaLength:f};this.fromBufferGeometry(new Ub(a,b,c,d,e,f));this.mergeVertices()}function Ub(a,b,c,d,e,f){F.call(this);this.type="RingBufferGeometry";this.parameters={innerRadius:a,
-outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e,thetaLength:f};a=a||20;b=b||50;e=void 0!==e?e:0;f=void 0!==f?f:2*Math.PI;c=void 0!==c?Math.max(3,c):8;d=void 0!==d?Math.max(1,d):1;var g=[],h=[],k=[],l=[],n=a,q=(b-a)/d,r=new p,m=new D,u,w;for(u=0;u<=d;u++){for(w=0;w<=c;w++)a=e+w/c*f,r.x=n*Math.cos(a),r.y=n*Math.sin(a),h.push(r.x,r.y,r.z),k.push(0,0,1),m.x=(r.x/b+1)/2,m.y=(r.y/b+1)/2,l.push(m.x,m.y);n+=q}for(u=0;u<d;u++)for(b=u*(c+1),w=0;w<c;w++)a=w+b,e=a+c+1,f=a+c+2,n=a+1,g.push(a,e,n),g.push(e,
-f,n);this.setIndex(g);this.addAttribute("position",new x(h,3));this.addAttribute("normal",new x(k,3));this.addAttribute("uv",new x(l,2))}function Oc(a,b,c,d){I.call(this);this.type="LatheGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};this.fromBufferGeometry(new Vb(a,b,c,d));this.mergeVertices()}function Vb(a,b,c,d){F.call(this);this.type="LatheBufferGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};b=Math.floor(b)||12;c=c||0;d=d||2*Math.PI;d=P.clamp(d,
-0,2*Math.PI);var e=[],f=[],g=[],h=1/b,k=new p,l=new D,n;for(n=0;n<=b;n++){var q=c+n*h*d;var r=Math.sin(q),m=Math.cos(q);for(q=0;q<=a.length-1;q++)k.x=a[q].x*r,k.y=a[q].y,k.z=a[q].x*m,f.push(k.x,k.y,k.z),l.x=n/b,l.y=q/(a.length-1),g.push(l.x,l.y)}for(n=0;n<b;n++)for(q=0;q<a.length-1;q++)c=q+n*a.length,h=c+a.length,k=c+a.length+1,l=c+1,e.push(c,h,l),e.push(h,k,l);this.setIndex(e);this.addAttribute("position",new x(f,3));this.addAttribute("uv",new x(g,2));this.computeVertexNormals();if(d===2*Math.PI)for(d=
-this.attributes.normal.array,e=new p,f=new p,g=new p,c=b*a.length*3,q=n=0;n<a.length;n++,q+=3)e.x=d[q+0],e.y=d[q+1],e.z=d[q+2],f.x=d[c+q+0],f.y=d[c+q+1],f.z=d[c+q+2],g.addVectors(e,f).normalize(),d[q+0]=d[c+q+0]=g.x,d[q+1]=d[c+q+1]=g.y,d[q+2]=d[c+q+2]=g.z}function Wb(a,b){I.call(this);this.type="ShapeGeometry";"object"===typeof b&&(console.warn("THREE.ShapeGeometry: Options parameter has been removed."),b=b.curveSegments);this.parameters={shapes:a,curveSegments:b};this.fromBufferGeometry(new Xb(a,
-b));this.mergeVertices()}function Xb(a,b){function c(a){var c,h=e.length/3;a=a.extractPoints(b);var l=a.shape,n=a.holes;if(!1===Ha.isClockWise(l))for(l=l.reverse(),a=0,c=n.length;a<c;a++){var m=n[a];!0===Ha.isClockWise(m)&&(n[a]=m.reverse())}var p=Ha.triangulateShape(l,n);a=0;for(c=n.length;a<c;a++)m=n[a],l=l.concat(m);a=0;for(c=l.length;a<c;a++)m=l[a],e.push(m.x,m.y,0),f.push(0,0,1),g.push(m.x,m.y);a=0;for(c=p.length;a<c;a++)l=p[a],d.push(l[0]+h,l[1]+h,l[2]+h),k+=3}F.call(this);this.type="ShapeBufferGeometry";
+d?d:0;e=void 0!==e?e:2*Math.PI;f=void 0!==f?f:0;g=void 0!==g?g:Math.PI;var h=f+g,k,l,p=0,q=[],t=new n,m=new n,v=[],w=[],u=[],A=[];for(l=0;l<=c;l++){var y=[],H=l/c;for(k=0;k<=b;k++){var B=k/b;t.x=-a*Math.cos(d+B*e)*Math.sin(f+H*g);t.y=a*Math.cos(f+H*g);t.z=a*Math.sin(d+B*e)*Math.sin(f+H*g);w.push(t.x,t.y,t.z);m.set(t.x,t.y,t.z).normalize();u.push(m.x,m.y,m.z);A.push(B,1-H);y.push(p++)}q.push(y)}for(l=0;l<c;l++)for(k=0;k<b;k++)a=q[l][k+1],d=q[l][k],e=q[l+1][k],g=q[l+1][k+1],(0!==l||0<f)&&v.push(a,d,
+g),(l!==c-1||h<Math.PI)&&v.push(d,e,g);this.setIndex(v);this.addAttribute("position",new x(w,3));this.addAttribute("normal",new x(u,3));this.addAttribute("uv",new x(A,2))}function Nc(a,b,c,d,e,f){I.call(this);this.type="RingGeometry";this.parameters={innerRadius:a,outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e,thetaLength:f};this.fromBufferGeometry(new Ub(a,b,c,d,e,f));this.mergeVertices()}function Ub(a,b,c,d,e,f){F.call(this);this.type="RingBufferGeometry";this.parameters={innerRadius:a,
+outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e,thetaLength:f};a=a||20;b=b||50;e=void 0!==e?e:0;f=void 0!==f?f:2*Math.PI;c=void 0!==c?Math.max(3,c):8;d=void 0!==d?Math.max(1,d):1;var g=[],h=[],k=[],l=[],p=a,q=(b-a)/d,t=new n,m=new D,v,w;for(v=0;v<=d;v++){for(w=0;w<=c;w++)a=e+w/c*f,t.x=p*Math.cos(a),t.y=p*Math.sin(a),h.push(t.x,t.y,t.z),k.push(0,0,1),m.x=(t.x/b+1)/2,m.y=(t.y/b+1)/2,l.push(m.x,m.y);p+=q}for(v=0;v<d;v++)for(b=v*(c+1),w=0;w<c;w++)a=w+b,e=a+c+1,f=a+c+2,p=a+1,g.push(a,e,p),g.push(e,
+f,p);this.setIndex(g);this.addAttribute("position",new x(h,3));this.addAttribute("normal",new x(k,3));this.addAttribute("uv",new x(l,2))}function Oc(a,b,c,d){I.call(this);this.type="LatheGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};this.fromBufferGeometry(new Vb(a,b,c,d));this.mergeVertices()}function Vb(a,b,c,d){F.call(this);this.type="LatheBufferGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};b=Math.floor(b)||12;c=c||0;d=d||2*Math.PI;d=P.clamp(d,
+0,2*Math.PI);var e=[],f=[],g=[],h=1/b,k=new n,l=new D,p;for(p=0;p<=b;p++){var q=c+p*h*d;var t=Math.sin(q),m=Math.cos(q);for(q=0;q<=a.length-1;q++)k.x=a[q].x*t,k.y=a[q].y,k.z=a[q].x*m,f.push(k.x,k.y,k.z),l.x=p/b,l.y=q/(a.length-1),g.push(l.x,l.y)}for(p=0;p<b;p++)for(q=0;q<a.length-1;q++)c=q+p*a.length,h=c+a.length,k=c+a.length+1,l=c+1,e.push(c,h,l),e.push(h,k,l);this.setIndex(e);this.addAttribute("position",new x(f,3));this.addAttribute("uv",new x(g,2));this.computeVertexNormals();if(d===2*Math.PI)for(d=
+this.attributes.normal.array,e=new n,f=new n,g=new n,c=b*a.length*3,q=p=0;p<a.length;p++,q+=3)e.x=d[q+0],e.y=d[q+1],e.z=d[q+2],f.x=d[c+q+0],f.y=d[c+q+1],f.z=d[c+q+2],g.addVectors(e,f).normalize(),d[q+0]=d[c+q+0]=g.x,d[q+1]=d[c+q+1]=g.y,d[q+2]=d[c+q+2]=g.z}function Wb(a,b){I.call(this);this.type="ShapeGeometry";"object"===typeof b&&(console.warn("THREE.ShapeGeometry: Options parameter has been removed."),b=b.curveSegments);this.parameters={shapes:a,curveSegments:b};this.fromBufferGeometry(new Xb(a,
+b));this.mergeVertices()}function Xb(a,b){function c(a){var c,h=e.length/3;a=a.extractPoints(b);var l=a.shape,p=a.holes;if(!1===Ha.isClockWise(l))for(l=l.reverse(),a=0,c=p.length;a<c;a++){var m=p[a];!0===Ha.isClockWise(m)&&(p[a]=m.reverse())}var n=Ha.triangulateShape(l,p);a=0;for(c=p.length;a<c;a++)m=p[a],l=l.concat(m);a=0;for(c=l.length;a<c;a++)m=l[a],e.push(m.x,m.y,0),f.push(0,0,1),g.push(m.x,m.y);a=0;for(c=n.length;a<c;a++)l=n[a],d.push(l[0]+h,l[1]+h,l[2]+h),k+=3}F.call(this);this.type="ShapeBufferGeometry";
 this.parameters={shapes:a,curveSegments:b};b=b||12;var d=[],e=[],f=[],g=[],h=0,k=0;if(!1===Array.isArray(a))c(a);else for(var l=0;l<a.length;l++)c(a[l]),this.addGroup(h,k,l),h+=k,k=0;this.setIndex(d);this.addAttribute("position",new x(e,3));this.addAttribute("normal",new x(f,3));this.addAttribute("uv",new x(g,2))}function Yb(a,b){F.call(this);this.type="EdgesGeometry";this.parameters={thresholdAngle:b};var c=[];b=Math.cos(P.DEG2RAD*(void 0!==b?b:1));var d=[0,0],e={},f=["a","b","c"];if(a.isBufferGeometry){var g=
-new I;g.fromBufferGeometry(a)}else g=a.clone();g.mergeVertices();g.computeFaceNormals();a=g.vertices;g=g.faces;for(var h=0,k=g.length;h<k;h++)for(var l=g[h],n=0;3>n;n++){var q=l[f[n]];var r=l[f[(n+1)%3]];d[0]=Math.min(q,r);d[1]=Math.max(q,r);q=d[0]+","+d[1];void 0===e[q]?e[q]={index1:d[0],index2:d[1],face1:h,face2:void 0}:e[q].face2=h}for(q in e)if(d=e[q],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1],c.push(f.x,f.y,f.z),f=a[d.index2],c.push(f.x,f.y,f.z);this.addAttribute("position",
-new x(c,3))}function lb(a,b,c,d,e,f,g,h){I.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new Ta(a,b,c,d,e,f,g,h));this.mergeVertices()}function Ta(a,b,c,d,e,f,g,h){function k(c){var e,f=new D,k=new p,t=0,y=!0===c?a:b,w=!0===c?1:-1;var x=u;for(e=1;e<=d;e++)q.push(0,v*w,0),r.push(0,w,0),m.push(.5,.5),u++;var z=u;for(e=0;e<=d;e++){var E=e/d*h+g,F=Math.cos(E),
-E=Math.sin(E);k.x=y*E;k.y=v*w;k.z=y*F;q.push(k.x,k.y,k.z);r.push(0,w,0);f.x=.5*F+.5;f.y=.5*E*w+.5;m.push(f.x,f.y);u++}for(e=0;e<d;e++)f=x+e,k=z+e,!0===c?n.push(k,k+1,f):n.push(k+1,k,f),t+=3;l.addGroup(A,t,!0===c?1:2);A+=t}F.call(this);this.type="CylinderBufferGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};var l=this;a=void 0!==a?a:20;b=void 0!==b?b:20;c=void 0!==c?c:100;d=Math.floor(d)||8;e=Math.floor(e)||1;
-f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var n=[],q=[],r=[],m=[],u=0,w=[],v=c/2,A=0;(function(){var f,k,t=new p,L=new p,x=0,z=(b-a)/c;for(k=0;k<=e;k++){var D=[],E=k/e,F=E*(b-a)+a;for(f=0;f<=d;f++){var J=f/d,ga=J*h+g,I=Math.sin(ga),ga=Math.cos(ga);L.x=F*I;L.y=-E*c+v;L.z=F*ga;q.push(L.x,L.y,L.z);t.set(I,z,ga).normalize();r.push(t.x,t.y,t.z);m.push(J,1-E);D.push(u++)}w.push(D)}for(f=0;f<d;f++)for(k=0;k<e;k++)t=w[k+1][f],L=w[k+1][f+1],z=w[k][f+1],n.push(w[k][f],t,z),n.push(t,L,z),x+=
-6;l.addGroup(A,x,0);A+=x})();!1===f&&(0<a&&k(!0),0<b&&k(!1));this.setIndex(n);this.addAttribute("position",new x(q,3));this.addAttribute("normal",new x(r,3));this.addAttribute("uv",new x(m,2))}function Pc(a,b,c,d,e,f,g){lb.call(this,0,a,b,c,d,e,f,g);this.type="ConeGeometry";this.parameters={radius:a,height:b,radialSegments:c,heightSegments:d,openEnded:e,thetaStart:f,thetaLength:g}}function Qc(a,b,c,d,e,f,g){Ta.call(this,0,a,b,c,d,e,f,g);this.type="ConeBufferGeometry";this.parameters={radius:a,height:b,
+new I;g.fromBufferGeometry(a)}else g=a.clone();g.mergeVertices();g.computeFaceNormals();a=g.vertices;g=g.faces;for(var h=0,k=g.length;h<k;h++)for(var l=g[h],p=0;3>p;p++){var q=l[f[p]];var t=l[f[(p+1)%3]];d[0]=Math.min(q,t);d[1]=Math.max(q,t);q=d[0]+","+d[1];void 0===e[q]?e[q]={index1:d[0],index2:d[1],face1:h,face2:void 0}:e[q].face2=h}for(q in e)if(d=e[q],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1],c.push(f.x,f.y,f.z),f=a[d.index2],c.push(f.x,f.y,f.z);this.addAttribute("position",
+new x(c,3))}function lb(a,b,c,d,e,f,g,h){I.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new Ta(a,b,c,d,e,f,g,h));this.mergeVertices()}function Ta(a,b,c,d,e,f,g,h){function k(c){var e,f=new D,k=new n,r=0,y=!0===c?a:b,w=!0===c?1:-1;var x=v;for(e=1;e<=d;e++)q.push(0,u*w,0),t.push(0,w,0),m.push(.5,.5),v++;var z=v;for(e=0;e<=d;e++){var E=e/d*h+g,F=Math.cos(E),
+E=Math.sin(E);k.x=y*E;k.y=u*w;k.z=y*F;q.push(k.x,k.y,k.z);t.push(0,w,0);f.x=.5*F+.5;f.y=.5*E*w+.5;m.push(f.x,f.y);v++}for(e=0;e<d;e++)f=x+e,k=z+e,!0===c?p.push(k,k+1,f):p.push(k+1,k,f),r+=3;l.addGroup(A,r,!0===c?1:2);A+=r}F.call(this);this.type="CylinderBufferGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};var l=this;a=void 0!==a?a:20;b=void 0!==b?b:20;c=void 0!==c?c:100;d=Math.floor(d)||8;e=Math.floor(e)||1;
+f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var p=[],q=[],t=[],m=[],v=0,w=[],u=c/2,A=0;(function(){var f,k,r=new n,L=new n,x=0,z=(b-a)/c;for(k=0;k<=e;k++){var D=[],E=k/e,F=E*(b-a)+a;for(f=0;f<=d;f++){var J=f/d,ga=J*h+g,I=Math.sin(ga),ga=Math.cos(ga);L.x=F*I;L.y=-E*c+u;L.z=F*ga;q.push(L.x,L.y,L.z);r.set(I,z,ga).normalize();t.push(r.x,r.y,r.z);m.push(J,1-E);D.push(v++)}w.push(D)}for(f=0;f<d;f++)for(k=0;k<e;k++)r=w[k+1][f],L=w[k+1][f+1],z=w[k][f+1],p.push(w[k][f],r,z),p.push(r,L,z),x+=
+6;l.addGroup(A,x,0);A+=x})();!1===f&&(0<a&&k(!0),0<b&&k(!1));this.setIndex(p);this.addAttribute("position",new x(q,3));this.addAttribute("normal",new x(t,3));this.addAttribute("uv",new x(m,2))}function Pc(a,b,c,d,e,f,g){lb.call(this,0,a,b,c,d,e,f,g);this.type="ConeGeometry";this.parameters={radius:a,height:b,radialSegments:c,heightSegments:d,openEnded:e,thetaStart:f,thetaLength:g}}function Qc(a,b,c,d,e,f,g){Ta.call(this,0,a,b,c,d,e,f,g);this.type="ConeBufferGeometry";this.parameters={radius:a,height:b,
 radialSegments:c,heightSegments:d,openEnded:e,thetaStart:f,thetaLength:g}}function Rc(a,b,c,d){I.call(this);this.type="CircleGeometry";this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d};this.fromBufferGeometry(new Zb(a,b,c,d));this.mergeVertices()}function Zb(a,b,c,d){F.call(this);this.type="CircleBufferGeometry";this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d};a=a||50;b=void 0!==b?Math.max(3,b):8;c=void 0!==c?c:0;d=void 0!==d?d:2*Math.PI;var e=[],f=[],g=[],h=[],k,l=
-new p,n=new D;f.push(0,0,0);g.push(0,0,1);h.push(.5,.5);var q=0;for(k=3;q<=b;q++,k+=3){var r=c+q/b*d;l.x=a*Math.cos(r);l.y=a*Math.sin(r);f.push(l.x,l.y,l.z);g.push(0,0,1);n.x=(f[k]/a+1)/2;n.y=(f[k+1]/a+1)/2;h.push(n.x,n.y)}for(k=1;k<=b;k++)e.push(k,k+1,0);this.setIndex(e);this.addAttribute("position",new x(f,3));this.addAttribute("normal",new x(g,3));this.addAttribute("uv",new x(h,2))}function $b(a){qa.call(this,{uniforms:Ca.merge([Q.lights,{opacity:{value:1}}]),vertexShader:R.shadow_vert,fragmentShader:R.shadow_frag});
+new n,p=new D;f.push(0,0,0);g.push(0,0,1);h.push(.5,.5);var q=0;for(k=3;q<=b;q++,k+=3){var m=c+q/b*d;l.x=a*Math.cos(m);l.y=a*Math.sin(m);f.push(l.x,l.y,l.z);g.push(0,0,1);p.x=(f[k]/a+1)/2;p.y=(f[k+1]/a+1)/2;h.push(p.x,p.y)}for(k=1;k<=b;k++)e.push(k,k+1,0);this.setIndex(e);this.addAttribute("position",new x(f,3));this.addAttribute("normal",new x(g,3));this.addAttribute("uv",new x(h,2))}function $b(a){qa.call(this,{uniforms:Ca.merge([Q.lights,{opacity:{value:1}}]),vertexShader:R.shadow_vert,fragmentShader:R.shadow_frag});
 this.transparent=this.lights=!0;Object.defineProperties(this,{opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(a){this.uniforms.opacity.value=a}}});this.setValues(a)}function ac(a){qa.call(this,a);this.type="RawShaderMaterial"}function Oa(a){N.call(this);this.defines={STANDARD:""};this.type="MeshStandardMaterial";this.color=new E(16777215);this.metalness=this.roughness=.5;this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=
 1;this.emissive=new E(0);this.emissiveIntensity=1;this.bumpMap=this.emissiveMap=null;this.bumpScale=1;this.normalMap=null;this.normalScale=new D(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.envMap=this.alphaMap=this.metalnessMap=this.roughnessMap=null;this.envMapIntensity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)}
 function mb(a){Oa.call(this);this.defines={PHYSICAL:""};this.type="MeshPhysicalMaterial";this.reflectivity=.5;this.clearCoatRoughness=this.clearCoat=0;this.setValues(a)}function Ia(a){N.call(this);this.type="MeshPhongMaterial";this.color=new E(16777215);this.specular=new E(1118481);this.shininess=30;this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.emissive=new E(0);this.emissiveIntensity=1;this.bumpMap=this.emissiveMap=null;this.bumpScale=1;this.normalMap=
@@ -252,8 +252,8 @@ b,c,d){xa.call(this,a,b,c,d)}function Uc(a,b,c,d){sb.call(this,a,b,c,d)}function
 function ee(a){this.manager=void 0!==a?a:pa}function dc(){this.onLoadStart=function(){};this.onLoadProgress=function(){};this.onLoadComplete=function(){}}function fe(a){"boolean"===typeof a&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),a=void 0);this.manager=void 0!==a?a:pa;this.withCredentials=!1}function Ue(a){this.manager=void 0!==a?a:pa;this.texturePath=""}function Ve(a,b,c,d,e){b=.5*(d-b);e=.5*(e-c);var f=a*a;return(2*c-2*d+b+e)*a*f+(-3*c+3*d-2*b-
 e)*f+b*a+c}function ub(a,b,c,d){var e=1-a;return e*e*b+2*(1-a)*a*c+a*a*d}function vb(a,b,c,d,e){var f=1-a,g=1-a;return f*f*f*b+3*g*g*a*c+3*(1-a)*a*a*d+a*a*a*e}function ja(){this.arcLengthDivisions=200}function Pa(a,b){this.arcLengthDivisions=200;this.v1=a;this.v2=b}function Vc(){this.arcLengthDivisions=200;this.curves=[];this.autoClose=!1}function Ua(a,b,c,d,e,f,g,h){this.arcLengthDivisions=200;this.aX=a;this.aY=b;this.xRadius=c;this.yRadius=d;this.aStartAngle=e;this.aEndAngle=f;this.aClockwise=g;
 this.aRotation=h||0}function wb(a){this.arcLengthDivisions=200;this.points=void 0===a?[]:a}function ec(a,b,c,d){this.arcLengthDivisions=200;this.v0=a;this.v1=b;this.v2=c;this.v3=d}function fc(a,b,c){this.arcLengthDivisions=200;this.v0=a;this.v1=b;this.v2=c}function Wc(a){Vc.call(this);this.currentPoint=new D;a&&this.fromPoints(a)}function xb(){Wc.apply(this,arguments);this.holes=[]}function ge(){this.subPaths=[];this.currentPath=null}function he(a){this.data=a}function We(a){this.manager=void 0!==
-a?a:pa}function ie(a){this.manager=void 0!==a?a:pa}function Xe(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new Y;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new Y;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1}function Kd(a,b,c){z.call(this);this.type="CubeCamera";var d=new Y(90,1,a,b);d.up.set(0,-1,0);d.lookAt(new p(1,0,0));this.add(d);var e=new Y(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new p(-1,0,0));this.add(e);var f=new Y(90,
-1,a,b);f.up.set(0,0,1);f.lookAt(new p(0,1,0));this.add(f);var g=new Y(90,1,a,b);g.up.set(0,0,-1);g.lookAt(new p(0,-1,0));this.add(g);var h=new Y(90,1,a,b);h.up.set(0,-1,0);h.lookAt(new p(0,0,1));this.add(h);var k=new Y(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new p(0,0,-1));this.add(k);this.renderTarget=new Bb(c,c,{format:1022,magFilter:1006,minFilter:1006});this.renderTarget.texture.name="CubeCamera";this.updateCubeMap=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=this.renderTarget,
+a?a:pa}function ie(a){this.manager=void 0!==a?a:pa}function Xe(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new Y;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new Y;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1}function Kd(a,b,c){z.call(this);this.type="CubeCamera";var d=new Y(90,1,a,b);d.up.set(0,-1,0);d.lookAt(new n(1,0,0));this.add(d);var e=new Y(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new n(-1,0,0));this.add(e);var f=new Y(90,
+1,a,b);f.up.set(0,0,1);f.lookAt(new n(0,1,0));this.add(f);var g=new Y(90,1,a,b);g.up.set(0,0,-1);g.lookAt(new n(0,-1,0));this.add(g);var h=new Y(90,1,a,b);h.up.set(0,-1,0);h.lookAt(new n(0,0,1));this.add(h);var k=new Y(90,1,a,b);k.up.set(0,-1,0);k.lookAt(new n(0,0,-1));this.add(k);this.renderTarget=new Bb(c,c,{format:1022,magFilter:1006,minFilter:1006});this.renderTarget.texture.name="CubeCamera";this.updateCubeMap=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=this.renderTarget,
 l=c.texture.generateMipmaps;c.texture.generateMipmaps=!1;c.activeCubeFace=0;a.render(b,d,c);c.activeCubeFace=1;a.render(b,e,c);c.activeCubeFace=2;a.render(b,f,c);c.activeCubeFace=3;a.render(b,g,c);c.activeCubeFace=4;a.render(b,h,c);c.texture.generateMipmaps=l;c.activeCubeFace=5;a.render(b,k,c);a.setRenderTarget(null)}}function je(){z.call(this);this.type="AudioListener";this.context=ke.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null}function gc(a){z.call(this);
 this.type="Audio";this.context=a.context;this.gain=this.context.createGain();this.gain.connect(a.getInput());this.autoplay=!1;this.buffer=null;this.loop=!1;this.startTime=0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this.filters=[]}function le(a){gc.call(this,a);this.panner=this.context.createPanner();this.panner.connect(this.gain)}function me(a,b){this.analyser=a.context.createAnalyser();this.analyser.fftSize=void 0!==b?b:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount);
 a.getOutput().connect(this.analyser)}function ne(a,b,c){this.binding=a;this.valueSize=c;a=Float64Array;switch(b){case "quaternion":b=this._slerp;break;case "string":case "bool":a=Array;b=this._select;break;default:b=this._lerp}this.buffer=new a(4*c);this._mixBufferRegion=b;this.referenceCount=this.useCount=this.cumulativeWeight=0}function Ye(a,b,c){c=c||T.parseTrackName(b);this._targetGroup=a;this._bindings=a.subscribe_(b,c)}function T(a,b,c){this.path=b;this.parsedPath=c||T.parseTrackName(b);this.node=
@@ -267,17 +267,17 @@ a;this.size=void 0!==b?b:1;a=void 0!==c?c:16711680;d=void 0!==d?d:1;b=0;(c=this.
 0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(var c=0,d=1;32>c;c++,d++){var e=c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.addAttribute("position",new x(b,3));b=new fa({fog:!1});this.cone=new S(a,b);this.add(this.cone);this.update()}function gf(a){var b=[];a&&a.isBone&&b.push(a);for(var c=0;c<a.children.length;c++)b.push.apply(b,gf(a.children[c]));return b}function jc(a){for(var b=gf(a),c=new F,d=[],e=[],f=new E(0,0,1),g=new E(0,1,0),h=0;h<b.length;h++){var k=
 b[h];k.parent&&k.parent.isBone&&(d.push(0,0,0),d.push(0,0,0),e.push(f.r,f.g,f.b),e.push(g.r,g.g,g.b))}c.addAttribute("position",new x(d,3));c.addAttribute("color",new x(e,3));d=new fa({vertexColors:2,depthTest:!1,depthWrite:!1,transparent:!0});S.call(this,c,d);this.root=a;this.bones=b;this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.onBeforeRender()}function kc(a,b,c){this.light=a;this.light.updateMatrixWorld();this.color=c;a=new kb(b,4,2);b=new sa({wireframe:!0,fog:!1});na.call(this,a,b);
 this.matrix=this.light.matrixWorld;this.matrixAutoUpdate=!1;this.update()}function lc(a,b){z.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.color=b;a=new fa({fog:!1});b=new F;b.addAttribute("position",new O(new Float32Array(15),3));this.line=new ra(b,a);this.add(this.line);this.update()}function mc(a,b,c){z.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.color=c;a=new jb(b);
-a.rotateY(.5*Math.PI);this.material=new sa({wireframe:!0,fog:!1});void 0===this.color&&(this.material.vertexColors=2);b=a.getAttribute("position");b=new Float32Array(3*b.count);a.addAttribute("color",new O(b,3));this.add(new na(a,this.material));this.update()}function Zc(a,b,c,d){a=a||10;b=b||10;c=new E(void 0!==c?c:4473924);d=new E(void 0!==d?d:8947848);var e=b/2,f=a/b,g=a/2;a=[];for(var h=[],k=0,l=0,n=-g;k<=b;k++,n+=f){a.push(-g,0,n,g,0,n);a.push(n,0,-g,n,0,g);var q=k===e?c:d;q.toArray(h,l);l+=
-3;q.toArray(h,l);l+=3;q.toArray(h,l);l+=3;q.toArray(h,l);l+=3}b=new F;b.addAttribute("position",new x(a,3));b.addAttribute("color",new x(h,3));c=new fa({vertexColors:2});S.call(this,b,c)}function Md(a,b,c,d,e,f){a=a||10;b=b||16;c=c||8;d=d||64;e=new E(void 0!==e?e:4473924);f=new E(void 0!==f?f:8947848);var g=[],h=[],k;for(k=0;k<=b;k++){var l=k/b*2*Math.PI;var n=Math.sin(l)*a;l=Math.cos(l)*a;g.push(0,0,0);g.push(n,0,l);var q=k&1?e:f;h.push(q.r,q.g,q.b);h.push(q.r,q.g,q.b)}for(k=0;k<=c;k++){q=k&1?e:
-f;var r=a-a/c*k;for(b=0;b<d;b++)l=b/d*2*Math.PI,n=Math.sin(l)*r,l=Math.cos(l)*r,g.push(n,0,l),h.push(q.r,q.g,q.b),l=(b+1)/d*2*Math.PI,n=Math.sin(l)*r,l=Math.cos(l)*r,g.push(n,0,l),h.push(q.r,q.g,q.b)}a=new F;a.addAttribute("position",new x(g,3));a.addAttribute("color",new x(h,3));g=new fa({vertexColors:2});S.call(this,a,g)}function $c(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;a=void 0!==c?c:16776960;d=void 0!==d?d:1;b=0;(c=this.object.geometry)&&c.isGeometry?b=c.faces.length:console.warn("THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.");
+a.rotateY(.5*Math.PI);this.material=new sa({wireframe:!0,fog:!1});void 0===this.color&&(this.material.vertexColors=2);b=a.getAttribute("position");b=new Float32Array(3*b.count);a.addAttribute("color",new O(b,3));this.add(new na(a,this.material));this.update()}function Zc(a,b,c,d){a=a||10;b=b||10;c=new E(void 0!==c?c:4473924);d=new E(void 0!==d?d:8947848);var e=b/2,f=a/b,g=a/2;a=[];for(var h=[],k=0,l=0,p=-g;k<=b;k++,p+=f){a.push(-g,0,p,g,0,p);a.push(p,0,-g,p,0,g);var q=k===e?c:d;q.toArray(h,l);l+=
+3;q.toArray(h,l);l+=3;q.toArray(h,l);l+=3;q.toArray(h,l);l+=3}b=new F;b.addAttribute("position",new x(a,3));b.addAttribute("color",new x(h,3));c=new fa({vertexColors:2});S.call(this,b,c)}function Md(a,b,c,d,e,f){a=a||10;b=b||16;c=c||8;d=d||64;e=new E(void 0!==e?e:4473924);f=new E(void 0!==f?f:8947848);var g=[],h=[],k;for(k=0;k<=b;k++){var l=k/b*2*Math.PI;var p=Math.sin(l)*a;l=Math.cos(l)*a;g.push(0,0,0);g.push(p,0,l);var q=k&1?e:f;h.push(q.r,q.g,q.b);h.push(q.r,q.g,q.b)}for(k=0;k<=c;k++){q=k&1?e:
+f;var m=a-a/c*k;for(b=0;b<d;b++)l=b/d*2*Math.PI,p=Math.sin(l)*m,l=Math.cos(l)*m,g.push(p,0,l),h.push(q.r,q.g,q.b),l=(b+1)/d*2*Math.PI,p=Math.sin(l)*m,l=Math.cos(l)*m,g.push(p,0,l),h.push(q.r,q.g,q.b)}a=new F;a.addAttribute("position",new x(g,3));a.addAttribute("color",new x(h,3));g=new fa({vertexColors:2});S.call(this,a,g)}function $c(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;a=void 0!==c?c:16776960;d=void 0!==d?d:1;b=0;(c=this.object.geometry)&&c.isGeometry?b=c.faces.length:console.warn("THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.");
 c=new F;b=new x(6*b,3);c.addAttribute("position",b);S.call(this,c,new fa({color:a,linewidth:d}));this.matrixAutoUpdate=!1;this.update()}function nc(a,b,c){z.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.color=c;void 0===b&&(b=1);a=new F;a.addAttribute("position",new x([-b,b,0,b,b,0,b,-b,0,-b,-b,0,-b,b,0],3));b=new fa({fog:!1});this.lightPlane=new ra(a,b);this.add(this.lightPlane);a=new F;a.addAttribute("position",new x([0,0,0,0,0,1],
-3));this.targetLine=new ra(a,b);this.add(this.targetLine);this.update()}function ad(a){function b(a,b,d){c(a,d);c(b,d)}function c(a,b){f.push(0,0,0);g.push(b.r,b.g,b.b);void 0===h[a]&&(h[a]=[]);h[a].push(f.length/3-1)}var d=new F,e=new fa({color:16777215,vertexColors:1}),f=[],g=[],h={},k=new E(16755200),l=new E(16711680),n=new E(43775),q=new E(16777215),r=new E(3355443);b("n1","n2",k);b("n2","n4",k);b("n4","n3",k);b("n3","n1",k);b("f1","f2",k);b("f2","f4",k);b("f4","f3",k);b("f3","f1",k);b("n1","f1",
-k);b("n2","f2",k);b("n3","f3",k);b("n4","f4",k);b("p","n1",l);b("p","n2",l);b("p","n3",l);b("p","n4",l);b("u1","u2",n);b("u2","u3",n);b("u3","u1",n);b("c","t",q);b("p","c",r);b("cn1","cn2",r);b("cn3","cn4",r);b("cf1","cf2",r);b("cf3","cf4",r);d.addAttribute("position",new x(f,3));d.addAttribute("color",new x(g,3));S.call(this,d,e);this.camera=a;this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.pointMap=h;this.update()}
+3));this.targetLine=new ra(a,b);this.add(this.targetLine);this.update()}function ad(a){function b(a,b,d){c(a,d);c(b,d)}function c(a,b){f.push(0,0,0);g.push(b.r,b.g,b.b);void 0===h[a]&&(h[a]=[]);h[a].push(f.length/3-1)}var d=new F,e=new fa({color:16777215,vertexColors:1}),f=[],g=[],h={},k=new E(16755200),l=new E(16711680),p=new E(43775),q=new E(16777215),m=new E(3355443);b("n1","n2",k);b("n2","n4",k);b("n4","n3",k);b("n3","n1",k);b("f1","f2",k);b("f2","f4",k);b("f4","f3",k);b("f3","f1",k);b("n1","f1",
+k);b("n2","f2",k);b("n3","f3",k);b("n4","f4",k);b("p","n1",l);b("p","n2",l);b("p","n3",l);b("p","n4",l);b("u1","u2",p);b("u2","u3",p);b("u3","u1",p);b("c","t",q);b("p","c",m);b("cn1","cn2",m);b("cn3","cn4",m);b("cf1","cf2",m);b("cf3","cf4",m);d.addAttribute("position",new x(f,3));d.addAttribute("color",new x(g,3));S.call(this,d,e);this.camera=a;this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.pointMap=h;this.update()}
 function yb(a,b){this.object=a;void 0===b&&(b=16776960);a=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);var c=new Float32Array(24),d=new F;d.setIndex(new O(a,1));d.addAttribute("position",new O(c,3));S.call(this,d,new fa({color:b}));this.matrixAutoUpdate=!1;this.update()}function bd(a,b){this.type="Box3Helper";this.box=a;a=void 0!==b?b:16776960;b=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);var c=new F;c.setIndex(new O(b,1));c.addAttribute("position",new x([1,
 1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3));S.call(this,c,new fa({color:a}));this.geometry.computeBoundingSphere();this.onBeforeRender()}function cd(a,b,c){this.type="PlaneHelper";this.plane=a;this.size=void 0===b?1:b;a=void 0!==c?c:16776960;b=new F;b.addAttribute("position",new x([1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,0,0,1,0,0,0],3));b.computeBoundingSphere();ra.call(this,b,new fa({color:a}));b=new F;b.addAttribute("position",new x([1,1,1,-1,1,1,-1,-1,1,1,1,
 1,-1,-1,1,1,-1,1],3));b.computeBoundingSphere();this.add(new na(b,new sa({color:a,opacity:.2,transparent:!0,depthWrite:!1})));this.onBeforeRender()}function zb(a,b,c,d,e,f){z.call(this);void 0===d&&(d=16776960);void 0===c&&(c=1);void 0===e&&(e=.2*c);void 0===f&&(f=.2*e);void 0===Nd&&(Nd=new F,Nd.addAttribute("position",new x([0,0,0,0,1,0],3)),te=new Ta(0,.5,1,5,1),te.translate(0,-.5,0));this.position.copy(b);this.line=new ra(Nd,new fa({color:d}));this.line.matrixAutoUpdate=!1;this.add(this.line);
 this.cone=new na(te,new sa({color:d}));this.cone.matrixAutoUpdate=!1;this.add(this.cone);this.setDirection(a);this.setLength(c,e,f)}function Od(a){a=a||1;var b=[0,0,0,a,0,0,0,0,0,0,a,0,0,0,0,0,0,a];a=new F;a.addAttribute("position",new x(b,3));a.addAttribute("color",new x([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));b=new fa({vertexColors:2});S.call(this,a,b)}function ue(){var a=0,b=0,c=0,d=0;return{initCatmullRom:function(e,f,g,h,k){e=k*(g-e);h=k*(h-f);a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},initNonuniformCatmullRom:function(e,
-f,g,h,k,l,n){e=((f-e)/k-(g-e)/(k+l)+(g-f)/l)*l;h=((g-f)/l-(h-f)/(l+n)+(h-g)/n)*l;a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},calc:function(e){var f=e*e;return a+b*e+c*f+d*f*e}}}function Ka(a){this.arcLengthDivisions=200;2>a.length&&console.warn("THREE.CatmullRomCurve3: Points array needs at least two entries.");this.points=a||[];this.closed=!1}function dd(a,b,c,d){this.arcLengthDivisions=200;this.v0=a;this.v1=b;this.v2=c;this.v3=d}function ed(a,b,c){this.arcLengthDivisions=200;this.v0=a;this.v1=b;this.v2=
+f,g,h,k,l,p){e=((f-e)/k-(g-e)/(k+l)+(g-f)/l)*l;h=((g-f)/l-(h-f)/(l+p)+(h-g)/p)*l;a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},calc:function(e){var f=e*e;return a+b*e+c*f+d*f*e}}}function Ka(a){this.arcLengthDivisions=200;2>a.length&&console.warn("THREE.CatmullRomCurve3: Points array needs at least two entries.");this.points=a||[];this.closed=!1}function dd(a,b,c,d){this.arcLengthDivisions=200;this.v0=a;this.v1=b;this.v2=c;this.v3=d}function ed(a,b,c){this.arcLengthDivisions=200;this.v0=a;this.v1=b;this.v2=
 c}function fd(a,b){this.arcLengthDivisions=200;this.v1=a;this.v2=b}function Pd(a,b,c,d,e,f){Ua.call(this,a,b,c,c,d,e,f)}function hf(a){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");Ka.call(this,a);this.type="catmullrom";this.closed=!0}function jf(a){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");Ka.call(this,a);this.type="catmullrom"}function ve(a){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.");
 Ka.call(this,a);this.type="catmullrom"}void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52));void 0===Number.isInteger&&(Number.isInteger=function(a){return"number"===typeof a&&isFinite(a)&&Math.floor(a)===a});void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:+a});void 0===Function.prototype.name&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}});void 0===Object.assign&&function(){Object.assign=function(a){if(void 0===
 a||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;c<arguments.length;c++){var d=arguments[c];if(void 0!==d&&null!==d)for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(b[e]=d[e])}return b}}();Object.assign(oa.prototype,{addEventListener:function(a,b){void 0===this._listeners&&(this._listeners={});var c=this._listeners;void 0===c[a]&&(c[a]=[]);-1===c[a].indexOf(b)&&c[a].push(b)},hasEventListener:function(a,b){if(void 0===this._listeners)return!1;
@@ -309,17 +309,17 @@ Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0
 Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===
 b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);this.w=a.getW(b);return this}});Object.assign(Ab.prototype,oa.prototype,{isWebGLRenderTarget:!0,setSize:function(a,b){if(this.width!==
 a||this.height!==b)this.width=a,this.height=b,this.dispose();this.viewport.set(0,0,a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Bb.prototype=Object.create(Ab.prototype);
-Bb.prototype.constructor=Bb;Bb.prototype.isWebGLRenderTargetCube=!0;Object.assign(ka,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],k=c[d+1],l=c[d+2];c=c[d+3];d=e[f+0];var n=e[f+1],q=e[f+2];e=e[f+3];if(c!==e||h!==d||k!==n||l!==q){f=1-g;var r=h*d+k*n+l*q+c*e,m=0<=r?1:-1,p=1-r*r;p>Number.EPSILON&&(p=Math.sqrt(p),r=Math.atan2(p,r*m),f=Math.sin(f*r)/p,g=Math.sin(g*r)/p);m*=g;h=h*f+d*m;k=k*f+n*m;l=l*f+q*m;c=c*f+e*m;f===1-g&&(g=1/Math.sqrt(h*h+k*k+l*
+Bb.prototype.constructor=Bb;Bb.prototype.isWebGLRenderTargetCube=!0;Object.assign(ka,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],k=c[d+1],l=c[d+2];c=c[d+3];d=e[f+0];var p=e[f+1],q=e[f+2];e=e[f+3];if(c!==e||h!==d||k!==p||l!==q){f=1-g;var m=h*d+k*p+l*q+c*e,r=0<=m?1:-1,n=1-m*m;n>Number.EPSILON&&(n=Math.sqrt(n),m=Math.atan2(n,m*r),f=Math.sin(f*m)/n,g=Math.sin(g*m)/n);r*=g;h=h*f+d*r;k=k*f+p*r;l=l*f+q*r;c=c*f+e*r;f===1-g&&(g=1/Math.sqrt(h*h+k*k+l*
 l+c*c),h*=g,k*=g,l*=g,c*=g)}a[b]=h;a[b+1]=k;a[b+2]=l;a[b+3]=c}});Object.defineProperties(ka.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this.onChangeCallback()}},z:{get:function(){return this._z},set:function(a){this._z=a;this.onChangeCallback()}},w:{get:function(){return this._w},set:function(a){this._w=a;this.onChangeCallback()}}});Object.assign(ka.prototype,{set:function(a,b,c,d){this._x=
 a;this._y=b;this._z=c;this._w=d;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(a){this._x=a.x;this._y=a.y;this._z=a.z;this._w=a.w;this.onChangeCallback();return this},setFromEuler:function(a,b){if(!a||!a.isEuler)throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var c=a._x,d=a._y,e=a._z;a=a.order;var f=Math.cos,g=Math.sin,h=f(c/2),k=f(d/2),f=f(e/2),c=g(c/
 2),d=g(d/2),e=g(e/2);"XYZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"YXZ"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"ZXY"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f-c*d*e):"ZYX"===a?(this._x=c*k*f-h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f+c*d*e):"YZX"===a?(this._x=c*k*f+h*d*e,this._y=h*d*f+c*k*e,this._z=h*k*e-c*d*f,this._w=h*k*f-c*d*e):"XZY"===a&&(this._x=
 c*k*f-h*d*e,this._y=h*d*f-c*k*e,this._z=h*k*e+c*d*f,this._w=h*k*f+c*d*e);if(!1!==b)this.onChangeCallback();return this},setFromAxisAngle:function(a,b){b/=2;var c=Math.sin(b);this._x=a.x*c;this._y=a.y*c;this._z=a.z*c;this._w=Math.cos(b);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],k=b[6],b=b[10],l=c+f+b;0<l?(c=.5/Math.sqrt(l+1),this._w=.25/c,this._x=(k-g)*c,this._y=(d-h)*c,this._z=(e-a)*c):c>f&&c>b?(c=2*
-Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a=new p,b;return function(c,d){void 0===a&&(a=new p);b=c.dot(d)+1;1E-6>b?(b=0,Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=
+Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a=new n,b;return function(c,d){void 0===a&&(a=new n);b=c.dot(d)+1;1E-6>b?(b=0,Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=
 a.x;this._y=a.y;this._z=a.z;this._w=b;return this.normalize()}}(),inverse:function(){return this.conjugate().normalize()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x*a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=
 this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z;a=a._w;
 var f=b._x,g=b._y,h=b._z;b=b._w;this._x=c*b+a*f+d*h-e*g;this._y=d*b+a*g+e*f-c*h;this._z=e*b+a*h+c*g-d*f;this._w=a*b-c*f-d*g-e*h;this.onChangeCallback();return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;a=Math.sqrt(1-g*g);if(.001>Math.abs(a))return this._w=
 .5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;var h=Math.atan2(a,g),g=Math.sin((1-b)*h)/a;b=Math.sin(b*h)/a;this._w=f*g+this._w*b;this._x=c*g+this._x*b;this._y=d*g+this._y*b;this._z=e*g+this._z*b;this.onChangeCallback();return this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},
-toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(p.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,
+toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(n.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,
 b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),
 this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;
 return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*
@@ -327,28 +327,28 @@ b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a=new k
 b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,l=a*d+e*c-f*b,b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-l*-f;this.y=k*a+b*-f+l*-e-h*-g;this.z=l*a+b*
 -g+h*-f-k*-e;return this},project:function(){var a=new J;return function(b){a.multiplyMatrices(b.projectionMatrix,a.getInverse(b.matrixWorld));return this.applyMatrix4(a)}}(),unproject:function(){var a=new J;return function(b){a.multiplyMatrices(b.matrixWorld,a.getInverse(b.projectionMatrix));return this.applyMatrix4(a)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},
 divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},
-clampScalar:function(){var a=new p,b=new p;return function(c,d){a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);
+clampScalar:function(){var a=new n,b=new n;return function(c,d){a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);
 this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*
 this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},cross:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),
-this.crossVectors(a,b);b=this.x;var c=this.y,d=this.z;this.x=c*a.z-d*a.y;this.y=d*a.x-b*a.z;this.z=b*a.y-c*a.x;return this},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a=new p;return function(b){a.copy(this).projectOnVector(b);return this.sub(a)}}(),reflect:function(){var a=new p;return function(b){return this.sub(a.copy(b).multiplyScalar(2*
+this.crossVectors(a,b);b=this.x;var c=this.y,d=this.z;this.x=c*a.z-d*a.y;this.y=d*a.x-b*a.z;this.z=b*a.y-c*a.x;return this},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a=new n;return function(b){a.copy(this).projectOnVector(b);return this.sub(a)}}(),reflect:function(){var a=new n;return function(b){return this.sub(a.copy(b).multiplyScalar(2*
 this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(P.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},distanceToManhattan:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)+Math.abs(this.z-a.z)},setFromSpherical:function(a){var b=Math.sin(a.phi)*a.radius;this.x=b*Math.sin(a.theta);this.y=Math.cos(a.phi)*
 a.radius;this.z=b*Math.cos(a.theta);return this},setFromCylindrical:function(a){this.x=a.radius*Math.sin(a.theta);this.y=a.y;this.z=a.radius*Math.cos(a.theta);return this},setFromMatrixPosition:function(a){a=a.elements;this.x=a[12];this.y=a[13];this.z=a[14];return this},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a,1).length();a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){return this.fromArray(a.elements,
 4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);return this}});Object.assign(J.prototype,
-{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,k,l,n,q,m,t,p,w){var r=this.elements;r[0]=a;r[4]=b;r[8]=c;r[12]=d;r[1]=e;r[5]=f;r[9]=g;r[13]=h;r[2]=k;r[6]=l;r[10]=n;r[14]=q;r[3]=m;r[7]=t;r[11]=p;r[15]=w;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return(new J).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];
-b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this},copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this,2);return this},makeBasis:function(a,b,c){this.set(a.x,b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new p;return function(b){var c=this.elements,d=b.elements,
+{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,k,l,p,q,m,r,n,w){var t=this.elements;t[0]=a;t[4]=b;t[8]=c;t[12]=d;t[1]=e;t[5]=f;t[9]=g;t[13]=h;t[2]=k;t[6]=l;t[10]=p;t[14]=q;t[3]=m;t[7]=r;t[11]=n;t[15]=w;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return(new J).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];
+b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this},copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this,2);return this},makeBasis:function(a,b,c){this.set(a.x,b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new n;return function(b){var c=this.elements,d=b.elements,
 e=1/a.setFromMatrixColumn(b,0).length(),f=1/a.setFromMatrixColumn(b,1).length();b=1/a.setFromMatrixColumn(b,2).length();c[0]=d[0]*e;c[1]=d[1]*e;c[2]=d[2]*e;c[4]=d[4]*f;c[5]=d[5]*f;c[6]=d[6]*f;c[8]=d[8]*b;c[9]=d[9]*b;c[10]=d[10]*b;return this}}(),makeRotationFromEuler:function(a){a&&a.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c),c=Math.sin(c),g=Math.cos(d),d=Math.sin(d),
-h=Math.cos(e),e=Math.sin(e);if("XYZ"===a.order){var k=f*h;var l=f*e;var n=c*h;a=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=l+n*d;b[5]=k-a*d;b[9]=-c*g;b[2]=a-k*d;b[6]=n+l*d;b[10]=f*g}else"YXZ"===a.order?(k=g*h,l=g*e,n=d*h,a=d*e,b[0]=k+a*c,b[4]=n*c-l,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=l*c-n,b[6]=a+k*c,b[10]=f*g):"ZXY"===a.order?(k=g*h,l=g*e,n=d*h,a=d*e,b[0]=k-a*c,b[4]=-f*e,b[8]=n+l*c,b[1]=l+n*c,b[5]=f*h,b[9]=a-k*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(k=f*h,l=f*e,n=c*h,a=c*e,b[0]=g*h,b[4]=n*d-l,
-b[8]=k*d+a,b[1]=g*e,b[5]=a*d+k,b[9]=l*d-n,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(k=f*g,l=f*d,n=c*g,a=c*d,b[0]=g*h,b[4]=a-k*e,b[8]=n*e+l,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=l*e+n,b[10]=k-a*e):"XZY"===a.order&&(k=f*g,l=f*d,n=c*g,a=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=k*e+a,b[5]=f*h,b[9]=l*e-n,b[2]=n*e-l,b[6]=c*h,b[10]=a*e+k);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(a){var b=this.elements,c=a._x,d=a._y,e=a._z,f=a._w,g=c+c,h=d+d,k=
-e+e;a=c*g;var l=c*h,c=c*k,n=d*h,d=d*k,e=e*k,g=f*g,h=f*h,f=f*k;b[0]=1-(n+e);b[4]=l-f;b[8]=c+h;b[1]=l+f;b[5]=1-(a+e);b[9]=d-g;b[2]=c-h;b[6]=d+g;b[10]=1-(a+n);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a=new p,b=new p,c=new p;return function(d,e,f){var g=this.elements;c.subVectors(d,e);0===c.lengthSq()&&(c.z=1);c.normalize();a.crossVectors(f,c);0===a.lengthSq()&&(1===Math.abs(f.z)?c.x+=1E-4:c.z+=1E-4,c.normalize(),a.crossVectors(f,c));a.normalize();b.crossVectors(c,
+h=Math.cos(e),e=Math.sin(e);if("XYZ"===a.order){var k=f*h;var l=f*e;var p=c*h;a=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=l+p*d;b[5]=k-a*d;b[9]=-c*g;b[2]=a-k*d;b[6]=p+l*d;b[10]=f*g}else"YXZ"===a.order?(k=g*h,l=g*e,p=d*h,a=d*e,b[0]=k+a*c,b[4]=p*c-l,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=l*c-p,b[6]=a+k*c,b[10]=f*g):"ZXY"===a.order?(k=g*h,l=g*e,p=d*h,a=d*e,b[0]=k-a*c,b[4]=-f*e,b[8]=p+l*c,b[1]=l+p*c,b[5]=f*h,b[9]=a-k*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(k=f*h,l=f*e,p=c*h,a=c*e,b[0]=g*h,b[4]=p*d-l,
+b[8]=k*d+a,b[1]=g*e,b[5]=a*d+k,b[9]=l*d-p,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(k=f*g,l=f*d,p=c*g,a=c*d,b[0]=g*h,b[4]=a-k*e,b[8]=p*e+l,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=l*e+p,b[10]=k-a*e):"XZY"===a.order&&(k=f*g,l=f*d,p=c*g,a=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=k*e+a,b[5]=f*h,b[9]=l*e-p,b[2]=p*e-l,b[6]=c*h,b[10]=a*e+k);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(a){var b=this.elements,c=a._x,d=a._y,e=a._z,f=a._w,g=c+c,h=d+d,k=
+e+e;a=c*g;var l=c*h,c=c*k,p=d*h,d=d*k,e=e*k,g=f*g,h=f*h,f=f*k;b[0]=1-(p+e);b[4]=l-f;b[8]=c+h;b[1]=l+f;b[5]=1-(a+e);b[9]=d-g;b[2]=c-h;b[6]=d+g;b[10]=1-(a+p);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},lookAt:function(){var a=new n,b=new n,c=new n;return function(d,e,f){var g=this.elements;c.subVectors(d,e);0===c.lengthSq()&&(c.z=1);c.normalize();a.crossVectors(f,c);0===a.lengthSq()&&(1===Math.abs(f.z)?c.x+=1E-4:c.z+=1E-4,c.normalize(),a.crossVectors(f,c));a.normalize();b.crossVectors(c,
 a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[4],f=c[8],g=c[12],h=c[1],k=c[5],
-l=c[9],n=c[13],q=c[2],r=c[6],m=c[10],p=c[14],w=c[3],v=c[7],A=c[11],c=c[15],y=d[0],H=d[4],B=d[8],L=d[12],x=d[1],z=d[5],D=d[9],E=d[13],F=d[2],J=d[6],ga=d[10],I=d[14],K=d[3],M=d[7],U=d[11],d=d[15];b[0]=a*y+e*x+f*F+g*K;b[4]=a*H+e*z+f*J+g*M;b[8]=a*B+e*D+f*ga+g*U;b[12]=a*L+e*E+f*I+g*d;b[1]=h*y+k*x+l*F+n*K;b[5]=h*H+k*z+l*J+n*M;b[9]=h*B+k*D+l*ga+n*U;b[13]=h*L+k*E+l*I+n*d;b[2]=q*y+r*x+m*F+p*K;b[6]=q*H+r*z+m*J+p*M;b[10]=q*B+r*D+m*ga+p*U;b[14]=q*L+r*E+m*I+p*d;b[3]=w*y+v*x+A*F+c*K;b[7]=w*H+v*z+A*J+c*M;b[11]=
-w*B+v*D+A*ga+c*U;b[15]=w*L+v*E+A*I+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(){var a=new p;return function(b){for(var c=0,d=b.count;c<d;c++)a.x=b.getX(c),a.y=b.getY(c),a.z=b.getZ(c),a.applyMatrix4(this),b.setXYZ(c,a.x,a.y,a.z);return b}}(),determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],
-e=a[12],f=a[1],g=a[5],h=a[9],k=a[13],l=a[2],n=a[6],q=a[10],r=a[14];return a[3]*(+e*h*n-d*k*n-e*g*q+c*k*q+d*g*r-c*h*r)+a[7]*(+b*h*r-b*k*q+e*f*q-d*f*r+d*k*l-e*h*l)+a[11]*(+b*k*n-b*g*r-e*f*n+c*f*r+e*g*l-c*k*l)+a[15]*(-d*g*l-b*h*n+b*g*q+d*f*n-c*f*q+c*h*l)},transpose:function(){var a=this.elements;var b=a[1];a[1]=a[4];a[4]=b;b=a[2];a[2]=a[8];a[8]=b;b=a[6];a[6]=a[9];a[9]=b;b=a[3];a[3]=a[12];a[12]=b;b=a[7];a[7]=a[13];a[13]=b;b=a[11];a[11]=a[14];a[14]=b;return this},setPosition:function(a){var b=this.elements;
-b[12]=a.x;b[13]=a.y;b[14]=a.z;return this},getInverse:function(a,b){var c=this.elements,d=a.elements;a=d[0];var e=d[1],f=d[2],g=d[3],h=d[4],k=d[5],l=d[6],n=d[7],q=d[8],r=d[9],m=d[10],p=d[11],w=d[12],v=d[13],A=d[14],d=d[15],y=r*A*n-v*m*n+v*l*p-k*A*p-r*l*d+k*m*d,H=w*m*n-q*A*n-w*l*p+h*A*p+q*l*d-h*m*d,B=q*v*n-w*r*n+w*k*p-h*v*p-q*k*d+h*r*d,L=w*r*l-q*v*l-w*k*m+h*v*m+q*k*A-h*r*A,x=a*y+e*H+f*B+g*L;if(0===x){if(!0===b)throw Error("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");console.warn("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");
-return this.identity()}b=1/x;c[0]=y*b;c[1]=(v*m*g-r*A*g-v*f*p+e*A*p+r*f*d-e*m*d)*b;c[2]=(k*A*g-v*l*g+v*f*n-e*A*n-k*f*d+e*l*d)*b;c[3]=(r*l*g-k*m*g-r*f*n+e*m*n+k*f*p-e*l*p)*b;c[4]=H*b;c[5]=(q*A*g-w*m*g+w*f*p-a*A*p-q*f*d+a*m*d)*b;c[6]=(w*l*g-h*A*g-w*f*n+a*A*n+h*f*d-a*l*d)*b;c[7]=(h*m*g-q*l*g+q*f*n-a*m*n-h*f*p+a*l*p)*b;c[8]=B*b;c[9]=(w*r*g-q*v*g-w*e*p+a*v*p+q*e*d-a*r*d)*b;c[10]=(h*v*g-w*k*g+w*e*n-a*v*n-h*e*d+a*k*d)*b;c[11]=(q*k*g-h*r*g-q*e*n+a*r*n+h*e*p-a*k*p)*b;c[12]=L*b;c[13]=(q*v*f-w*r*f+w*e*m-a*v*
-m-q*e*A+a*r*A)*b;c[14]=(w*k*f-h*v*f-w*e*l+a*v*l+h*e*A-a*k*A)*b;c[15]=(h*r*f-q*k*f+q*e*l-a*r*l-h*e*m+a*k*m)*b;return this},scale:function(a){var b=this.elements,c=a.x,d=a.y;a=a.z;b[0]*=c;b[4]*=d;b[8]*=a;b[1]*=c;b[5]*=d;b[9]*=a;b[2]*=c;b[6]*=d;b[10]*=a;b[3]*=c;b[7]*=d;b[11]*=a;return this},getMaxScaleOnAxis:function(){var a=this.elements;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1]+a[2]*a[2],a[4]*a[4]+a[5]*a[5]+a[6]*a[6],a[8]*a[8]+a[9]*a[9]+a[10]*a[10]))},makeTranslation:function(a,b,c){this.set(1,
+l=c[9],p=c[13],q=c[2],m=c[6],r=c[10],n=c[14],w=c[3],u=c[7],A=c[11],c=c[15],y=d[0],H=d[4],B=d[8],L=d[12],x=d[1],z=d[5],D=d[9],E=d[13],F=d[2],J=d[6],ga=d[10],I=d[14],K=d[3],M=d[7],U=d[11],d=d[15];b[0]=a*y+e*x+f*F+g*K;b[4]=a*H+e*z+f*J+g*M;b[8]=a*B+e*D+f*ga+g*U;b[12]=a*L+e*E+f*I+g*d;b[1]=h*y+k*x+l*F+p*K;b[5]=h*H+k*z+l*J+p*M;b[9]=h*B+k*D+l*ga+p*U;b[13]=h*L+k*E+l*I+p*d;b[2]=q*y+m*x+r*F+n*K;b[6]=q*H+m*z+r*J+n*M;b[10]=q*B+m*D+r*ga+n*U;b[14]=q*L+m*E+r*I+n*d;b[3]=w*y+u*x+A*F+c*K;b[7]=w*H+u*z+A*J+c*M;b[11]=
+w*B+u*D+A*ga+c*U;b[15]=w*L+u*E+A*I+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(){var a=new n;return function(b){for(var c=0,d=b.count;c<d;c++)a.x=b.getX(c),a.y=b.getY(c),a.z=b.getZ(c),a.applyMatrix4(this),b.setXYZ(c,a.x,a.y,a.z);return b}}(),determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],
+e=a[12],f=a[1],g=a[5],h=a[9],k=a[13],l=a[2],p=a[6],q=a[10],m=a[14];return a[3]*(+e*h*p-d*k*p-e*g*q+c*k*q+d*g*m-c*h*m)+a[7]*(+b*h*m-b*k*q+e*f*q-d*f*m+d*k*l-e*h*l)+a[11]*(+b*k*p-b*g*m-e*f*p+c*f*m+e*g*l-c*k*l)+a[15]*(-d*g*l-b*h*p+b*g*q+d*f*p-c*f*q+c*h*l)},transpose:function(){var a=this.elements;var b=a[1];a[1]=a[4];a[4]=b;b=a[2];a[2]=a[8];a[8]=b;b=a[6];a[6]=a[9];a[9]=b;b=a[3];a[3]=a[12];a[12]=b;b=a[7];a[7]=a[13];a[13]=b;b=a[11];a[11]=a[14];a[14]=b;return this},setPosition:function(a){var b=this.elements;
+b[12]=a.x;b[13]=a.y;b[14]=a.z;return this},getInverse:function(a,b){var c=this.elements,d=a.elements;a=d[0];var e=d[1],f=d[2],g=d[3],h=d[4],k=d[5],l=d[6],p=d[7],q=d[8],m=d[9],r=d[10],n=d[11],w=d[12],u=d[13],A=d[14],d=d[15],y=m*A*p-u*r*p+u*l*n-k*A*n-m*l*d+k*r*d,H=w*r*p-q*A*p-w*l*n+h*A*n+q*l*d-h*r*d,B=q*u*p-w*m*p+w*k*n-h*u*n-q*k*d+h*m*d,L=w*m*l-q*u*l-w*k*r+h*u*r+q*k*A-h*m*A,x=a*y+e*H+f*B+g*L;if(0===x){if(!0===b)throw Error("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");console.warn("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");
+return this.identity()}b=1/x;c[0]=y*b;c[1]=(u*r*g-m*A*g-u*f*n+e*A*n+m*f*d-e*r*d)*b;c[2]=(k*A*g-u*l*g+u*f*p-e*A*p-k*f*d+e*l*d)*b;c[3]=(m*l*g-k*r*g-m*f*p+e*r*p+k*f*n-e*l*n)*b;c[4]=H*b;c[5]=(q*A*g-w*r*g+w*f*n-a*A*n-q*f*d+a*r*d)*b;c[6]=(w*l*g-h*A*g-w*f*p+a*A*p+h*f*d-a*l*d)*b;c[7]=(h*r*g-q*l*g+q*f*p-a*r*p-h*f*n+a*l*n)*b;c[8]=B*b;c[9]=(w*m*g-q*u*g-w*e*n+a*u*n+q*e*d-a*m*d)*b;c[10]=(h*u*g-w*k*g+w*e*p-a*u*p-h*e*d+a*k*d)*b;c[11]=(q*k*g-h*m*g-q*e*p+a*m*p+h*e*n-a*k*n)*b;c[12]=L*b;c[13]=(q*u*f-w*m*f+w*e*r-a*u*
+r-q*e*A+a*m*A)*b;c[14]=(w*k*f-h*u*f-w*e*l+a*u*l+h*e*A-a*k*A)*b;c[15]=(h*m*f-q*k*f+q*e*l-a*m*l-h*e*r+a*k*r)*b;return this},scale:function(a){var b=this.elements,c=a.x,d=a.y;a=a.z;b[0]*=c;b[4]*=d;b[8]*=a;b[1]*=c;b[5]*=d;b[9]*=a;b[2]*=c;b[6]*=d;b[10]*=a;b[3]*=c;b[7]*=d;b[11]*=a;return this},getMaxScaleOnAxis:function(){var a=this.elements;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1]+a[2]*a[2],a[4]*a[4]+a[5]*a[5]+a[6]*a[6],a[8]*a[8]+a[9]*a[9]+a[10]*a[10]))},makeTranslation:function(a,b,c){this.set(1,
 0,0,a,0,1,0,b,0,0,1,c,0,0,0,1);return this},makeRotationX:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1);return this},makeRotationY:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1);return this},makeRotationZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1);return this},makeRotationAxis:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d=1-c,e=a.x,f=a.y;a=a.z;var g=d*e,h=d*f;this.set(g*
-e+c,g*f-b*a,g*a+b*f,0,g*f+b*a,h*f+c,h*a-b*e,0,g*a-b*f,h*a+b*e,d*a*a+c,0,0,0,0,1);return this},makeScale:function(a,b,c){this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1);return this},makeShear:function(a,b,c){this.set(1,b,c,0,a,1,c,0,a,b,1,0,0,0,0,1);return this},compose:function(a,b,c){this.makeRotationFromQuaternion(b);this.scale(c);this.setPosition(a);return this},decompose:function(){var a=new p,b=new J;return function(c,d,e){var f=this.elements,g=a.set(f[0],f[1],f[2]).length(),h=a.set(f[4],f[5],f[6]).length(),
+e+c,g*f-b*a,g*a+b*f,0,g*f+b*a,h*f+c,h*a-b*e,0,g*a-b*f,h*a+b*e,d*a*a+c,0,0,0,0,1);return this},makeScale:function(a,b,c){this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1);return this},makeShear:function(a,b,c){this.set(1,b,c,0,a,1,c,0,a,b,1,0,0,0,0,1);return this},compose:function(a,b,c){this.makeRotationFromQuaternion(b);this.scale(c);this.setPosition(a);return this},decompose:function(){var a=new n,b=new J;return function(c,d,e){var f=this.elements,g=a.set(f[0],f[1],f[2]).length(),h=a.set(f[4],f[5],f[6]).length(),
 k=a.set(f[8],f[9],f[10]).length();0>this.determinant()&&(g=-g);c.x=f[12];c.y=f[13];c.z=f[14];b.copy(this);c=1/g;var f=1/h,l=1/k;b.elements[0]*=c;b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=l;b.elements[9]*=l;b.elements[10]*=l;d.setFromRotationMatrix(b);e.x=g;e.y=h;e.z=k;return this}}(),makePerspective:function(a,b,c,d,e,f){void 0===f&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");
 var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(c-d);g[9]=(c+d)/(c-d);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),k=1/(c-d),l=1/(f-e);g[0]=2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*k;g[9]=0;g[13]=-((c+d)*k);g[2]=0;g[6]=0;g[10]=-2*l;g[14]=-((f+e)*l);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements;
 a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;16>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}});bb.prototype=Object.create(V.prototype);
@@ -433,7 +433,7 @@ shadow_frag:"uniform float opacity;\n#include <common>\n#include <packing>\n#inc
 Q.aomap,Q.lightmap,Q.fog]),vertexShader:R.meshbasic_vert,fragmentShader:R.meshbasic_frag},lambert:{uniforms:Ca.merge([Q.common,Q.aomap,Q.lightmap,Q.emissivemap,Q.fog,Q.lights,{emissive:{value:new E(0)}}]),vertexShader:R.meshlambert_vert,fragmentShader:R.meshlambert_frag},phong:{uniforms:Ca.merge([Q.common,Q.aomap,Q.lightmap,Q.emissivemap,Q.bumpmap,Q.normalmap,Q.displacementmap,Q.gradientmap,Q.fog,Q.lights,{emissive:{value:new E(0)},specular:{value:new E(1118481)},shininess:{value:30}}]),vertexShader:R.meshphong_vert,
 fragmentShader:R.meshphong_frag},standard:{uniforms:Ca.merge([Q.common,Q.aomap,Q.lightmap,Q.emissivemap,Q.bumpmap,Q.normalmap,Q.displacementmap,Q.roughnessmap,Q.metalnessmap,Q.fog,Q.lights,{emissive:{value:new E(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:R.meshphysical_vert,fragmentShader:R.meshphysical_frag},points:{uniforms:Ca.merge([Q.points,Q.fog]),vertexShader:R.points_vert,fragmentShader:R.points_frag},dashed:{uniforms:Ca.merge([Q.common,Q.fog,{scale:{value:1},
 dashSize:{value:1},totalSize:{value:2}}]),vertexShader:R.linedashed_vert,fragmentShader:R.linedashed_frag},depth:{uniforms:Ca.merge([Q.common,Q.displacementmap]),vertexShader:R.depth_vert,fragmentShader:R.depth_frag},normal:{uniforms:Ca.merge([Q.common,Q.bumpmap,Q.normalmap,Q.displacementmap,{opacity:{value:1}}]),vertexShader:R.normal_vert,fragmentShader:R.normal_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:R.cube_vert,fragmentShader:R.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},
-vertexShader:R.equirect_vert,fragmentShader:R.equirect_frag},distanceRGBA:{uniforms:Ca.merge([Q.common,Q.displacementmap,{referencePosition:{value:new p},nearDistance:{value:1},farDistance:{value:1E3}}]),vertexShader:R.distanceRGBA_vert,fragmentShader:R.distanceRGBA_frag}};ib.physical={uniforms:Ca.merge([ib.standard.uniforms,{clearCoat:{value:0},clearCoatRoughness:{value:0}}]),vertexShader:R.meshphysical_vert,fragmentShader:R.meshphysical_frag};Object.assign(hd.prototype,{set:function(a,b){this.min.copy(a);
+vertexShader:R.equirect_vert,fragmentShader:R.equirect_frag},distanceRGBA:{uniforms:Ca.merge([Q.common,Q.displacementmap,{referencePosition:{value:new n},nearDistance:{value:1},farDistance:{value:1E3}}]),vertexShader:R.distanceRGBA_vert,fragmentShader:R.distanceRGBA_frag}};ib.physical={uniforms:Ca.merge([ib.standard.uniforms,{clearCoat:{value:0},clearCoatRoughness:{value:0}}]),vertexShader:R.meshphysical_vert,fragmentShader:R.meshphysical_frag};Object.assign(hd.prototype,{set:function(a,b){this.min.copy(a);
 this.max.copy(b);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;b<c;b++)this.expandByPoint(a[b]);return this},setFromCenterAndSize:function(){var a=new D;return function(b,c){c=a.copy(c).multiplyScalar(.5);this.min.copy(b).sub(c);this.max.copy(b).add(c);return this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.min.copy(a.min);this.max.copy(a.max);return this},makeEmpty:function(){this.min.x=this.min.y=Infinity;this.max.x=this.max.y=
 -Infinity;return this},isEmpty:function(){return this.max.x<this.min.x||this.max.y<this.min.y},getCenter:function(a){a=a||new D;return this.isEmpty()?a.set(0,0):a.addVectors(this.min,this.max).multiplyScalar(.5)},getSize:function(a){a=a||new D;return this.isEmpty()?a.set(0,0):a.subVectors(this.max,this.min)},expandByPoint:function(a){this.min.min(a);this.max.max(a);return this},expandByVector:function(a){this.min.sub(a);this.max.add(a);return this},expandByScalar:function(a){this.min.addScalar(-a);
 this.max.addScalar(a);return this},containsPoint:function(a){return a.x<this.min.x||a.x>this.max.x||a.y<this.min.y||a.y>this.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y},getParameter:function(a,b){return(b||new D).set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y?!1:!0},
@@ -451,51 +451,51 @@ this.visible=a.visible;this.clipShadows=a.clipShadows;this.clipIntersection=a.cl
 a.vertexShader;this.uniforms=Ca.clone(a.uniforms);this.defines=a.defines;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.lights=a.lights;this.clipping=a.clipping;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;this.extensions=a.extensions;return this};qa.prototype.toJSON=function(a){a=N.prototype.toJSON.call(this,a);a.uniforms=this.uniforms;a.vertexShader=this.vertexShader;a.fragmentShader=this.fragmentShader;return a};Wa.prototype=
 Object.create(N.prototype);Wa.prototype.constructor=Wa;Wa.prototype.isMeshDepthMaterial=!0;Wa.prototype.copy=function(a){N.prototype.copy.call(this,a);this.depthPacking=a.depthPacking;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.map=a.map;this.alphaMap=a.alphaMap;this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;return this};Xa.prototype=
 Object.create(N.prototype);Xa.prototype.constructor=Xa;Xa.prototype.isMeshDistanceMaterial=!0;Xa.prototype.copy=function(a){N.prototype.copy.call(this,a);this.referencePosition.copy(a.referencePosition);this.nearDistance=a.nearDistance;this.farDistance=a.farDistance;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.map=a.map;this.alphaMap=a.alphaMap;this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;return this};
-Object.assign(Qa.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.length;h<k;h+=3){var l=a[h],n=a[h+1],q=a[h+2];l<b&&(b=l);n<c&&(c=n);q<d&&(d=q);l>e&&(e=l);n>f&&(f=n);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromBufferAttribute:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.count;h<
-k;h++){var l=a.getX(h),n=a.getY(h),q=a.getZ(h);l<b&&(b=l);n<c&&(c=n);q<d&&(d=q);l>e&&(e=l);n>f&&(f=n);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;b<c;b++)this.expandByPoint(a[b]);return this},setFromCenterAndSize:function(){var a=new p;return function(b,c){c=a.copy(c).multiplyScalar(.5);this.min.copy(b).sub(c);this.max.copy(b).add(c);return this}}(),setFromObject:function(a){this.makeEmpty();return this.expandByObject(a)},
-clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.min.copy(a.min);this.max.copy(a.max);return this},makeEmpty:function(){this.min.x=this.min.y=this.min.z=Infinity;this.max.x=this.max.y=this.max.z=-Infinity;return this},isEmpty:function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z},getCenter:function(a){a=a||new p;return this.isEmpty()?a.set(0,0,0):a.addVectors(this.min,this.max).multiplyScalar(.5)},getSize:function(a){a=a||new p;return this.isEmpty()?
-a.set(0,0,0):a.subVectors(this.max,this.min)},expandByPoint:function(a){this.min.min(a);this.max.max(a);return this},expandByVector:function(a){this.min.sub(a);this.max.add(a);return this},expandByScalar:function(a){this.min.addScalar(-a);this.max.addScalar(a);return this},expandByObject:function(){var a=new p;return function(b){var c=this;b.updateMatrixWorld(!0);b.traverse(function(b){var d;var f=b.geometry;if(void 0!==f)if(f.isGeometry){var g=f.vertices;f=0;for(d=g.length;f<d;f++)a.copy(g[f]),a.applyMatrix4(b.matrixWorld),
+Object.assign(Qa.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.length;h<k;h+=3){var l=a[h],p=a[h+1],q=a[h+2];l<b&&(b=l);p<c&&(c=p);q<d&&(d=q);l>e&&(e=l);p>f&&(f=p);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromBufferAttribute:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.count;h<
+k;h++){var l=a.getX(h),p=a.getY(h),q=a.getZ(h);l<b&&(b=l);p<c&&(c=p);q<d&&(d=q);l>e&&(e=l);p>f&&(f=p);q>g&&(g=q)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;b<c;b++)this.expandByPoint(a[b]);return this},setFromCenterAndSize:function(){var a=new n;return function(b,c){c=a.copy(c).multiplyScalar(.5);this.min.copy(b).sub(c);this.max.copy(b).add(c);return this}}(),setFromObject:function(a){this.makeEmpty();return this.expandByObject(a)},
+clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.min.copy(a.min);this.max.copy(a.max);return this},makeEmpty:function(){this.min.x=this.min.y=this.min.z=Infinity;this.max.x=this.max.y=this.max.z=-Infinity;return this},isEmpty:function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z},getCenter:function(a){a=a||new n;return this.isEmpty()?a.set(0,0,0):a.addVectors(this.min,this.max).multiplyScalar(.5)},getSize:function(a){a=a||new n;return this.isEmpty()?
+a.set(0,0,0):a.subVectors(this.max,this.min)},expandByPoint:function(a){this.min.min(a);this.max.max(a);return this},expandByVector:function(a){this.min.sub(a);this.max.add(a);return this},expandByScalar:function(a){this.min.addScalar(-a);this.max.addScalar(a);return this},expandByObject:function(){var a=new n;return function(b){var c=this;b.updateMatrixWorld(!0);b.traverse(function(b){var d;var f=b.geometry;if(void 0!==f)if(f.isGeometry){var g=f.vertices;f=0;for(d=g.length;f<d;f++)a.copy(g[f]),a.applyMatrix4(b.matrixWorld),
 c.expandByPoint(a)}else if(f.isBufferGeometry&&(g=f.attributes.position,void 0!==g))for(f=0,d=g.count;f<d;f++)a.fromBufferAttribute(g,f).applyMatrix4(b.matrixWorld),c.expandByPoint(a)});return this}}(),containsPoint:function(a){return a.x<this.min.x||a.x>this.max.x||a.y<this.min.y||a.y>this.max.y||a.z<this.min.z||a.z>this.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z},getParameter:function(a,
-b){return(b||new p).set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(a){return a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y||a.max.z<this.min.z||a.min.z>this.max.z?!1:!0},intersectsSphere:function(){var a=new p;return function(b){this.clampPoint(b.center,a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){if(0<a.normal.x){var b=
-a.normal.x*this.min.x;var c=a.normal.x*this.max.x}else b=a.normal.x*this.max.x,c=a.normal.x*this.min.x;0<a.normal.y?(b+=a.normal.y*this.min.y,c+=a.normal.y*this.max.y):(b+=a.normal.y*this.max.y,c+=a.normal.y*this.min.y);0<a.normal.z?(b+=a.normal.z*this.min.z,c+=a.normal.z*this.max.z):(b+=a.normal.z*this.max.z,c+=a.normal.z*this.min.z);return b<=a.constant&&c>=a.constant},clampPoint:function(a,b){return(b||new p).copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new p;return function(b){return a.copy(b).clamp(this.min,
-this.max).sub(b).length()}}(),getBoundingSphere:function(){var a=new p;return function(b){b=b||new Ba;this.getCenter(b.center);b.radius=.5*this.getSize(a).length();return b}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(){var a=[new p,new p,new p,new p,new p,new p,new p,new p];return function(b){if(this.isEmpty())return this;a[0].set(this.min.x,
+b){return(b||new n).set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(a){return a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y||a.max.z<this.min.z||a.min.z>this.max.z?!1:!0},intersectsSphere:function(){var a=new n;return function(b){this.clampPoint(b.center,a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){if(0<a.normal.x){var b=
+a.normal.x*this.min.x;var c=a.normal.x*this.max.x}else b=a.normal.x*this.max.x,c=a.normal.x*this.min.x;0<a.normal.y?(b+=a.normal.y*this.min.y,c+=a.normal.y*this.max.y):(b+=a.normal.y*this.max.y,c+=a.normal.y*this.min.y);0<a.normal.z?(b+=a.normal.z*this.min.z,c+=a.normal.z*this.max.z):(b+=a.normal.z*this.max.z,c+=a.normal.z*this.min.z);return b<=a.constant&&c>=a.constant},clampPoint:function(a,b){return(b||new n).copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new n;return function(b){return a.copy(b).clamp(this.min,
+this.max).sub(b).length()}}(),getBoundingSphere:function(){var a=new n;return function(b){b=b||new Ba;this.getCenter(b.center);b.radius=.5*this.getSize(a).length();return b}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(){var a=[new n,new n,new n,new n,new n,new n,new n,new n];return function(b){if(this.isEmpty())return this;a[0].set(this.min.x,
 this.min.y,this.min.z).applyMatrix4(b);a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(b);a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(b);a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(b);a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(b);a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(b);a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(b);this.setFromPoints(a);return this}}(),translate:function(a){this.min.add(a);
 this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Ba.prototype,{set:function(a,b){this.center.copy(a);this.radius=b;return this},setFromPoints:function(){var a=new Qa;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).getCenter(d);for(var e=c=0,f=b.length;e<f;e++)c=Math.max(c,d.distanceToSquared(b[e]));this.radius=Math.sqrt(c);return this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.center.copy(a.center);
 this.radius=a.radius;return this},empty:function(){return 0>=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)},intersectsPlane:function(a){return Math.abs(this.center.dot(a.normal)-a.constant)<=this.radius},
-clampPoint:function(a,b){var c=this.center.distanceToSquared(a);b=b||new p;b.copy(a);c>this.radius*this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){a=a||new Qa;a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&&
+clampPoint:function(a,b){var c=this.center.distanceToSquared(a);b=b||new n;b.copy(a);c>this.radius*this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){a=a||new Qa;a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&&
 a.radius===this.radius}});Object.assign(ma.prototype,{isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,k){var l=this.elements;l[0]=a;l[1]=d;l[2]=g;l[3]=b;l[4]=e;l[5]=h;l[6]=c;l[7]=f;l[8]=k;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];return this},setFromMatrix4:function(a){a=
-a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(){var a=new p;return function(b){for(var c=0,d=b.count;c<d;c++)a.x=b.getX(c),a.y=b.getY(c),a.z=b.getZ(c),a.applyMatrix3(this),b.setXYZ(c,a.x,a.y,a.z);return b}}(),multiply:function(a){return this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[3],f=c[6],g=c[1],
-h=c[4],k=c[7],l=c[2],n=c[5],c=c[8],q=d[0],m=d[3],p=d[6],u=d[1],w=d[4],v=d[7],A=d[2],y=d[5],d=d[8];b[0]=a*q+e*u+f*A;b[3]=a*m+e*w+f*y;b[6]=a*p+e*v+f*d;b[1]=g*q+h*u+k*A;b[4]=g*m+h*w+k*y;b[7]=g*p+h*v+k*d;b[2]=l*q+n*u+c*A;b[5]=l*m+n*w+c*y;b[8]=l*p+n*v+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[3]*=a;b[6]*=a;b[1]*=a;b[4]*=a;b[7]*=a;b[2]*=a;b[5]*=a;b[8]*=a;return this},determinant:function(){var a=this.elements,b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],a=a[8];
-return b*f*a-b*g*k-c*e*a+c*g*h+d*e*k-d*f*h},getInverse:function(a,b){a&&a.isMatrix4&&console.error("THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.");var c=a.elements;a=this.elements;var d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],k=c[5],l=c[6],n=c[7],c=c[8],q=c*h-k*n,m=k*l-c*g,p=n*g-h*l,u=d*q+e*m+f*p;if(0===u){if(!0===b)throw Error("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0");console.warn("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0");return this.identity()}b=
-1/u;a[0]=q*b;a[1]=(f*n-c*e)*b;a[2]=(k*e-f*h)*b;a[3]=m*b;a[4]=(c*d-f*l)*b;a[5]=(f*g-k*d)*b;a[6]=p*b;a[7]=(e*l-n*d)*b;a[8]=(h*d-e*g)*b;return this},transpose:function(){var a=this.elements;var b=a[1];a[1]=a[3];a[3]=b;b=a[2];a[2]=a[6];a[6]=b;b=a[5];a[5]=a[7];a[7]=b;return this},getNormalMatrix:function(a){return this.setFromMatrix4(a).getInverse(this).transpose()},transposeIntoArray:function(a){var b=this.elements;a[0]=b[0];a[1]=b[3];a[2]=b[6];a[3]=b[1];a[4]=b[4];a[5]=b[7];a[6]=b[2];a[7]=b[5];a[8]=b[8];
+a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(){var a=new n;return function(b){for(var c=0,d=b.count;c<d;c++)a.x=b.getX(c),a.y=b.getY(c),a.z=b.getZ(c),a.applyMatrix3(this),b.setXYZ(c,a.x,a.y,a.z);return b}}(),multiply:function(a){return this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[3],f=c[6],g=c[1],
+h=c[4],k=c[7],l=c[2],p=c[5],c=c[8],q=d[0],m=d[3],r=d[6],n=d[1],w=d[4],u=d[7],A=d[2],y=d[5],d=d[8];b[0]=a*q+e*n+f*A;b[3]=a*m+e*w+f*y;b[6]=a*r+e*u+f*d;b[1]=g*q+h*n+k*A;b[4]=g*m+h*w+k*y;b[7]=g*r+h*u+k*d;b[2]=l*q+p*n+c*A;b[5]=l*m+p*w+c*y;b[8]=l*r+p*u+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[3]*=a;b[6]*=a;b[1]*=a;b[4]*=a;b[7]*=a;b[2]*=a;b[5]*=a;b[8]*=a;return this},determinant:function(){var a=this.elements,b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],a=a[8];
+return b*f*a-b*g*k-c*e*a+c*g*h+d*e*k-d*f*h},getInverse:function(a,b){a&&a.isMatrix4&&console.error("THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.");var c=a.elements;a=this.elements;var d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],k=c[5],l=c[6],p=c[7],c=c[8],q=c*h-k*p,m=k*l-c*g,r=p*g-h*l,n=d*q+e*m+f*r;if(0===n){if(!0===b)throw Error("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0");console.warn("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0");return this.identity()}b=
+1/n;a[0]=q*b;a[1]=(f*p-c*e)*b;a[2]=(k*e-f*h)*b;a[3]=m*b;a[4]=(c*d-f*l)*b;a[5]=(f*g-k*d)*b;a[6]=r*b;a[7]=(e*l-p*d)*b;a[8]=(h*d-e*g)*b;return this},transpose:function(){var a=this.elements;var b=a[1];a[1]=a[3];a[3]=b;b=a[2];a[2]=a[6];a[6]=b;b=a[5];a[5]=a[7];a[7]=b;return this},getNormalMatrix:function(a){return this.setFromMatrix4(a).getInverse(this).transpose()},transposeIntoArray:function(a){var b=this.elements;a[0]=b[0];a[1]=b[3];a[2]=b[6];a[3]=b[1];a[4]=b[4];a[5]=b[7];a[6]=b[2];a[7]=b[5];a[8]=b[8];
 return this},equals:function(a){var b=this.elements;a=a.elements;for(var c=0;9>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;9>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];return a}});Object.assign(za.prototype,{set:function(a,b){this.normal.copy(a);this.constant=b;return this},
-setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new p,b=new p;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;
-return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){return(b||new p).copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(){var a=new p;return function(b,
-c){c=c||new p;var d=b.delta(a),e=this.normal.dot(d);if(0===e){if(0===this.distanceToPoint(b.start))return c.copy(b.start)}else if(e=-(b.start.dot(this.normal)+this.constant)/e,!(0>e||1<e))return c.copy(d).multiplyScalar(e).add(b.start)}}(),intersectsLine:function(a){var b=this.distanceToPoint(a.start);a=this.distanceToPoint(a.end);return 0>b&&0<a||0>a&&0<b},intersectsBox:function(a){return a.intersectsPlane(this)},intersectsSphere:function(a){return a.intersectsPlane(this)},coplanarPoint:function(a){return(a||
-new p).copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var a=new p,b=new ma;return function(c,d){d=d||b.getNormalMatrix(c);c=this.coplanarPoint(a).applyMatrix4(c);d=this.normal.applyMatrix3(d).normalize();this.constant=-c.dot(d);return this}}(),translate:function(a){this.constant-=a.dot(this.normal);return this},equals:function(a){return a.normal.equals(this.normal)&&a.constant===this.constant}});Object.assign(jd.prototype,{set:function(a,b,c,d,e,f){var g=this.planes;g[0].copy(a);
-g[1].copy(b);g[2].copy(c);g[3].copy(d);g[4].copy(e);g[5].copy(f);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],l=c[7],n=c[8],q=c[9],m=c[10],p=c[11],u=c[12],w=c[13],v=c[14],c=c[15];b[0].setComponents(f-a,l-g,p-n,c-u).normalize();b[1].setComponents(f+a,l+g,p+n,c+u).normalize();b[2].setComponents(f+
-d,l+h,p+q,c+w).normalize();b[3].setComponents(f-d,l-h,p-q,c-w).normalize();b[4].setComponents(f-e,l-k,p-m,c-v).normalize();b[5].setComponents(f+e,l+k,p+m,c+v).normalize();return this},intersectsObject:function(){var a=new Ba;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Ba;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;
-a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d=0;6>d;d++)if(b[d].distanceToPoint(c)<a)return!1;return!0},intersectsBox:function(){var a=new p,b=new p;return function(c){for(var d=this.planes,e=0;6>e;e++){var f=d[e];a.x=0<f.normal.x?c.min.x:c.max.x;b.x=0<f.normal.x?c.max.x:c.min.x;a.y=0<f.normal.y?c.min.y:c.max.y;b.y=0<f.normal.y?c.max.y:c.min.y;a.z=0<f.normal.z?c.min.z:c.max.z;b.z=0<f.normal.z?c.max.z:
+setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new n,b=new n;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;
+return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){return(b||new n).copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(){var a=new n;return function(b,
+c){c=c||new n;var d=b.delta(a),e=this.normal.dot(d);if(0===e){if(0===this.distanceToPoint(b.start))return c.copy(b.start)}else if(e=-(b.start.dot(this.normal)+this.constant)/e,!(0>e||1<e))return c.copy(d).multiplyScalar(e).add(b.start)}}(),intersectsLine:function(a){var b=this.distanceToPoint(a.start);a=this.distanceToPoint(a.end);return 0>b&&0<a||0>a&&0<b},intersectsBox:function(a){return a.intersectsPlane(this)},intersectsSphere:function(a){return a.intersectsPlane(this)},coplanarPoint:function(a){return(a||
+new n).copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var a=new n,b=new ma;return function(c,d){d=d||b.getNormalMatrix(c);c=this.coplanarPoint(a).applyMatrix4(c);d=this.normal.applyMatrix3(d).normalize();this.constant=-c.dot(d);return this}}(),translate:function(a){this.constant-=a.dot(this.normal);return this},equals:function(a){return a.normal.equals(this.normal)&&a.constant===this.constant}});Object.assign(jd.prototype,{set:function(a,b,c,d,e,f){var g=this.planes;g[0].copy(a);
+g[1].copy(b);g[2].copy(c);g[3].copy(d);g[4].copy(e);g[5].copy(f);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],l=c[7],p=c[8],q=c[9],m=c[10],r=c[11],n=c[12],w=c[13],u=c[14],c=c[15];b[0].setComponents(f-a,l-g,r-p,c-n).normalize();b[1].setComponents(f+a,l+g,r+p,c+n).normalize();b[2].setComponents(f+
+d,l+h,r+q,c+w).normalize();b[3].setComponents(f-d,l-h,r-q,c-w).normalize();b[4].setComponents(f-e,l-k,r-m,c-u).normalize();b[5].setComponents(f+e,l+k,r+m,c+u).normalize();return this},intersectsObject:function(){var a=new Ba;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Ba;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;
+a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d=0;6>d;d++)if(b[d].distanceToPoint(c)<a)return!1;return!0},intersectsBox:function(){var a=new n,b=new n;return function(c){for(var d=this.planes,e=0;6>e;e++){var f=d[e];a.x=0<f.normal.x?c.min.x:c.max.x;b.x=0<f.normal.x?c.max.x:c.min.x;a.y=0<f.normal.y?c.min.y:c.max.y;b.y=0<f.normal.y?c.max.y:c.min.y;a.z=0<f.normal.z?c.min.z:c.max.z;b.z=0<f.normal.z?c.max.z:
 c.min.z;var g=f.distanceToPoint(a),f=f.distanceToPoint(b);if(0>g&&0>f)return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}});Ya.RotationOrders="XYZ YZX ZXY XZY YXZ ZYX".split(" ");Ya.DefaultOrder="XYZ";Object.defineProperties(Ya.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this.onChangeCallback()}},z:{get:function(){return this._z},
 set:function(a){this._z=a;this.onChangeCallback()}},order:{get:function(){return this._order},set:function(a){this._order=a;this.onChangeCallback()}}});Object.assign(Ya.prototype,{isEuler:!0,set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._order=d||this._order;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(a){this._x=a._x;this._y=a._y;this._z=a._z;this._order=a._order;this.onChangeCallback();return this},
-setFromRotationMatrix:function(a,b,c){var d=P.clamp,e=a.elements;a=e[0];var f=e[4],g=e[8],h=e[1],k=e[5],l=e[9],n=e[2],q=e[6],e=e[10];b=b||this._order;"XYZ"===b?(this._y=Math.asin(d(g,-1,1)),.99999>Math.abs(g)?(this._x=Math.atan2(-l,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(q,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(l,-1,1)),.99999>Math.abs(l)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,k)):(this._y=Math.atan2(-n,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(q,-1,1)),.99999>Math.abs(q)?
-(this._y=Math.atan2(-n,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(n,-1,1)),.99999>Math.abs(n)?(this._x=Math.atan2(q,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-l,k),this._y=Math.atan2(-n,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(q,k),this._y=Math.atan2(g,a)):(this._x=
+setFromRotationMatrix:function(a,b,c){var d=P.clamp,e=a.elements;a=e[0];var f=e[4],g=e[8],h=e[1],k=e[5],l=e[9],p=e[2],q=e[6],e=e[10];b=b||this._order;"XYZ"===b?(this._y=Math.asin(d(g,-1,1)),.99999>Math.abs(g)?(this._x=Math.atan2(-l,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(q,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(l,-1,1)),.99999>Math.abs(l)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,k)):(this._y=Math.atan2(-p,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(q,-1,1)),.99999>Math.abs(q)?
+(this._y=Math.atan2(-p,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(p,-1,1)),.99999>Math.abs(p)?(this._x=Math.atan2(q,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-l,k),this._y=Math.atan2(-p,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(q,k),this._y=Math.atan2(g,a)):(this._x=
 Math.atan2(-l,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order=b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a=new J;return function(b,c,d){a.makeRotationFromQuaternion(b);return this.setFromRotationMatrix(a,c,d)}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new ka;return function(b){a.setFromEuler(this);return this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===
-this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new p(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});
-Object.assign(Td.prototype,{set:function(a){this.mask=1<<a|0},enable:function(a){this.mask=this.mask|1<<a|0},toggle:function(a){this.mask^=1<<a|0},disable:function(a){this.mask&=~(1<<a|0)},test:function(a){return 0!==(this.mask&a.mask)}});var Qf=0;z.DefaultUp=new p(0,1,0);z.DefaultMatrixAutoUpdate=!0;Object.assign(z.prototype,oa.prototype,{isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix:function(a){this.matrix.multiplyMatrices(a,this.matrix);this.matrix.decompose(this.position,
+this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new n(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});
+Object.assign(Td.prototype,{set:function(a){this.mask=1<<a|0},enable:function(a){this.mask=this.mask|1<<a|0},toggle:function(a){this.mask^=1<<a|0},disable:function(a){this.mask&=~(1<<a|0)},test:function(a){return 0!==(this.mask&a.mask)}});var Qf=0;z.DefaultUp=new n(0,1,0);z.DefaultMatrixAutoUpdate=!0;Object.assign(z.prototype,oa.prototype,{isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix:function(a){this.matrix.multiplyMatrices(a,this.matrix);this.matrix.decompose(this.position,
 this.quaternion,this.scale)},applyQuaternion:function(a){this.quaternion.premultiply(a);return this},setRotationFromAxisAngle:function(a,b){this.quaternion.setFromAxisAngle(a,b)},setRotationFromEuler:function(a){this.quaternion.setFromEuler(a,!0)},setRotationFromMatrix:function(a){this.quaternion.setFromRotationMatrix(a)},setRotationFromQuaternion:function(a){this.quaternion.copy(a)},rotateOnAxis:function(){var a=new ka;return function(b,c){a.setFromAxisAngle(b,c);this.quaternion.multiply(a);return this}}(),
-rotateX:function(){var a=new p(1,0,0);return function(b){return this.rotateOnAxis(a,b)}}(),rotateY:function(){var a=new p(0,1,0);return function(b){return this.rotateOnAxis(a,b)}}(),rotateZ:function(){var a=new p(0,0,1);return function(b){return this.rotateOnAxis(a,b)}}(),translateOnAxis:function(){var a=new p;return function(b,c){a.copy(b).applyQuaternion(this.quaternion);this.position.add(a.multiplyScalar(c));return this}}(),translateX:function(){var a=new p(1,0,0);return function(b){return this.translateOnAxis(a,
-b)}}(),translateY:function(){var a=new p(0,1,0);return function(b){return this.translateOnAxis(a,b)}}(),translateZ:function(){var a=new p(0,0,1);return function(b){return this.translateOnAxis(a,b)}}(),localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var a=new J;return function(b){return b.applyMatrix4(a.getInverse(this.matrixWorld))}}(),lookAt:function(){var a=new J;return function(b){this.isCamera?a.lookAt(this.position,b,this.up):a.lookAt(b,this.position,
+rotateX:function(){var a=new n(1,0,0);return function(b){return this.rotateOnAxis(a,b)}}(),rotateY:function(){var a=new n(0,1,0);return function(b){return this.rotateOnAxis(a,b)}}(),rotateZ:function(){var a=new n(0,0,1);return function(b){return this.rotateOnAxis(a,b)}}(),translateOnAxis:function(){var a=new n;return function(b,c){a.copy(b).applyQuaternion(this.quaternion);this.position.add(a.multiplyScalar(c));return this}}(),translateX:function(){var a=new n(1,0,0);return function(b){return this.translateOnAxis(a,
+b)}}(),translateY:function(){var a=new n(0,1,0);return function(b){return this.translateOnAxis(a,b)}}(),translateZ:function(){var a=new n(0,0,1);return function(b){return this.translateOnAxis(a,b)}}(),localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var a=new J;return function(b){return b.applyMatrix4(a.getInverse(this.matrixWorld))}}(),lookAt:function(){var a=new J;return function(b){this.isCamera?a.lookAt(this.position,b,this.up):a.lookAt(b,this.position,
 this.up);this.quaternion.setFromRotationMatrix(a)}}(),add:function(a){if(1<arguments.length){for(var b=0;b<arguments.length;b++)this.add(arguments[b]);return this}if(a===this)return console.error("THREE.Object3D.add: object can't be added as a child of itself.",a),this;a&&a.isObject3D?(null!==a.parent&&a.parent.remove(a),a.parent=this,a.dispatchEvent({type:"added"}),this.children.push(a)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",a);return this},remove:function(a){if(1<
 arguments.length){for(var b=0;b<arguments.length;b++)this.remove(arguments[b]);return this}b=this.children.indexOf(a);-1!==b&&(a.parent=null,a.dispatchEvent({type:"removed"}),this.children.splice(b,1));return this},getObjectById:function(a){return this.getObjectByProperty("id",a)},getObjectByName:function(a){return this.getObjectByProperty("name",a)},getObjectByProperty:function(a,b){if(this[a]===b)return this;for(var c=0,d=this.children.length;c<d;c++){var e=this.children[c].getObjectByProperty(a,
-b);if(void 0!==e)return e}},getWorldPosition:function(a){a=a||new p;this.updateMatrixWorld(!0);return a.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var a=new p,b=new p;return function(c){c=c||new ka;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a,c,b);return c}}(),getWorldRotation:function(){var a=new ka;return function(b){b=b||new Ya;this.getWorldQuaternion(a);return b.setFromQuaternion(a,this.rotation.order,!1)}}(),getWorldScale:function(){var a=new p,b=new ka;
-return function(c){c=c||new p;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a,b,c);return c}}(),getWorldDirection:function(){var a=new ka;return function(b){b=b||new p;this.getWorldQuaternion(a);return b.set(0,0,1).applyQuaternion(a)}}(),raycast:function(){},traverse:function(a){a(this);for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].traverse(a)},traverseVisible:function(a){if(!1!==this.visible){a(this);for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].traverseVisible(a)}},traverseAncestors:function(a){var b=
+b);if(void 0!==e)return e}},getWorldPosition:function(a){a=a||new n;this.updateMatrixWorld(!0);return a.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var a=new n,b=new n;return function(c){c=c||new ka;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a,c,b);return c}}(),getWorldRotation:function(){var a=new ka;return function(b){b=b||new Ya;this.getWorldQuaternion(a);return b.setFromQuaternion(a,this.rotation.order,!1)}}(),getWorldScale:function(){var a=new n,b=new ka;
+return function(c){c=c||new n;this.updateMatrixWorld(!0);this.matrixWorld.decompose(a,b,c);return c}}(),getWorldDirection:function(){var a=new ka;return function(b){b=b||new n;this.getWorldQuaternion(a);return b.set(0,0,1).applyQuaternion(a)}}(),raycast:function(){},traverse:function(a){a(this);for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].traverse(a)},traverseVisible:function(a){if(!1!==this.visible){a(this);for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].traverseVisible(a)}},traverseAncestors:function(a){var b=
 this.parent;null!==b&&(a(b),b.traverseAncestors(a))},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale);this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate&&this.updateMatrix();if(this.matrixWorldNeedsUpdate||a)null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].updateMatrixWorld(a)},
 toJSON:function(a){function b(b,c){void 0===b[c.uuid]&&(b[c.uuid]=c.toJSON(a));return c.uuid}function c(a){var b=[],c;for(c in a){var d=a[c];delete d.metadata;b.push(d)}return b}var d=void 0===a||""===a,e={};d&&(a={geometries:{},materials:{},textures:{},images:{}},e.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});var f={};f.uuid=this.uuid;f.type=this.type;""!==this.name&&(f.name=this.name);"{}"!==JSON.stringify(this.userData)&&(f.userData=this.userData);!0===this.castShadow&&(f.castShadow=
 !0);!0===this.receiveShadow&&(f.receiveShadow=!0);!1===this.visible&&(f.visible=!1);f.matrix=this.matrix.toArray();void 0!==this.geometry&&(f.geometry=b(a.geometries,this.geometry));if(void 0!==this.material)if(Array.isArray(this.material)){for(var g=[],h=0,k=this.material.length;h<k;h++)g.push(b(a.materials,this.material[h]));f.material=g}else f.material=b(a.materials,this.material);if(0<this.children.length)for(f.children=[],h=0;h<this.children.length;h++)f.children.push(this.children[h].toJSON(a).object);
 d&&(d=c(a.geometries),g=c(a.materials),h=c(a.textures),k=c(a.images),0<d.length&&(e.geometries=d),0<g.length&&(e.materials=g),0<h.length&&(e.textures=h),0<k.length&&(e.images=k));e.object=f;return e},clone:function(a){return(new this.constructor).copy(this,a)},copy:function(a,b){void 0===b&&(b=!0);this.name=a.name;this.up.copy(a.up);this.position.copy(a.position);this.quaternion.copy(a.quaternion);this.scale.copy(a.scale);this.matrix.copy(a.matrix);this.matrixWorld.copy(a.matrixWorld);this.matrixAutoUpdate=
 a.matrixAutoUpdate;this.matrixWorldNeedsUpdate=a.matrixWorldNeedsUpdate;this.layers.mask=a.layers.mask;this.visible=a.visible;this.castShadow=a.castShadow;this.receiveShadow=a.receiveShadow;this.frustumCulled=a.frustumCulled;this.renderOrder=a.renderOrder;this.userData=JSON.parse(JSON.stringify(a.userData));if(!0===b)for(b=0;b<a.children.length;b++)this.add(a.children[b].clone());return this}});Na.prototype=Object.assign(Object.create(z.prototype),{constructor:Na,isCamera:!0,copy:function(a,b){z.prototype.copy.call(this,
-a,b);this.matrixWorldInverse.copy(a.matrixWorldInverse);this.projectionMatrix.copy(a.projectionMatrix);return this},getWorldDirection:function(){var a=new ka;return function(b){b=b||new p;this.getWorldQuaternion(a);return b.set(0,0,-1).applyQuaternion(a)}}(),updateMatrixWorld:function(a){z.prototype.updateMatrixWorld.call(this,a);this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return(new this.constructor).copy(this)}});Db.prototype=Object.assign(Object.create(Na.prototype),
+a,b);this.matrixWorldInverse.copy(a.matrixWorldInverse);this.projectionMatrix.copy(a.projectionMatrix);return this},getWorldDirection:function(){var a=new ka;return function(b){b=b||new n;this.getWorldQuaternion(a);return b.set(0,0,-1).applyQuaternion(a)}}(),updateMatrixWorld:function(a){z.prototype.updateMatrixWorld.call(this,a);this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return(new this.constructor).copy(this)}});Db.prototype=Object.assign(Object.create(Na.prototype),
 {constructor:Db,isOrthographicCamera:!0,copy:function(a,b){Na.prototype.copy.call(this,a,b);this.left=a.left;this.right=a.right;this.top=a.top;this.bottom=a.bottom;this.near=a.near;this.far=a.far;this.zoom=a.zoom;this.view=null===a.view?null:Object.assign({},a.view);return this},setViewOffset:function(a,b,c,d,e,f){this.view={fullWidth:a,fullHeight:b,offsetX:c,offsetY:d,width:e,height:f};this.updateProjectionMatrix()},clearViewOffset:function(){this.view=null;this.updateProjectionMatrix()},updateProjectionMatrix:function(){var a=
 (this.right-this.left)/(2*this.zoom),b=(this.top-this.bottom)/(2*this.zoom),c=(this.right+this.left)/2,d=(this.top+this.bottom)/2,e=c-a,c=c+a,a=d+b,b=d-b;if(null!==this.view)var c=this.zoom/(this.view.width/this.view.fullWidth),b=this.zoom/(this.view.height/this.view.fullHeight),f=(this.right-this.left)/this.view.width,d=(this.top-this.bottom)/this.view.height,e=e+this.view.offsetX/c*f,c=e+this.view.width/c*f,a=a-this.view.offsetY/b*d,b=a-this.view.height/b*d;this.projectionMatrix.makeOrthographic(e,
 c,a,b,this.near,this.far)},toJSON:function(a){a=z.prototype.toJSON.call(this,a);a.object.zoom=this.zoom;a.object.left=this.left;a.object.right=this.right;a.object.top=this.top;a.object.bottom=this.bottom;a.object.near=this.near;a.object.far=this.far;null!==this.view&&(a.object.view=Object.assign({},this.view));return a}});Y.prototype=Object.assign(Object.create(Na.prototype),{constructor:Y,isPerspectiveCamera:!0,copy:function(a,b){Na.prototype.copy.call(this,a,b);this.fov=a.fov;this.zoom=a.zoom;this.near=
@@ -505,23 +505,23 @@ this.view;if(null!==f)var g=f.fullWidth,h=f.fullHeight,e=e+f.offsetX*d/g,b=b-f.o
 this.filmGauge;a.object.filmOffset=this.filmOffset;return a}});Object.assign(Ra.prototype,{clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a=a.a;this.b=a.b;this.c=a.c;this.normal.copy(a.normal);this.color.copy(a.color);this.materialIndex=a.materialIndex;for(var b=0,c=a.vertexNormals.length;b<c;b++)this.vertexNormals[b]=a.vertexNormals[b].clone();b=0;for(c=a.vertexColors.length;b<c;b++)this.vertexColors[b]=a.vertexColors[b].clone();return this}});var Ud=0;Object.assign(I.prototype,
 oa.prototype,{isGeometry:!0,applyMatrix:function(a){for(var b=(new ma).getNormalMatrix(a),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a);c=0;for(d=this.faces.length;c<d;c++){a=this.faces[c];a.normal.applyMatrix3(b).normalize();for(var e=0,f=a.vertexNormals.length;e<f;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}null!==this.boundingBox&&this.computeBoundingBox();null!==this.boundingSphere&&this.computeBoundingSphere();this.normalsNeedUpdate=this.verticesNeedUpdate=!0;return this},
 rotateX:function(){var a=new J;return function(b){a.makeRotationX(b);this.applyMatrix(a);return this}}(),rotateY:function(){var a=new J;return function(b){a.makeRotationY(b);this.applyMatrix(a);return this}}(),rotateZ:function(){var a=new J;return function(b){a.makeRotationZ(b);this.applyMatrix(a);return this}}(),translate:function(){var a=new J;return function(b,c,d){a.makeTranslation(b,c,d);this.applyMatrix(a);return this}}(),scale:function(){var a=new J;return function(b,c,d){a.makeScale(b,c,d);
-this.applyMatrix(a);return this}}(),lookAt:function(){var a=new z;return function(b){a.lookAt(b);a.updateMatrix();this.applyMatrix(a.matrix)}}(),fromBufferGeometry:function(a){function b(a,b,d,e){var f=void 0!==g?[n[a].clone(),n[b].clone(),n[d].clone()]:[],r=void 0!==h?[c.colors[a].clone(),c.colors[b].clone(),c.colors[d].clone()]:[];e=new Ra(a,b,d,f,r,e);c.faces.push(e);void 0!==k&&c.faceVertexUvs[0].push([q[a].clone(),q[b].clone(),q[d].clone()]);void 0!==l&&c.faceVertexUvs[1].push([m[a].clone(),
-m[b].clone(),m[d].clone()])}var c=this,d=null!==a.index?a.index.array:void 0,e=a.attributes,f=e.position.array,g=void 0!==e.normal?e.normal.array:void 0,h=void 0!==e.color?e.color.array:void 0,k=void 0!==e.uv?e.uv.array:void 0,l=void 0!==e.uv2?e.uv2.array:void 0;void 0!==l&&(this.faceVertexUvs[1]=[]);for(var n=[],q=[],m=[],t=e=0;e<f.length;e+=3,t+=2)c.vertices.push(new p(f[e],f[e+1],f[e+2])),void 0!==g&&n.push(new p(g[e],g[e+1],g[e+2])),void 0!==h&&c.colors.push(new E(h[e],h[e+1],h[e+2])),void 0!==
-k&&q.push(new D(k[t],k[t+1])),void 0!==l&&m.push(new D(l[t],l[t+1]));var u=a.groups;if(0<u.length)for(e=0;e<u.length;e++)for(var f=u[e],w=f.start,v=f.count,t=w,w=w+v;t<w;t+=3)void 0!==d?b(d[t],d[t+1],d[t+2],f.materialIndex):b(t,t+1,t+2,f.materialIndex);else if(void 0!==d)for(e=0;e<d.length;e+=3)b(d[e],d[e+1],d[e+2]);else for(e=0;e<f.length/3;e+=3)b(e,e+1,e+2);this.computeFaceNormals();null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());
-return this},center:function(){this.computeBoundingBox();var a=this.boundingBox.getCenter().negate();this.translate(a.x,a.y,a.z);return a},normalize:function(){this.computeBoundingSphere();var a=this.boundingSphere.center,b=this.boundingSphere.radius,b=0===b?1:1/b,c=new J;c.set(b,0,0,-b*a.x,0,b,0,-b*a.y,0,0,b,-b*a.z,0,0,0,1);this.applyMatrix(c);return this},computeFaceNormals:function(){for(var a=new p,b=new p,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],f=this.vertices[e.a],g=this.vertices[e.b];
-a.subVectors(this.vertices[e.c],g);b.subVectors(f,g);a.cross(b);a.normalize();e.normal.copy(a)}},computeVertexNormals:function(a){void 0===a&&(a=!0);var b;var c=Array(this.vertices.length);var d=0;for(b=this.vertices.length;d<b;d++)c[d]=new p;if(a){var e=new p,f=new p;a=0;for(d=this.faces.length;a<d;a++){b=this.faces[a];var g=this.vertices[b.a];var h=this.vertices[b.b];var k=this.vertices[b.c];e.subVectors(k,h);f.subVectors(g,h);e.cross(f);c[b.a].add(e);c[b.b].add(e);c[b.c].add(e)}}else for(this.computeFaceNormals(),
+this.applyMatrix(a);return this}}(),lookAt:function(){var a=new z;return function(b){a.lookAt(b);a.updateMatrix();this.applyMatrix(a.matrix)}}(),fromBufferGeometry:function(a){function b(a,b,d,e){var f=void 0!==g?[p[a].clone(),p[b].clone(),p[d].clone()]:[],t=void 0!==h?[c.colors[a].clone(),c.colors[b].clone(),c.colors[d].clone()]:[];e=new Ra(a,b,d,f,t,e);c.faces.push(e);void 0!==k&&c.faceVertexUvs[0].push([q[a].clone(),q[b].clone(),q[d].clone()]);void 0!==l&&c.faceVertexUvs[1].push([m[a].clone(),
+m[b].clone(),m[d].clone()])}var c=this,d=null!==a.index?a.index.array:void 0,e=a.attributes,f=e.position.array,g=void 0!==e.normal?e.normal.array:void 0,h=void 0!==e.color?e.color.array:void 0,k=void 0!==e.uv?e.uv.array:void 0,l=void 0!==e.uv2?e.uv2.array:void 0;void 0!==l&&(this.faceVertexUvs[1]=[]);for(var p=[],q=[],m=[],r=e=0;e<f.length;e+=3,r+=2)c.vertices.push(new n(f[e],f[e+1],f[e+2])),void 0!==g&&p.push(new n(g[e],g[e+1],g[e+2])),void 0!==h&&c.colors.push(new E(h[e],h[e+1],h[e+2])),void 0!==
+k&&q.push(new D(k[r],k[r+1])),void 0!==l&&m.push(new D(l[r],l[r+1]));var v=a.groups;if(0<v.length)for(e=0;e<v.length;e++)for(var f=v[e],w=f.start,u=f.count,r=w,w=w+u;r<w;r+=3)void 0!==d?b(d[r],d[r+1],d[r+2],f.materialIndex):b(r,r+1,r+2,f.materialIndex);else if(void 0!==d)for(e=0;e<d.length;e+=3)b(d[e],d[e+1],d[e+2]);else for(e=0;e<f.length/3;e+=3)b(e,e+1,e+2);this.computeFaceNormals();null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());
+return this},center:function(){this.computeBoundingBox();var a=this.boundingBox.getCenter().negate();this.translate(a.x,a.y,a.z);return a},normalize:function(){this.computeBoundingSphere();var a=this.boundingSphere.center,b=this.boundingSphere.radius,b=0===b?1:1/b,c=new J;c.set(b,0,0,-b*a.x,0,b,0,-b*a.y,0,0,b,-b*a.z,0,0,0,1);this.applyMatrix(c);return this},computeFaceNormals:function(){for(var a=new n,b=new n,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],f=this.vertices[e.a],g=this.vertices[e.b];
+a.subVectors(this.vertices[e.c],g);b.subVectors(f,g);a.cross(b);a.normalize();e.normal.copy(a)}},computeVertexNormals:function(a){void 0===a&&(a=!0);var b;var c=Array(this.vertices.length);var d=0;for(b=this.vertices.length;d<b;d++)c[d]=new n;if(a){var e=new n,f=new n;a=0;for(d=this.faces.length;a<d;a++){b=this.faces[a];var g=this.vertices[b.a];var h=this.vertices[b.b];var k=this.vertices[b.c];e.subVectors(k,h);f.subVectors(g,h);e.cross(f);c[b.a].add(e);c[b.b].add(e);c[b.c].add(e)}}else for(this.computeFaceNormals(),
 a=0,d=this.faces.length;a<d;a++)b=this.faces[a],c[b.a].add(b.normal),c[b.b].add(b.normal),c[b.c].add(b.normal);d=0;for(b=this.vertices.length;d<b;d++)c[d].normalize();a=0;for(d=this.faces.length;a<d;a++)b=this.faces[a],g=b.vertexNormals,3===g.length?(g[0].copy(c[b.a]),g[1].copy(c[b.b]),g[2].copy(c[b.c])):(g[0]=c[b.a].clone(),g[1]=c[b.b].clone(),g[2]=c[b.c].clone());0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var a;this.computeFaceNormals();var b=0;for(a=this.faces.length;b<
 a;b++){var c=this.faces[b];var d=c.vertexNormals;3===d.length?(d[0].copy(c.normal),d[1].copy(c.normal),d[2].copy(c.normal)):(d[0]=c.normal.clone(),d[1]=c.normal.clone(),d[2]=c.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var a,b;var c=0;for(b=this.faces.length;c<b;c++){var d=this.faces[c];d.__originalFaceNormal?d.__originalFaceNormal.copy(d.normal):d.__originalFaceNormal=d.normal.clone();d.__originalVertexNormals||(d.__originalVertexNormals=[]);
 var e=0;for(a=d.vertexNormals.length;e<a;e++)d.__originalVertexNormals[e]?d.__originalVertexNormals[e].copy(d.vertexNormals[e]):d.__originalVertexNormals[e]=d.vertexNormals[e].clone()}var f=new I;f.faces=this.faces;e=0;for(a=this.morphTargets.length;e<a;e++){if(!this.morphNormals[e]){this.morphNormals[e]={};this.morphNormals[e].faceNormals=[];this.morphNormals[e].vertexNormals=[];d=this.morphNormals[e].faceNormals;var g=this.morphNormals[e].vertexNormals;c=0;for(b=this.faces.length;c<b;c++){var h=
-new p;var k={a:new p,b:new p,c:new p};d.push(h);g.push(k)}}g=this.morphNormals[e];f.vertices=this.morphTargets[e].vertices;f.computeFaceNormals();f.computeVertexNormals();c=0;for(b=this.faces.length;c<b;c++)d=this.faces[c],h=g.faceNormals[c],k=g.vertexNormals[c],h.copy(d.normal),k.a.copy(d.vertexNormals[0]),k.b.copy(d.vertexNormals[1]),k.c.copy(d.vertexNormals[2])}c=0;for(b=this.faces.length;c<b;c++)d=this.faces[c],d.normal=d.__originalFaceNormal,d.vertexNormals=d.__originalVertexNormals},computeLineDistances:function(){for(var a=
+new n;var k={a:new n,b:new n,c:new n};d.push(h);g.push(k)}}g=this.morphNormals[e];f.vertices=this.morphTargets[e].vertices;f.computeFaceNormals();f.computeVertexNormals();c=0;for(b=this.faces.length;c<b;c++)d=this.faces[c],h=g.faceNormals[c],k=g.vertexNormals[c],h.copy(d.normal),k.a.copy(d.vertexNormals[0]),k.b.copy(d.vertexNormals[1]),k.c.copy(d.vertexNormals[2])}c=0;for(b=this.faces.length;c<b;c++)d=this.faces[c],d.normal=d.__originalFaceNormal,d.vertexNormals=d.__originalVertexNormals},computeLineDistances:function(){for(var a=
 0,b=this.vertices,c=0,d=b.length;c<d;c++)0<c&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Qa);this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new Ba);this.boundingSphere.setFromPoints(this.vertices)},merge:function(a,b,c){if(a&&a.isGeometry){var d,e=this.vertices.length,f=this.vertices,g=a.vertices,h=this.faces,k=a.faces,l=this.faceVertexUvs[0],
-n=a.faceVertexUvs[0],q=this.colors,m=a.colors;void 0===c&&(c=0);void 0!==b&&(d=(new ma).getNormalMatrix(b));a=0;for(var p=g.length;a<p;a++){var u=g[a].clone();void 0!==b&&u.applyMatrix4(b);f.push(u)}a=0;for(p=m.length;a<p;a++)q.push(m[a].clone());a=0;for(p=k.length;a<p;a++){var g=k[a],w=g.vertexNormals,m=g.vertexColors,q=new Ra(g.a+e,g.b+e,g.c+e);q.normal.copy(g.normal);void 0!==d&&q.normal.applyMatrix3(d).normalize();b=0;for(f=w.length;b<f;b++)u=w[b].clone(),void 0!==d&&u.applyMatrix3(d).normalize(),
-q.vertexNormals.push(u);q.color.copy(g.color);b=0;for(f=m.length;b<f;b++)u=m[b],q.vertexColors.push(u.clone());q.materialIndex=g.materialIndex+c;h.push(q)}a=0;for(p=n.length;a<p;a++)if(c=n[a],d=[],void 0!==c){b=0;for(f=c.length;b<f;b++)d.push(c[b].clone());l.push(d)}}else console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",a)},mergeMesh:function(a){a&&a.isMesh?(a.matrixAutoUpdate&&a.updateMatrix(),this.merge(a.geometry,a.matrix)):console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",
+p=a.faceVertexUvs[0],q=this.colors,m=a.colors;void 0===c&&(c=0);void 0!==b&&(d=(new ma).getNormalMatrix(b));a=0;for(var r=g.length;a<r;a++){var n=g[a].clone();void 0!==b&&n.applyMatrix4(b);f.push(n)}a=0;for(r=m.length;a<r;a++)q.push(m[a].clone());a=0;for(r=k.length;a<r;a++){var g=k[a],w=g.vertexNormals,m=g.vertexColors,q=new Ra(g.a+e,g.b+e,g.c+e);q.normal.copy(g.normal);void 0!==d&&q.normal.applyMatrix3(d).normalize();b=0;for(f=w.length;b<f;b++)n=w[b].clone(),void 0!==d&&n.applyMatrix3(d).normalize(),
+q.vertexNormals.push(n);q.color.copy(g.color);b=0;for(f=m.length;b<f;b++)n=m[b],q.vertexColors.push(n.clone());q.materialIndex=g.materialIndex+c;h.push(q)}a=0;for(r=p.length;a<r;a++)if(c=p[a],d=[],void 0!==c){b=0;for(f=c.length;b<f;b++)d.push(c[b].clone());l.push(d)}}else console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",a)},mergeMesh:function(a){a&&a.isMesh?(a.matrixAutoUpdate&&a.updateMatrix(),this.merge(a.geometry,a.matrix)):console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",
 a)},mergeVertices:function(){var a={},b=[],c=[],d=Math.pow(10,4),e;var f=0;for(e=this.vertices.length;f<e;f++){var g=this.vertices[f];g=Math.round(g.x*d)+"_"+Math.round(g.y*d)+"_"+Math.round(g.z*d);void 0===a[g]?(a[g]=f,b.push(this.vertices[f]),c[f]=b.length-1):c[f]=c[a[g]]}a=[];f=0;for(e=this.faces.length;f<e;f++)for(d=this.faces[f],d.a=c[d.a],d.b=c[d.b],d.c=c[d.c],d=[d.a,d.b,d.c],g=0;3>g;g++)if(d[g]===d[(g+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(d=a[f],this.faces.splice(d,1),c=0,e=
 this.faceVertexUvs.length;c<e;c++)this.faceVertexUvs[c].splice(d,1);f=this.vertices.length-b.length;this.vertices=b;return f},sortFacesByMaterialIndex:function(){for(var a=this.faces,b=a.length,c=0;c<b;c++)a[c]._id=c;a.sort(function(a,b){return a.materialIndex-b.materialIndex});var d=this.faceVertexUvs[0],e=this.faceVertexUvs[1],f,g;d&&d.length===b&&(f=[]);e&&e.length===b&&(g=[]);for(c=0;c<b;c++){var h=a[c]._id;f&&f.push(d[h]);g&&g.push(e[h])}f&&(this.faceVertexUvs[0]=f);g&&(this.faceVertexUvs[1]=
-g)},toJSON:function(){function a(a,b,c){return c?a|1<<b:a&~(1<<b)}function b(a){var b=a.x.toString()+a.y.toString()+a.z.toString();if(void 0!==l[b])return l[b];l[b]=k.length/3;k.push(a.x,a.y,a.z);return l[b]}function c(a){var b=a.r.toString()+a.g.toString()+a.b.toString();if(void 0!==q[b])return q[b];q[b]=n.length;n.push(a.getHex());return q[b]}function d(a){var b=a.x.toString()+a.y.toString();if(void 0!==p[b])return p[b];p[b]=m.length/2;m.push(a.x,a.y);return p[b]}var e={metadata:{version:4.5,type:"Geometry",
-generator:"Geometry.toJSON"}};e.uuid=this.uuid;e.type=this.type;""!==this.name&&(e.name=this.name);if(void 0!==this.parameters){var f=this.parameters,g;for(g in f)void 0!==f[g]&&(e[g]=f[g]);return e}f=[];for(g=0;g<this.vertices.length;g++){var h=this.vertices[g];f.push(h.x,h.y,h.z)}var h=[],k=[],l={},n=[],q={},m=[],p={};for(g=0;g<this.faces.length;g++){var u=this.faces[g],w=void 0!==this.faceVertexUvs[0][g],v=0<u.normal.length(),A=0<u.vertexNormals.length,y=1!==u.color.r||1!==u.color.g||1!==u.color.b,
-H=0<u.vertexColors.length,B=0,B=a(B,0,0),B=a(B,1,!0),B=a(B,2,!1),B=a(B,3,w),B=a(B,4,v),B=a(B,5,A),B=a(B,6,y),B=a(B,7,H);h.push(B);h.push(u.a,u.b,u.c);h.push(u.materialIndex);w&&(w=this.faceVertexUvs[0][g],h.push(d(w[0]),d(w[1]),d(w[2])));v&&h.push(b(u.normal));A&&(v=u.vertexNormals,h.push(b(v[0]),b(v[1]),b(v[2])));y&&h.push(c(u.color));H&&(u=u.vertexColors,h.push(c(u[0]),c(u[1]),c(u[2])))}e.data={};e.data.vertices=f;e.data.normals=k;0<n.length&&(e.data.colors=n);0<m.length&&(e.data.uvs=[m]);e.data.faces=
+g)},toJSON:function(){function a(a,b,c){return c?a|1<<b:a&~(1<<b)}function b(a){var b=a.x.toString()+a.y.toString()+a.z.toString();if(void 0!==l[b])return l[b];l[b]=k.length/3;k.push(a.x,a.y,a.z);return l[b]}function c(a){var b=a.r.toString()+a.g.toString()+a.b.toString();if(void 0!==q[b])return q[b];q[b]=p.length;p.push(a.getHex());return q[b]}function d(a){var b=a.x.toString()+a.y.toString();if(void 0!==r[b])return r[b];r[b]=m.length/2;m.push(a.x,a.y);return r[b]}var e={metadata:{version:4.5,type:"Geometry",
+generator:"Geometry.toJSON"}};e.uuid=this.uuid;e.type=this.type;""!==this.name&&(e.name=this.name);if(void 0!==this.parameters){var f=this.parameters,g;for(g in f)void 0!==f[g]&&(e[g]=f[g]);return e}f=[];for(g=0;g<this.vertices.length;g++){var h=this.vertices[g];f.push(h.x,h.y,h.z)}var h=[],k=[],l={},p=[],q={},m=[],r={};for(g=0;g<this.faces.length;g++){var n=this.faces[g],w=void 0!==this.faceVertexUvs[0][g],u=0<n.normal.length(),A=0<n.vertexNormals.length,y=1!==n.color.r||1!==n.color.g||1!==n.color.b,
+H=0<n.vertexColors.length,B=0,B=a(B,0,0),B=a(B,1,!0),B=a(B,2,!1),B=a(B,3,w),B=a(B,4,u),B=a(B,5,A),B=a(B,6,y),B=a(B,7,H);h.push(B);h.push(n.a,n.b,n.c);h.push(n.materialIndex);w&&(w=this.faceVertexUvs[0][g],h.push(d(w[0]),d(w[1]),d(w[2])));u&&h.push(b(n.normal));A&&(u=n.vertexNormals,h.push(b(u[0]),b(u[1]),b(u[2])));y&&h.push(c(n.color));H&&(n=n.vertexColors,h.push(c(n[0]),c(n[1]),c(n[2])))}e.data={};e.data.vertices=f;e.data.normals=k;0<p.length&&(e.data.colors=p);0<m.length&&(e.data.uvs=[m]);e.data.faces=
 h;return e},clone:function(){return(new I).copy(this)},copy:function(a){var b,c,d;this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.name=a.name;var e=a.vertices;var f=0;for(b=e.length;f<b;f++)this.vertices.push(e[f].clone());e=a.colors;f=0;for(b=e.length;f<b;f++)this.colors.push(e[f].clone());e=a.faces;f=0;for(b=e.length;f<b;f++)this.faces.push(e[f].clone());
 f=0;for(b=a.faceVertexUvs.length;f<b;f++){var g=a.faceVertexUvs[f];void 0===this.faceVertexUvs[f]&&(this.faceVertexUvs[f]=[]);e=0;for(c=g.length;e<c;e++){var h=g[e],k=[];var l=0;for(d=h.length;l<d;l++)k.push(h[l].clone());this.faceVertexUvs[f].push(k)}}l=a.morphTargets;f=0;for(b=l.length;f<b;f++){d={};d.name=l[f].name;if(void 0!==l[f].vertices)for(d.vertices=[],e=0,c=l[f].vertices.length;e<c;e++)d.vertices.push(l[f].vertices[e].clone());if(void 0!==l[f].normals)for(d.normals=[],e=0,c=l[f].normals.length;e<
 c;e++)d.normals.push(l[f].normals[e].clone());this.morphTargets.push(d)}l=a.morphNormals;f=0;for(b=l.length;f<b;f++){d={};if(void 0!==l[f].vertexNormals)for(d.vertexNormals=[],e=0,c=l[f].vertexNormals.length;e<c;e++)g=l[f].vertexNormals[e],h={},h.a=g.a.clone(),h.b=g.b.clone(),h.c=g.c.clone(),d.vertexNormals.push(h);if(void 0!==l[f].faceNormals)for(d.faceNormals=[],e=0,c=l[f].faceNormals.length;e<c;e++)d.faceNormals.push(l[f].faceNormals[e].clone());this.morphNormals.push(d)}e=a.skinWeights;f=0;for(b=
@@ -529,14 +529,14 @@ e.length;f<b;f++)this.skinWeights.push(e[f].clone());e=a.skinIndices;f=0;for(b=e
 a.colorsNeedUpdate;this.lineDistancesNeedUpdate=a.lineDistancesNeedUpdate;this.groupsNeedUpdate=a.groupsNeedUpdate;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Object.defineProperty(O.prototype,"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(O.prototype,{isBufferAttribute:!0,setArray:function(a){if(Array.isArray(a))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.count=void 0!==a?a.length/this.itemSize:0;this.array=
 a},setDynamic:function(a){this.dynamic=a;return this},copy:function(a){this.array=new a.array.constructor(a.array);this.itemSize=a.itemSize;this.count=a.count;this.normalized=a.normalized;this.dynamic=a.dynamic;return this},copyAt:function(a,b,c){a*=this.itemSize;c*=b.itemSize;for(var d=0,e=this.itemSize;d<e;d++)this.array[a+d]=b.array[c+d];return this},copyArray:function(a){this.array.set(a);return this},copyColorsArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===
 f&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",d),f=new E);b[c++]=f.r;b[c++]=f.g;b[c++]=f.b}return this},copyIndicesArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];b[c++]=f.a;b[c++]=f.b;b[c++]=f.c}return this},copyVector2sArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",d),f=new D);b[c++]=f.x;b[c++]=f.y}return this},copyVector3sArray:function(a){for(var b=
-this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",d),f=new p);b[c++]=f.x;b[c++]=f.y;b[c++]=f.z}return this},copyVector4sArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",d),f=new ca);b[c++]=f.x;b[c++]=f.y;b[c++]=f.z;b[c++]=f.w}return this},set:function(a,b){void 0===b&&(b=0);this.array.set(a,
+this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",d),f=new n);b[c++]=f.x;b[c++]=f.y;b[c++]=f.z}return this},copyVector4sArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",d),f=new ca);b[c++]=f.x;b[c++]=f.y;b[c++]=f.z;b[c++]=f.w}return this},set:function(a,b){void 0===b&&(b=0);this.array.set(a,
 b);return this},getX:function(a){return this.array[a*this.itemSize]},setX:function(a,b){this.array[a*this.itemSize]=b;return this},getY:function(a){return this.array[a*this.itemSize+1]},setY:function(a,b){this.array[a*this.itemSize+1]=b;return this},getZ:function(a){return this.array[a*this.itemSize+2]},setZ:function(a,b){this.array[a*this.itemSize+2]=b;return this},getW:function(a){return this.array[a*this.itemSize+3]},setW:function(a,b){this.array[a*this.itemSize+3]=b;return this},setXY:function(a,
 b,c){a*=this.itemSize;this.array[a+0]=b;this.array[a+1]=c;return this},setXYZ:function(a,b,c,d){a*=this.itemSize;this.array[a+0]=b;this.array[a+1]=c;this.array[a+2]=d;return this},setXYZW:function(a,b,c,d,e){a*=this.itemSize;this.array[a+0]=b;this.array[a+1]=c;this.array[a+2]=d;this.array[a+3]=e;return this},onUpload:function(a){this.onUploadCallback=a;return this},clone:function(){return(new this.constructor(this.array,this.itemSize)).copy(this)}});pc.prototype=Object.create(O.prototype);pc.prototype.constructor=
 pc;qc.prototype=Object.create(O.prototype);qc.prototype.constructor=qc;rc.prototype=Object.create(O.prototype);rc.prototype.constructor=rc;sc.prototype=Object.create(O.prototype);sc.prototype.constructor=sc;db.prototype=Object.create(O.prototype);db.prototype.constructor=db;tc.prototype=Object.create(O.prototype);tc.prototype.constructor=tc;eb.prototype=Object.create(O.prototype);eb.prototype.constructor=eb;x.prototype=Object.create(O.prototype);x.prototype.constructor=x;uc.prototype=Object.create(O.prototype);
 uc.prototype.constructor=uc;Object.assign(Ne.prototype,{computeGroups:function(a){var b=[],c=void 0;a=a.faces;for(var d=0;d<a.length;d++){var e=a[d];if(e.materialIndex!==c){c=e.materialIndex;void 0!==f&&(f.count=3*d-f.start,b.push(f));var f={start:3*d,materialIndex:c}}}void 0!==f&&(f.count=3*d-f.start,b.push(f));this.groups=b},fromGeometry:function(a){var b=a.faces,c=a.vertices,d=a.faceVertexUvs,e=d[0]&&0<d[0].length,f=d[1]&&0<d[1].length,g=a.morphTargets,h=g.length;if(0<h){var k=[];for(var l=0;l<
-h;l++)k[l]=[];this.morphTargets.position=k}var n=a.morphNormals,q=n.length;if(0<q){var m=[];for(l=0;l<q;l++)m[l]=[];this.morphTargets.normal=m}for(var p=a.skinIndices,u=a.skinWeights,w=p.length===c.length,v=u.length===c.length,l=0;l<b.length;l++){var A=b[l];this.vertices.push(c[A.a],c[A.b],c[A.c]);var y=A.vertexNormals;3===y.length?this.normals.push(y[0],y[1],y[2]):(y=A.normal,this.normals.push(y,y,y));y=A.vertexColors;3===y.length?this.colors.push(y[0],y[1],y[2]):(y=A.color,this.colors.push(y,y,
-y));!0===e&&(y=d[0][l],void 0!==y?this.uvs.push(y[0],y[1],y[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",l),this.uvs.push(new D,new D,new D)));!0===f&&(y=d[1][l],void 0!==y?this.uvs2.push(y[0],y[1],y[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",l),this.uvs2.push(new D,new D,new D)));for(y=0;y<h;y++){var H=g[y].vertices;k[y].push(H[A.a],H[A.b],H[A.c])}for(y=0;y<q;y++)H=n[y].vertexNormals[l],m[y].push(H.a,H.b,H.c);w&&this.skinIndices.push(p[A.a],
-p[A.b],p[A.c]);v&&this.skinWeights.push(u[A.a],u[A.b],u[A.c])}this.computeGroups(a);this.verticesNeedUpdate=a.verticesNeedUpdate;this.normalsNeedUpdate=a.normalsNeedUpdate;this.colorsNeedUpdate=a.colorsNeedUpdate;this.uvsNeedUpdate=a.uvsNeedUpdate;this.groupsNeedUpdate=a.groupsNeedUpdate;return this}});F.MaxIndex=65535;Object.assign(F.prototype,oa.prototype,{isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(a){Array.isArray(a)?this.index=new (65535<Vd(a)?eb:db)(a,1):this.index=
+h;l++)k[l]=[];this.morphTargets.position=k}var p=a.morphNormals,m=p.length;if(0<m){var t=[];for(l=0;l<m;l++)t[l]=[];this.morphTargets.normal=t}for(var n=a.skinIndices,v=a.skinWeights,w=n.length===c.length,u=v.length===c.length,l=0;l<b.length;l++){var A=b[l];this.vertices.push(c[A.a],c[A.b],c[A.c]);var y=A.vertexNormals;3===y.length?this.normals.push(y[0],y[1],y[2]):(y=A.normal,this.normals.push(y,y,y));y=A.vertexColors;3===y.length?this.colors.push(y[0],y[1],y[2]):(y=A.color,this.colors.push(y,y,
+y));!0===e&&(y=d[0][l],void 0!==y?this.uvs.push(y[0],y[1],y[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",l),this.uvs.push(new D,new D,new D)));!0===f&&(y=d[1][l],void 0!==y?this.uvs2.push(y[0],y[1],y[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",l),this.uvs2.push(new D,new D,new D)));for(y=0;y<h;y++){var H=g[y].vertices;k[y].push(H[A.a],H[A.b],H[A.c])}for(y=0;y<m;y++)H=p[y].vertexNormals[l],t[y].push(H.a,H.b,H.c);w&&this.skinIndices.push(n[A.a],
+n[A.b],n[A.c]);u&&this.skinWeights.push(v[A.a],v[A.b],v[A.c])}this.computeGroups(a);this.verticesNeedUpdate=a.verticesNeedUpdate;this.normalsNeedUpdate=a.normalsNeedUpdate;this.colorsNeedUpdate=a.colorsNeedUpdate;this.uvsNeedUpdate=a.uvsNeedUpdate;this.groupsNeedUpdate=a.groupsNeedUpdate;return this}});F.MaxIndex=65535;Object.assign(F.prototype,oa.prototype,{isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(a){Array.isArray(a)?this.index=new (65535<Vd(a)?eb:db)(a,1):this.index=
 a},addAttribute:function(a,b,c){if(b&&b.isBufferAttribute||b&&b.isInterleavedBufferAttribute)if("index"===a)console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(b);else return this.attributes[a]=b,this;else console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.addAttribute(a,new O(b,c))},getAttribute:function(a){return this.attributes[a]},removeAttribute:function(a){delete this.attributes[a];return this},addGroup:function(a,
 b,c){this.groups.push({start:a,count:b,materialIndex:void 0!==c?c:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(a,b){this.drawRange.start=a;this.drawRange.count=b},applyMatrix:function(a){var b=this.attributes.position;void 0!==b&&(a.applyToBufferAttribute(b),b.needsUpdate=!0);b=this.attributes.normal;void 0!==b&&((new ma).getNormalMatrix(a).applyToBufferAttribute(b),b.needsUpdate=!0);null!==this.boundingBox&&this.computeBoundingBox();null!==this.boundingSphere&&this.computeBoundingSphere();
 return this},rotateX:function(){var a=new J;return function(b){a.makeRotationX(b);this.applyMatrix(a);return this}}(),rotateY:function(){var a=new J;return function(b){a.makeRotationY(b);this.applyMatrix(a);return this}}(),rotateZ:function(){var a=new J;return function(b){a.makeRotationZ(b);this.applyMatrix(a);return this}}(),translate:function(){var a=new J;return function(b,c,d){a.makeTranslation(b,c,d);this.applyMatrix(a);return this}}(),scale:function(){var a=new J;return function(b,c,d){a.makeScale(b,
@@ -548,43 +548,43 @@ b.lineDistances&&b.lineDistances.length===b.vertices.length&&(a=new x(b.lineDist
 0<a.colors.length&&(b=new Float32Array(3*a.colors.length),this.addAttribute("color",(new O(b,3)).copyColorsArray(a.colors)));0<a.uvs.length&&(b=new Float32Array(2*a.uvs.length),this.addAttribute("uv",(new O(b,2)).copyVector2sArray(a.uvs)));0<a.uvs2.length&&(b=new Float32Array(2*a.uvs2.length),this.addAttribute("uv2",(new O(b,2)).copyVector2sArray(a.uvs2)));0<a.indices.length&&(b=new (65535<Vd(a.indices)?Uint32Array:Uint16Array)(3*a.indices.length),this.setIndex((new O(b,1)).copyIndicesArray(a.indices)));
 this.groups=a.groups;for(var c in a.morphTargets){for(var b=[],d=a.morphTargets[c],e=0,f=d.length;e<f;e++){var g=d[e],h=new x(3*g.length,3);b.push(h.copyVector3sArray(g))}this.morphAttributes[c]=b}0<a.skinIndices.length&&(c=new x(4*a.skinIndices.length,4),this.addAttribute("skinIndex",c.copyVector4sArray(a.skinIndices)));0<a.skinWeights.length&&(c=new x(4*a.skinWeights.length,4),this.addAttribute("skinWeight",c.copyVector4sArray(a.skinWeights)));null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());
 null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());return this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Qa);var a=this.attributes.position;void 0!==a?this.boundingBox.setFromBufferAttribute(a):this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',
-this)},computeBoundingSphere:function(){var a=new Qa,b=new p;return function(){null===this.boundingSphere&&(this.boundingSphere=new Ba);var c=this.attributes.position;if(c){var d=this.boundingSphere.center;a.setFromBufferAttribute(c);a.getCenter(d);for(var e=0,f=0,g=c.count;f<g;f++)b.x=c.getX(f),b.y=c.getY(f),b.z=c.getZ(f),e=Math.max(e,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(e);isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',
-this)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.index,b=this.attributes,c=this.groups;if(b.position){var d=b.position.array;if(void 0===b.normal)this.addAttribute("normal",new O(new Float32Array(d.length),3));else for(var e=b.normal.array,f=0,g=e.length;f<g;f++)e[f]=0;var e=b.normal.array,h=new p,k=new p,l=new p,n=new p,q=new p;if(a){a=a.array;0===c.length&&this.addGroup(0,a.length);for(var m=0,t=c.length;m<t;++m){f=c[m];g=f.start;var u=f.count;f=g;for(g+=u;f<
-g;f+=3){u=3*a[f+0];var w=3*a[f+1];var v=3*a[f+2];h.fromArray(d,u);k.fromArray(d,w);l.fromArray(d,v);n.subVectors(l,k);q.subVectors(h,k);n.cross(q);e[u]+=n.x;e[u+1]+=n.y;e[u+2]+=n.z;e[w]+=n.x;e[w+1]+=n.y;e[w+2]+=n.z;e[v]+=n.x;e[v+1]+=n.y;e[v+2]+=n.z}}}else for(f=0,g=d.length;f<g;f+=9)h.fromArray(d,f),k.fromArray(d,f+3),l.fromArray(d,f+6),n.subVectors(l,k),q.subVectors(h,k),n.cross(q),e[f]=n.x,e[f+1]=n.y,e[f+2]=n.z,e[f+3]=n.x,e[f+4]=n.y,e[f+5]=n.z,e[f+6]=n.x,e[f+7]=n.y,e[f+8]=n.z;this.normalizeNormals();
-b.normal.needsUpdate=!0}},merge:function(a,b){if(a&&a.isBufferGeometry){void 0===b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=c[d].array,f=a.attributes[d],g=f.array,h=0,f=f.itemSize*b;h<g.length;h++,f++)e[f]=g[h];return this}console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a)},normalizeNormals:function(){var a=new p;return function(){for(var b=this.attributes.normal,c=0,d=b.count;c<d;c++)a.x=b.getX(c),a.y=b.getY(c),
-a.z=b.getZ(c),a.normalize(),b.setXYZ(c,a.x,a.y,a.z)}}(),toNonIndexed:function(){if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."),this;var a=new F,b=this.index.array,c=this.attributes,d;for(d in c){for(var e=c[d],f=e.array,e=e.itemSize,g=new f.constructor(b.length*e),h,k=0,l=0,n=b.length;l<n;l++){h=b[l]*e;for(var q=0;q<e;q++)g[k++]=f[h++]}a.addAttribute(d,new O(g,e))}return a},toJSON:function(){var a={metadata:{version:4.5,type:"BufferGeometry",
+this)},computeBoundingSphere:function(){var a=new Qa,b=new n;return function(){null===this.boundingSphere&&(this.boundingSphere=new Ba);var c=this.attributes.position;if(c){var d=this.boundingSphere.center;a.setFromBufferAttribute(c);a.getCenter(d);for(var e=0,f=0,g=c.count;f<g;f++)b.x=c.getX(f),b.y=c.getY(f),b.z=c.getZ(f),e=Math.max(e,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(e);isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',
+this)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.index,b=this.attributes,c=this.groups;if(b.position){var d=b.position.array;if(void 0===b.normal)this.addAttribute("normal",new O(new Float32Array(d.length),3));else for(var e=b.normal.array,f=0,g=e.length;f<g;f++)e[f]=0;var e=b.normal.array,h=new n,k=new n,l=new n,p=new n,m=new n;if(a){a=a.array;0===c.length&&this.addGroup(0,a.length);for(var t=0,r=c.length;t<r;++t){f=c[t];g=f.start;var v=f.count;f=g;for(g+=v;f<
+g;f+=3){v=3*a[f+0];var w=3*a[f+1];var u=3*a[f+2];h.fromArray(d,v);k.fromArray(d,w);l.fromArray(d,u);p.subVectors(l,k);m.subVectors(h,k);p.cross(m);e[v]+=p.x;e[v+1]+=p.y;e[v+2]+=p.z;e[w]+=p.x;e[w+1]+=p.y;e[w+2]+=p.z;e[u]+=p.x;e[u+1]+=p.y;e[u+2]+=p.z}}}else for(f=0,g=d.length;f<g;f+=9)h.fromArray(d,f),k.fromArray(d,f+3),l.fromArray(d,f+6),p.subVectors(l,k),m.subVectors(h,k),p.cross(m),e[f]=p.x,e[f+1]=p.y,e[f+2]=p.z,e[f+3]=p.x,e[f+4]=p.y,e[f+5]=p.z,e[f+6]=p.x,e[f+7]=p.y,e[f+8]=p.z;this.normalizeNormals();
+b.normal.needsUpdate=!0}},merge:function(a,b){if(a&&a.isBufferGeometry){void 0===b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=c[d].array,f=a.attributes[d],g=f.array,h=0,f=f.itemSize*b;h<g.length;h++,f++)e[f]=g[h];return this}console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a)},normalizeNormals:function(){var a=new n;return function(){for(var b=this.attributes.normal,c=0,d=b.count;c<d;c++)a.x=b.getX(c),a.y=b.getY(c),
+a.z=b.getZ(c),a.normalize(),b.setXYZ(c,a.x,a.y,a.z)}}(),toNonIndexed:function(){if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."),this;var a=new F,b=this.index.array,c=this.attributes,d;for(d in c){for(var e=c[d],f=e.array,e=e.itemSize,g=new f.constructor(b.length*e),h,k=0,l=0,p=b.length;l<p;l++){h=b[l]*e;for(var m=0;m<e;m++)g[k++]=f[h++]}a.addAttribute(d,new O(g,e))}return a},toJSON:function(){var a={metadata:{version:4.5,type:"BufferGeometry",
 generator:"BufferGeometry.toJSON"}};a.uuid=this.uuid;a.type=this.type;""!==this.name&&(a.name=this.name);if(void 0!==this.parameters){var b=this.parameters;for(var c in b)void 0!==b[c]&&(a[c]=b[c]);return a}a.data={attributes:{}};var d=this.index;null!==d&&(b=Array.prototype.slice.call(d.array),a.data.index={type:d.array.constructor.name,array:b});d=this.attributes;for(c in d){var e=d[c];b=Array.prototype.slice.call(e.array);a.data.attributes[c]={itemSize:e.itemSize,type:e.array.constructor.name,
 array:b,normalized:e.normalized}}c=this.groups;0<c.length&&(a.data.groups=JSON.parse(JSON.stringify(c)));c=this.boundingSphere;null!==c&&(a.data.boundingSphere={center:c.center.toArray(),radius:c.radius});return a},clone:function(){return(new F).copy(this)},copy:function(a){var b;this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.name=a.name;var c=a.index;null!==c&&this.setIndex(c.clone());c=a.attributes;for(g in c)this.addAttribute(g,
 c[g].clone());var d=a.morphAttributes;for(g in d){var e=[],f=d[g];c=0;for(b=f.length;c<b;c++)e.push(f[c].clone());this.morphAttributes[g]=e}var g=a.groups;c=0;for(b=g.length;c<b;c++)d=g[c],this.addGroup(d.start,d.count,d.materialIndex);g=a.boundingBox;null!==g&&(this.boundingBox=g.clone());g=a.boundingSphere;null!==g&&(this.boundingSphere=g.clone());this.drawRange.start=a.drawRange.start;this.drawRange.count=a.drawRange.count;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});
 Eb.prototype=Object.create(I.prototype);Eb.prototype.constructor=Eb;fb.prototype=Object.create(F.prototype);fb.prototype.constructor=fb;vc.prototype=Object.create(I.prototype);vc.prototype.constructor=vc;gb.prototype=Object.create(F.prototype);gb.prototype.constructor=gb;sa.prototype=Object.create(N.prototype);sa.prototype.constructor=sa;sa.prototype.isMeshBasicMaterial=!0;sa.prototype.copy=function(a){N.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;
 this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;return this};Object.assign(hb.prototype,
-{set:function(a,b){this.origin.copy(a);this.direction.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.origin.copy(a.origin);this.direction.copy(a.direction);return this},at:function(a,b){return(b||new p).copy(this.direction).multiplyScalar(a).add(this.origin)},lookAt:function(a){this.direction.copy(a).sub(this.origin).normalize();return this},recast:function(){var a=new p;return function(b){this.origin.copy(this.at(b,a));return this}}(),closestPointToPoint:function(a,
-b){b=b||new p;b.subVectors(a,this.origin);a=b.dot(this.direction);return 0>a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new p;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b);a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a=
-new p,b=new p,c=new p;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5);b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),l=c.dot(this.direction),n=-c.dot(b),q=c.lengthSq(),m=Math.abs(1-k*k);if(0<m){d=k*n-l;e=k*l-n;var p=h*m;0<=d?e>=-p?e<=p?(h=1/m,d*=h,e*=h,k=d*(d+k*e+2*l)+e*(k*d+e+2*n)+q):(e=h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*n)+q):(e=-h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*n)+q):e<=-p?(d=Math.max(0,-(-k*h+l)),e=0<d?-h:Math.min(Math.max(-h,
--n),h),k=-d*d+e*(e+2*n)+q):e<=p?(d=0,e=Math.min(Math.max(-h,-n),h),k=e*(e+2*n)+q):(d=Math.max(0,-(k*h+l)),e=0<d?h:Math.min(Math.max(-h,-n),h),k=-d*d+e*(e+2*n)+q)}else e=0<k?-h:h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*n)+q;f&&f.copy(this.direction).multiplyScalar(d).add(this.origin);g&&g.copy(b).multiplyScalar(e).add(a);return k}}(),intersectSphere:function(){var a=new p;return function(b,c){a.subVectors(b.center,this.origin);var d=a.dot(this.direction),e=a.dot(a)-d*d;b=b.radius*b.radius;if(e>b)return null;
+{set:function(a,b){this.origin.copy(a);this.direction.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.origin.copy(a.origin);this.direction.copy(a.direction);return this},at:function(a,b){return(b||new n).copy(this.direction).multiplyScalar(a).add(this.origin)},lookAt:function(a){this.direction.copy(a).sub(this.origin).normalize();return this},recast:function(){var a=new n;return function(b){this.origin.copy(this.at(b,a));return this}}(),closestPointToPoint:function(a,
+b){b=b||new n;b.subVectors(a,this.origin);a=b.dot(this.direction);return 0>a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new n;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b);a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a=
+new n,b=new n,c=new n;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5);b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),l=c.dot(this.direction),p=-c.dot(b),m=c.lengthSq(),t=Math.abs(1-k*k);if(0<t){d=k*p-l;e=k*l-p;var n=h*t;0<=d?e>=-n?e<=n?(h=1/t,d*=h,e*=h,k=d*(d+k*e+2*l)+e*(k*d+e+2*p)+m):(e=h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*p)+m):(e=-h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*p)+m):e<=-n?(d=Math.max(0,-(-k*h+l)),e=0<d?-h:Math.min(Math.max(-h,
+-p),h),k=-d*d+e*(e+2*p)+m):e<=n?(d=0,e=Math.min(Math.max(-h,-p),h),k=e*(e+2*p)+m):(d=Math.max(0,-(k*h+l)),e=0<d?h:Math.min(Math.max(-h,-p),h),k=-d*d+e*(e+2*p)+m)}else e=0<k?-h:h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*p)+m;f&&f.copy(this.direction).multiplyScalar(d).add(this.origin);g&&g.copy(b).multiplyScalar(e).add(a);return k}}(),intersectSphere:function(){var a=new n;return function(b,c){a.subVectors(b.center,this.origin);var d=a.dot(this.direction),e=a.dot(a)-d*d;b=b.radius*b.radius;if(e>b)return null;
 b=Math.sqrt(b-e);e=d-b;d+=b;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),intersectsSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){a=this.distanceToPlane(a);return null===a?null:this.at(a,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin);
 return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a,b){var c=1/this.direction.x;var d=1/this.direction.y;var e=1/this.direction.z,f=this.origin;if(0<=c){var g=(a.min.x-f.x)*c;c*=a.max.x-f.x}else g=(a.max.x-f.x)*c,c*=a.min.x-f.x;if(0<=d){var h=(a.min.y-f.y)*d;d*=a.max.y-f.y}else h=(a.max.y-f.y)*d,d*=a.min.y-f.y;if(g>d||h>c)return null;if(h>g||g!==g)g=h;if(d<c||c!==c)c=d;0<=e?(h=(a.min.z-f.z)*e,a=(a.max.z-f.z)*e):(h=(a.max.z-f.z)*e,a=(a.min.z-f.z)*e);if(g>a||h>c)return null;
-if(h>g||g!==g)g=h;if(a<c||c!==c)c=a;return 0>c?null:this.at(0<=g?g:c,b)},intersectsBox:function(){var a=new p;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new p,b=new p,c=new p,d=new p;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0<f){if(h)return null;h=1}else if(0>f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null;
+if(h>g||g!==g)g=h;if(a<c||c!==c)c=a;return 0>c?null:this.at(0<=g?g:c,b)},intersectsBox:function(){var a=new n;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new n,b=new n,c=new n,d=new n;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0<f){if(h)return null;h=1}else if(0>f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null;
 g=h*this.direction.dot(b.cross(a));if(0>g||e+g>f)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/f,k)}}(),applyMatrix4:function(a){this.origin.applyMatrix4(a);this.direction.transformDirection(a);return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}});Object.assign(Fb.prototype,{set:function(a,b){this.start.copy(a);this.end.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.start.copy(a.start);
-this.end.copy(a.end);return this},getCenter:function(a){return(a||new p).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){return(a||new p).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(a,b){b=b||new p;return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new p,b=new p;return function(c,d){a.subVectors(c,
-this.start);b.subVectors(this.end,this.start);c=b.dot(b);c=b.dot(a)/c;d&&(c=P.clamp(c,0,1));return c}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);c=c||new p;return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a);this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}});Object.assign(Sa,{normal:function(){var a=new p;return function(b,c,d,e){e=e||new p;
-e.subVectors(d,c);a.subVectors(b,c);e.cross(a);b=e.lengthSq();return 0<b?e.multiplyScalar(1/Math.sqrt(b)):e.set(0,0,0)}}(),barycoordFromPoint:function(){var a=new p,b=new p,c=new p;return function(d,e,f,g,h){a.subVectors(g,e);b.subVectors(f,e);c.subVectors(d,e);d=a.dot(a);e=a.dot(b);f=a.dot(c);var k=b.dot(b);g=b.dot(c);var l=d*k-e*e;h=h||new p;if(0===l)return h.set(-2,-1,-1);l=1/l;k=(k*f-e*g)*l;d=(d*g-e*f)*l;return h.set(1-k-d,d,k)}}(),containsPoint:function(){var a=new p;return function(b,c,d,e){b=
-Sa.barycoordFromPoint(b,c,d,e,a);return 0<=b.x&&0<=b.y&&1>=b.x+b.y}}()});Object.assign(Sa.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},area:function(){var a=new p,b=new p;return function(){a.subVectors(this.c,
-this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),midpoint:function(a){return(a||new p).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return Sa.normal(this.a,this.b,this.c,a)},plane:function(a){return(a||new za).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return Sa.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return Sa.containsPoint(a,this.a,this.b,this.c)},closestPointToPoint:function(){var a=
-new za,b=[new Fb,new Fb,new Fb],c=new p,d=new p;return function(e,f){f=f||new p;var g=Infinity;a.setFromCoplanarPoints(this.a,this.b,this.c);a.projectPoint(e,c);if(!0===this.containsPoint(c))f.copy(c);else for(b[0].set(this.a,this.b),b[1].set(this.b,this.c),b[2].set(this.c,this.a),e=0;e<b.length;e++){b[e].closestPointToPoint(c,!0,d);var h=c.distanceToSquared(d);h<g&&(g=h,f.copy(d))}return f}}(),equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}});na.prototype=Object.assign(Object.create(z.prototype),
+this.end.copy(a.end);return this},getCenter:function(a){return(a||new n).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){return(a||new n).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(a,b){b=b||new n;return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new n,b=new n;return function(c,d){a.subVectors(c,
+this.start);b.subVectors(this.end,this.start);c=b.dot(b);c=b.dot(a)/c;d&&(c=P.clamp(c,0,1));return c}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);c=c||new n;return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a);this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}});Object.assign(Sa,{normal:function(){var a=new n;return function(b,c,d,e){e=e||new n;
+e.subVectors(d,c);a.subVectors(b,c);e.cross(a);b=e.lengthSq();return 0<b?e.multiplyScalar(1/Math.sqrt(b)):e.set(0,0,0)}}(),barycoordFromPoint:function(){var a=new n,b=new n,c=new n;return function(d,e,f,g,h){a.subVectors(g,e);b.subVectors(f,e);c.subVectors(d,e);d=a.dot(a);e=a.dot(b);f=a.dot(c);var k=b.dot(b);g=b.dot(c);var l=d*k-e*e;h=h||new n;if(0===l)return h.set(-2,-1,-1);l=1/l;k=(k*f-e*g)*l;d=(d*g-e*f)*l;return h.set(1-k-d,d,k)}}(),containsPoint:function(){var a=new n;return function(b,c,d,e){b=
+Sa.barycoordFromPoint(b,c,d,e,a);return 0<=b.x&&0<=b.y&&1>=b.x+b.y}}()});Object.assign(Sa.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},area:function(){var a=new n,b=new n;return function(){a.subVectors(this.c,
+this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),midpoint:function(a){return(a||new n).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return Sa.normal(this.a,this.b,this.c,a)},plane:function(a){return(a||new za).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return Sa.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return Sa.containsPoint(a,this.a,this.b,this.c)},closestPointToPoint:function(){var a=
+new za,b=[new Fb,new Fb,new Fb],c=new n,d=new n;return function(e,f){f=f||new n;var g=Infinity;a.setFromCoplanarPoints(this.a,this.b,this.c);a.projectPoint(e,c);if(!0===this.containsPoint(c))f.copy(c);else for(b[0].set(this.a,this.b),b[1].set(this.b,this.c),b[2].set(this.c,this.a),e=0;e<b.length;e++){b[e].closestPointToPoint(c,!0,d);var h=c.distanceToSquared(d);h<g&&(g=h,f.copy(d))}return f}}(),equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}});na.prototype=Object.assign(Object.create(z.prototype),
 {constructor:na,isMesh:!0,setDrawMode:function(a){this.drawMode=a},copy:function(a){z.prototype.copy.call(this,a);this.drawMode=a.drawMode;return this},updateMorphTargets:function(){var a=this.geometry;if(a.isBufferGeometry){a=a.morphAttributes;var b=Object.keys(a);if(0<b.length){var c=a[b[0]];if(void 0!==c)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},a=0,b=c.length;a<b;a++){var d=c[a].name||String(a);this.morphTargetInfluences.push(0);this.morphTargetDictionary[d]=a}}}else if(c=
 a.morphTargets,void 0!==c&&0<c.length)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},a=0,b=c.length;a<b;a++)d=c[a].name||String(a),this.morphTargetInfluences.push(0),this.morphTargetDictionary[d]=a},raycast:function(){function a(a,b,c,d,e,f,g){Sa.barycoordFromPoint(a,b,c,d,w);e.multiplyScalar(w.x);f.multiplyScalar(w.y);g.multiplyScalar(w.z);e.add(f).add(g);return e.clone()}function b(a,b,c,d,e,f,g,h){if(null===(1===b.side?d.intersectTriangle(g,f,e,!0,h):d.intersectTriangle(e,f,g,
-2!==b.side,h)))return null;A.copy(h);A.applyMatrix4(a.matrixWorld);b=c.ray.origin.distanceTo(A);return b<c.near||b>c.far?null:{distance:b,point:A.clone(),object:a}}function c(c,d,e,f,l,n,q,r){g.fromBufferAttribute(f,n);h.fromBufferAttribute(f,q);k.fromBufferAttribute(f,r);if(c=b(c,c.material,d,e,g,h,k,v))l&&(m.fromBufferAttribute(l,n),t.fromBufferAttribute(l,q),u.fromBufferAttribute(l,r),c.uv=a(v,g,h,k,m,t,u)),c.face=new Ra(n,q,r,Sa.normal(g,h,k)),c.faceIndex=n;return c}var d=new J,e=new hb,f=new Ba,
-g=new p,h=new p,k=new p,l=new p,n=new p,q=new p,m=new D,t=new D,u=new D,w=new p,v=new p,A=new p;return function(r,p){var w=this.geometry,y=this.material,A=this.matrixWorld;if(void 0!==y&&(null===w.boundingSphere&&w.computeBoundingSphere(),f.copy(w.boundingSphere),f.applyMatrix4(A),!1!==r.ray.intersectsSphere(f)&&(d.getInverse(A),e.copy(r.ray).applyMatrix4(d),null===w.boundingBox||!1!==e.intersectsBox(w.boundingBox)))){var x;if(w.isBufferGeometry){var y=w.index,H=w.attributes.position,A=w.attributes.uv,
-z;if(null!==y){var D=0;for(z=y.count;D<z;D+=3){w=y.getX(D);var E=y.getX(D+1);var F=y.getX(D+2);if(x=c(this,r,e,H,A,w,E,F))x.faceIndex=Math.floor(D/3),p.push(x)}}else for(D=0,z=H.count;D<z;D+=3)if(w=D,E=D+1,F=D+2,x=c(this,r,e,H,A,w,E,F))x.index=w,p.push(x)}else if(w.isGeometry){var A=Array.isArray(y);D=w.vertices;z=w.faces;E=w.faceVertexUvs[0];0<E.length&&(H=E);for(var J=0,K=z.length;J<K;J++){var M=z[J];x=A?y[M.materialIndex]:y;if(void 0!==x){E=D[M.a];F=D[M.b];var U=D[M.c];if(!0===x.morphTargets){var I=
-w.morphTargets,O=this.morphTargetInfluences;g.set(0,0,0);h.set(0,0,0);k.set(0,0,0);for(var N=0,Q=I.length;N<Q;N++){var P=O[N];if(0!==P){var R=I[N].vertices;g.addScaledVector(l.subVectors(R[M.a],E),P);h.addScaledVector(n.subVectors(R[M.b],F),P);k.addScaledVector(q.subVectors(R[M.c],U),P)}}g.add(E);h.add(F);k.add(U);E=g;F=h;U=k}if(x=b(this,x,r,e,E,F,U,v))H&&H[J]&&(I=H[J],m.copy(I[0]),t.copy(I[1]),u.copy(I[2]),x.uv=a(v,E,F,U,m,t,u)),x.face=M,x.faceIndex=J,p.push(x)}}}}}}(),clone:function(){return(new this.constructor(this.geometry,
+2!==b.side,h)))return null;A.copy(h);A.applyMatrix4(a.matrixWorld);b=c.ray.origin.distanceTo(A);return b<c.near||b>c.far?null:{distance:b,point:A.clone(),object:a}}function c(c,d,e,f,l,p,m,q){g.fromBufferAttribute(f,p);h.fromBufferAttribute(f,m);k.fromBufferAttribute(f,q);if(c=b(c,c.material,d,e,g,h,k,u))l&&(t.fromBufferAttribute(l,p),r.fromBufferAttribute(l,m),v.fromBufferAttribute(l,q),c.uv=a(u,g,h,k,t,r,v)),c.face=new Ra(p,m,q,Sa.normal(g,h,k)),c.faceIndex=p;return c}var d=new J,e=new hb,f=new Ba,
+g=new n,h=new n,k=new n,l=new n,p=new n,m=new n,t=new D,r=new D,v=new D,w=new n,u=new n,A=new n;return function(q,n){var w=this.geometry,y=this.material,A=this.matrixWorld;if(void 0!==y&&(null===w.boundingSphere&&w.computeBoundingSphere(),f.copy(w.boundingSphere),f.applyMatrix4(A),!1!==q.ray.intersectsSphere(f)&&(d.getInverse(A),e.copy(q.ray).applyMatrix4(d),null===w.boundingBox||!1!==e.intersectsBox(w.boundingBox)))){var x;if(w.isBufferGeometry){var y=w.index,H=w.attributes.position,A=w.attributes.uv,
+z;if(null!==y){var D=0;for(z=y.count;D<z;D+=3){w=y.getX(D);var E=y.getX(D+1);var F=y.getX(D+2);if(x=c(this,q,e,H,A,w,E,F))x.faceIndex=Math.floor(D/3),n.push(x)}}else for(D=0,z=H.count;D<z;D+=3)if(w=D,E=D+1,F=D+2,x=c(this,q,e,H,A,w,E,F))x.index=w,n.push(x)}else if(w.isGeometry){var A=Array.isArray(y);D=w.vertices;z=w.faces;E=w.faceVertexUvs[0];0<E.length&&(H=E);for(var J=0,K=z.length;J<K;J++){var M=z[J];x=A?y[M.materialIndex]:y;if(void 0!==x){E=D[M.a];F=D[M.b];var U=D[M.c];if(!0===x.morphTargets){var I=
+w.morphTargets,O=this.morphTargetInfluences;g.set(0,0,0);h.set(0,0,0);k.set(0,0,0);for(var N=0,Q=I.length;N<Q;N++){var P=O[N];if(0!==P){var R=I[N].vertices;g.addScaledVector(l.subVectors(R[M.a],E),P);h.addScaledVector(p.subVectors(R[M.b],F),P);k.addScaledVector(m.subVectors(R[M.c],U),P)}}g.add(E);h.add(F);k.add(U);E=g;F=h;U=k}if(x=b(this,x,q,e,E,F,U,u))H&&H[J]&&(I=H[J],t.copy(I[0]),r.copy(I[1]),v.copy(I[2]),x.uv=a(u,E,F,U,t,r,v)),x.face=M,x.faceIndex=J,n.push(x)}}}}}}(),clone:function(){return(new this.constructor(this.geometry,
 this.material)).copy(this)}});var hg=0;nd.prototype=Object.assign(Object.create(Y.prototype),{constructor:nd,isArrayCamera:!0});Hb.prototype.isFogExp2=!0;Hb.prototype.clone=function(){return new Hb(this.color.getHex(),this.density)};Hb.prototype.toJSON=function(a){return{type:"FogExp2",color:this.color.getHex(),density:this.density}};Ib.prototype.isFog=!0;Ib.prototype.clone=function(){return new Ib(this.color.getHex(),this.near,this.far)};Ib.prototype.toJSON=function(a){return{type:"Fog",color:this.color.getHex(),
 near:this.near,far:this.far}};pd.prototype=Object.assign(Object.create(z.prototype),{constructor:pd,copy:function(a,b){z.prototype.copy.call(this,a,b);null!==a.background&&(this.background=a.background.clone());null!==a.fog&&(this.fog=a.fog.clone());null!==a.overrideMaterial&&(this.overrideMaterial=a.overrideMaterial.clone());this.autoUpdate=a.autoUpdate;this.matrixAutoUpdate=a.matrixAutoUpdate;return this},toJSON:function(a){var b=z.prototype.toJSON.call(this,a);null!==this.background&&(b.object.background=
 this.background.toJSON(a));null!==this.fog&&(b.object.fog=this.fog.toJSON());return b}});ae.prototype=Object.assign(Object.create(z.prototype),{constructor:ae,isLensFlare:!0,copy:function(a){z.prototype.copy.call(this,a);this.positionScreen.copy(a.positionScreen);this.customUpdateCallback=a.customUpdateCallback;for(var b=0,c=a.lensFlares.length;b<c;b++)this.lensFlares.push(a.lensFlares[b]);return this},add:function(a,b,c,d,e,f){void 0===b&&(b=-1);void 0===c&&(c=0);void 0===f&&(f=1);void 0===e&&(e=
 new E(16777215));void 0===d&&(d=1);c=Math.min(c,Math.max(0,c));this.lensFlares.push({texture:a,size:b,distance:c,x:0,y:0,z:0,scale:1,rotation:0,opacity:f,color:e,blending:d})},updateLensFlares:function(){var a,b=this.lensFlares.length,c=2*-this.positionScreen.x,d=2*-this.positionScreen.y;for(a=0;a<b;a++){var e=this.lensFlares[a];e.x=this.positionScreen.x+c*e.distance;e.y=this.positionScreen.y+d*e.distance;e.wantedRotation=e.x*Math.PI*.25;e.rotation+=.25*(e.wantedRotation-e.rotation)}}});Za.prototype=
-Object.create(N.prototype);Za.prototype.constructor=Za;Za.prototype.isSpriteMaterial=!0;Za.prototype.copy=function(a){N.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.rotation=a.rotation;return this};xc.prototype=Object.assign(Object.create(z.prototype),{constructor:xc,isSprite:!0,raycast:function(){var a=new p,b=new p,c=new p;return function(d,e){b.setFromMatrixPosition(this.matrixWorld);d.ray.closestPointToPoint(b,a);c.setFromMatrixScale(this.matrixWorld);var f=c.x*c.y/
+Object.create(N.prototype);Za.prototype.constructor=Za;Za.prototype.isSpriteMaterial=!0;Za.prototype.copy=function(a){N.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.rotation=a.rotation;return this};xc.prototype=Object.assign(Object.create(z.prototype),{constructor:xc,isSprite:!0,raycast:function(){var a=new n,b=new n,c=new n;return function(d,e){b.setFromMatrixPosition(this.matrixWorld);d.ray.closestPointToPoint(b,a);c.setFromMatrixScale(this.matrixWorld);var f=c.x*c.y/
 4;b.distanceToSquared(a)>f||(f=d.ray.origin.distanceTo(a),f<d.near||f>d.far||e.push({distance:f,point:a.clone(),face:null,object:this}))}}(),clone:function(){return(new this.constructor(this.material)).copy(this)}});yc.prototype=Object.assign(Object.create(z.prototype),{constructor:yc,copy:function(a){z.prototype.copy.call(this,a,!1);a=a.levels;for(var b=0,c=a.length;b<c;b++){var d=a[b];this.addLevel(d.object.clone(),d.distance)}return this},addLevel:function(a,b){void 0===b&&(b=0);b=Math.abs(b);
-for(var c=this.levels,d=0;d<c.length&&!(b<c[d].distance);d++);c.splice(d,0,{distance:b,object:a});this.add(a)},getObjectForDistance:function(a){for(var b=this.levels,c=1,d=b.length;c<d&&!(a<b[c].distance);c++);return b[c-1].object},raycast:function(){var a=new p;return function(b,c){a.setFromMatrixPosition(this.matrixWorld);var d=b.ray.origin.distanceTo(a);this.getObjectForDistance(d).raycast(b,c)}}(),update:function(){var a=new p,b=new p;return function(c){var d=this.levels;if(1<d.length){a.setFromMatrixPosition(c.matrixWorld);
+for(var c=this.levels,d=0;d<c.length&&!(b<c[d].distance);d++);c.splice(d,0,{distance:b,object:a});this.add(a)},getObjectForDistance:function(a){for(var b=this.levels,c=1,d=b.length;c<d&&!(a<b[c].distance);c++);return b[c-1].object},raycast:function(){var a=new n;return function(b,c){a.setFromMatrixPosition(this.matrixWorld);var d=b.ray.origin.distanceTo(a);this.getObjectForDistance(d).raycast(b,c)}}(),update:function(){var a=new n,b=new n;return function(c){var d=this.levels;if(1<d.length){a.setFromMatrixPosition(c.matrixWorld);
 b.setFromMatrixPosition(this.matrixWorld);c=a.distanceTo(b);d[0].object.visible=!0;for(var e=1,f=d.length;e<f;e++)if(c>=d[e].distance)d[e-1].object.visible=!1,d[e].object.visible=!0;else break;for(;e<f;e++)d[e].object.visible=!1}}}(),toJSON:function(a){a=z.prototype.toJSON.call(this,a);a.object.levels=[];for(var b=this.levels,c=0,d=b.length;c<d;c++){var e=b[c];a.object.levels.push({object:e.object.uuid,distance:e.distance})}return a}});Object.assign(zc.prototype,{calculateInverses:function(){this.boneInverses=
 [];for(var a=0,b=this.bones.length;a<b;a++){var c=new J;this.bones[a]&&c.getInverse(this.bones[a].matrixWorld);this.boneInverses.push(c)}},pose:function(){var a,b;var c=0;for(b=this.bones.length;c<b;c++)(a=this.bones[c])&&a.matrixWorld.getInverse(this.boneInverses[c]);c=0;for(b=this.bones.length;c<b;c++)if(a=this.bones[c])a.parent&&a.parent.isBone?(a.matrix.getInverse(a.parent.matrixWorld),a.matrix.multiply(a.matrixWorld)):a.matrix.copy(a.matrixWorld),a.matrix.decompose(a.position,a.quaternion,a.scale)},
 update:function(){var a=new J,b=new J;return function(){for(var c=this.bones,d=this.boneInverses,e=this.boneMatrices,f=this.boneTexture,g=0,h=c.length;g<h;g++)a.multiplyMatrices(c[g]?c[g].matrixWorld:b,d[g]),a.toArray(e,16*g);void 0!==f&&(f.needsUpdate=!0)}}(),clone:function(){return new zc(this.bones,this.boneInverses)}});qd.prototype=Object.assign(Object.create(z.prototype),{constructor:qd,isBone:!0});rd.prototype=Object.assign(Object.create(na.prototype),{constructor:rd,isSkinnedMesh:!0,initBones:function(){var a=
@@ -592,37 +592,37 @@ update:function(){var a=new J,b=new J;return function(){for(var c=this.bones,d=t
 void 0===b&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),b=this.matrixWorld);this.bindMatrix.copy(b);this.bindMatrixInverse.getInverse(b)},pose:function(){this.skeleton.pose()},normalizeSkinWeights:function(){var a;if(this.geometry&&this.geometry.isGeometry)for(a=0;a<this.geometry.skinWeights.length;a++){var b=this.geometry.skinWeights[a];var c=1/b.lengthManhattan();Infinity!==c?b.multiplyScalar(c):b.set(1,0,0,0)}else if(this.geometry&&this.geometry.isBufferGeometry){var b=new ca,
 d=this.geometry.attributes.skinWeight;for(a=0;a<d.count;a++)b.x=d.getX(a),b.y=d.getY(a),b.z=d.getZ(a),b.w=d.getW(a),c=1/b.lengthManhattan(),Infinity!==c?b.multiplyScalar(c):b.set(1,0,0,0),d.setXYZW(a,b.x,b.y,b.z,b.w)}},updateMatrixWorld:function(a){na.prototype.updateMatrixWorld.call(this,a);"attached"===this.bindMode?this.bindMatrixInverse.getInverse(this.matrixWorld):"detached"===this.bindMode?this.bindMatrixInverse.getInverse(this.bindMatrix):console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+
 this.bindMode)},clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});fa.prototype=Object.create(N.prototype);fa.prototype.constructor=fa;fa.prototype.isLineBasicMaterial=!0;fa.prototype.copy=function(a){N.prototype.copy.call(this,a);this.color.copy(a.color);this.linewidth=a.linewidth;this.linecap=a.linecap;this.linejoin=a.linejoin;return this};ra.prototype=Object.assign(Object.create(z.prototype),{constructor:ra,isLine:!0,raycast:function(){var a=new J,b=new hb,
-c=new Ba;return function(d,e){var f=d.linePrecision,f=f*f,g=this.geometry,h=this.matrixWorld;null===g.boundingSphere&&g.computeBoundingSphere();c.copy(g.boundingSphere);c.applyMatrix4(h);if(!1!==d.ray.intersectsSphere(c)){a.getInverse(h);b.copy(d.ray).applyMatrix4(a);var k=new p,l=new p,h=new p,n=new p,q=this&&this.isLineSegments?2:1;if(g.isBufferGeometry){var m=g.index;var t=g.attributes.position.array;if(null!==m)for(var u=m.array,g=0,w=u.length-1;g<w;g+=q)m=u[g+1],k.fromArray(t,3*u[g]),l.fromArray(t,
-3*m),m=b.distanceSqToSegment(k,l,n,h),m>f||(n.applyMatrix4(this.matrixWorld),m=d.ray.origin.distanceTo(n),m<d.near||m>d.far||e.push({distance:m,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}));else for(g=0,w=t.length/3-1;g<w;g+=q)k.fromArray(t,3*g),l.fromArray(t,3*g+3),m=b.distanceSqToSegment(k,l,n,h),m>f||(n.applyMatrix4(this.matrixWorld),m=d.ray.origin.distanceTo(n),m<d.near||m>d.far||e.push({distance:m,point:h.clone().applyMatrix4(this.matrixWorld),
-index:g,face:null,faceIndex:null,object:this}))}else if(g.isGeometry)for(k=g.vertices,l=k.length,g=0;g<l-1;g+=q)m=b.distanceSqToSegment(k[g],k[g+1],n,h),m>f||(n.applyMatrix4(this.matrixWorld),m=d.ray.origin.distanceTo(n),m<d.near||m>d.far||e.push({distance:m,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});S.prototype=Object.assign(Object.create(ra.prototype),
+c=new Ba;return function(d,e){var f=d.linePrecision,f=f*f,g=this.geometry,h=this.matrixWorld;null===g.boundingSphere&&g.computeBoundingSphere();c.copy(g.boundingSphere);c.applyMatrix4(h);if(!1!==d.ray.intersectsSphere(c)){a.getInverse(h);b.copy(d.ray).applyMatrix4(a);var k=new n,l=new n,h=new n,p=new n,m=this&&this.isLineSegments?2:1;if(g.isBufferGeometry){var t=g.index;var r=g.attributes.position.array;if(null!==t)for(var v=t.array,g=0,w=v.length-1;g<w;g+=m)t=v[g+1],k.fromArray(r,3*v[g]),l.fromArray(r,
+3*t),t=b.distanceSqToSegment(k,l,p,h),t>f||(p.applyMatrix4(this.matrixWorld),t=d.ray.origin.distanceTo(p),t<d.near||t>d.far||e.push({distance:t,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}));else for(g=0,w=r.length/3-1;g<w;g+=m)k.fromArray(r,3*g),l.fromArray(r,3*g+3),t=b.distanceSqToSegment(k,l,p,h),t>f||(p.applyMatrix4(this.matrixWorld),t=d.ray.origin.distanceTo(p),t<d.near||t>d.far||e.push({distance:t,point:h.clone().applyMatrix4(this.matrixWorld),
+index:g,face:null,faceIndex:null,object:this}))}else if(g.isGeometry)for(k=g.vertices,l=k.length,g=0;g<l-1;g+=m)t=b.distanceSqToSegment(k[g],k[g+1],p,h),t>f||(p.applyMatrix4(this.matrixWorld),t=d.ray.origin.distanceTo(p),t<d.near||t>d.far||e.push({distance:t,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});S.prototype=Object.assign(Object.create(ra.prototype),
 {constructor:S,isLineSegments:!0});sd.prototype=Object.assign(Object.create(ra.prototype),{constructor:sd,isLineLoop:!0});Da.prototype=Object.create(N.prototype);Da.prototype.constructor=Da;Da.prototype.isPointsMaterial=!0;Da.prototype.copy=function(a){N.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.size=a.size;this.sizeAttenuation=a.sizeAttenuation;return this};Jb.prototype=Object.assign(Object.create(z.prototype),{constructor:Jb,isPoints:!0,raycast:function(){var a=new J,
-b=new hb,c=new Ba;return function(d,e){function f(a,c){var f=b.distanceSqToPoint(a);if(f<n){a=b.closestPointToPoint(a);a.applyMatrix4(k);var h=d.ray.origin.distanceTo(a);h<d.near||h>d.far||e.push({distance:h,distanceToRay:Math.sqrt(f),point:a.clone(),index:c,face:null,object:g})}}var g=this,h=this.geometry,k=this.matrixWorld,l=d.params.Points.threshold;null===h.boundingSphere&&h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(k);c.radius+=l;if(!1!==d.ray.intersectsSphere(c)){a.getInverse(k);
-b.copy(d.ray).applyMatrix4(a);var l=l/((this.scale.x+this.scale.y+this.scale.z)/3),n=l*l,l=new p;if(h.isBufferGeometry){var m=h.index,h=h.attributes.position.array;if(null!==m)for(var r=m.array,m=0,t=r.length;m<t;m++){var u=r[m];l.fromArray(h,3*u);f(l,u)}else for(m=0,r=h.length/3;m<r;m++)l.fromArray(h,3*m),f(l,m)}else for(l=h.vertices,m=0,r=l.length;m<r;m++)f(l[m],m)}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});Ac.prototype=Object.assign(Object.create(z.prototype),
+b=new hb,c=new Ba;return function(d,e){function f(a,c){var f=b.distanceSqToPoint(a);if(f<p){a=b.closestPointToPoint(a);a.applyMatrix4(k);var h=d.ray.origin.distanceTo(a);h<d.near||h>d.far||e.push({distance:h,distanceToRay:Math.sqrt(f),point:a.clone(),index:c,face:null,object:g})}}var g=this,h=this.geometry,k=this.matrixWorld,l=d.params.Points.threshold;null===h.boundingSphere&&h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(k);c.radius+=l;if(!1!==d.ray.intersectsSphere(c)){a.getInverse(k);
+b.copy(d.ray).applyMatrix4(a);var l=l/((this.scale.x+this.scale.y+this.scale.z)/3),p=l*l,l=new n;if(h.isBufferGeometry){var m=h.index,h=h.attributes.position.array;if(null!==m)for(var t=m.array,m=0,r=t.length;m<r;m++){var v=t[m];l.fromArray(h,3*v);f(l,v)}else for(m=0,t=h.length/3;m<t;m++)l.fromArray(h,3*m),f(l,m)}else for(l=h.vertices,m=0,t=l.length;m<t;m++)f(l[m],m)}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});Ac.prototype=Object.assign(Object.create(z.prototype),
 {constructor:Ac});td.prototype=Object.create(V.prototype);td.prototype.constructor=td;Kb.prototype=Object.create(V.prototype);Kb.prototype.constructor=Kb;Kb.prototype.isCompressedTexture=!0;Bc.prototype=Object.create(V.prototype);Bc.prototype.constructor=Bc;Bc.prototype.isDepthTexture=!0;Lb.prototype=Object.create(F.prototype);Lb.prototype.constructor=Lb;Cc.prototype=Object.create(I.prototype);Cc.prototype.constructor=Cc;Mb.prototype=Object.create(F.prototype);Mb.prototype.constructor=Mb;Dc.prototype=
 Object.create(I.prototype);Dc.prototype.constructor=Dc;va.prototype=Object.create(F.prototype);va.prototype.constructor=va;Ec.prototype=Object.create(I.prototype);Ec.prototype.constructor=Ec;Nb.prototype=Object.create(va.prototype);Nb.prototype.constructor=Nb;Fc.prototype=Object.create(I.prototype);Fc.prototype.constructor=Fc;jb.prototype=Object.create(va.prototype);jb.prototype.constructor=jb;Gc.prototype=Object.create(I.prototype);Gc.prototype.constructor=Gc;Ob.prototype=Object.create(va.prototype);
 Ob.prototype.constructor=Ob;Hc.prototype=Object.create(I.prototype);Hc.prototype.constructor=Hc;Pb.prototype=Object.create(va.prototype);Pb.prototype.constructor=Pb;Ic.prototype=Object.create(I.prototype);Ic.prototype.constructor=Ic;Qb.prototype=Object.create(F.prototype);Qb.prototype.constructor=Qb;Jc.prototype=Object.create(I.prototype);Jc.prototype.constructor=Jc;Rb.prototype=Object.create(F.prototype);Rb.prototype.constructor=Rb;Kc.prototype=Object.create(I.prototype);Kc.prototype.constructor=
 Kc;Sb.prototype=Object.create(F.prototype);Sb.prototype.constructor=Sb;var Ha={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;e<b;d=e++)c+=a[d].x*a[e].y-a[e].x*a[d].y;return.5*c},triangulate:function(){return function(a,b){var c=a.length;if(3>c)return null;var d=[],e=[],f=[],g;if(0<Ha.area(a))for(g=0;g<c;g++)e[g]=g;else for(g=0;g<c;g++)e[g]=c-1-g;var h=2*c;for(g=c-1;2<c;){if(0>=h--){console.warn("THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()");break}var k=g;c<=k&&(k=0);g=k+
-1;c<=g&&(g=0);var l=g+1;c<=l&&(l=0);a:{var n;var m=a[e[k]].x;var r=a[e[k]].y;var p=a[e[g]].x;var u=a[e[g]].y;var w=a[e[l]].x;var v=a[e[l]].y;if(0>=(p-m)*(v-r)-(u-r)*(w-m))var A=!1;else{var y=w-p;var x=v-u;var B=m-w;var z=r-v;var D=p-m;A=u-r;for(n=0;n<c;n++){var E=a[e[n]].x;var F=a[e[n]].y;if(!(E===m&&F===r||E===p&&F===u||E===w&&F===v)){var J=E-m;var I=F-r;var O=E-p;var N=F-u;E-=w;F-=v;N=y*N-x*O;I=D*I-A*J;E=B*F-z*E;if(N>=-Number.EPSILON&&E>=-Number.EPSILON&&I>=-Number.EPSILON){A=!1;break a}}}A=!0}}if(A){d.push([a[e[k]],
-a[e[g]],a[e[l]]]);f.push([e[k],e[g],e[l]]);k=g;for(l=g+1;l<c;k++,l++)e[k]=e[l];c--;h=2*c}}return b?f:d}}(),triangulateShape:function(a,b){function c(a){var b=a.length;2<b&&a[b-1].equals(a[0])&&a.pop()}function d(a,b,c){return a.x!==b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function e(a,b,c,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-c.x,l=e.y-c.y,n=a.x-c.x,m=a.y-c.y,q=h*k-g*l,p=h*n-g*m;if(Math.abs(q)>Number.EPSILON){if(0<q){if(0>p||p>q)return[];k=l*n-k*
-m;if(0>k||k>q)return[]}else{if(0<p||p<q)return[];k=l*n-k*m;if(0<k||k<q)return[]}if(0===k)return!f||0!==p&&p!==q?[a]:[];if(k===q)return!f||0!==p&&p!==q?[b]:[];if(0===p)return[c];if(p===q)return[e];f=k/q;return[{x:a.x+f*g,y:a.y+f*h}]}if(0!==p||l*n!==k*m)return[];h=0===g&&0===h;k=0===k&&0===l;if(h&&k)return a.x!==c.x||a.y!==c.y?[]:[a];if(h)return d(c,e,a)?[a]:[];if(k)return d(a,b,c)?[c]:[];0!==g?(a.x<b.x?(g=a,k=a.x,h=b,a=b.x):(g=b,k=b.x,h=a,a=a.x),c.x<e.x?(b=c,q=c.x,l=e,c=e.x):(b=e,q=e.x,l=c,c=c.x)):
+1;c<=g&&(g=0);var l=g+1;c<=l&&(l=0);a:{var m;var q=a[e[k]].x;var t=a[e[k]].y;var n=a[e[g]].x;var v=a[e[g]].y;var w=a[e[l]].x;var u=a[e[l]].y;if(0>=(n-q)*(u-t)-(v-t)*(w-q))var A=!1;else{var y=w-n;var x=u-v;var B=q-w;var z=t-u;var D=n-q;A=v-t;for(m=0;m<c;m++){var E=a[e[m]].x;var F=a[e[m]].y;if(!(E===q&&F===t||E===n&&F===v||E===w&&F===u)){var J=E-q;var I=F-t;var O=E-n;var N=F-v;E-=w;F-=u;N=y*N-x*O;I=D*I-A*J;E=B*F-z*E;if(N>=-Number.EPSILON&&E>=-Number.EPSILON&&I>=-Number.EPSILON){A=!1;break a}}}A=!0}}if(A){d.push([a[e[k]],
+a[e[g]],a[e[l]]]);f.push([e[k],e[g],e[l]]);k=g;for(l=g+1;l<c;k++,l++)e[k]=e[l];c--;h=2*c}}return b?f:d}}(),triangulateShape:function(a,b){function c(a){var b=a.length;2<b&&a[b-1].equals(a[0])&&a.pop()}function d(a,b,c){return a.x!==b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function e(a,b,c,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-c.x,l=e.y-c.y,m=a.x-c.x,p=a.y-c.y,q=h*k-g*l,n=h*m-g*p;if(Math.abs(q)>Number.EPSILON){if(0<q){if(0>n||n>q)return[];k=l*m-k*
+p;if(0>k||k>q)return[]}else{if(0<n||n<q)return[];k=l*m-k*p;if(0<k||k<q)return[]}if(0===k)return!f||0!==n&&n!==q?[a]:[];if(k===q)return!f||0!==n&&n!==q?[b]:[];if(0===n)return[c];if(n===q)return[e];f=k/q;return[{x:a.x+f*g,y:a.y+f*h}]}if(0!==n||l*m!==k*p)return[];h=0===g&&0===h;k=0===k&&0===l;if(h&&k)return a.x!==c.x||a.y!==c.y?[]:[a];if(h)return d(c,e,a)?[a]:[];if(k)return d(a,b,c)?[c]:[];0!==g?(a.x<b.x?(g=a,k=a.x,h=b,a=b.x):(g=b,k=b.x,h=a,a=a.x),c.x<e.x?(b=c,q=c.x,l=e,c=e.x):(b=e,q=e.x,l=c,c=c.x)):
 (a.y<b.y?(g=a,k=a.y,h=b,a=b.y):(g=b,k=b.y,h=a,a=a.y),c.y<e.y?(b=c,q=c.y,l=e,c=e.y):(b=e,q=e.y,l=c,c=c.y));return k<=q?a<q?[]:a===q?f?[]:[b]:a<=c?[b,h]:[b,l]:k>c?[]:k===c?f?[]:[g]:a<=c?[g,h]:[g,l]}function f(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return Math.abs(a)>Number.EPSILON?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}c(a);b.forEach(c);var g,h={},k=a.concat();var l=0;for(g=b.length;l<g;l++)Array.prototype.push.apply(k,b[l]);l=0;for(g=k.length;l<
-g;l++){var n=k[l].x+":"+k[l].y;void 0!==h[n]&&console.warn("THREE.ShapeUtils: Duplicate point",n,l);h[n]=l}l=function(a,b){function c(a,b){var c=h.length-1,d=a-1;0>d&&(d=c);var e=a+1;e>c&&(e=0);c=f(h[a],h[d],h[e],D[b]);if(!c)return!1;c=D.length-1;d=b-1;0>d&&(d=c);e=b+1;e>c&&(e=0);return(c=f(D[b],D[d],D[e],h[a]))?!0:!1}function d(a,b){var c;for(c=0;c<h.length;c++){var d=c+1;d%=h.length;d=e(a,b,h[c],h[d],!0);if(0<d.length)return!0}return!1}function g(a,c){var d,f;for(d=0;d<k.length;d++){var g=b[k[d]];
-for(f=0;f<g.length;f++){var h=f+1;h%=g.length;h=e(a,c,g[f],g[h],!0);if(0<h.length)return!0}}return!1}var h=a.concat(),k=[],l,n;a=[];var m,q=0;for(l=b.length;q<l;q++)k.push(q);var p=0;for(var r=2*k.length;0<k.length;){r--;if(0>r){console.log('THREE.ShapeUtils: Infinite Loop! Holes left:" + indepHoles.length + ", Probably Hole outside Shape!');break}for(n=p;n<h.length;n++){var x=h[n];l=-1;for(q=0;q<k.length;q++){var z=k[q];var E=x.x+":"+x.y+":"+z;if(void 0===a[E]){var D=b[z];for(m=0;m<D.length;m++)if(z=
-D[m],c(n,m)&&!d(x,z)&&!g(x,z)){l=m;k.splice(q,1);p=h.slice(0,n+1);z=h.slice(n);m=D.slice(l);var F=D.slice(0,l+1);h=p.concat(m).concat(F).concat(z);p=n;break}if(0<=l)break;a[E]=!0}}if(0<=l)break}}return h}(a,b);k=Ha.triangulate(l,!1);l=0;for(g=k.length;l<g;l++)for(b=k[l],a=0;3>a;a++)n=b[a].x+":"+b[a].y,n=h[n],void 0!==n&&(b[a]=n);return k.concat()},isClockWise:function(a){return 0>Ha.area(a)}};$a.prototype=Object.create(I.prototype);$a.prototype.constructor=$a;Ga.prototype=Object.create(F.prototype);
-Ga.prototype.constructor=Ga;Ga.prototype.getArrays=function(){var a=this.getAttribute("position"),a=a?Array.prototype.slice.call(a.array):[],b=this.getAttribute("uv"),b=b?Array.prototype.slice.call(b.array):[],c=this.index,c=c?Array.prototype.slice.call(c.array):[];return{position:a,uv:b,index:c}};Ga.prototype.addShapeList=function(a,b){var c=a.length;b.arrays=this.getArrays();for(var d=0;d<c;d++)this.addShape(a[d],b);this.setIndex(b.arrays.index);this.addAttribute("position",new x(b.arrays.position,
-3));this.addAttribute("uv",new x(b.arrays.uv,2))};Ga.prototype.addShape=function(a,b){function c(a,b,c){b||console.error("THREE.ExtrudeGeometry: vec does not exist");return b.clone().multiplyScalar(c).add(a)}function d(a,b,c){var d=a.x-b.x;var e=a.y-b.y;var f=c.x-a.x;var g=c.y-a.y,h=d*d+e*e;if(Math.abs(d*g-e*f)>Number.EPSILON){var k=Math.sqrt(h),l=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;g=((c.x-g/l-h)*g-(c.y+f/l-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new D(f,d);e=Math.sqrt(e/
-2)}else a=!1,d>Number.EPSILON?f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new D(f/e,d/e)}function e(a,b){for(G=a.length;0<=--G;){var c=G;var d=G-1;0>d&&(d=a.length-1);var e,f=z+2*v;for(e=0;e<f;e++){var g=W*e,l=W*(e+1),m=b+d+g,q=b+d+l,l=b+c+l;h(b+c+g);h(m);h(l);h(m);h(q);h(l);g=n.length/3;g=F.generateSideWallUV(R,n,g-6,g-3,g-2,g-1);k(g[0]);k(g[1]);k(g[3]);k(g[1]);k(g[2]);k(g[3])}}}
-function f(a,b,c){t.push(a);t.push(b);t.push(c)}function g(a,b,c){h(a);h(b);h(c);a=n.length/3;a=F.generateTopUV(R,n,a-3,a-2,a-1);k(a[0]);k(a[1]);k(a[2])}function h(a){m.push(n.length/3);n.push(t[3*a+0]);n.push(t[3*a+1]);n.push(t[3*a+2])}function k(a){r.push(a.x);r.push(a.y)}var l=b.arrays?b.arrays:this.getArrays(),n=l.position,m=l.index,r=l.uv,t=[],l=void 0!==b.amount?b.amount:100,u=void 0!==b.bevelThickness?b.bevelThickness:6,w=void 0!==b.bevelSize?b.bevelSize:u-2,v=void 0!==b.bevelSegments?b.bevelSegments:
-3,A=void 0!==b.bevelEnabled?b.bevelEnabled:!0,y=void 0!==b.curveSegments?b.curveSegments:12,z=void 0!==b.steps?b.steps:1,B=b.extrudePath,E=!1,F=void 0!==b.UVGenerator?b.UVGenerator:$a.WorldUVGenerator;if(B){var I=B.getSpacedPoints(z);E=!0;A=!1;var J=void 0!==b.frames?b.frames:B.computeFrenetFrames(z,!1);var N=new p;var O=new p;var Q=new p}A||(w=u=v=0);var P,R=this,y=a.extractPoints(y);a=y.shape;var K=y.holes;if(!Ha.isClockWise(a)){a=a.reverse();var M=0;for(P=K.length;M<P;M++){var U=K[M];Ha.isClockWise(U)&&
-(K[M]=U.reverse())}}var Y=Ha.triangulateShape(a,K),V=a;M=0;for(P=K.length;M<P;M++)U=K[M],a=a.concat(U);var X,W=a.length,S,ca=Y.length,y=[],G=0;var aa=V.length;var T=aa-1;for(X=G+1;G<aa;G++,T++,X++)T===aa&&(T=0),X===aa&&(X=0),y[G]=d(V[G],V[T],V[X]);var B=[],fa=y.concat();M=0;for(P=K.length;M<P;M++){U=K[M];var ba=[];G=0;aa=U.length;T=aa-1;for(X=G+1;G<aa;G++,T++,X++)T===aa&&(T=0),X===aa&&(X=0),ba[G]=d(U[G],U[T],U[X]);B.push(ba);fa=fa.concat(ba)}for(T=0;T<v;T++){aa=T/v;var da=u*Math.cos(aa*Math.PI/2);
+g;l++){var m=k[l].x+":"+k[l].y;void 0!==h[m]&&console.warn("THREE.ShapeUtils: Duplicate point",m,l);h[m]=l}l=function(a,b){function c(a,b){var c=h.length-1,d=a-1;0>d&&(d=c);var e=a+1;e>c&&(e=0);c=f(h[a],h[d],h[e],D[b]);if(!c)return!1;c=D.length-1;d=b-1;0>d&&(d=c);e=b+1;e>c&&(e=0);return(c=f(D[b],D[d],D[e],h[a]))?!0:!1}function d(a,b){var c;for(c=0;c<h.length;c++){var d=c+1;d%=h.length;d=e(a,b,h[c],h[d],!0);if(0<d.length)return!0}return!1}function g(a,c){var d,f;for(d=0;d<k.length;d++){var g=b[k[d]];
+for(f=0;f<g.length;f++){var h=f+1;h%=g.length;h=e(a,c,g[f],g[h],!0);if(0<h.length)return!0}}return!1}var h=a.concat(),k=[],l,m;a=[];var p,q=0;for(l=b.length;q<l;q++)k.push(q);var n=0;for(var t=2*k.length;0<k.length;){t--;if(0>t){console.log('THREE.ShapeUtils: Infinite Loop! Holes left:" + indepHoles.length + ", Probably Hole outside Shape!');break}for(m=n;m<h.length;m++){var x=h[m];l=-1;for(q=0;q<k.length;q++){var z=k[q];var E=x.x+":"+x.y+":"+z;if(void 0===a[E]){var D=b[z];for(p=0;p<D.length;p++)if(z=
+D[p],c(m,p)&&!d(x,z)&&!g(x,z)){l=p;k.splice(q,1);n=h.slice(0,m+1);z=h.slice(m);p=D.slice(l);var F=D.slice(0,l+1);h=n.concat(p).concat(F).concat(z);n=m;break}if(0<=l)break;a[E]=!0}}if(0<=l)break}}return h}(a,b);k=Ha.triangulate(l,!1);l=0;for(g=k.length;l<g;l++)for(b=k[l],a=0;3>a;a++)m=b[a].x+":"+b[a].y,m=h[m],void 0!==m&&(b[a]=m);return k.concat()},isClockWise:function(a){return 0>Ha.area(a)}};$a.prototype=Object.create(I.prototype);$a.prototype.constructor=$a;Ea.prototype=Object.create(F.prototype);
+Ea.prototype.constructor=Ea;Ea.prototype.getArrays=function(){var a=this.getAttribute("position"),a=a?Array.prototype.slice.call(a.array):[],b=this.getAttribute("uv"),b=b?Array.prototype.slice.call(b.array):[],c=this.index,c=c?Array.prototype.slice.call(c.array):[];return{position:a,uv:b,index:c}};Ea.prototype.addShapeList=function(a,b){var c=a.length;b.arrays=this.getArrays();for(var d=0;d<c;d++)this.addShape(a[d],b);this.setIndex(b.arrays.index);this.addAttribute("position",new x(b.arrays.position,
+3));this.addAttribute("uv",new x(b.arrays.uv,2))};Ea.prototype.addShape=function(a,b){function c(a,b,c){b||console.error("THREE.ExtrudeGeometry: vec does not exist");return b.clone().multiplyScalar(c).add(a)}function d(a,b,c){var d=a.x-b.x;var e=a.y-b.y;var f=c.x-a.x;var g=c.y-a.y,h=d*d+e*e;if(Math.abs(d*g-e*f)>Number.EPSILON){var k=Math.sqrt(h),l=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;g=((c.x-g/l-h)*g-(c.y+f/l-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new D(f,d);e=Math.sqrt(e/
+2)}else a=!1,d>Number.EPSILON?f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new D(f/e,d/e)}function e(a,b){for(G=a.length;0<=--G;){var c=G;var d=G-1;0>d&&(d=a.length-1);var e,f=z+2*u;for(e=0;e<f;e++){var g=W*e,l=W*(e+1),p=b+d+g,q=b+d+l,l=b+c+l;h(b+c+g);h(p);h(l);h(p);h(q);h(l);g=m.length/3;g=F.generateSideWallUV(R,m,g-6,g-3,g-2,g-1);k(g[0]);k(g[1]);k(g[3]);k(g[1]);k(g[2]);k(g[3])}}}
+function f(a,b,c){r.push(a);r.push(b);r.push(c)}function g(a,b,c){h(a);h(b);h(c);a=m.length/3;a=F.generateTopUV(R,m,a-3,a-2,a-1);k(a[0]);k(a[1]);k(a[2])}function h(a){q.push(m.length/3);m.push(r[3*a+0]);m.push(r[3*a+1]);m.push(r[3*a+2])}function k(a){t.push(a.x);t.push(a.y)}var l=b.arrays?b.arrays:this.getArrays(),m=l.position,q=l.index,t=l.uv,r=[],l=void 0!==b.amount?b.amount:100,v=void 0!==b.bevelThickness?b.bevelThickness:6,w=void 0!==b.bevelSize?b.bevelSize:v-2,u=void 0!==b.bevelSegments?b.bevelSegments:
+3,A=void 0!==b.bevelEnabled?b.bevelEnabled:!0,y=void 0!==b.curveSegments?b.curveSegments:12,z=void 0!==b.steps?b.steps:1,B=b.extrudePath,E=!1,F=void 0!==b.UVGenerator?b.UVGenerator:$a.WorldUVGenerator;if(B){var I=B.getSpacedPoints(z);E=!0;A=!1;var J=void 0!==b.frames?b.frames:B.computeFrenetFrames(z,!1);var N=new n;var O=new n;var Q=new n}A||(w=v=u=0);var P,R=this,y=a.extractPoints(y);a=y.shape;var K=y.holes;if(!Ha.isClockWise(a)){a=a.reverse();var M=0;for(P=K.length;M<P;M++){var U=K[M];Ha.isClockWise(U)&&
+(K[M]=U.reverse())}}var Y=Ha.triangulateShape(a,K),V=a;M=0;for(P=K.length;M<P;M++)U=K[M],a=a.concat(U);var X,W=a.length,S,ca=Y.length,y=[],G=0;var aa=V.length;var T=aa-1;for(X=G+1;G<aa;G++,T++,X++)T===aa&&(T=0),X===aa&&(X=0),y[G]=d(V[G],V[T],V[X]);var B=[],fa=y.concat();M=0;for(P=K.length;M<P;M++){U=K[M];var ba=[];G=0;aa=U.length;T=aa-1;for(X=G+1;G<aa;G++,T++,X++)T===aa&&(T=0),X===aa&&(X=0),ba[G]=d(U[G],U[T],U[X]);B.push(ba);fa=fa.concat(ba)}for(T=0;T<u;T++){aa=T/u;var da=v*Math.cos(aa*Math.PI/2);
 X=w*Math.sin(aa*Math.PI/2);G=0;for(aa=V.length;G<aa;G++){var ha=c(V[G],y[G],X);f(ha.x,ha.y,-da)}M=0;for(P=K.length;M<P;M++)for(U=K[M],ba=B[M],G=0,aa=U.length;G<aa;G++)ha=c(U[G],ba[G],X),f(ha.x,ha.y,-da)}X=w;for(G=0;G<W;G++)ha=A?c(a[G],fa[G],X):a[G],E?(O.copy(J.normals[0]).multiplyScalar(ha.x),N.copy(J.binormals[0]).multiplyScalar(ha.y),Q.copy(I[0]).add(O).add(N),f(Q.x,Q.y,Q.z)):f(ha.x,ha.y,0);for(aa=1;aa<=z;aa++)for(G=0;G<W;G++)ha=A?c(a[G],fa[G],X):a[G],E?(O.copy(J.normals[aa]).multiplyScalar(ha.x),
-N.copy(J.binormals[aa]).multiplyScalar(ha.y),Q.copy(I[aa]).add(O).add(N),f(Q.x,Q.y,Q.z)):f(ha.x,ha.y,l/z*aa);for(T=v-1;0<=T;T--){aa=T/v;da=u*Math.cos(aa*Math.PI/2);X=w*Math.sin(aa*Math.PI/2);G=0;for(aa=V.length;G<aa;G++)ha=c(V[G],y[G],X),f(ha.x,ha.y,l+da);M=0;for(P=K.length;M<P;M++)for(U=K[M],ba=B[M],G=0,aa=U.length;G<aa;G++)ha=c(U[G],ba[G],X),E?f(ha.x,ha.y+I[z-1].y,I[z-1].x+da):f(ha.x,ha.y,l+da)}(function(){var a=n.length/3;if(A){var c=0*W;for(G=0;G<ca;G++)S=Y[G],g(S[2]+c,S[1]+c,S[0]+c);c=W*(z+2*
-v);for(G=0;G<ca;G++)S=Y[G],g(S[0]+c,S[1]+c,S[2]+c)}else{for(G=0;G<ca;G++)S=Y[G],g(S[2],S[1],S[0]);for(G=0;G<ca;G++)S=Y[G],g(S[0]+W*z,S[1]+W*z,S[2]+W*z)}R.addGroup(a,n.length/3-a,void 0!==b.material?b.material:0)})();(function(){var a=n.length/3,c=0;e(V,c);c+=V.length;M=0;for(P=K.length;M<P;M++)U=K[M],e(U,c),c+=U.length;R.addGroup(a,n.length/3-a,void 0!==b.extrudeMaterial?b.extrudeMaterial:1)})();b.arrays||(this.setIndex(m),this.addAttribute("position",new x(n,3)),this.addAttribute("uv",new x(b.arrays.uv,
-2)))};$a.WorldUVGenerator={generateTopUV:function(a,b,c,d,e){a=b[3*d];d=b[3*d+1];var f=b[3*e];e=b[3*e+1];return[new D(b[3*c],b[3*c+1]),new D(a,d),new D(f,e)]},generateSideWallUV:function(a,b,c,d,e,f){a=b[3*c];var g=b[3*c+1];c=b[3*c+2];var h=b[3*d],k=b[3*d+1];d=b[3*d+2];var l=b[3*e],n=b[3*e+1];e=b[3*e+2];var m=b[3*f],p=b[3*f+1];b=b[3*f+2];return.01>Math.abs(g-k)?[new D(a,1-c),new D(h,1-d),new D(l,1-e),new D(m,1-b)]:[new D(g,1-c),new D(k,1-d),new D(n,1-e),new D(p,1-b)]}};Lc.prototype=Object.create(I.prototype);
-Lc.prototype.constructor=Lc;Tb.prototype=Object.create(Ga.prototype);Tb.prototype.constructor=Tb;Mc.prototype=Object.create(I.prototype);Mc.prototype.constructor=Mc;kb.prototype=Object.create(F.prototype);kb.prototype.constructor=kb;Nc.prototype=Object.create(I.prototype);Nc.prototype.constructor=Nc;Ub.prototype=Object.create(F.prototype);Ub.prototype.constructor=Ub;Oc.prototype=Object.create(I.prototype);Oc.prototype.constructor=Oc;Vb.prototype=Object.create(F.prototype);Vb.prototype.constructor=
+N.copy(J.binormals[aa]).multiplyScalar(ha.y),Q.copy(I[aa]).add(O).add(N),f(Q.x,Q.y,Q.z)):f(ha.x,ha.y,l/z*aa);for(T=u-1;0<=T;T--){aa=T/u;da=v*Math.cos(aa*Math.PI/2);X=w*Math.sin(aa*Math.PI/2);G=0;for(aa=V.length;G<aa;G++)ha=c(V[G],y[G],X),f(ha.x,ha.y,l+da);M=0;for(P=K.length;M<P;M++)for(U=K[M],ba=B[M],G=0,aa=U.length;G<aa;G++)ha=c(U[G],ba[G],X),E?f(ha.x,ha.y+I[z-1].y,I[z-1].x+da):f(ha.x,ha.y,l+da)}(function(){var a=m.length/3;if(A){var c=0*W;for(G=0;G<ca;G++)S=Y[G],g(S[2]+c,S[1]+c,S[0]+c);c=W*(z+2*
+u);for(G=0;G<ca;G++)S=Y[G],g(S[0]+c,S[1]+c,S[2]+c)}else{for(G=0;G<ca;G++)S=Y[G],g(S[2],S[1],S[0]);for(G=0;G<ca;G++)S=Y[G],g(S[0]+W*z,S[1]+W*z,S[2]+W*z)}R.addGroup(a,m.length/3-a,void 0!==b.material?b.material:0)})();(function(){var a=m.length/3,c=0;e(V,c);c+=V.length;M=0;for(P=K.length;M<P;M++)U=K[M],e(U,c),c+=U.length;R.addGroup(a,m.length/3-a,void 0!==b.extrudeMaterial?b.extrudeMaterial:1)})();b.arrays||(this.setIndex(q),this.addAttribute("position",new x(m,3)),this.addAttribute("uv",new x(b.arrays.uv,
+2)))};$a.WorldUVGenerator={generateTopUV:function(a,b,c,d,e){a=b[3*d];d=b[3*d+1];var f=b[3*e];e=b[3*e+1];return[new D(b[3*c],b[3*c+1]),new D(a,d),new D(f,e)]},generateSideWallUV:function(a,b,c,d,e,f){a=b[3*c];var g=b[3*c+1];c=b[3*c+2];var h=b[3*d],k=b[3*d+1];d=b[3*d+2];var l=b[3*e],m=b[3*e+1];e=b[3*e+2];var q=b[3*f],n=b[3*f+1];b=b[3*f+2];return.01>Math.abs(g-k)?[new D(a,1-c),new D(h,1-d),new D(l,1-e),new D(q,1-b)]:[new D(g,1-c),new D(k,1-d),new D(m,1-e),new D(n,1-b)]}};Lc.prototype=Object.create(I.prototype);
+Lc.prototype.constructor=Lc;Tb.prototype=Object.create(Ea.prototype);Tb.prototype.constructor=Tb;Mc.prototype=Object.create(I.prototype);Mc.prototype.constructor=Mc;kb.prototype=Object.create(F.prototype);kb.prototype.constructor=kb;Nc.prototype=Object.create(I.prototype);Nc.prototype.constructor=Nc;Ub.prototype=Object.create(F.prototype);Ub.prototype.constructor=Ub;Oc.prototype=Object.create(I.prototype);Oc.prototype.constructor=Oc;Vb.prototype=Object.create(F.prototype);Vb.prototype.constructor=
 Vb;Wb.prototype=Object.create(I.prototype);Wb.prototype.constructor=Wb;Xb.prototype=Object.create(F.prototype);Xb.prototype.constructor=Xb;Yb.prototype=Object.create(F.prototype);Yb.prototype.constructor=Yb;lb.prototype=Object.create(I.prototype);lb.prototype.constructor=lb;Ta.prototype=Object.create(F.prototype);Ta.prototype.constructor=Ta;Pc.prototype=Object.create(lb.prototype);Pc.prototype.constructor=Pc;Qc.prototype=Object.create(Ta.prototype);Qc.prototype.constructor=Qc;Rc.prototype=Object.create(I.prototype);
 Rc.prototype.constructor=Rc;Zb.prototype=Object.create(F.prototype);Zb.prototype.constructor=Zb;var La=Object.freeze({WireframeGeometry:Lb,ParametricGeometry:Cc,ParametricBufferGeometry:Mb,TetrahedronGeometry:Ec,TetrahedronBufferGeometry:Nb,OctahedronGeometry:Fc,OctahedronBufferGeometry:jb,IcosahedronGeometry:Gc,IcosahedronBufferGeometry:Ob,DodecahedronGeometry:Hc,DodecahedronBufferGeometry:Pb,PolyhedronGeometry:Dc,PolyhedronBufferGeometry:va,TubeGeometry:Ic,TubeBufferGeometry:Qb,TorusKnotGeometry:Jc,
-TorusKnotBufferGeometry:Rb,TorusGeometry:Kc,TorusBufferGeometry:Sb,TextGeometry:Lc,TextBufferGeometry:Tb,SphereGeometry:Mc,SphereBufferGeometry:kb,RingGeometry:Nc,RingBufferGeometry:Ub,PlaneGeometry:vc,PlaneBufferGeometry:gb,LatheGeometry:Oc,LatheBufferGeometry:Vb,ShapeGeometry:Wb,ShapeBufferGeometry:Xb,ExtrudeGeometry:$a,ExtrudeBufferGeometry:Ga,EdgesGeometry:Yb,ConeGeometry:Pc,ConeBufferGeometry:Qc,CylinderGeometry:lb,CylinderBufferGeometry:Ta,CircleGeometry:Rc,CircleBufferGeometry:Zb,BoxGeometry:Eb,
+TorusKnotBufferGeometry:Rb,TorusGeometry:Kc,TorusBufferGeometry:Sb,TextGeometry:Lc,TextBufferGeometry:Tb,SphereGeometry:Mc,SphereBufferGeometry:kb,RingGeometry:Nc,RingBufferGeometry:Ub,PlaneGeometry:vc,PlaneBufferGeometry:gb,LatheGeometry:Oc,LatheBufferGeometry:Vb,ShapeGeometry:Wb,ShapeBufferGeometry:Xb,ExtrudeGeometry:$a,ExtrudeBufferGeometry:Ea,EdgesGeometry:Yb,ConeGeometry:Pc,ConeBufferGeometry:Qc,CylinderGeometry:lb,CylinderBufferGeometry:Ta,CircleGeometry:Rc,CircleBufferGeometry:Zb,BoxGeometry:Eb,
 BoxBufferGeometry:fb});$b.prototype=Object.create(qa.prototype);$b.prototype.constructor=$b;$b.prototype.isShadowMaterial=!0;ac.prototype=Object.create(qa.prototype);ac.prototype.constructor=ac;ac.prototype.isRawShaderMaterial=!0;Oa.prototype=Object.create(N.prototype);Oa.prototype.constructor=Oa;Oa.prototype.isMeshStandardMaterial=!0;Oa.prototype.copy=function(a){N.prototype.copy.call(this,a);this.defines={STANDARD:""};this.color.copy(a.color);this.roughness=a.roughness;this.metalness=a.metalness;
 this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.roughnessMap=a.roughnessMap;
 this.metalnessMap=a.metalnessMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.envMapIntensity=a.envMapIntensity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};mb.prototype=Object.create(Oa.prototype);mb.prototype.constructor=mb;mb.prototype.isMeshPhysicalMaterial=
@@ -634,11 +634,11 @@ this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.mo
 a.emissiveIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};qb.prototype=Object.create(N.prototype);qb.prototype.constructor=
 qb;qb.prototype.isLineDashedMaterial=!0;qb.prototype.copy=function(a){N.prototype.copy.call(this,a);this.color.copy(a.color);this.linewidth=a.linewidth;this.scale=a.scale;this.dashSize=a.dashSize;this.gapSize=a.gapSize;return this};var rg=Object.freeze({ShadowMaterial:$b,SpriteMaterial:Za,RawShaderMaterial:ac,ShaderMaterial:qa,PointsMaterial:Da,MeshPhysicalMaterial:mb,MeshStandardMaterial:Oa,MeshPhongMaterial:Ia,MeshToonMaterial:nb,MeshNormalMaterial:ob,MeshLambertMaterial:pb,MeshDepthMaterial:Wa,
 MeshDistanceMaterial:Xa,MeshBasicMaterial:sa,LineDashedMaterial:qb,LineBasicMaterial:fa,Material:N}),gd={enabled:!1,files:{},add:function(a,b){!1!==this.enabled&&(this.files[a]=b)},get:function(a){if(!1!==this.enabled)return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files={}}},pa=new be;Object.assign(Ja.prototype,{load:function(a,b,c,d){void 0===a&&(a="");void 0!==this.path&&(a=this.path+a);var e=this,f=gd.get(a);if(void 0!==f)return e.manager.itemStart(a),setTimeout(function(){b&&
-b(f);e.manager.itemEnd(a)},0),f;var g=a.match(/^data:(.*?)(;base64)?,(.*)$/);if(g){var h=g[1],k=!!g[2],g=g[3],g=window.decodeURIComponent(g);k&&(g=window.atob(g));try{var l=(this.responseType||"").toLowerCase();switch(l){case "arraybuffer":case "blob":var n=new ArrayBuffer(g.length);for(var m=new Uint8Array(n),k=0;k<g.length;k++)m[k]=g.charCodeAt(k);"blob"===l&&(n=new Blob([n],{type:h}));break;case "document":n=(new DOMParser).parseFromString(g,h);break;case "json":n=JSON.parse(g);break;default:n=
-g}window.setTimeout(function(){b&&b(n);e.manager.itemEnd(a)},0)}catch(t){window.setTimeout(function(){d&&d(t);e.manager.itemEnd(a);e.manager.itemError(a)},0)}}else{var p=new XMLHttpRequest;p.open("GET",a,!0);p.addEventListener("load",function(c){var f=c.target.response;gd.add(a,f);200===this.status?(b&&b(f),e.manager.itemEnd(a)):0===this.status?(console.warn("THREE.FileLoader: HTTP Status 0 received."),b&&b(f),e.manager.itemEnd(a)):(d&&d(c),e.manager.itemEnd(a),e.manager.itemError(a))},!1);void 0!==
-c&&p.addEventListener("progress",function(a){c(a)},!1);p.addEventListener("error",function(b){d&&d(b);e.manager.itemEnd(a);e.manager.itemError(a)},!1);void 0!==this.responseType&&(p.responseType=this.responseType);void 0!==this.withCredentials&&(p.withCredentials=this.withCredentials);p.overrideMimeType&&p.overrideMimeType(void 0!==this.mimeType?this.mimeType:"text/plain");for(h in this.requestHeader)p.setRequestHeader(h,this.requestHeader[h]);p.send(null)}e.manager.itemStart(a);return p},setPath:function(a){this.path=
+b(f);e.manager.itemEnd(a)},0),f;var g=a.match(/^data:(.*?)(;base64)?,(.*)$/);if(g){var h=g[1],k=!!g[2],g=g[3],g=window.decodeURIComponent(g);k&&(g=window.atob(g));try{var l=(this.responseType||"").toLowerCase();switch(l){case "arraybuffer":case "blob":var m=new ArrayBuffer(g.length);for(var q=new Uint8Array(m),k=0;k<g.length;k++)q[k]=g.charCodeAt(k);"blob"===l&&(m=new Blob([m],{type:h}));break;case "document":m=(new DOMParser).parseFromString(g,h);break;case "json":m=JSON.parse(g);break;default:m=
+g}window.setTimeout(function(){b&&b(m);e.manager.itemEnd(a)},0)}catch(r){window.setTimeout(function(){d&&d(r);e.manager.itemEnd(a);e.manager.itemError(a)},0)}}else{var n=new XMLHttpRequest;n.open("GET",a,!0);n.addEventListener("load",function(c){var f=c.target.response;gd.add(a,f);200===this.status?(b&&b(f),e.manager.itemEnd(a)):0===this.status?(console.warn("THREE.FileLoader: HTTP Status 0 received."),b&&b(f),e.manager.itemEnd(a)):(d&&d(c),e.manager.itemEnd(a),e.manager.itemError(a))},!1);void 0!==
+c&&n.addEventListener("progress",function(a){c(a)},!1);n.addEventListener("error",function(b){d&&d(b);e.manager.itemEnd(a);e.manager.itemError(a)},!1);void 0!==this.responseType&&(n.responseType=this.responseType);void 0!==this.withCredentials&&(n.withCredentials=this.withCredentials);n.overrideMimeType&&n.overrideMimeType(void 0!==this.mimeType?this.mimeType:"text/plain");for(h in this.requestHeader)n.setRequestHeader(h,this.requestHeader[h]);n.send(null)}e.manager.itemStart(a);return n},setPath:function(a){this.path=
 a;return this},setResponseType:function(a){this.responseType=a;return this},setWithCredentials:function(a){this.withCredentials=a;return this},setMimeType:function(a){this.mimeType=a;return this},setRequestHeader:function(a){this.requestHeader=a;return this}});Object.assign(Te.prototype,{load:function(a,b,c,d){function e(e){l.load(a[e],function(a){a=g._parser(a,!0);h[e]={width:a.width,height:a.height,format:a.format,mipmaps:a.mipmaps};f+=1;6===f&&(1===a.mipmapCount&&(k.minFilter=1006),k.format=a.format,
-k.needsUpdate=!0,b&&b(k))},c,d)}var f,g=this,h=[],k=new Kb;k.image=h;var l=new Ja(this.manager);l.setPath(this.path);l.setResponseType("arraybuffer");if(Array.isArray(a))for(var n=f=0,m=a.length;n<m;++n)e(n);else l.load(a,function(a){a=g._parser(a,!0);if(a.isCubemap)for(var c=a.mipmaps.length/a.mipmapCount,d=0;d<c;d++){h[d]={mipmaps:[]};for(var e=0;e<a.mipmapCount;e++)h[d].mipmaps.push(a.mipmaps[d*a.mipmapCount+e]),h[d].format=a.format,h[d].width=a.width,h[d].height=a.height}else k.image.width=a.width,
+k.needsUpdate=!0,b&&b(k))},c,d)}var f,g=this,h=[],k=new Kb;k.image=h;var l=new Ja(this.manager);l.setPath(this.path);l.setResponseType("arraybuffer");if(Array.isArray(a))for(var m=f=0,q=a.length;m<q;++m)e(m);else l.load(a,function(a){a=g._parser(a,!0);if(a.isCubemap)for(var c=a.mipmaps.length/a.mipmapCount,d=0;d<c;d++){h[d]={mipmaps:[]};for(var e=0;e<a.mipmapCount;e++)h[d].mipmaps.push(a.mipmaps[d*a.mipmapCount+e]),h[d].format=a.format,h[d].width=a.width,h[d].height=a.height}else k.image.width=a.width,
 k.image.height=a.height,k.mipmaps=a.mipmaps;1===a.mipmapCount&&(k.minFilter=1006);k.format=a.format;k.needsUpdate=!0;b&&b(k)},c,d);return k},setPath:function(a){this.path=a;return this}});Object.assign(ce.prototype,{load:function(a,b,c,d){var e=this,f=new bb,g=new Ja(this.manager);g.setResponseType("arraybuffer");g.load(a,function(a){if(a=e._parser(a))void 0!==a.image?f.image=a.image:void 0!==a.data&&(f.image.width=a.width,f.image.height=a.height,f.image.data=a.data),f.wrapS=void 0!==a.wrapS?a.wrapS:
 1001,f.wrapT=void 0!==a.wrapT?a.wrapT:1001,f.magFilter=void 0!==a.magFilter?a.magFilter:1006,f.minFilter=void 0!==a.minFilter?a.minFilter:1008,f.anisotropy=void 0!==a.anisotropy?a.anisotropy:1,void 0!==a.format&&(f.format=a.format),void 0!==a.type&&(f.type=a.type),void 0!==a.mipmaps&&(f.mipmaps=a.mipmaps),1===a.mipmapCount&&(f.minFilter=1006),f.needsUpdate=!0,b&&b(f,a)},c,d);return f}});Object.assign(Sc.prototype,{load:function(a,b,c,d){void 0===a&&(a="");void 0!==this.path&&(a=this.path+a);var e=
 this,f=gd.get(a);if(void 0!==f)return e.manager.itemStart(a),setTimeout(function(){b&&b(f);e.manager.itemEnd(a)},0),f;c=document.createElementNS("http://www.w3.org/1999/xhtml","img");c.addEventListener("load",function(){gd.add(a,this);b&&b(this);e.manager.itemEnd(a)},!1);c.addEventListener("error",function(b){d&&d(b);e.manager.itemEnd(a);e.manager.itemError(a)},!1);"data:"!==a.substr(0,5)&&void 0!==this.crossOrigin&&(c.crossOrigin=this.crossOrigin);e.manager.itemStart(a);c.src=a;return c},setCrossOrigin:function(a){this.crossOrigin=
@@ -655,13 +655,13 @@ f=a[e++];while(void 0!==f)}else if(void 0!==g.toArray){do g=f[d],void 0!==g&&(b.
 d)break b}d=b.length;break c}if(a>=e)break a;else{f=b[1];a<f&&(c=2,e=f);for(f=c-2;;){if(void 0===e)return this._cachedIndex=0,this.beforeStart_(0,a,d);if(c===f)break;d=e;e=b[--c-1];if(a>=e)break b}d=c;c=0}}for(;c<d;)e=c+d>>>1,a<b[e]?d=e:c=e+1;d=b[c];e=b[c-1];if(void 0===e)return this._cachedIndex=0,this.beforeStart_(0,a,d);if(void 0===d)return this._cachedIndex=c=b.length,this.afterEnd_(c-1,e,a)}this._cachedIndex=c;this.intervalChanged_(c,e,d)}return this.interpolate_(c,e,a,d)},settings:null,DefaultSettings_:{},
 getSettings_:function(){return this.settings||this.DefaultSettings_},copySampleValue_:function(a){var b=this.resultBuffer,c=this.sampleValues,d=this.valueSize;a*=d;for(var e=0;e!==d;++e)b[e]=c[a+e];return b},interpolate_:function(a,b,c,d){throw Error("call to abstract method");},intervalChanged_:function(a,b,c){}});Object.assign(xa.prototype,{beforeStart_:xa.prototype.copySampleValue_,afterEnd_:xa.prototype.copySampleValue_});Dd.prototype=Object.assign(Object.create(xa.prototype),{constructor:Dd,
 DefaultSettings_:{endingStart:2400,endingEnd:2400},intervalChanged_:function(a,b,c){var d=this.parameterPositions,e=a-2,f=a+1,g=d[e],h=d[f];if(void 0===g)switch(this.getSettings_().endingStart){case 2401:e=a;g=2*b-c;break;case 2402:e=d.length-2;g=b+d[e]-d[e+1];break;default:e=a,g=c}if(void 0===h)switch(this.getSettings_().endingEnd){case 2401:f=a;h=2*c-b;break;case 2402:f=1;h=c+d[1]-d[0];break;default:f=a-1,h=b}a=.5*(c-b);d=this.valueSize;this._weightPrev=a/(b-g);this._weightNext=a/(h-c);this._offsetPrev=
-e*d;this._offsetNext=f*d},interpolate_:function(a,b,c,d){var e=this.resultBuffer,f=this.sampleValues,g=this.valueSize;a*=g;var h=a-g,k=this._offsetPrev,l=this._offsetNext,n=this._weightPrev,m=this._weightNext,p=(c-b)/(d-b);c=p*p;d=c*p;b=-n*d+2*n*c-n*p;n=(1+n)*d+(-1.5-2*n)*c+(-.5+n)*p+1;p=(-1-m)*d+(1.5+m)*c+.5*p;m=m*d-m*c;for(c=0;c!==g;++c)e[c]=b*f[k+c]+n*f[h+c]+p*f[a+c]+m*f[l+c];return e}});Tc.prototype=Object.assign(Object.create(xa.prototype),{constructor:Tc,interpolate_:function(a,b,c,d){var e=
+e*d;this._offsetNext=f*d},interpolate_:function(a,b,c,d){var e=this.resultBuffer,f=this.sampleValues,g=this.valueSize;a*=g;var h=a-g,k=this._offsetPrev,l=this._offsetNext,m=this._weightPrev,q=this._weightNext,n=(c-b)/(d-b);c=n*n;d=c*n;b=-m*d+2*m*c-m*n;m=(1+m)*d+(-1.5-2*m)*c+(-.5+m)*n+1;n=(-1-q)*d+(1.5+q)*c+.5*n;q=q*d-q*c;for(c=0;c!==g;++c)e[c]=b*f[k+c]+m*f[h+c]+n*f[a+c]+q*f[l+c];return e}});Tc.prototype=Object.assign(Object.create(xa.prototype),{constructor:Tc,interpolate_:function(a,b,c,d){var e=
 this.resultBuffer,f=this.sampleValues,g=this.valueSize;a*=g;var h=a-g;b=(c-b)/(d-b);c=1-b;for(d=0;d!==g;++d)e[d]=f[h+d]*c+f[a+d]*b;return e}});Ed.prototype=Object.assign(Object.create(xa.prototype),{constructor:Ed,interpolate_:function(a,b,c,d){return this.copySampleValue_(a-1)}});var ab={TimeBufferType:Float32Array,ValueBufferType:Float32Array,DefaultInterpolation:2301,InterpolantFactoryMethodDiscrete:function(a){return new Ed(this.times,this.values,this.getValueSize(),a)},InterpolantFactoryMethodLinear:function(a){return new Tc(this.times,
 this.values,this.getValueSize(),a)},InterpolantFactoryMethodSmooth:function(a){return new Dd(this.times,this.values,this.getValueSize(),a)},setInterpolation:function(a){switch(a){case 2300:var b=this.InterpolantFactoryMethodDiscrete;break;case 2301:b=this.InterpolantFactoryMethodLinear;break;case 2302:b=this.InterpolantFactoryMethodSmooth}if(void 0===b){b="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant)if(a!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);
 else throw Error(b);console.warn("THREE.KeyframeTrackPrototype:",b)}else this.createInterpolant=b},getInterpolation:function(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return 2300;case this.InterpolantFactoryMethodLinear:return 2301;case this.InterpolantFactoryMethodSmooth:return 2302}},getValueSize:function(){return this.values.length/this.times.length},shift:function(a){if(0!==a)for(var b=this.times,c=0,d=b.length;c!==d;++c)b[c]+=a;return this},scale:function(a){if(1!==
 a)for(var b=this.times,c=0,d=b.length;c!==d;++c)b[c]*=a;return this},trim:function(a,b){for(var c=this.times,d=c.length,e=0,f=d-1;e!==d&&c[e]<a;)++e;for(;-1!==f&&c[f]>b;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),a=this.getValueSize(),this.times=ba.arraySlice(c,e,f),this.values=ba.arraySlice(this.values,e*a,f*a);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("THREE.KeyframeTrackPrototype: Invalid value size in track.",this),a=!1);var c=
 this.times,b=this.values,d=c.length;0===d&&(console.error("THREE.KeyframeTrackPrototype: Track is empty.",this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("THREE.KeyframeTrackPrototype: Time is not a valid number.",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("THREE.KeyframeTrackPrototype: Out of order keys.",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&ba.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("THREE.KeyframeTrackPrototype: Value is not a valid number.",
-this,f,d);a=!1;break}return a},optimize:function(){for(var a,b,c=this.times,d=this.values,e=this.getValueSize(),f=2302===this.getInterpolation(),g=1,h=c.length-1,k=1;k<h;++k){a=!1;var l=c[k];if(l!==c[k+1]&&(1!==k||l!==l[0]))if(f)a=!0;else{b=k*e;for(var m=b-e,q=b+e,l=0;l!==e;++l){var p=d[b+l];if(p!==d[m+l]||p!==d[q+l]){a=!0;break}}}if(a){if(k!==g)for(c[g]=c[k],b=k*e,a=g*e,l=0;l!==e;++l)d[a+l]=d[b+l];++g}}if(0<h){c[g]=c[h];b=h*e;a=g*e;for(l=0;l!==e;++l)d[a+l]=d[b+l];++g}g!==c.length&&(this.times=ba.arraySlice(c,
+this,f,d);a=!1;break}return a},optimize:function(){for(var a,b,c=this.times,d=this.values,e=this.getValueSize(),f=2302===this.getInterpolation(),g=1,h=c.length-1,k=1;k<h;++k){a=!1;var l=c[k];if(l!==c[k+1]&&(1!==k||l!==l[0]))if(f)a=!0;else{b=k*e;for(var m=b-e,q=b+e,l=0;l!==e;++l){var n=d[b+l];if(n!==d[m+l]||n!==d[q+l]){a=!0;break}}}if(a){if(k!==g)for(c[g]=c[k],b=k*e,a=g*e,l=0;l!==e;++l)d[a+l]=d[b+l];++g}}if(0<h){c[g]=c[h];b=h*e;a=g*e;for(l=0;l!==e;++l)d[a+l]=d[b+l];++g}g!==c.length&&(this.times=ba.arraySlice(c,
 0,g),this.values=ba.arraySlice(d,0,g*e));return this}};bc.prototype=Object.assign(Object.create(ab),{constructor:bc,ValueTypeName:"vector"});Fd.prototype=Object.assign(Object.create(xa.prototype),{constructor:Fd,interpolate_:function(a,b,c,d){var e=this.resultBuffer,f=this.sampleValues,g=this.valueSize;a*=g;b=(c-b)/(d-b);for(c=a+g;a!==c;a+=4)ka.slerpFlat(e,0,f,a-g,f,a,b);return e}});Uc.prototype=Object.assign(Object.create(ab),{constructor:Uc,ValueTypeName:"quaternion",DefaultInterpolation:2301,InterpolantFactoryMethodLinear:function(a){return new Fd(this.times,
 this.values,this.getValueSize(),a)},InterpolantFactoryMethodSmooth:void 0});cc.prototype=Object.assign(Object.create(ab),{constructor:cc,ValueTypeName:"number"});Gd.prototype=Object.assign(Object.create(ab),{constructor:Gd,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:2300,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});Hd.prototype=Object.assign(Object.create(ab),{constructor:Hd,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:2300,
 InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});Id.prototype=Object.assign(Object.create(ab),{constructor:Id,ValueTypeName:"color"});tb.prototype=ab;ab.constructor=tb;Object.assign(tb,{parse:function(a){if(void 0===a.type)throw Error("track type undefined, can not parse");var b=tb._getTrackTypeForValueTypeName(a.type);if(void 0===a.times){var c=[],d=[];ba.flattenJSON(a.keys,c,d,"value");a.times=c;a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,
@@ -669,7 +669,7 @@ a.interpolation)},toJSON:function(a){var b=a.constructor;if(void 0!==b.toJSON)b=
 case "color":return Id;case "quaternion":return Uc;case "bool":case "boolean":return Hd;case "string":return Gd}throw Error("Unsupported typeName: "+a);}});Object.assign(Aa,{parse:function(a){for(var b=[],c=a.tracks,d=1/(a.fps||1),e=0,f=c.length;e!==f;++e)b.push(tb.parse(c[e]).scale(d));return new Aa(a.name,a.duration,b)},toJSON:function(a){var b=[],c=a.tracks;a={name:a.name,duration:a.duration,tracks:b};for(var d=0,e=c.length;d!==e;++d)b.push(tb.toJSON(c[d]));return a},CreateFromMorphTargetSequence:function(a,
 b,c,d){for(var e=b.length,f=[],g=0;g<e;g++){var h=[],k=[];h.push((g+e-1)%e,g,(g+1)%e);k.push(0,1,0);var l=ba.getKeyframeOrder(h),h=ba.sortedArray(h,1,l),k=ba.sortedArray(k,1,l);d||0!==h[0]||(h.push(e),k.push(k[0]));f.push((new cc(".morphTargetInfluences["+b[g].name+"]",h,k)).scale(1/c))}return new Aa(a,-1,f)},findByName:function(a,b){var c=a;Array.isArray(a)||(c=a.geometry&&a.geometry.animations||a.animations);for(a=0;a<c.length;a++)if(c[a].name===b)return c[a];return null},CreateClipsFromMorphTargetSequences:function(a,
 b,c){for(var d,e={},f=/^([\w-]*?)([\d]+)$/,g=0,h=a.length;g<h;g++){var k=a[g],l=k.name.match(f);l&&1<l.length&&(d=l[1],(l=e[d])||(e[d]=l=[]),l.push(k))}a=[];for(d in e)a.push(Aa.CreateFromMorphTargetSequence(d,e[d],b,c));return a},parseAnimation:function(a,b){if(!a)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;var c=function(a,b,c,d,e){if(0!==c.length){var f=[],g=[];ba.flattenJSON(c,f,g,d);0!==f.length&&e.push(new a(b,f,g))}},d=[],e=a.name||"default",f=a.length||
--1,g=a.fps||30;a=a.hierarchy||[];for(var h=0;h<a.length;h++){var k=a[h].keys;if(k&&0!==k.length)if(k[0].morphTargets){for(var f={},l=0;l<k.length;l++)if(k[l].morphTargets)for(var m=0;m<k[l].morphTargets.length;m++)f[k[l].morphTargets[m]]=-1;for(var q in f){for(var p=[],t=[],m=0;m!==k[l].morphTargets.length;++m){var u=k[l];p.push(u.time);t.push(u.morphTarget===q?1:0)}d.push(new cc(".morphTargetInfluence["+q+"]",p,t))}f=f.length*(g||1)}else l=".bones["+b[h].name+"]",c(bc,l+".position",k,"pos",d),c(Uc,
+-1,g=a.fps||30;a=a.hierarchy||[];for(var h=0;h<a.length;h++){var k=a[h].keys;if(k&&0!==k.length)if(k[0].morphTargets){for(var f={},l=0;l<k.length;l++)if(k[l].morphTargets)for(var m=0;m<k[l].morphTargets.length;m++)f[k[l].morphTargets[m]]=-1;for(var q in f){for(var n=[],r=[],m=0;m!==k[l].morphTargets.length;++m){var v=k[l];n.push(v.time);r.push(v.morphTarget===q?1:0)}d.push(new cc(".morphTargetInfluence["+q+"]",n,r))}f=f.length*(g||1)}else l=".bones["+b[h].name+"]",c(bc,l+".position",k,"pos",d),c(Uc,
 l+".quaternion",k,"rot",d),c(bc,l+".scale",k,"scl",d)}return 0===d.length?null:new Aa(e,f,d)}});Object.assign(Aa.prototype,{resetDuration:function(){for(var a=0,b=0,c=this.tracks.length;b!==c;++b)var d=this.tracks[b],a=Math.max(a,d.times[d.times.length-1]);this.duration=a},trim:function(){for(var a=0;a<this.tracks.length;a++)this.tracks[a].trim(0,this.duration);return this},optimize:function(){for(var a=0;a<this.tracks.length;a++)this.tracks[a].optimize();return this}});Object.assign(Jd.prototype,
 {load:function(a,b,c,d){var e=this;(new Ja(e.manager)).load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},setTextures:function(a){this.textures=a},parse:function(a){function b(a){void 0===c[a]&&console.warn("THREE.MaterialLoader: Undefined texture",a);return c[a]}var c=this.textures,d=new rg[a.type];void 0!==a.uuid&&(d.uuid=a.uuid);void 0!==a.name&&(d.name=a.name);void 0!==a.color&&d.color.setHex(a.color);void 0!==a.roughness&&(d.roughness=a.roughness);void 0!==a.metalness&&(d.metalness=a.metalness);
 void 0!==a.emissive&&d.emissive.setHex(a.emissive);void 0!==a.specular&&d.specular.setHex(a.specular);void 0!==a.shininess&&(d.shininess=a.shininess);void 0!==a.clearCoat&&(d.clearCoat=a.clearCoat);void 0!==a.clearCoatRoughness&&(d.clearCoatRoughness=a.clearCoatRoughness);void 0!==a.uniforms&&(d.uniforms=a.uniforms);void 0!==a.vertexShader&&(d.vertexShader=a.vertexShader);void 0!==a.fragmentShader&&(d.fragmentShader=a.fragmentShader);void 0!==a.vertexColors&&(d.vertexColors=a.vertexColors);void 0!==
@@ -678,7 +678,7 @@ a.fog&&(d.fog=a.fog);void 0!==a.shading&&(d.shading=a.shading);void 0!==a.blendi
 (d.bumpMap=b(a.bumpMap));void 0!==a.bumpScale&&(d.bumpScale=a.bumpScale);void 0!==a.normalMap&&(d.normalMap=b(a.normalMap));if(void 0!==a.normalScale){var e=a.normalScale;!1===Array.isArray(e)&&(e=[e,e]);d.normalScale=(new D).fromArray(e)}void 0!==a.displacementMap&&(d.displacementMap=b(a.displacementMap));void 0!==a.displacementScale&&(d.displacementScale=a.displacementScale);void 0!==a.displacementBias&&(d.displacementBias=a.displacementBias);void 0!==a.roughnessMap&&(d.roughnessMap=b(a.roughnessMap));
 void 0!==a.metalnessMap&&(d.metalnessMap=b(a.metalnessMap));void 0!==a.emissiveMap&&(d.emissiveMap=b(a.emissiveMap));void 0!==a.emissiveIntensity&&(d.emissiveIntensity=a.emissiveIntensity);void 0!==a.specularMap&&(d.specularMap=b(a.specularMap));void 0!==a.envMap&&(d.envMap=b(a.envMap));void 0!==a.reflectivity&&(d.reflectivity=a.reflectivity);void 0!==a.lightMap&&(d.lightMap=b(a.lightMap));void 0!==a.lightMapIntensity&&(d.lightMapIntensity=a.lightMapIntensity);void 0!==a.aoMap&&(d.aoMap=b(a.aoMap));
 void 0!==a.aoMapIntensity&&(d.aoMapIntensity=a.aoMapIntensity);void 0!==a.gradientMap&&(d.gradientMap=b(a.gradientMap));return d}});Object.assign(ee.prototype,{load:function(a,b,c,d){var e=this;(new Ja(e.manager)).load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},parse:function(a){var b=new F;var c=a.data.index;void 0!==c&&(c=new kf[c.type](c.array),b.setIndex(new O(c,1)));var d=a.data.attributes;for(f in d){var e=d[f];c=new kf[e.type](e.array);b.addAttribute(f,new O(c,e.itemSize,e.normalized))}var f=
-a.data.groups||a.data.drawcalls||a.data.offsets;if(void 0!==f)for(c=0,d=f.length;c!==d;++c)e=f[c],b.addGroup(e.start,e.count,e.materialIndex);a=a.data.boundingSphere;void 0!==a&&(f=new p,void 0!==a.center&&f.fromArray(a.center),b.boundingSphere=new Ba(f,a.radius));return b}});var kf={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:"undefined"!==typeof Uint8ClampedArray?Uint8ClampedArray:Uint8Array,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,
+a.data.groups||a.data.drawcalls||a.data.offsets;if(void 0!==f)for(c=0,d=f.length;c!==d;++c)e=f[c],b.addGroup(e.start,e.count,e.materialIndex);a=a.data.boundingSphere;void 0!==a&&(f=new n,void 0!==a.center&&f.fromArray(a.center),b.boundingSphere=new Ba(f,a.radius));return b}});var kf={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:"undefined"!==typeof Uint8ClampedArray?Uint8ClampedArray:Uint8Array,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,
 Float32Array:Float32Array,Float64Array:Float64Array};dc.Handlers={handlers:[],add:function(a,b){this.handlers.push(a,b)},get:function(a){for(var b=this.handlers,c=0,d=b.length;c<d;c+=2){var e=b[c+1];if(b[c].test(a))return e}return null}};Object.assign(dc.prototype,{crossOrigin:void 0,extractUrlBase:function(a){a=a.split("/");if(1===a.length)return"./";a.pop();return a.join("/")+"/"},initMaterials:function(a,b,c){for(var d=[],e=0;e<a.length;++e)d[e]=this.createMaterial(a[e],b,c);return d},createMaterial:function(){var a=
 {NoBlending:0,NormalBlending:1,AdditiveBlending:2,SubtractiveBlending:3,MultiplyBlending:4,CustomBlending:5},b=new E,c=new ud,d=new Jd;return function(e,f,g){function h(a,b,d,e,h){a=f+a;var l=dc.Handlers.get(a);null!==l?a=l.load(a):(c.setCrossOrigin(g),a=c.load(a));void 0!==b&&(a.repeat.fromArray(b),1!==b[0]&&(a.wrapS=1E3),1!==b[1]&&(a.wrapT=1E3));void 0!==d&&a.offset.fromArray(d);void 0!==e&&("repeat"===e[0]&&(a.wrapS=1E3),"mirror"===e[0]&&(a.wrapS=1002),"repeat"===e[1]&&(a.wrapT=1E3),"mirror"===
 e[1]&&(a.wrapT=1002));void 0!==h&&(a.anisotropy=h);b=P.generateUUID();k[b]=a;return b}var k={},l={uuid:P.generateUUID(),type:"MeshLambertMaterial"},m;for(m in e){var q=e[m];switch(m){case "DbgColor":case "DbgIndex":case "opticalDensity":case "illumination":break;case "DbgName":l.name=q;break;case "blending":l.blending=a[q];break;case "colorAmbient":case "mapAmbient":console.warn("THREE.Loader.createMaterial:",m,"is no longer supported.");break;case "colorDiffuse":l.color=b.fromArray(q).getHex();break;
@@ -689,14 +689,14 @@ case "mapNormalRepeat":case "mapNormalOffset":case "mapNormalWrap":case "mapNorm
 case "mapRoughness":l.roughnessMap=h(q,e.mapRoughnessRepeat,e.mapRoughnessOffset,e.mapRoughnessWrap,e.mapRoughnessAnisotropy);break;case "mapRoughnessRepeat":case "mapRoughnessOffset":case "mapRoughnessWrap":case "mapRoughnessAnisotropy":break;case "mapAlpha":l.alphaMap=h(q,e.mapAlphaRepeat,e.mapAlphaOffset,e.mapAlphaWrap,e.mapAlphaAnisotropy);break;case "mapAlphaRepeat":case "mapAlphaOffset":case "mapAlphaWrap":case "mapAlphaAnisotropy":break;case "flipSided":l.side=1;break;case "doubleSided":l.side=
 2;break;case "transparency":console.warn("THREE.Loader.createMaterial: transparency has been renamed to opacity");l.opacity=q;break;case "depthTest":case "depthWrite":case "colorWrite":case "opacity":case "reflectivity":case "transparent":case "visible":case "wireframe":l[m]=q;break;case "vertexColors":!0===q&&(l.vertexColors=2);"face"===q&&(l.vertexColors=1);break;default:console.error("THREE.Loader.createMaterial: Unsupported",m,q)}}"MeshBasicMaterial"===l.type&&delete l.emissive;"MeshPhongMaterial"!==
 l.type&&delete l.specular;1>l.opacity&&(l.transparent=!0);d.setTextures(k);return d.parse(l)}}()});Object.assign(fe.prototype,{load:function(a,b,c,d){var e=this,f=this.texturePath&&"string"===typeof this.texturePath?this.texturePath:dc.prototype.extractUrlBase(a),g=new Ja(this.manager);g.setWithCredentials(this.withCredentials);g.load(a,function(c){c=JSON.parse(c);var d=c.metadata;if(void 0!==d&&(d=d.type,void 0!==d)){if("object"===d.toLowerCase()){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.ObjectLoader instead.");
-return}if("scene"===d.toLowerCase()){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.SceneLoader instead.");return}}c=e.parse(c,f);b(c.geometry,c.materials)},c,d)},setTexturePath:function(a){this.texturePath=a},parse:function(){return function(a,b){void 0!==a.data&&(a=a.data);a.scale=void 0!==a.scale?1/a.scale:1;var c=new I,d=a,e,f,g,h=d.faces;var k=d.vertices;var l=d.normals,m=d.colors;var q=d.scale;var r=0;if(void 0!==d.uvs){for(e=0;e<d.uvs.length;e++)d.uvs[e].length&&r++;for(e=
-0;e<r;e++)c.faceVertexUvs[e]=[]}var t=0;for(g=k.length;t<g;)e=new p,e.x=k[t++]*q,e.y=k[t++]*q,e.z=k[t++]*q,c.vertices.push(e);t=0;for(g=h.length;t<g;){k=h[t++];var u=k&1;var w=k&2;e=k&8;var v=k&16;var A=k&32;q=k&64;k&=128;if(u){u=new Ra;u.a=h[t];u.b=h[t+1];u.c=h[t+3];var y=new Ra;y.a=h[t+1];y.b=h[t+2];y.c=h[t+3];t+=4;w&&(w=h[t++],u.materialIndex=w,y.materialIndex=w);w=c.faces.length;if(e)for(e=0;e<r;e++){var x=d.uvs[e];c.faceVertexUvs[e][w]=[];c.faceVertexUvs[e][w+1]=[];for(f=0;4>f;f++){var B=h[t++];
-var z=x[2*B];B=x[2*B+1];z=new D(z,B);2!==f&&c.faceVertexUvs[e][w].push(z);0!==f&&c.faceVertexUvs[e][w+1].push(z)}}v&&(v=3*h[t++],u.normal.set(l[v++],l[v++],l[v]),y.normal.copy(u.normal));if(A)for(e=0;4>e;e++)v=3*h[t++],A=new p(l[v++],l[v++],l[v]),2!==e&&u.vertexNormals.push(A),0!==e&&y.vertexNormals.push(A);q&&(q=h[t++],q=m[q],u.color.setHex(q),y.color.setHex(q));if(k)for(e=0;4>e;e++)q=h[t++],q=m[q],2!==e&&u.vertexColors.push(new E(q)),0!==e&&y.vertexColors.push(new E(q));c.faces.push(u);c.faces.push(y)}else{u=
-new Ra;u.a=h[t++];u.b=h[t++];u.c=h[t++];w&&(w=h[t++],u.materialIndex=w);w=c.faces.length;if(e)for(e=0;e<r;e++)for(x=d.uvs[e],c.faceVertexUvs[e][w]=[],f=0;3>f;f++)B=h[t++],z=x[2*B],B=x[2*B+1],z=new D(z,B),c.faceVertexUvs[e][w].push(z);v&&(v=3*h[t++],u.normal.set(l[v++],l[v++],l[v]));if(A)for(e=0;3>e;e++)v=3*h[t++],A=new p(l[v++],l[v++],l[v]),u.vertexNormals.push(A);q&&(q=h[t++],u.color.setHex(m[q]));if(k)for(e=0;3>e;e++)q=h[t++],u.vertexColors.push(new E(m[q]));c.faces.push(u)}}d=a;t=void 0!==d.influencesPerVertex?
-d.influencesPerVertex:2;if(d.skinWeights)for(g=0,h=d.skinWeights.length;g<h;g+=t)c.skinWeights.push(new ca(d.skinWeights[g],1<t?d.skinWeights[g+1]:0,2<t?d.skinWeights[g+2]:0,3<t?d.skinWeights[g+3]:0));if(d.skinIndices)for(g=0,h=d.skinIndices.length;g<h;g+=t)c.skinIndices.push(new ca(d.skinIndices[g],1<t?d.skinIndices[g+1]:0,2<t?d.skinIndices[g+2]:0,3<t?d.skinIndices[g+3]:0));c.bones=d.bones;c.bones&&0<c.bones.length&&(c.skinWeights.length!==c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&
-console.warn("When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+c.skinIndices.length+"), and skinWeights ("+c.skinWeights.length+") should match.");g=a;h=g.scale;if(void 0!==g.morphTargets)for(d=0,t=g.morphTargets.length;d<t;d++)for(c.morphTargets[d]={},c.morphTargets[d].name=g.morphTargets[d].name,c.morphTargets[d].vertices=[],l=c.morphTargets[d].vertices,m=g.morphTargets[d].vertices,r=0,k=m.length;r<k;r+=3)q=new p,q.x=m[r]*h,q.y=m[r+1]*h,q.z=m[r+2]*h,l.push(q);if(void 0!==
-g.morphColors&&0<g.morphColors.length)for(console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.'),h=c.faces,g=g.morphColors[0].colors,d=0,t=h.length;d<t;d++)h[d].color.fromArray(g,3*d);g=a;d=[];t=[];void 0!==g.animation&&t.push(g.animation);void 0!==g.animations&&(g.animations.length?t=t.concat(g.animations):t.push(g.animations));for(g=0;g<t.length;g++)(h=Aa.parseAnimation(t[g],c.bones))&&d.push(h);c.morphTargets&&(t=Aa.CreateClipsFromMorphTargetSequences(c.morphTargets,
-10),d=d.concat(t));0<d.length&&(c.animations=d);c.computeFaceNormals();c.computeBoundingSphere();if(void 0===a.materials||0===a.materials.length)return{geometry:c};a=dc.prototype.initMaterials(a.materials,b,this.crossOrigin);return{geometry:c,materials:a}}}()});Object.assign(Ue.prototype,{load:function(a,b,c,d){""===this.texturePath&&(this.texturePath=a.substring(0,a.lastIndexOf("/")+1));var e=this;(new Ja(e.manager)).load(a,function(c){var f=null;try{f=JSON.parse(c)}catch(h){void 0!==d&&d(h);console.error("THREE:ObjectLoader: Can't parse "+
+return}if("scene"===d.toLowerCase()){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.SceneLoader instead.");return}}c=e.parse(c,f);b(c.geometry,c.materials)},c,d)},setTexturePath:function(a){this.texturePath=a},parse:function(){return function(a,b){void 0!==a.data&&(a=a.data);a.scale=void 0!==a.scale?1/a.scale:1;var c=new I,d=a,e,f,g,h=d.faces;var k=d.vertices;var l=d.normals,m=d.colors;var q=d.scale;var t=0;if(void 0!==d.uvs){for(e=0;e<d.uvs.length;e++)d.uvs[e].length&&t++;for(e=
+0;e<t;e++)c.faceVertexUvs[e]=[]}var r=0;for(g=k.length;r<g;)e=new n,e.x=k[r++]*q,e.y=k[r++]*q,e.z=k[r++]*q,c.vertices.push(e);r=0;for(g=h.length;r<g;){k=h[r++];var v=k&1;var w=k&2;e=k&8;var u=k&16;var A=k&32;q=k&64;k&=128;if(v){v=new Ra;v.a=h[r];v.b=h[r+1];v.c=h[r+3];var y=new Ra;y.a=h[r+1];y.b=h[r+2];y.c=h[r+3];r+=4;w&&(w=h[r++],v.materialIndex=w,y.materialIndex=w);w=c.faces.length;if(e)for(e=0;e<t;e++){var x=d.uvs[e];c.faceVertexUvs[e][w]=[];c.faceVertexUvs[e][w+1]=[];for(f=0;4>f;f++){var B=h[r++];
+var z=x[2*B];B=x[2*B+1];z=new D(z,B);2!==f&&c.faceVertexUvs[e][w].push(z);0!==f&&c.faceVertexUvs[e][w+1].push(z)}}u&&(u=3*h[r++],v.normal.set(l[u++],l[u++],l[u]),y.normal.copy(v.normal));if(A)for(e=0;4>e;e++)u=3*h[r++],A=new n(l[u++],l[u++],l[u]),2!==e&&v.vertexNormals.push(A),0!==e&&y.vertexNormals.push(A);q&&(q=h[r++],q=m[q],v.color.setHex(q),y.color.setHex(q));if(k)for(e=0;4>e;e++)q=h[r++],q=m[q],2!==e&&v.vertexColors.push(new E(q)),0!==e&&y.vertexColors.push(new E(q));c.faces.push(v);c.faces.push(y)}else{v=
+new Ra;v.a=h[r++];v.b=h[r++];v.c=h[r++];w&&(w=h[r++],v.materialIndex=w);w=c.faces.length;if(e)for(e=0;e<t;e++)for(x=d.uvs[e],c.faceVertexUvs[e][w]=[],f=0;3>f;f++)B=h[r++],z=x[2*B],B=x[2*B+1],z=new D(z,B),c.faceVertexUvs[e][w].push(z);u&&(u=3*h[r++],v.normal.set(l[u++],l[u++],l[u]));if(A)for(e=0;3>e;e++)u=3*h[r++],A=new n(l[u++],l[u++],l[u]),v.vertexNormals.push(A);q&&(q=h[r++],v.color.setHex(m[q]));if(k)for(e=0;3>e;e++)q=h[r++],v.vertexColors.push(new E(m[q]));c.faces.push(v)}}d=a;r=void 0!==d.influencesPerVertex?
+d.influencesPerVertex:2;if(d.skinWeights)for(g=0,h=d.skinWeights.length;g<h;g+=r)c.skinWeights.push(new ca(d.skinWeights[g],1<r?d.skinWeights[g+1]:0,2<r?d.skinWeights[g+2]:0,3<r?d.skinWeights[g+3]:0));if(d.skinIndices)for(g=0,h=d.skinIndices.length;g<h;g+=r)c.skinIndices.push(new ca(d.skinIndices[g],1<r?d.skinIndices[g+1]:0,2<r?d.skinIndices[g+2]:0,3<r?d.skinIndices[g+3]:0));c.bones=d.bones;c.bones&&0<c.bones.length&&(c.skinWeights.length!==c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&
+console.warn("When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+c.skinIndices.length+"), and skinWeights ("+c.skinWeights.length+") should match.");g=a;h=g.scale;if(void 0!==g.morphTargets)for(d=0,r=g.morphTargets.length;d<r;d++)for(c.morphTargets[d]={},c.morphTargets[d].name=g.morphTargets[d].name,c.morphTargets[d].vertices=[],l=c.morphTargets[d].vertices,m=g.morphTargets[d].vertices,t=0,k=m.length;t<k;t+=3)q=new n,q.x=m[t]*h,q.y=m[t+1]*h,q.z=m[t+2]*h,l.push(q);if(void 0!==
+g.morphColors&&0<g.morphColors.length)for(console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.'),h=c.faces,g=g.morphColors[0].colors,d=0,r=h.length;d<r;d++)h[d].color.fromArray(g,3*d);g=a;d=[];r=[];void 0!==g.animation&&r.push(g.animation);void 0!==g.animations&&(g.animations.length?r=r.concat(g.animations):r.push(g.animations));for(g=0;g<r.length;g++)(h=Aa.parseAnimation(r[g],c.bones))&&d.push(h);c.morphTargets&&(r=Aa.CreateClipsFromMorphTargetSequences(c.morphTargets,
+10),d=d.concat(r));0<d.length&&(c.animations=d);c.computeFaceNormals();c.computeBoundingSphere();if(void 0===a.materials||0===a.materials.length)return{geometry:c};a=dc.prototype.initMaterials(a.materials,b,this.crossOrigin);return{geometry:c,materials:a}}}()});Object.assign(Ue.prototype,{load:function(a,b,c,d){""===this.texturePath&&(this.texturePath=a.substring(0,a.lastIndexOf("/")+1));var e=this;(new Ja(e.manager)).load(a,function(c){var f=null;try{f=JSON.parse(c)}catch(h){void 0!==d&&d(h);console.error("THREE:ObjectLoader: Can't parse "+
 a+".",h.message);return}c=f.metadata;void 0===c||void 0===c.type||"geometry"===c.type.toLowerCase()?console.error("THREE.ObjectLoader: Can't load "+a+". Use THREE.JSONLoader instead."):e.parse(f,b)},c,d)},setTexturePath:function(a){this.texturePath=a},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a,b){var c=this.parseGeometries(a.geometries),d=this.parseImages(a.images,function(){void 0!==b&&b(e)}),d=this.parseTextures(a.textures,d),d=this.parseMaterials(a.materials,d),e=this.parseObject(a.object,
 c,d);a.animations&&(e.animations=this.parseAnimations(a.animations));void 0!==a.images&&0!==a.images.length||void 0===b||b(e);return e},parseGeometries:function(a){var b={};if(void 0!==a)for(var c=new fe,d=new ee,e=0,f=a.length;e<f;e++){var g=a[e];switch(g.type){case "PlaneGeometry":case "PlaneBufferGeometry":var h=new La[g.type](g.width,g.height,g.widthSegments,g.heightSegments);break;case "BoxGeometry":case "BoxBufferGeometry":case "CubeGeometry":h=new La[g.type](g.width,g.height,g.depth,g.widthSegments,
 g.heightSegments,g.depthSegments);break;case "CircleGeometry":case "CircleBufferGeometry":h=new La[g.type](g.radius,g.segments,g.thetaStart,g.thetaLength);break;case "CylinderGeometry":case "CylinderBufferGeometry":h=new La[g.type](g.radiusTop,g.radiusBottom,g.height,g.radialSegments,g.heightSegments,g.openEnded,g.thetaStart,g.thetaLength);break;case "ConeGeometry":case "ConeBufferGeometry":h=new La[g.type](g.radius,g.height,g.radialSegments,g.heightSegments,g.openEnded,g.thetaStart,g.thetaLength);
@@ -715,12 +715,12 @@ this.parseObject(b.shadow.camera)));void 0!==b.visible&&(g.visible=b.visible);vo
 SphericalReflectionMapping:305,CubeUVReflectionMapping:306,CubeUVRefractionMapping:307},lf={RepeatWrapping:1E3,ClampToEdgeWrapping:1001,MirroredRepeatWrapping:1002},mf={NearestFilter:1003,NearestMipMapNearestFilter:1004,NearestMipMapLinearFilter:1005,LinearFilter:1006,LinearMipMapNearestFilter:1007,LinearMipMapLinearFilter:1008};Object.assign(ja.prototype,{getPoint:function(){console.warn("THREE.Curve: .getPoint() not implemented.");return null},getPointAt:function(a){a=this.getUtoTmapping(a);return this.getPoint(a)},
 getPoints:function(a){void 0===a&&(a=5);for(var b=[],c=0;c<=a;c++)b.push(this.getPoint(c/a));return b},getSpacedPoints:function(a){void 0===a&&(a=5);for(var b=[],c=0;c<=a;c++)b.push(this.getPointAt(c/a));return b},getLength:function(){var a=this.getLengths();return a[a.length-1]},getLengths:function(a){void 0===a&&(a=this.arcLengthDivisions);if(this.cacheArcLengths&&this.cacheArcLengths.length===a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b=[],c=this.getPoint(0),d,e=
 0;b.push(0);for(d=1;d<=a;d++){var f=this.getPoint(d/a);e+=f.distanceTo(c);b.push(e);c=f}return this.cacheArcLengths=b},updateArcLengths:function(){this.needsUpdate=!0;this.getLengths()},getUtoTmapping:function(a,b){var c=this.getLengths(),d=c.length;b=b?b:a*c[d-1];for(var e=0,f=d-1,g;e<=f;)if(a=Math.floor(e+(f-e)/2),g=c[a]-b,0>g)e=a+1;else if(0<g)f=a-1;else{f=a;break}a=f;if(c[a]===b)return a/(d-1);e=c[a];return(a+(b-e)/(c[a+1]-e))/(d-1)},getTangent:function(a){var b=a-1E-4;a+=1E-4;0>b&&(b=0);1<a&&
-(a=1);b=this.getPoint(b);return this.getPoint(a).clone().sub(b).normalize()},getTangentAt:function(a){a=this.getUtoTmapping(a);return this.getTangent(a)},computeFrenetFrames:function(a,b){var c=new p,d=[],e=[],f=[],g=new p,h=new J,k;for(k=0;k<=a;k++){var l=k/a;d[k]=this.getTangentAt(l);d[k].normalize()}e[0]=new p;f[0]=new p;k=Number.MAX_VALUE;l=Math.abs(d[0].x);var m=Math.abs(d[0].y),q=Math.abs(d[0].z);l<=k&&(k=l,c.set(1,0,0));m<=k&&(k=m,c.set(0,1,0));q<=k&&c.set(0,0,1);g.crossVectors(d[0],c).normalize();
+(a=1);b=this.getPoint(b);return this.getPoint(a).clone().sub(b).normalize()},getTangentAt:function(a){a=this.getUtoTmapping(a);return this.getTangent(a)},computeFrenetFrames:function(a,b){var c=new n,d=[],e=[],f=[],g=new n,h=new J,k;for(k=0;k<=a;k++){var l=k/a;d[k]=this.getTangentAt(l);d[k].normalize()}e[0]=new n;f[0]=new n;k=Number.MAX_VALUE;l=Math.abs(d[0].x);var m=Math.abs(d[0].y),q=Math.abs(d[0].z);l<=k&&(k=l,c.set(1,0,0));m<=k&&(k=m,c.set(0,1,0));q<=k&&c.set(0,0,1);g.crossVectors(d[0],c).normalize();
 e[0].crossVectors(d[0],g);f[0].crossVectors(d[0],e[0]);for(k=1;k<=a;k++)e[k]=e[k-1].clone(),f[k]=f[k-1].clone(),g.crossVectors(d[k-1],d[k]),g.length()>Number.EPSILON&&(g.normalize(),c=Math.acos(P.clamp(d[k-1].dot(d[k]),-1,1)),e[k].applyMatrix4(h.makeRotationAxis(g,c))),f[k].crossVectors(d[k],e[k]);if(!0===b)for(c=Math.acos(P.clamp(e[0].dot(e[a]),-1,1)),c/=a,0<d[0].dot(g.crossVectors(e[0],e[a]))&&(c=-c),k=1;k<=a;k++)e[k].applyMatrix4(h.makeRotationAxis(d[k],c*k)),f[k].crossVectors(d[k],e[k]);return{tangents:d,
 normals:e,binormals:f}}});Pa.prototype=Object.create(ja.prototype);Pa.prototype.constructor=Pa;Pa.prototype.isLineCurve=!0;Pa.prototype.getPoint=function(a){if(1===a)return this.v2.clone();var b=this.v2.clone().sub(this.v1);b.multiplyScalar(a).add(this.v1);return b};Pa.prototype.getPointAt=function(a){return this.getPoint(a)};Pa.prototype.getTangent=function(a){return this.v2.clone().sub(this.v1).normalize()};Vc.prototype=Object.assign(Object.create(ja.prototype),{constructor:Vc,add:function(a){this.curves.push(a)},
 closePath:function(){var a=this.curves[0].getPoint(0),b=this.curves[this.curves.length-1].getPoint(1);a.equals(b)||this.curves.push(new Pa(b,a))},getPoint:function(a){var b=a*this.getLength(),c=this.getCurveLengths();for(a=0;a<c.length;){if(c[a]>=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=this.getCurveLengths();return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getCurveLengths()},
 getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;c<d;c++)b+=this.curves[c].getLength(),a.push(b);return this.cacheLengths=a},getSpacedPoints:function(a){void 0===a&&(a=40);for(var b=[],c=0;c<=a;c++)b.push(this.getPoint(c/a));this.autoClose&&b.push(b[0]);return b},getPoints:function(a){a=a||12;for(var b=[],c,d=0,e=this.curves;d<e.length;d++)for(var f=e[d],f=f.getPoints(f&&f.isEllipseCurve?
-2*a:f&&f.isLineCurve?1:f&&f.isSplineCurve?a*f.points.length:a),g=0;g<f.length;g++){var h=f[g];c&&c.equals(h)||(b.push(h),c=h)}this.autoClose&&1<b.length&&!b[b.length-1].equals(b[0])&&b.push(b[0]);return b},createPointsGeometry:function(a){a=this.getPoints(a);return this.createGeometry(a)},createSpacedPointsGeometry:function(a){a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){for(var b=new I,c=0,d=a.length;c<d;c++){var e=a[c];b.vertices.push(new p(e.x,e.y,e.z||0))}return b}});
+2*a:f&&f.isLineCurve?1:f&&f.isSplineCurve?a*f.points.length:a),g=0;g<f.length;g++){var h=f[g];c&&c.equals(h)||(b.push(h),c=h)}this.autoClose&&1<b.length&&!b[b.length-1].equals(b[0])&&b.push(b[0]);return b},createPointsGeometry:function(a){a=this.getPoints(a);return this.createGeometry(a)},createSpacedPointsGeometry:function(a){a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){for(var b=new I,c=0,d=a.length;c<d;c++){var e=a[c];b.vertices.push(new n(e.x,e.y,e.z||0))}return b}});
 Ua.prototype=Object.create(ja.prototype);Ua.prototype.constructor=Ua;Ua.prototype.isEllipseCurve=!0;Ua.prototype.getPoint=function(a){for(var b=2*Math.PI,c=this.aEndAngle-this.aStartAngle,d=Math.abs(c)<Number.EPSILON;0>c;)c+=b;for(;c>b;)c-=b;c<Number.EPSILON&&(c=d?0:b);!0!==this.aClockwise||d||(c=c===b?-b:c-b);b=this.aStartAngle+a*c;a=this.aX+this.xRadius*Math.cos(b);var e=this.aY+this.yRadius*Math.sin(b);0!==this.aRotation&&(b=Math.cos(this.aRotation),c=Math.sin(this.aRotation),d=a-this.aX,e-=this.aY,
 a=d*b-e*c+this.aX,e=d*c+e*b+this.aY);return new D(a,e)};wb.prototype=Object.create(ja.prototype);wb.prototype.constructor=wb;wb.prototype.isSplineCurve=!0;wb.prototype.getPoint=function(a){var b=this.points,c=(b.length-1)*a;a=Math.floor(c);var c=c-a,d=b[0===a?a:a-1],e=b[a],f=b[a>b.length-2?b.length-1:a+1],b=b[a>b.length-3?b.length-1:a+2];return new D(Ve(c,d.x,e.x,f.x,b.x),Ve(c,d.y,e.y,f.y,b.y))};ec.prototype=Object.create(ja.prototype);ec.prototype.constructor=ec;ec.prototype.getPoint=function(a){var b=
 this.v0,c=this.v1,d=this.v2,e=this.v3;return new D(vb(a,b.x,c.x,d.x,e.x),vb(a,b.y,c.y,d.y,e.y))};fc.prototype=Object.create(ja.prototype);fc.prototype.constructor=fc;fc.prototype.getPoint=function(a){var b=this.v0,c=this.v1,d=this.v2;return new D(ub(a,b.x,c.x,d.x),ub(a,b.y,c.y,d.y))};var we=Object.assign(Object.create(Vc.prototype),{fromPoints:function(a){this.moveTo(a[0].x,a[0].y);for(var b=1,c=a.length;b<c;b++)this.lineTo(a[b].x,a[b].y)},moveTo:function(a,b){this.currentPoint.set(a,b)},lineTo:function(a,
@@ -728,15 +728,15 @@ b){var c=new Pa(this.currentPoint.clone(),new D(a,b));this.curves.push(c);this.c
 1])},arc:function(a,b,c,d,e,f){this.absarc(a+this.currentPoint.x,b+this.currentPoint.y,c,d,e,f)},absarc:function(a,b,c,d,e,f){this.absellipse(a,b,c,c,d,e,f)},ellipse:function(a,b,c,d,e,f,g,h){this.absellipse(a+this.currentPoint.x,b+this.currentPoint.y,c,d,e,f,g,h)},absellipse:function(a,b,c,d,e,f,g,h){a=new Ua(a,b,c,d,e,f,g,h);0<this.curves.length&&(b=a.getPoint(0),b.equals(this.currentPoint)||this.lineTo(b.x,b.y));this.curves.push(a);a=a.getPoint(1);this.currentPoint.copy(a)}});Wc.prototype=we;we.constructor=
 Wc;xb.prototype=Object.assign(Object.create(we),{constructor:xb,getPointsHoles:function(a){for(var b=[],c=0,d=this.holes.length;c<d;c++)b[c]=this.holes[c].getPoints(a);return b},extractAllPoints:function(a){return{shape:this.getPoints(a),holes:this.getPointsHoles(a)}},extractPoints:function(a){return this.extractAllPoints(a)}});Object.assign(ge.prototype,{moveTo:function(a,b){this.currentPath=new Wc;this.subPaths.push(this.currentPath);this.currentPath.moveTo(a,b)},lineTo:function(a,b){this.currentPath.lineTo(a,
 b)},quadraticCurveTo:function(a,b,c,d){this.currentPath.quadraticCurveTo(a,b,c,d)},bezierCurveTo:function(a,b,c,d,e,f){this.currentPath.bezierCurveTo(a,b,c,d,e,f)},splineThru:function(a){this.currentPath.splineThru(a)},toShapes:function(a,b){function c(a){for(var b=[],c=0,d=a.length;c<d;c++){var e=a[c],f=new xb;f.curves=e.curves;b.push(f)}return b}function d(a,b){for(var c=b.length,d=!1,e=c-1,f=0;f<c;e=f++){var g=b[e],h=b[f],k=h.x-g.x,l=h.y-g.y;if(Math.abs(l)>Number.EPSILON){if(0>l&&(g=b[f],k=-k,
-h=b[e],l=-l),!(a.y<g.y||a.y>h.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=l*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=Ha.isClockWise,f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new xb;h.curves=g.curves;b.push(h);return b}var k=!e(f[0].getPoints()),k=a?!k:k;h=[];var l=[],m=[],q=0;l[q]=void 0;m[q]=[];for(var p=0,t=f.length;p<t;p++){g=f[p];var u=g.getPoints();
-var w=e(u);(w=a?!w:w)?(!k&&l[q]&&q++,l[q]={s:new xb,p:u},l[q].s.curves=g.curves,k&&q++,m[q]=[]):m[q].push({h:g,p:u[0]})}if(!l[0])return c(f);if(1<l.length){p=!1;a=[];e=0;for(f=l.length;e<f;e++)h[e]=[];e=0;for(f=l.length;e<f;e++)for(g=m[e],w=0;w<g.length;w++){k=g[w];q=!0;for(u=0;u<l.length;u++)d(k.p,l[u].p)&&(e!==u&&a.push({froms:e,tos:u,hole:w}),q?(q=!1,h[u].push(k)):p=!0);q&&h[e].push(k)}0<a.length&&(p||(m=h))}p=0;for(e=l.length;p<e;p++)for(h=l[p].s,b.push(h),a=m[p],f=0,g=a.length;f<g;f++)h.holes.push(a[f].h);
-return b}});Object.assign(he.prototype,{isFont:!0,generateShapes:function(a,b,c){void 0===b&&(b=100);void 0===c&&(c=4);var d=this.data;a=String(a).split("");var e=b/d.resolution,f=(d.boundingBox.yMax-d.boundingBox.yMin+d.underlineThickness)*e,g=0,h=0;b=[];for(var k=0;k<a.length;k++){var l=a[k];if("\n"===l)g=0,h-=f;else{var m;var q=e;var p=g,t=h;if(l=d.glyphs[l]||d.glyphs["?"]){var u=new ge,w=[];if(l.o)for(var v=l._cachedOutline||(l._cachedOutline=l.o.split(" ")),x=0,y=v.length;x<y;)switch(v[x++]){case "m":var z=
-v[x++]*q+p;var B=v[x++]*q+t;u.moveTo(z,B);break;case "l":z=v[x++]*q+p;B=v[x++]*q+t;u.lineTo(z,B);break;case "q":var D=v[x++]*q+p;var E=v[x++]*q+t;var F=v[x++]*q+p;var I=v[x++]*q+t;u.quadraticCurveTo(F,I,D,E);if(m=w[w.length-1]){var J=m.x;m=m.y;for(var N=1;N<=c;N++){var O=N/c;ub(O,J,F,D);ub(O,m,I,E)}}break;case "b":if(D=v[x++]*q+p,E=v[x++]*q+t,F=v[x++]*q+p,I=v[x++]*q+t,z=v[x++]*q+p,B=v[x++]*q+t,u.bezierCurveTo(F,I,z,B,D,E),m=w[w.length-1])for(J=m.x,m=m.y,N=1;N<=c;N++)O=N/c,vb(O,J,F,z,D),vb(O,m,I,B,
-E)}q={offsetX:l.ha*q,path:u}}else q=void 0;g+=q.offsetX;b.push(q.path)}}c=[];d=0;for(a=b.length;d<a;d++)Array.prototype.push.apply(c,b[d].toShapes());return c}});Object.assign(We.prototype,{load:function(a,b,c,d){var e=this;(new Ja(this.manager)).load(a,function(a){try{var c=JSON.parse(a)}catch(h){console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),c=JSON.parse(a.substring(65,a.length-2))}a=e.parse(c);b&&b(a)},c,d)},parse:function(a){return new he(a)}});
+h=b[e],l=-l),!(a.y<g.y||a.y>h.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=l*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=Ha.isClockWise,f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new xb;h.curves=g.curves;b.push(h);return b}var k=!e(f[0].getPoints()),k=a?!k:k;h=[];var l=[],m=[],q=0;l[q]=void 0;m[q]=[];for(var n=0,r=f.length;n<r;n++){g=f[n];var v=g.getPoints();
+var w=e(v);(w=a?!w:w)?(!k&&l[q]&&q++,l[q]={s:new xb,p:v},l[q].s.curves=g.curves,k&&q++,m[q]=[]):m[q].push({h:g,p:v[0]})}if(!l[0])return c(f);if(1<l.length){n=!1;a=[];e=0;for(f=l.length;e<f;e++)h[e]=[];e=0;for(f=l.length;e<f;e++)for(g=m[e],w=0;w<g.length;w++){k=g[w];q=!0;for(v=0;v<l.length;v++)d(k.p,l[v].p)&&(e!==v&&a.push({froms:e,tos:v,hole:w}),q?(q=!1,h[v].push(k)):n=!0);q&&h[e].push(k)}0<a.length&&(n||(m=h))}n=0;for(e=l.length;n<e;n++)for(h=l[n].s,b.push(h),a=m[n],f=0,g=a.length;f<g;f++)h.holes.push(a[f].h);
+return b}});Object.assign(he.prototype,{isFont:!0,generateShapes:function(a,b,c){void 0===b&&(b=100);void 0===c&&(c=4);var d=this.data;a=String(a).split("");var e=b/d.resolution,f=(d.boundingBox.yMax-d.boundingBox.yMin+d.underlineThickness)*e,g=0,h=0;b=[];for(var k=0;k<a.length;k++){var l=a[k];if("\n"===l)g=0,h-=f;else{var m;var q=e;var n=g,r=h;if(l=d.glyphs[l]||d.glyphs["?"]){var v=new ge,w=[];if(l.o)for(var u=l._cachedOutline||(l._cachedOutline=l.o.split(" ")),x=0,y=u.length;x<y;)switch(u[x++]){case "m":var z=
+u[x++]*q+n;var B=u[x++]*q+r;v.moveTo(z,B);break;case "l":z=u[x++]*q+n;B=u[x++]*q+r;v.lineTo(z,B);break;case "q":var D=u[x++]*q+n;var E=u[x++]*q+r;var F=u[x++]*q+n;var I=u[x++]*q+r;v.quadraticCurveTo(F,I,D,E);if(m=w[w.length-1]){var J=m.x;m=m.y;for(var N=1;N<=c;N++){var O=N/c;ub(O,J,F,D);ub(O,m,I,E)}}break;case "b":if(D=u[x++]*q+n,E=u[x++]*q+r,F=u[x++]*q+n,I=u[x++]*q+r,z=u[x++]*q+n,B=u[x++]*q+r,v.bezierCurveTo(F,I,z,B,D,E),m=w[w.length-1])for(J=m.x,m=m.y,N=1;N<=c;N++)O=N/c,vb(O,J,F,z,D),vb(O,m,I,B,
+E)}q={offsetX:l.ha*q,path:v}}else q=void 0;g+=q.offsetX;b.push(q.path)}}c=[];d=0;for(a=b.length;d<a;d++)Array.prototype.push.apply(c,b[d].toShapes());return c}});Object.assign(We.prototype,{load:function(a,b,c,d){var e=this;(new Ja(this.manager)).load(a,function(a){try{var c=JSON.parse(a)}catch(h){console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),c=JSON.parse(a.substring(65,a.length-2))}a=e.parse(c);b&&b(a)},c,d)},parse:function(a){return new he(a)}});
 var Qd,ke={getContext:function(){void 0===Qd&&(Qd=new (window.AudioContext||window.webkitAudioContext));return Qd},setContext:function(a){Qd=a}};Object.assign(ie.prototype,{load:function(a,b,c,d){var e=new Ja(this.manager);e.setResponseType("arraybuffer");e.load(a,function(a){ke.getContext().decodeAudioData(a,function(a){b(a)})},c,d)}});Object.assign(Xe.prototype,{update:function(){var a,b,c,d,e,f,g,h,k=new J,l=new J;return function(m){if(a!==this||b!==m.focus||c!==m.fov||d!==m.aspect*this.aspect||
-e!==m.near||f!==m.far||g!==m.zoom||h!==this.eyeSep){a=this;b=m.focus;c=m.fov;d=m.aspect*this.aspect;e=m.near;f=m.far;g=m.zoom;var n=m.projectionMatrix.clone();h=this.eyeSep/2;var p=h*e/b,t=e*Math.tan(P.DEG2RAD*c*.5)/g;l.elements[12]=-h;k.elements[12]=h;var u=-t*d+p;var w=t*d+p;n.elements[0]=2*e/(w-u);n.elements[8]=(w+u)/(w-u);this.cameraL.projectionMatrix.copy(n);u=-t*d-p;w=t*d-p;n.elements[0]=2*e/(w-u);n.elements[8]=(w+u)/(w-u);this.cameraR.projectionMatrix.copy(n)}this.cameraL.matrixWorld.copy(m.matrixWorld).multiply(l);
+e!==m.near||f!==m.far||g!==m.zoom||h!==this.eyeSep){a=this;b=m.focus;c=m.fov;d=m.aspect*this.aspect;e=m.near;f=m.far;g=m.zoom;var p=m.projectionMatrix.clone();h=this.eyeSep/2;var n=h*e/b,r=e*Math.tan(P.DEG2RAD*c*.5)/g;l.elements[12]=-h;k.elements[12]=h;var v=-r*d+n;var w=r*d+n;p.elements[0]=2*e/(w-v);p.elements[8]=(w+v)/(w-v);this.cameraL.projectionMatrix.copy(p);v=-r*d-n;w=r*d-n;p.elements[0]=2*e/(w-v);p.elements[8]=(w+v)/(w-v);this.cameraR.projectionMatrix.copy(p)}this.cameraL.matrixWorld.copy(m.matrixWorld).multiply(l);
 this.cameraR.matrixWorld.copy(m.matrixWorld).multiply(k)}}()});Kd.prototype=Object.create(z.prototype);Kd.prototype.constructor=Kd;je.prototype=Object.assign(Object.create(z.prototype),{constructor:je,getInput:function(){return this.gain},removeFilter:function(){null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null)},getFilter:function(){return this.filter},setFilter:function(a){null!==this.filter?
-(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination);this.filter=a;this.gain.connect(this.filter);this.filter.connect(this.context.destination)},getMasterVolume:function(){return this.gain.gain.value},setMasterVolume:function(a){this.gain.gain.value=a},updateMatrixWorld:function(){var a=new p,b=new ka,c=new p,d=new p;return function(e){z.prototype.updateMatrixWorld.call(this,e);e=this.context.listener;var f=this.up;this.matrixWorld.decompose(a,
+(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination);this.filter=a;this.gain.connect(this.filter);this.filter.connect(this.context.destination)},getMasterVolume:function(){return this.gain.gain.value},setMasterVolume:function(a){this.gain.gain.value=a},updateMatrixWorld:function(){var a=new n,b=new ka,c=new n,d=new n;return function(e){z.prototype.updateMatrixWorld.call(this,e);e=this.context.listener;var f=this.up;this.matrixWorld.decompose(a,
 b,c);d.set(0,0,-1).applyQuaternion(b);e.positionX?(e.positionX.setValueAtTime(a.x,this.context.currentTime),e.positionY.setValueAtTime(a.y,this.context.currentTime),e.positionZ.setValueAtTime(a.z,this.context.currentTime),e.forwardX.setValueAtTime(d.x,this.context.currentTime),e.forwardY.setValueAtTime(d.y,this.context.currentTime),e.forwardZ.setValueAtTime(d.z,this.context.currentTime),e.upX.setValueAtTime(f.x,this.context.currentTime),e.upY.setValueAtTime(f.y,this.context.currentTime),e.upZ.setValueAtTime(f.z,
 this.context.currentTime)):(e.setPosition(a.x,a.y,a.z),e.setOrientation(d.x,d.y,d.z,f.x,f.y,f.z))}}()});gc.prototype=Object.assign(Object.create(z.prototype),{constructor:gc,getOutput:function(){return this.gain},setNodeSource:function(a){this.hasPlaybackControl=!1;this.sourceType="audioNode";this.source=a;this.connect();return this},setBuffer:function(a){this.buffer=a;this.sourceType="buffer";this.autoplay&&this.play();return this},play:function(){if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");
 else if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else{var a=this.context.createBufferSource();a.buffer=this.buffer;a.loop=this.loop;a.onended=this.onEnded.bind(this);a.playbackRate.setValueAtTime(this.playbackRate,this.startTime);a.start(0,this.startTime);this.isPlaying=!0;this.source=a;return this.connect()}},pause:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.source.stop(),
@@ -744,7 +744,7 @@ this.startTime=this.context.currentTime,this.isPlaying=!1,this},stop:function(){
 return this},disconnect:function(){if(0<this.filters.length){this.source.disconnect(this.filters[0]);for(var a=1,b=this.filters.length;a<b;a++)this.filters[a-1].disconnect(this.filters[a]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this},getFilters:function(){return this.filters},setFilters:function(a){a||(a=[]);!0===this.isPlaying?(this.disconnect(),this.filters=a,this.connect()):this.filters=a;return this},getFilter:function(){return this.getFilters()[0]},
 setFilter:function(a){return this.setFilters(a?[a]:[])},setPlaybackRate:function(a){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.playbackRate=a,!0===this.isPlaying&&this.source.playbackRate.setValueAtTime(this.playbackRate,this.context.currentTime),this},getPlaybackRate:function(){return this.playbackRate},onEnded:function(){this.isPlaying=!1},getLoop:function(){return!1===this.hasPlaybackControl?(console.warn("THREE.Audio: this Audio has no playback control."),
 !1):this.loop},setLoop:function(a){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.loop=a,!0===this.isPlaying&&(this.source.loop=this.loop),this},getVolume:function(){return this.gain.gain.value},setVolume:function(a){this.gain.gain.value=a;return this}});le.prototype=Object.assign(Object.create(gc.prototype),{constructor:le,getOutput:function(){return this.panner},getRefDistance:function(){return this.panner.refDistance},setRefDistance:function(a){this.panner.refDistance=
-a},getRolloffFactor:function(){return this.panner.rolloffFactor},setRolloffFactor:function(a){this.panner.rolloffFactor=a},getDistanceModel:function(){return this.panner.distanceModel},setDistanceModel:function(a){this.panner.distanceModel=a},getMaxDistance:function(){return this.panner.maxDistance},setMaxDistance:function(a){this.panner.maxDistance=a},updateMatrixWorld:function(){var a=new p;return function(b){z.prototype.updateMatrixWorld.call(this,b);a.setFromMatrixPosition(this.matrixWorld);this.panner.setPosition(a.x,
+a},getRolloffFactor:function(){return this.panner.rolloffFactor},setRolloffFactor:function(a){this.panner.rolloffFactor=a},getDistanceModel:function(){return this.panner.distanceModel},setDistanceModel:function(a){this.panner.distanceModel=a},getMaxDistance:function(){return this.panner.maxDistance},setMaxDistance:function(a){this.panner.maxDistance=a},updateMatrixWorld:function(){var a=new n;return function(b){z.prototype.updateMatrixWorld.call(this,b);a.setFromMatrixPosition(this.matrixWorld);this.panner.setPosition(a.x,
 a.y,a.z)}}()});Object.assign(me.prototype,{getFrequencyData:function(){this.analyser.getByteFrequencyData(this.data);return this.data},getAverageFrequency:function(){for(var a=0,b=this.getFrequencyData(),c=0;c<b.length;c++)a+=b[c];return a/b.length}});Object.assign(ne.prototype,{accumulate:function(a,b){var c=this.buffer,d=this.valueSize;a=a*d+d;var e=this.cumulativeWeight;if(0===e){for(e=0;e!==d;++e)c[a+e]=c[e];e=b}else e+=b,this._mixBufferRegion(c,a,0,b/e,d);this.cumulativeWeight=e},apply:function(a){var b=
 this.valueSize,c=this.buffer;a=a*b+b;var d=this.cumulativeWeight,e=this.binding;this.cumulativeWeight=0;1>d&&this._mixBufferRegion(c,a,3*b,1-d,b);for(var d=b,f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a);break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a,c);for(var d=b;d!==c;++d)a[d]=a[c+d%b];this.cumulativeWeight=0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a,b,c,d,e){if(.5<=d)for(d=
 0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d){ka.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}});Object.assign(Ye.prototype,{getValue:function(a,b){this.bind();var c=this._bindings[this._targetGroup.nCachedObjects_];void 0!==c&&c.getValue(a,b)},setValue:function(a,b){for(var c=this._bindings,d=this._targetGroup.nCachedObjects_,e=c.length;d!==e;++d)c[d].setValue(a,b)},bind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,
@@ -760,10 +760,10 @@ this);return}a=a[c]}if(void 0!==f){if(void 0===a[f]){console.error("THREE.Proper
 a);c=this.BindingType.Direct;if(void 0!==e){if("morphTargetInfluences"===d){if(!a.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(a.geometry.isBufferGeometry){if(!a.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}for(c=0;c<this.node.geometry.morphAttributes.position.length;c++)if(a.geometry.morphAttributes.position[c].name===
 e){e=c;break}}else{if(!a.geometry.morphTargets){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.",this);return}for(c=0;c<this.node.geometry.morphTargets.length;c++)if(a.geometry.morphTargets[c].name===e){e=c;break}}}c=this.BindingType.ArrayElement;this.resolvedProperty=f;this.propertyIndex=e}else void 0!==f.fromArray&&void 0!==f.toArray?(c=this.BindingType.HasFromToArray,this.resolvedProperty=f):Array.isArray(f)?(c=this.BindingType.EntireArray,
 this.resolvedProperty=f):this.propertyName=d;this.getValue=this.GetterByBindingType[c];this.setValue=this.SetterByBindingTypeAndVersioning[c][b]}}else console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.")},unbind:function(){this.node=null;this.getValue=this._getValue_unbound;this.setValue=this._setValue_unbound}});Object.assign(T.prototype,{_getValue_unbound:T.prototype.getValue,_setValue_unbound:T.prototype.setValue});Object.assign(Ze.prototype,
-{isAnimationObjectGroup:!0,add:function(a){for(var b=this._objects,c=b.length,d=this.nCachedObjects_,e=this._indicesByUUID,f=this._paths,g=this._parsedPaths,h=this._bindings,k=h.length,l=0,m=arguments.length;l!==m;++l){var q=arguments[l],p=q.uuid,t=e[p];if(void 0===t){t=c++;e[p]=t;b.push(q);for(var p=0,u=k;p!==u;++p)h[p].push(new T(q,f[p],g[p]))}else if(t<d){var w=--d,u=b[w];e[u.uuid]=t;b[t]=u;e[p]=w;b[w]=q;p=0;for(u=k;p!==u;++p){var v=h[p],x=v[t];v[t]=v[w];void 0===x&&(x=new T(q,f[p],g[p]));v[w]=
-x}}else void 0!==b[t]&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=d},remove:function(a){for(var b=this._objects,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var k=arguments[g],l=k.uuid,m=d[l];if(void 0!==m&&m>=c){var p=c++,r=b[p];d[r.uuid]=m;b[m]=r;d[l]=p;b[p]=k;k=0;for(l=f;k!==l;++k){var r=e[k],
-t=r[m];r[m]=r[p];r[p]=t}}}this.nCachedObjects_=c},uncache:function(a){for(var b,c,d=this._objects,e=d.length,f=this.nCachedObjects_,g=this._indicesByUUID,h=this._bindings,k=h.length,l=0,m=arguments.length;l!==m;++l){c=arguments[l].uuid;var p=g[c];if(void 0!==p)if(delete g[c],p<f){var r=--f,t=d[r];c=--e;b=d[c];g[t.uuid]=p;d[p]=t;g[b.uuid]=r;d[r]=b;d.pop();for(var t=0,u=k;t!==u;++t){b=h[t];var w=b[c];b[p]=b[r];b[r]=w;b.pop()}}else for(c=--e,b=d[c],g[b.uuid]=p,d[p]=b,d.pop(),t=0,u=k;t!==u;++t)b=h[t],
-b[p]=b[c],b.pop()}this.nCachedObjects_=f},subscribe_:function(a,b){var c=this._bindingsIndicesByPath,d=c[a],e=this._bindings;if(void 0!==d)return e[d];var f=this._paths,g=this._parsedPaths,h=this._objects,k=this.nCachedObjects_,l=Array(h.length),d=e.length;c[a]=d;f.push(a);g.push(b);e.push(l);c=k;for(d=h.length;c!==d;++c)l[c]=new T(h[c],a,b);return l},unsubscribe_:function(a){var b=this._bindingsIndicesByPath,c=b[a];if(void 0!==c){var d=this._paths,e=this._parsedPaths,f=this._bindings,g=f.length-
+{isAnimationObjectGroup:!0,add:function(a){for(var b=this._objects,c=b.length,d=this.nCachedObjects_,e=this._indicesByUUID,f=this._paths,g=this._parsedPaths,h=this._bindings,k=h.length,l=0,m=arguments.length;l!==m;++l){var n=arguments[l],t=n.uuid,r=e[t];if(void 0===r){r=c++;e[t]=r;b.push(n);for(var t=0,v=k;t!==v;++t)h[t].push(new T(n,f[t],g[t]))}else if(r<d){var w=--d,v=b[w];e[v.uuid]=r;b[r]=v;e[t]=w;b[w]=n;t=0;for(v=k;t!==v;++t){var u=h[t],x=u[r];u[r]=u[w];void 0===x&&(x=new T(n,f[t],g[t]));u[w]=
+x}}else void 0!==b[r]&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=d},remove:function(a){for(var b=this._objects,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var k=arguments[g],l=k.uuid,m=d[l];if(void 0!==m&&m>=c){var n=c++,t=b[n];d[t.uuid]=m;b[m]=t;d[l]=n;b[n]=k;k=0;for(l=f;k!==l;++k){var t=e[k],
+r=t[m];t[m]=t[n];t[n]=r}}}this.nCachedObjects_=c},uncache:function(a){for(var b,c,d=this._objects,e=d.length,f=this.nCachedObjects_,g=this._indicesByUUID,h=this._bindings,k=h.length,l=0,m=arguments.length;l!==m;++l){c=arguments[l].uuid;var n=g[c];if(void 0!==n)if(delete g[c],n<f){var t=--f,r=d[t];c=--e;b=d[c];g[r.uuid]=n;d[n]=r;g[b.uuid]=t;d[t]=b;d.pop();for(var r=0,v=k;r!==v;++r){b=h[r];var w=b[c];b[n]=b[t];b[t]=w;b.pop()}}else for(c=--e,b=d[c],g[b.uuid]=n,d[n]=b,d.pop(),r=0,v=k;r!==v;++r)b=h[r],
+b[n]=b[c],b.pop()}this.nCachedObjects_=f},subscribe_:function(a,b){var c=this._bindingsIndicesByPath,d=c[a],e=this._bindings;if(void 0!==d)return e[d];var f=this._paths,g=this._parsedPaths,h=this._objects,k=this.nCachedObjects_,l=Array(h.length),d=e.length;c[a]=d;f.push(a);g.push(b);e.push(l);c=k;for(d=h.length;c!==d;++c)l[c]=new T(h[c],a,b);return l},unsubscribe_:function(a){var b=this._bindingsIndicesByPath,c=b[a];if(void 0!==c){var d=this._paths,e=this._parsedPaths,f=this._bindings,g=f.length-
 1,h=f[g];b[a[g]]=c;f[c]=h;f.pop();e[c]=e[g];e.pop();d[c]=d[g];d.pop()}}});Object.assign($e.prototype,{play:function(){this._mixer._activateAction(this);return this},stop:function(){this._mixer._deactivateAction(this);return this.reset()},reset:function(){this.paused=!1;this.enabled=!0;this.time=0;this._loopCount=-1;this._startTime=null;return this.stopFading().stopWarping()},isRunning:function(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)},
 isScheduled:function(){return this._mixer._isActiveAction(this)},startAt:function(a){this._startTime=a;return this},setLoop:function(a,b){this.loop=a;this.repetitions=b;return this},setEffectiveWeight:function(a){this.weight=a;this._effectiveWeight=this.enabled?a:0;return this.stopFading()},getEffectiveWeight:function(){return this._effectiveWeight},fadeIn:function(a){return this._scheduleFading(a,0,1)},fadeOut:function(a){return this._scheduleFading(a,1,0)},crossFadeFrom:function(a,b,c){a.fadeOut(b);
 this.fadeIn(b);if(c){c=this._clip.duration;var d=a._clip.duration,e=c/d;a.warp(1,d/c,b);this.warp(e,1,b)}return this},crossFadeTo:function(a,b,c){return a.crossFadeFrom(this,b,c)},stopFading:function(){var a=this._weightInterpolant;null!==a&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(a));return this},setEffectiveTimeScale:function(a){this.timeScale=a;this._effectiveTimeScale=this.paused?0:a;return this.stopWarping()},getEffectiveTimeScale:function(){return this._effectiveTimeScale},
@@ -773,8 +773,8 @@ for(var e=this._propertyBindings,f=0,g=b.length;f!==g;++f)b[f].evaluate(c),e[f].
 b=b*d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a;if(0===a)return b;var c=this._clip.duration,d=this.loop,e=this._loopCount;if(2200===d)a:{if(-1===e&&(this._loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else break a;this.clampWhenFinished?this.paused=!0:this.enabled=!1;this._mixer.dispatchEvent({type:"finished",action:this,direction:0>a?-1:1})}else{d=2202===d;
 -1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions,d)):this._setEndings(0===this.repetitions,!0,d));if(b>=c||0>b){var f=Math.floor(b/c),b=b-c*f,e=e+Math.abs(f),g=this.repetitions-e;0>g?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,b=0<a?c:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:0<a?1:-1})):(0===g?(a=0>a,this._setEndings(a,!a,d)):this._setEndings(!1,!1,d),this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:f}))}if(d&&1===(e&1))return this.time=
 b,c-b}return this.time=b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=2401,d.endingEnd=2401):(d.endingStart=a?this.zeroSlopeAtStart?2401:2400:2402,d.endingEnd=b?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}});Object.assign(af.prototype,oa.prototype,
-{_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName,k=h[g];void 0===k&&(k={},h[g]=k);for(h=0;h!==e;++h){var l=d[h],m=l.name,p=k[m];if(void 0===p){p=f[h];if(void 0!==p){null===p._cacheIndex&&(++p.referenceCount,this._addInactiveBinding(p,g,m));continue}p=new ne(T.create(c,m,b&&b._propertyBindings[h].binding.parsedPath),l.ValueTypeName,l.getValueSize());++p.referenceCount;this._addInactiveBinding(p,
-g,m)}f[h]=p;a[h].resultBuffer=p.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b=a._propertyBindings,
+{_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName,k=h[g];void 0===k&&(k={},h[g]=k);for(h=0;h!==e;++h){var l=d[h],m=l.name,n=k[m];if(void 0===n){n=f[h];if(void 0!==n){null===n._cacheIndex&&(++n.referenceCount,this._addInactiveBinding(n,g,m));continue}n=new ne(T.create(c,m,b&&b._propertyBindings[h].binding.parsedPath),l.ValueTypeName,l.getValueSize());++n.referenceCount;this._addInactiveBinding(n,
+g,m)}f[h]=n;a[h].resultBuffer=n.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b=a._propertyBindings,
 c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions=[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length},
 get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}},_isActiveAction:function(a){a=a._cacheIndex;return null!==a&&a<this._nActiveActions},_addInactiveAction:function(a,b,c){var d=this._actions,e=this._actionsByClip,f=e[b];void 0===f?(f={knownActions:[a],actionByRoot:{}},a._byClipCacheIndex=0,e[b]=f):(b=f.knownActions,a._byClipCacheIndex=b.length,b.push(a));a._cacheIndex=d.length;d.push(a);
 f.actionByRoot[c]=a},_removeInactiveAction:function(a){var b=this._actions,c=b[b.length-1],d=a._cacheIndex;c._cacheIndex=d;b[d]=c;b.pop();a._cacheIndex=null;var b=a._clip.uuid,c=this._actionsByClip,d=c[b],e=d.knownActions,f=e[e.length-1],g=a._byClipCacheIndex;f._byClipCacheIndex=g;e[g]=f;e.pop();a._byClipCacheIndex=null;delete d.actionByRoot[(a._localRoot||this._root).uuid];0===e.length&&delete c[b];this._removeInactiveBindingsForAction(a)},_removeInactiveBindingsForAction:function(a){a=a._propertyBindings;
@@ -800,38 +800,38 @@ function(a,b,c,d){b={start:b,end:c,length:c-b+1,fps:d,duration:(c-b)/d,lastFrame
 this.animationsMap[a])a.duration=b,a.fps=(a.end-a.start)/a.duration};da.prototype.setAnimationWeight=function(a,b){if(a=this.animationsMap[a])a.weight=b};da.prototype.setAnimationTime=function(a,b){if(a=this.animationsMap[a])a.time=b};da.prototype.getAnimationTime=function(a){var b=0;if(a=this.animationsMap[a])b=a.time;return b};da.prototype.getAnimationDuration=function(a){var b=-1;if(a=this.animationsMap[a])b=a.duration;return b};da.prototype.playAnimation=function(a){var b=this.animationsMap[a];
 b?(b.time=0,b.active=!0):console.warn("THREE.MorphBlendMesh: animation["+a+"] undefined in .playAnimation()")};da.prototype.stopAnimation=function(a){if(a=this.animationsMap[a])a.active=!1};da.prototype.update=function(a){for(var b=0,c=this.animationsList.length;b<c;b++){var d=this.animationsList[b];if(d.active){var e=d.duration/d.length;d.time+=d.direction*a;if(d.mirroredLoop){if(d.time>d.duration||0>d.time)d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),0>d.time&&
 (d.time=0,d.directionBackwards=!1)}else d.time%=d.duration,0>d.time&&(d.time+=d.duration);var f=d.start+P.clamp(Math.floor(d.time/e),0,d.length-1),g=d.weight;f!==d.currentFrame&&(this.morphTargetInfluences[d.lastFrame]=0,this.morphTargetInfluences[d.currentFrame]=1*g,this.morphTargetInfluences[f]=0,d.lastFrame=d.currentFrame,d.currentFrame=f);e=d.time%e/e;d.directionBackwards&&(e=1-e);d.currentFrame!==d.lastFrame?(this.morphTargetInfluences[d.currentFrame]=e*g,this.morphTargetInfluences[d.lastFrame]=
-(1-e)*g):this.morphTargetInfluences[d.currentFrame]=g}}};Xc.prototype=Object.create(z.prototype);Xc.prototype.constructor=Xc;Xc.prototype.isImmediateRenderObject=!0;Yc.prototype=Object.create(S.prototype);Yc.prototype.constructor=Yc;Yc.prototype.update=function(){var a=new p,b=new p,c=new ma;return function(){var d,e=["a","b","c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var f=this.object.matrixWorld,g=this.geometry.attributes.position;if((d=this.object.geometry)&&
-d.isGeometry)for(var h=d.vertices,k=d.faces,l=d=0,m=k.length;l<m;l++)for(var p=k[l],r=0,t=p.vertexNormals.length;r<t;r++){var u=p.vertexNormals[r];a.copy(h[p[e[r]]]).applyMatrix4(f);b.copy(u).applyMatrix3(c).normalize().multiplyScalar(this.size).add(a);g.setXYZ(d,a.x,a.y,a.z);d+=1;g.setXYZ(d,b.x,b.y,b.z);d+=1}else if(d&&d.isBufferGeometry)for(e=d.attributes.position,h=d.attributes.normal,r=d=0,t=e.count;r<t;r++)a.set(e.getX(r),e.getY(r),e.getZ(r)).applyMatrix4(f),b.set(h.getX(r),h.getY(r),h.getZ(r)),
-b.applyMatrix3(c).normalize().multiplyScalar(this.size).add(a),g.setXYZ(d,a.x,a.y,a.z),d+=1,g.setXYZ(d,b.x,b.y,b.z),d+=1;g.needsUpdate=!0}}();ic.prototype=Object.create(z.prototype);ic.prototype.constructor=ic;ic.prototype.dispose=function(){this.cone.geometry.dispose();this.cone.material.dispose()};ic.prototype.update=function(){var a=new p,b=new p;return function(){this.light.updateMatrixWorld();var c=this.light.distance?this.light.distance:1E3,d=c*Math.tan(this.light.angle);this.cone.scale.set(d,
-d,c);a.setFromMatrixPosition(this.light.matrixWorld);b.setFromMatrixPosition(this.light.target.matrixWorld);this.cone.lookAt(b.sub(a));void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}();jc.prototype=Object.create(S.prototype);jc.prototype.constructor=jc;jc.prototype.onBeforeRender=function(){var a=new p,b=new J,c=new J;return function(){var d=this.bones,e=this.geometry,f=e.getAttribute("position");c.getInverse(this.root.matrixWorld);for(var g=
+(1-e)*g):this.morphTargetInfluences[d.currentFrame]=g}}};Xc.prototype=Object.create(z.prototype);Xc.prototype.constructor=Xc;Xc.prototype.isImmediateRenderObject=!0;Yc.prototype=Object.create(S.prototype);Yc.prototype.constructor=Yc;Yc.prototype.update=function(){var a=new n,b=new n,c=new ma;return function(){var d,e=["a","b","c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var f=this.object.matrixWorld,g=this.geometry.attributes.position;if((d=this.object.geometry)&&
+d.isGeometry)for(var h=d.vertices,k=d.faces,l=d=0,m=k.length;l<m;l++)for(var n=k[l],t=0,r=n.vertexNormals.length;t<r;t++){var v=n.vertexNormals[t];a.copy(h[n[e[t]]]).applyMatrix4(f);b.copy(v).applyMatrix3(c).normalize().multiplyScalar(this.size).add(a);g.setXYZ(d,a.x,a.y,a.z);d+=1;g.setXYZ(d,b.x,b.y,b.z);d+=1}else if(d&&d.isBufferGeometry)for(e=d.attributes.position,h=d.attributes.normal,t=d=0,r=e.count;t<r;t++)a.set(e.getX(t),e.getY(t),e.getZ(t)).applyMatrix4(f),b.set(h.getX(t),h.getY(t),h.getZ(t)),
+b.applyMatrix3(c).normalize().multiplyScalar(this.size).add(a),g.setXYZ(d,a.x,a.y,a.z),d+=1,g.setXYZ(d,b.x,b.y,b.z),d+=1;g.needsUpdate=!0}}();ic.prototype=Object.create(z.prototype);ic.prototype.constructor=ic;ic.prototype.dispose=function(){this.cone.geometry.dispose();this.cone.material.dispose()};ic.prototype.update=function(){var a=new n,b=new n;return function(){this.light.updateMatrixWorld();var c=this.light.distance?this.light.distance:1E3,d=c*Math.tan(this.light.angle);this.cone.scale.set(d,
+d,c);a.setFromMatrixPosition(this.light.matrixWorld);b.setFromMatrixPosition(this.light.target.matrixWorld);this.cone.lookAt(b.sub(a));void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}();jc.prototype=Object.create(S.prototype);jc.prototype.constructor=jc;jc.prototype.onBeforeRender=function(){var a=new n,b=new J,c=new J;return function(){var d=this.bones,e=this.geometry,f=e.getAttribute("position");c.getInverse(this.root.matrixWorld);for(var g=
 0,h=0;g<d.length;g++){var k=d[g];k.parent&&k.parent.isBone&&(b.multiplyMatrices(c,k.matrixWorld),a.setFromMatrixPosition(b),f.setXYZ(h,a.x,a.y,a.z),b.multiplyMatrices(c,k.parent.matrixWorld),a.setFromMatrixPosition(b),f.setXYZ(h+1,a.x,a.y,a.z),h+=2)}e.getAttribute("position").needsUpdate=!0}}();kc.prototype=Object.create(na.prototype);kc.prototype.constructor=kc;kc.prototype.dispose=function(){this.geometry.dispose();this.material.dispose()};kc.prototype.update=function(){void 0!==this.color?this.material.color.set(this.color):
 this.material.color.copy(this.light.color)};lc.prototype=Object.create(z.prototype);lc.prototype.constructor=lc;lc.prototype.dispose=function(){this.children[0].geometry.dispose();this.children[0].material.dispose()};lc.prototype.update=function(){var a=.5*this.light.width,b=.5*this.light.height,c=this.line.geometry.attributes.position,d=c.array;d[0]=a;d[1]=-b;d[2]=0;d[3]=a;d[4]=b;d[5]=0;d[6]=-a;d[7]=b;d[8]=0;d[9]=-a;d[10]=-b;d[11]=0;d[12]=a;d[13]=-b;d[14]=0;c.needsUpdate=!0;void 0!==this.color?this.line.material.color.set(this.color):
-this.line.material.color.copy(this.light.color)};mc.prototype=Object.create(z.prototype);mc.prototype.constructor=mc;mc.prototype.dispose=function(){this.children[0].geometry.dispose();this.children[0].material.dispose()};mc.prototype.update=function(){var a=new p,b=new E,c=new E;return function(){var d=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{var e=d.geometry.getAttribute("color");b.copy(this.light.color);c.copy(this.light.groundColor);for(var f=0,g=e.count;f<
-g;f++){var h=f<g/2?b:c;e.setXYZ(f,h.r,h.g,h.b)}e.needsUpdate=!0}d.lookAt(a.setFromMatrixPosition(this.light.matrixWorld).negate())}}();Zc.prototype=Object.create(S.prototype);Zc.prototype.constructor=Zc;Md.prototype=Object.create(S.prototype);Md.prototype.constructor=Md;$c.prototype=Object.create(S.prototype);$c.prototype.constructor=$c;$c.prototype.update=function(){var a=new p,b=new p,c=new ma;return function(){this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);for(var d=
-this.object.matrixWorld,e=this.geometry.attributes.position,f=this.object.geometry,g=f.vertices,f=f.faces,h=0,k=0,l=f.length;k<l;k++){var m=f[k],p=m.normal;a.copy(g[m.a]).add(g[m.b]).add(g[m.c]).divideScalar(3).applyMatrix4(d);b.copy(p).applyMatrix3(c).normalize().multiplyScalar(this.size).add(a);e.setXYZ(h,a.x,a.y,a.z);h+=1;e.setXYZ(h,b.x,b.y,b.z);h+=1}e.needsUpdate=!0}}();nc.prototype=Object.create(z.prototype);nc.prototype.constructor=nc;nc.prototype.dispose=function(){this.lightPlane.geometry.dispose();
-this.lightPlane.material.dispose();this.targetLine.geometry.dispose();this.targetLine.material.dispose()};nc.prototype.update=function(){var a=new p,b=new p,c=new p;return function(){a.setFromMatrixPosition(this.light.matrixWorld);b.setFromMatrixPosition(this.light.target.matrixWorld);c.subVectors(b,a);this.lightPlane.lookAt(c);void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),
-this.targetLine.material.color.copy(this.light.color));this.targetLine.lookAt(c);this.targetLine.scale.z=c.length()}}();ad.prototype=Object.create(S.prototype);ad.prototype.constructor=ad;ad.prototype.update=function(){function a(a,g,h,k){d.set(g,h,k).unproject(e);a=c[a];if(void 0!==a)for(g=b.getAttribute("position"),h=0,k=a.length;h<k;h++)g.setXYZ(a[h],d.x,d.y,d.z)}var b,c,d=new p,e=new Na;return function(){b=this.geometry;c=this.pointMap;e.projectionMatrix.copy(this.camera.projectionMatrix);a("c",
+this.line.material.color.copy(this.light.color)};mc.prototype=Object.create(z.prototype);mc.prototype.constructor=mc;mc.prototype.dispose=function(){this.children[0].geometry.dispose();this.children[0].material.dispose()};mc.prototype.update=function(){var a=new n,b=new E,c=new E;return function(){var d=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{var e=d.geometry.getAttribute("color");b.copy(this.light.color);c.copy(this.light.groundColor);for(var f=0,g=e.count;f<
+g;f++){var h=f<g/2?b:c;e.setXYZ(f,h.r,h.g,h.b)}e.needsUpdate=!0}d.lookAt(a.setFromMatrixPosition(this.light.matrixWorld).negate())}}();Zc.prototype=Object.create(S.prototype);Zc.prototype.constructor=Zc;Md.prototype=Object.create(S.prototype);Md.prototype.constructor=Md;$c.prototype=Object.create(S.prototype);$c.prototype.constructor=$c;$c.prototype.update=function(){var a=new n,b=new n,c=new ma;return function(){this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);for(var d=
+this.object.matrixWorld,e=this.geometry.attributes.position,f=this.object.geometry,g=f.vertices,f=f.faces,h=0,k=0,l=f.length;k<l;k++){var m=f[k],n=m.normal;a.copy(g[m.a]).add(g[m.b]).add(g[m.c]).divideScalar(3).applyMatrix4(d);b.copy(n).applyMatrix3(c).normalize().multiplyScalar(this.size).add(a);e.setXYZ(h,a.x,a.y,a.z);h+=1;e.setXYZ(h,b.x,b.y,b.z);h+=1}e.needsUpdate=!0}}();nc.prototype=Object.create(z.prototype);nc.prototype.constructor=nc;nc.prototype.dispose=function(){this.lightPlane.geometry.dispose();
+this.lightPlane.material.dispose();this.targetLine.geometry.dispose();this.targetLine.material.dispose()};nc.prototype.update=function(){var a=new n,b=new n,c=new n;return function(){a.setFromMatrixPosition(this.light.matrixWorld);b.setFromMatrixPosition(this.light.target.matrixWorld);c.subVectors(b,a);this.lightPlane.lookAt(c);void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),
+this.targetLine.material.color.copy(this.light.color));this.targetLine.lookAt(c);this.targetLine.scale.z=c.length()}}();ad.prototype=Object.create(S.prototype);ad.prototype.constructor=ad;ad.prototype.update=function(){function a(a,g,h,k){d.set(g,h,k).unproject(e);a=c[a];if(void 0!==a)for(g=b.getAttribute("position"),h=0,k=a.length;h<k;h++)g.setXYZ(a[h],d.x,d.y,d.z)}var b,c,d=new n,e=new Na;return function(){b=this.geometry;c=this.pointMap;e.projectionMatrix.copy(this.camera.projectionMatrix);a("c",
 0,0,-1);a("t",0,0,1);a("n1",-1,-1,-1);a("n2",1,-1,-1);a("n3",-1,1,-1);a("n4",1,1,-1);a("f1",-1,-1,1);a("f2",1,-1,1);a("f3",-1,1,1);a("f4",1,1,1);a("u1",.7,1.1,-1);a("u2",-.7,1.1,-1);a("u3",0,2,-1);a("cf1",-1,0,1);a("cf2",1,0,1);a("cf3",0,-1,1);a("cf4",0,1,1);a("cn1",-1,0,-1);a("cn2",1,0,-1);a("cn3",0,-1,-1);a("cn4",0,1,-1);b.getAttribute("position").needsUpdate=!0}}();yb.prototype=Object.create(S.prototype);yb.prototype.constructor=yb;yb.prototype.update=function(){var a=new Qa;return function(b){void 0!==
 b&&console.warn("THREE.BoxHelper: .update() has no longer arguments.");void 0!==this.object&&a.setFromObject(this.object);if(!a.isEmpty()){b=a.min;var c=a.max,d=this.geometry.attributes.position,e=d.array;e[0]=c.x;e[1]=c.y;e[2]=c.z;e[3]=b.x;e[4]=c.y;e[5]=c.z;e[6]=b.x;e[7]=b.y;e[8]=c.z;e[9]=c.x;e[10]=b.y;e[11]=c.z;e[12]=c.x;e[13]=c.y;e[14]=b.z;e[15]=b.x;e[16]=c.y;e[17]=b.z;e[18]=b.x;e[19]=b.y;e[20]=b.z;e[21]=c.x;e[22]=b.y;e[23]=b.z;d.needsUpdate=!0;this.geometry.computeBoundingSphere()}}}();yb.prototype.setFromObject=
 function(a){this.object=a;this.update();return this};bd.prototype=Object.create(S.prototype);bd.prototype.constructor=bd;bd.prototype.onBeforeRender=function(){var a=this.box;a.isEmpty()||(a.getCenter(this.position),a.getSize(this.scale),this.scale.multiplyScalar(.5))};cd.prototype=Object.create(ra.prototype);cd.prototype.constructor=cd;cd.prototype.onBeforeRender=function(){var a=-this.plane.constant;1E-8>Math.abs(a)&&(a=1E-8);this.scale.set(.5*this.size,.5*this.size,a);this.lookAt(this.plane.normal);
-this.updateMatrixWorld()};var Nd,te;zb.prototype=Object.create(z.prototype);zb.prototype.constructor=zb;zb.prototype.setDirection=function(){var a=new p,b;return function(c){.99999<c.y?this.quaternion.set(0,0,0,1):-.99999>c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y),this.quaternion.setFromAxisAngle(a,b))}}();zb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,
-b,c);this.cone.position.y=a;this.cone.updateMatrix()};zb.prototype.setColor=function(a){this.line.material.color.copy(a);this.cone.material.color.copy(a)};Od.prototype=Object.create(S.prototype);Od.prototype.constructor=Od;var Rd=new p,xe=new ue,ye=new ue,ze=new ue;Ka.prototype=Object.create(ja.prototype);Ka.prototype.constructor=Ka;Ka.prototype.getPoint=function(a){var b=this.points,c=b.length;a*=c-(this.closed?0:1);var d=Math.floor(a);a-=d;this.closed?d+=0<d?0:(Math.floor(Math.abs(d)/b.length)+
+this.updateMatrixWorld()};var Nd,te;zb.prototype=Object.create(z.prototype);zb.prototype.constructor=zb;zb.prototype.setDirection=function(){var a=new n,b;return function(c){.99999<c.y?this.quaternion.set(0,0,0,1):-.99999>c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y),this.quaternion.setFromAxisAngle(a,b))}}();zb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,
+b,c);this.cone.position.y=a;this.cone.updateMatrix()};zb.prototype.setColor=function(a){this.line.material.color.copy(a);this.cone.material.color.copy(a)};Od.prototype=Object.create(S.prototype);Od.prototype.constructor=Od;var Rd=new n,xe=new ue,ye=new ue,ze=new ue;Ka.prototype=Object.create(ja.prototype);Ka.prototype.constructor=Ka;Ka.prototype.getPoint=function(a){var b=this.points,c=b.length;a*=c-(this.closed?0:1);var d=Math.floor(a);a-=d;this.closed?d+=0<d?0:(Math.floor(Math.abs(d)/b.length)+
 1)*b.length:0===a&&d===c-1&&(d=c-2,a=1);if(this.closed||0<d)var e=b[(d-1)%c];else Rd.subVectors(b[0],b[1]).add(b[0]),e=Rd;var f=b[d%c];var g=b[(d+1)%c];this.closed||d+2<c?b=b[(d+2)%c]:(Rd.subVectors(b[c-1],b[c-2]).add(b[c-1]),b=Rd);if(void 0===this.type||"centripetal"===this.type||"chordal"===this.type){var h="chordal"===this.type?.5:.25,c=Math.pow(e.distanceToSquared(f),h),d=Math.pow(f.distanceToSquared(g),h),h=Math.pow(g.distanceToSquared(b),h);1E-4>d&&(d=1);1E-4>c&&(c=d);1E-4>h&&(h=d);xe.initNonuniformCatmullRom(e.x,
-f.x,g.x,b.x,c,d,h);ye.initNonuniformCatmullRom(e.y,f.y,g.y,b.y,c,d,h);ze.initNonuniformCatmullRom(e.z,f.z,g.z,b.z,c,d,h)}else"catmullrom"===this.type&&(c=void 0!==this.tension?this.tension:.5,xe.initCatmullRom(e.x,f.x,g.x,b.x,c),ye.initCatmullRom(e.y,f.y,g.y,b.y,c),ze.initCatmullRom(e.z,f.z,g.z,b.z,c));return new p(xe.calc(a),ye.calc(a),ze.calc(a))};dd.prototype=Object.create(ja.prototype);dd.prototype.constructor=dd;dd.prototype.getPoint=function(a){var b=this.v0,c=this.v1,d=this.v2,e=this.v3;return new p(vb(a,
-b.x,c.x,d.x,e.x),vb(a,b.y,c.y,d.y,e.y),vb(a,b.z,c.z,d.z,e.z))};ed.prototype=Object.create(ja.prototype);ed.prototype.constructor=ed;ed.prototype.getPoint=function(a){var b=this.v0,c=this.v1,d=this.v2;return new p(ub(a,b.x,c.x,d.x),ub(a,b.y,c.y,d.y),ub(a,b.z,c.z,d.z))};fd.prototype=Object.create(ja.prototype);fd.prototype.constructor=fd;fd.prototype.getPoint=function(a){if(1===a)return this.v2.clone();var b=new p;b.subVectors(this.v2,this.v1);b.multiplyScalar(a);b.add(this.v1);return b};Pd.prototype=
+f.x,g.x,b.x,c,d,h);ye.initNonuniformCatmullRom(e.y,f.y,g.y,b.y,c,d,h);ze.initNonuniformCatmullRom(e.z,f.z,g.z,b.z,c,d,h)}else"catmullrom"===this.type&&(c=void 0!==this.tension?this.tension:.5,xe.initCatmullRom(e.x,f.x,g.x,b.x,c),ye.initCatmullRom(e.y,f.y,g.y,b.y,c),ze.initCatmullRom(e.z,f.z,g.z,b.z,c));return new n(xe.calc(a),ye.calc(a),ze.calc(a))};dd.prototype=Object.create(ja.prototype);dd.prototype.constructor=dd;dd.prototype.getPoint=function(a){var b=this.v0,c=this.v1,d=this.v2,e=this.v3;return new n(vb(a,
+b.x,c.x,d.x,e.x),vb(a,b.y,c.y,d.y,e.y),vb(a,b.z,c.z,d.z,e.z))};ed.prototype=Object.create(ja.prototype);ed.prototype.constructor=ed;ed.prototype.getPoint=function(a){var b=this.v0,c=this.v1,d=this.v2;return new n(ub(a,b.x,c.x,d.x),ub(a,b.y,c.y,d.y),ub(a,b.z,c.z,d.z))};fd.prototype=Object.create(ja.prototype);fd.prototype.constructor=fd;fd.prototype.getPoint=function(a){if(1===a)return this.v2.clone();var b=new n;b.subVectors(this.v2,this.v1);b.multiplyScalar(a);b.add(this.v1);return b};Pd.prototype=
 Object.create(Ua.prototype);Pd.prototype.constructor=Pd;ja.create=function(a,b){console.log("THREE.Curve.create() has been deprecated");a.prototype=Object.create(ja.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};hf.prototype=Object.create(Ka.prototype);jf.prototype=Object.create(Ka.prototype);ve.prototype=Object.create(Ka.prototype);Object.assign(ve.prototype,{initFromArray:function(a){console.error("THREE.Spline: .initFromArray() has been removed.")},getControlPointsArray:function(a){console.error("THREE.Spline: .getControlPointsArray() has been removed.")},
 reparametrizeByArcLength:function(a){console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")}});Zc.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")};jc.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")};Object.assign(hd.prototype,{center:function(a){console.warn("THREE.Box2: .center() has been renamed to .getCenter().");return this.getCenter(a)},
 empty:function(){console.warn("THREE.Box2: .empty() has been renamed to .isEmpty().");return this.isEmpty()},isIntersectionBox:function(a){console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().");return this.intersectsBox(a)},size:function(a){console.warn("THREE.Box2: .size() has been renamed to .getSize().");return this.getSize(a)}});Object.assign(Qa.prototype,{center:function(a){console.warn("THREE.Box3: .center() has been renamed to .getCenter().");return this.getCenter(a)},
 empty:function(){console.warn("THREE.Box3: .empty() has been renamed to .isEmpty().");return this.isEmpty()},isIntersectionBox:function(a){console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().");return this.intersectsBox(a)},isIntersectionSphere:function(a){console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().");return this.intersectsSphere(a)},size:function(a){console.warn("THREE.Box3: .size() has been renamed to .getSize().");return this.getSize(a)}});
 Fb.prototype.center=function(a){console.warn("THREE.Line3: .center() has been renamed to .getCenter().");return this.getCenter(a)};P.random16=function(){console.warn("THREE.Math.random16() has been deprecated. Use Math.random() instead.");return Math.random()};Object.assign(ma.prototype,{flattenToArrayOffset:function(a,b){console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");return this.toArray(a,b)},multiplyVector3:function(a){console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.");
 return a.applyMatrix3(this)},multiplyVector3Array:function(a){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")},applyToBuffer:function(a,b,c){console.warn("THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.");return this.applyToBufferAttribute(a)},applyToVector3Array:function(a,b,c){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")}});Object.assign(J.prototype,{extractPosition:function(a){console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().");
-return this.copyPosition(a)},flattenToArrayOffset:function(a,b){console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");return this.toArray(a,b)},getPosition:function(){var a;return function(){void 0===a&&(a=new p);console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");return a.setFromMatrixColumn(this,3)}}(),setRotationFromQuaternion:function(a){console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().");
+return this.copyPosition(a)},flattenToArrayOffset:function(a,b){console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");return this.toArray(a,b)},getPosition:function(){var a;return function(){void 0===a&&(a=new n);console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");return a.setFromMatrixColumn(this,3)}}(),setRotationFromQuaternion:function(a){console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().");
 return this.makeRotationFromQuaternion(a)},multiplyToArray:function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")},multiplyVector3:function(a){console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector4:function(a){console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector3Array:function(a){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")},
 rotateAxis:function(a){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");a.transformDirection(this)},crossVector:function(a){console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},translate:function(){console.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(){console.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(){console.error("THREE.Matrix4: .rotateY() has been removed.")},
 rotateZ:function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")},applyToBuffer:function(a,b,c){console.warn("THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.");return this.applyToBufferAttribute(a)},applyToVector3Array:function(a,b,c){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")},makeFrustum:function(a,b,c,d,
 e,f){console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.");return this.makePerspective(a,b,d,c,e,f)}});za.prototype.isIntersectionLine=function(a){console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().");return this.intersectsLine(a)};ka.prototype.multiplyVector3=function(a){console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.");
 return a.applyQuaternion(this)};Object.assign(hb.prototype,{isIntersectionBox:function(a){console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().");return this.intersectsBox(a)},isIntersectionPlane:function(a){console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().");return this.intersectsPlane(a)},isIntersectionSphere:function(a){console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().");return this.intersectsSphere(a)}});
-Object.assign(xb.prototype,{extrude:function(a){console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.");return new $a(this,a)},makeGeometry:function(a){console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.");return new Wb(this,a)}});Object.assign(D.prototype,{fromAttribute:function(a,b,c){console.error("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().");return this.fromBufferAttribute(a,b,c)}});Object.assign(p.prototype,
+Object.assign(xb.prototype,{extrude:function(a){console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.");return new $a(this,a)},makeGeometry:function(a){console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.");return new Wb(this,a)}});Object.assign(D.prototype,{fromAttribute:function(a,b,c){console.error("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().");return this.fromBufferAttribute(a,b,c)}});Object.assign(n.prototype,
 {setEulerFromRotationMatrix:function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(a){console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().");return this.setFromMatrixPosition(a)},getScaleFromMatrix:function(a){console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().");
 return this.setFromMatrixScale(a)},getColumnFromMatrix:function(a,b){console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().");return this.setFromMatrixColumn(b,a)},applyProjection:function(a){console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.");return this.applyMatrix4(a)},fromAttribute:function(a,b,c){console.error("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().");return this.fromBufferAttribute(a,
 b,c)}});Object.assign(ca.prototype,{fromAttribute:function(a,b,c){console.error("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().");return this.fromBufferAttribute(a,b,c)}});I.prototype.computeTangents=function(){console.warn("THREE.Geometry: .computeTangents() has been removed.")};Object.assign(z.prototype,{getChildByName:function(a){console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().");return this.getObjectByName(a)},renderDepth:function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")},
@@ -861,11 +861,11 @@ set:function(a){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .
 Ab;m.WebGLRenderer=$d;m.ShaderLib=ib;m.UniformsLib=Q;m.UniformsUtils=Ca;m.ShaderChunk=R;m.FogExp2=Hb;m.Fog=Ib;m.Scene=pd;m.LensFlare=ae;m.Sprite=xc;m.LOD=yc;m.SkinnedMesh=rd;m.Skeleton=zc;m.Bone=qd;m.Mesh=na;m.LineSegments=S;m.LineLoop=sd;m.Line=ra;m.Points=Jb;m.Group=Ac;m.VideoTexture=td;m.DataTexture=bb;m.CompressedTexture=Kb;m.CubeTexture=Va;m.CanvasTexture=oc;m.DepthTexture=Bc;m.Texture=V;m.CompressedTextureLoader=Te;m.DataTextureLoader=ce;m.CubeTextureLoader=de;m.TextureLoader=ud;m.ObjectLoader=
 Ue;m.MaterialLoader=Jd;m.BufferGeometryLoader=ee;m.DefaultLoadingManager=pa;m.LoadingManager=be;m.JSONLoader=fe;m.ImageLoader=Sc;m.FontLoader=We;m.FileLoader=Ja;m.Loader=dc;m.Cache=gd;m.AudioLoader=ie;m.SpotLightShadow=wd;m.SpotLight=xd;m.PointLight=yd;m.RectAreaLight=Cd;m.HemisphereLight=vd;m.DirectionalLightShadow=zd;m.DirectionalLight=Ad;m.AmbientLight=Bd;m.LightShadow=rb;m.Light=W;m.StereoCamera=Xe;m.PerspectiveCamera=Y;m.OrthographicCamera=Db;m.CubeCamera=Kd;m.ArrayCamera=nd;m.Camera=Na;m.AudioListener=
 je;m.PositionalAudio=le;m.AudioContext=ke;m.AudioAnalyser=me;m.Audio=gc;m.VectorKeyframeTrack=bc;m.StringKeyframeTrack=Gd;m.QuaternionKeyframeTrack=Uc;m.NumberKeyframeTrack=cc;m.ColorKeyframeTrack=Id;m.BooleanKeyframeTrack=Hd;m.PropertyMixer=ne;m.PropertyBinding=T;m.KeyframeTrack=tb;m.AnimationUtils=ba;m.AnimationObjectGroup=Ze;m.AnimationMixer=af;m.AnimationClip=Aa;m.Uniform=Ld;m.InstancedBufferGeometry=oe;m.BufferGeometry=F;m.GeometryIdCount=function(){return Ud++};m.Geometry=I;m.InterleavedBufferAttribute=
-pe;m.InstancedInterleavedBuffer=qe;m.InterleavedBuffer=hc;m.InstancedBufferAttribute=re;m.Face3=Ra;m.Object3D=z;m.Raycaster=bf;m.Layers=Td;m.EventDispatcher=oa;m.Clock=df;m.QuaternionLinearInterpolant=Fd;m.LinearInterpolant=Tc;m.DiscreteInterpolant=Ed;m.CubicInterpolant=Dd;m.Interpolant=xa;m.Triangle=Sa;m.Math=P;m.Spherical=ef;m.Cylindrical=ff;m.Plane=za;m.Frustum=jd;m.Sphere=Ba;m.Ray=hb;m.Matrix4=J;m.Matrix3=ma;m.Box3=Qa;m.Box2=hd;m.Line3=Fb;m.Euler=Ya;m.Vector4=ca;m.Vector3=p;m.Vector2=D;m.Quaternion=
+pe;m.InstancedInterleavedBuffer=qe;m.InterleavedBuffer=hc;m.InstancedBufferAttribute=re;m.Face3=Ra;m.Object3D=z;m.Raycaster=bf;m.Layers=Td;m.EventDispatcher=oa;m.Clock=df;m.QuaternionLinearInterpolant=Fd;m.LinearInterpolant=Tc;m.DiscreteInterpolant=Ed;m.CubicInterpolant=Dd;m.Interpolant=xa;m.Triangle=Sa;m.Math=P;m.Spherical=ef;m.Cylindrical=ff;m.Plane=za;m.Frustum=jd;m.Sphere=Ba;m.Ray=hb;m.Matrix4=J;m.Matrix3=ma;m.Box3=Qa;m.Box2=hd;m.Line3=Fb;m.Euler=Ya;m.Vector4=ca;m.Vector3=n;m.Vector2=D;m.Quaternion=
 ka;m.Color=E;m.MorphBlendMesh=da;m.ImmediateRenderObject=Xc;m.VertexNormalsHelper=Yc;m.SpotLightHelper=ic;m.SkeletonHelper=jc;m.PointLightHelper=kc;m.RectAreaLightHelper=lc;m.HemisphereLightHelper=mc;m.GridHelper=Zc;m.PolarGridHelper=Md;m.FaceNormalsHelper=$c;m.DirectionalLightHelper=nc;m.CameraHelper=ad;m.BoxHelper=yb;m.Box3Helper=bd;m.PlaneHelper=cd;m.ArrowHelper=zb;m.AxisHelper=Od;m.CatmullRomCurve3=Ka;m.CubicBezierCurve3=dd;m.QuadraticBezierCurve3=ed;m.LineCurve3=fd;m.ArcCurve=Pd;m.EllipseCurve=
 Ua;m.SplineCurve=wb;m.CubicBezierCurve=ec;m.QuadraticBezierCurve=fc;m.LineCurve=Pa;m.Shape=xb;m.Path=Wc;m.ShapePath=ge;m.Font=he;m.CurvePath=Vc;m.Curve=ja;m.ShapeUtils=Ha;m.SceneUtils={createMultiMaterialObject:function(a,b){for(var c=new Ac,d=0,e=b.length;d<e;d++)c.add(new na(a,b[d]));return c},detach:function(a,b,c){a.applyMatrix(b.matrixWorld);b.remove(a);c.add(a)},attach:function(a,b,c){a.applyMatrix((new J).getInverse(c.matrixWorld));b.remove(a);c.add(a)}};m.WireframeGeometry=Lb;m.ParametricGeometry=
 Cc;m.ParametricBufferGeometry=Mb;m.TetrahedronGeometry=Ec;m.TetrahedronBufferGeometry=Nb;m.OctahedronGeometry=Fc;m.OctahedronBufferGeometry=jb;m.IcosahedronGeometry=Gc;m.IcosahedronBufferGeometry=Ob;m.DodecahedronGeometry=Hc;m.DodecahedronBufferGeometry=Pb;m.PolyhedronGeometry=Dc;m.PolyhedronBufferGeometry=va;m.TubeGeometry=Ic;m.TubeBufferGeometry=Qb;m.TorusKnotGeometry=Jc;m.TorusKnotBufferGeometry=Rb;m.TorusGeometry=Kc;m.TorusBufferGeometry=Sb;m.TextGeometry=Lc;m.TextBufferGeometry=Tb;m.SphereGeometry=
-Mc;m.SphereBufferGeometry=kb;m.RingGeometry=Nc;m.RingBufferGeometry=Ub;m.PlaneGeometry=vc;m.PlaneBufferGeometry=gb;m.LatheGeometry=Oc;m.LatheBufferGeometry=Vb;m.ShapeGeometry=Wb;m.ShapeBufferGeometry=Xb;m.ExtrudeGeometry=$a;m.ExtrudeBufferGeometry=Ga;m.EdgesGeometry=Yb;m.ConeGeometry=Pc;m.ConeBufferGeometry=Qc;m.CylinderGeometry=lb;m.CylinderBufferGeometry=Ta;m.CircleGeometry=Rc;m.CircleBufferGeometry=Zb;m.BoxGeometry=Eb;m.BoxBufferGeometry=fb;m.ShadowMaterial=$b;m.SpriteMaterial=Za;m.RawShaderMaterial=
+Mc;m.SphereBufferGeometry=kb;m.RingGeometry=Nc;m.RingBufferGeometry=Ub;m.PlaneGeometry=vc;m.PlaneBufferGeometry=gb;m.LatheGeometry=Oc;m.LatheBufferGeometry=Vb;m.ShapeGeometry=Wb;m.ShapeBufferGeometry=Xb;m.ExtrudeGeometry=$a;m.ExtrudeBufferGeometry=Ea;m.EdgesGeometry=Yb;m.ConeGeometry=Pc;m.ConeBufferGeometry=Qc;m.CylinderGeometry=lb;m.CylinderBufferGeometry=Ta;m.CircleGeometry=Rc;m.CircleBufferGeometry=Zb;m.BoxGeometry=Eb;m.BoxBufferGeometry=fb;m.ShadowMaterial=$b;m.SpriteMaterial=Za;m.RawShaderMaterial=
 ac;m.ShaderMaterial=qa;m.PointsMaterial=Da;m.MeshPhysicalMaterial=mb;m.MeshStandardMaterial=Oa;m.MeshPhongMaterial=Ia;m.MeshToonMaterial=nb;m.MeshNormalMaterial=ob;m.MeshLambertMaterial=pb;m.MeshDepthMaterial=Wa;m.MeshDistanceMaterial=Xa;m.MeshBasicMaterial=sa;m.LineDashedMaterial=qb;m.LineBasicMaterial=fa;m.Material=N;m.Float64BufferAttribute=uc;m.Float32BufferAttribute=x;m.Uint32BufferAttribute=eb;m.Int32BufferAttribute=tc;m.Uint16BufferAttribute=db;m.Int16BufferAttribute=sc;m.Uint8ClampedBufferAttribute=
 rc;m.Uint8BufferAttribute=qc;m.Int8BufferAttribute=pc;m.BufferAttribute=O;m.REVISION="87dev";m.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2};m.CullFaceNone=0;m.CullFaceBack=1;m.CullFaceFront=2;m.CullFaceFrontBack=3;m.FrontFaceDirectionCW=0;m.FrontFaceDirectionCCW=1;m.BasicShadowMap=0;m.PCFShadowMap=1;m.PCFSoftShadowMap=2;m.FrontSide=0;m.BackSide=1;m.DoubleSide=2;m.FlatShading=1;m.SmoothShading=2;m.NoColors=0;m.FaceColors=1;m.VertexColors=2;m.NoBlending=0;m.NormalBlending=1;m.AdditiveBlending=2;m.SubtractiveBlending=
 3;m.MultiplyBlending=4;m.CustomBlending=5;m.AddEquation=100;m.SubtractEquation=101;m.ReverseSubtractEquation=102;m.MinEquation=103;m.MaxEquation=104;m.ZeroFactor=200;m.OneFactor=201;m.SrcColorFactor=202;m.OneMinusSrcColorFactor=203;m.SrcAlphaFactor=204;m.OneMinusSrcAlphaFactor=205;m.DstAlphaFactor=206;m.OneMinusDstAlphaFactor=207;m.DstColorFactor=208;m.OneMinusDstColorFactor=209;m.SrcAlphaSaturateFactor=210;m.NeverDepth=0;m.AlwaysDepth=1;m.LessDepth=2;m.LessEqualDepth=3;m.EqualDepth=4;m.GreaterEqualDepth=
@@ -875,7 +875,7 @@ m.LuminanceFormat=1024;m.LuminanceAlphaFormat=1025;m.RGBEFormat=1023;m.DepthForm
 2302;m.ZeroCurvatureEnding=2400;m.ZeroSlopeEnding=2401;m.WrapAroundEnding=2402;m.TrianglesDrawMode=0;m.TriangleStripDrawMode=1;m.TriangleFanDrawMode=2;m.LinearEncoding=3E3;m.sRGBEncoding=3001;m.GammaEncoding=3007;m.RGBEEncoding=3002;m.LogLuvEncoding=3003;m.RGBM7Encoding=3004;m.RGBM16Encoding=3005;m.RGBDEncoding=3006;m.BasicDepthPacking=3200;m.RGBADepthPacking=3201;m.CubeGeometry=Eb;m.Face4=function(a,b,c,d,e,f,g){console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");
 return new Ra(a,b,c,e,f,g)};m.LineStrip=0;m.LinePieces=1;m.MeshFaceMaterial=function(a){console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead.");return a};m.MultiMaterial=function(a){void 0===a&&(a=[]);console.warn("THREE.MultiMaterial has been removed. Use an Array instead.");a.isMultiMaterial=!0;a.materials=a;a.clone=function(){return a.slice()};return a};m.PointCloud=function(a,b){console.warn("THREE.PointCloud has been renamed to THREE.Points.");return new Jb(a,b)};m.Particle=
 function(a){console.warn("THREE.Particle has been renamed to THREE.Sprite.");return new xc(a)};m.ParticleSystem=function(a,b){console.warn("THREE.ParticleSystem has been renamed to THREE.Points.");return new Jb(a,b)};m.PointCloudMaterial=function(a){console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.");return new Da(a)};m.ParticleBasicMaterial=function(a){console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.");return new Da(a)};m.ParticleSystemMaterial=
-function(a){console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.");return new Da(a)};m.Vertex=function(a,b,c){console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead.");return new p(a,b,c)};m.DynamicBufferAttribute=function(a,b){console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.");return(new O(a,b)).setDynamic(!0)};m.Int8Attribute=function(a,b){console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.");
+function(a){console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.");return new Da(a)};m.Vertex=function(a,b,c){console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead.");return new n(a,b,c)};m.DynamicBufferAttribute=function(a,b){console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.");return(new O(a,b)).setDynamic(!0)};m.Int8Attribute=function(a,b){console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.");
 return new pc(a,b)};m.Uint8Attribute=function(a,b){console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.");return new qc(a,b)};m.Uint8ClampedAttribute=function(a,b){console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.");return new rc(a,b)};m.Int16Attribute=function(a,b){console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.");return new sc(a,b)};m.Uint16Attribute=
 function(a,b){console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.");return new db(a,b)};m.Int32Attribute=function(a,b){console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.");return new tc(a,b)};m.Uint32Attribute=function(a,b){console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.");return new eb(a,b)};m.Float32Attribute=function(a,b){console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.");
 return new x(a,b)};m.Float64Attribute=function(a,b){console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.");return new uc(a,b)};m.ClosedSplineCurve3=hf;m.SplineCurve3=jf;m.Spline=ve;m.BoundingBoxHelper=function(a,b){console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.");return new yb(a,b)};m.EdgesHelper=function(a,b){console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.");return new S(new Yb(a.geometry),

+ 38 - 24
build/three.module.js

@@ -21265,9 +21265,11 @@ function WebGLRenderer( parameters ) {
 
 	};
 
+	var influencesList = {};
+
 	function absNumericalSort( a, b ) {
 
-		return Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] );
+		return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );
 
 	}
 
@@ -21289,55 +21291,67 @@ function WebGLRenderer( parameters ) {
 
 		// morph targets
 
-		var morphTargetInfluences = object.morphTargetInfluences;
-
-		if ( morphTargetInfluences !== undefined ) {
+		var objectInfluences = object.morphTargetInfluences;
 
-			// TODO Remove allocations
+		if ( objectInfluences !== undefined ) {
 
-			var activeInfluences = [];
+			var influences = influencesList[ geometry.id ];
 
-			for ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {
+			if ( influences === undefined ) {
 
-				var influence = morphTargetInfluences[ i ];
-				activeInfluences.push( [ influence, i ] );
+				influencesList[ geometry.id ] = influences = new Array( objectInfluences.length );
 
 			}
 
-			activeInfluences.sort( absNumericalSort );
+			for ( var i = 0, l = objectInfluences.length; i < l; i ++ ) {
+
+				var influence = influences[ i ];
+
+				if ( influence === undefined ) {
+
+					influences[ i ] = influence = new Array( 2 );
 
-			if ( activeInfluences.length > 8 ) {
+				}
 
-				activeInfluences.length = 8;
+				influence[ 0 ] = i;
+				influence[ 1 ] = objectInfluences[ i ];
 
 			}
 
-			var morphAttributes = geometry.morphAttributes;
+			influences.sort( absNumericalSort );
+
+			var morphTargets = material.morphTargets && geometry.morphAttributes.position;
+			var morphNormals = material.morphNormals && geometry.morphAttributes.normal;
 
-			for ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {
+			for ( var i = 0, l = Math.min( influences.length, 8 ); i < l; i ++ ) {
 
-				var influence = activeInfluences[ i ];
-				morphInfluences[ i ] = influence[ 0 ];
+				var morphTargetId = 'morphTarget' + i;
+				var morphNormalId = 'morphNormal' + i;
 
-				if ( influence[ 0 ] !== 0 ) {
+				var influence = influences[ i ];
 
-					var index = influence[ 1 ];
+				var index = influence[ 0 ];
+				var value = influence[ 1 ];
 
-					if ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] );
-					if ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );
+				if ( value !== 0 ) {
+
+					if ( morphTargets ) geometry.addAttribute( morphTargetId, morphTargets[ index ] );
+					if ( morphNormals ) geometry.addAttribute( morphNormalId, morphNormals[ index ] );
 
 				} else {
 
-					if ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i );
-					if ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i );
+					if ( morphTargets ) geometry.removeAttribute( morphTargetId );
+					if ( morphNormals ) geometry.removeAttribute( morphNormalId );
 
 				}
 
+				morphInfluences[ i ] = value;
+
 			}
 
-			for ( var i = activeInfluences.length, il = morphInfluences.length; i < il; i ++ ) {
+			for ( var i = Math.min( influences.length, 8 ), il = morphInfluences.length; i < il; i ++ ) {
 
-				morphInfluences[ i ] = 0.0;
+				morphInfluences[ i ] = 0;
 
 			}