Newer
Older
{"version":3,"file":"3d-force-graph.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../node_modules/three/build/three.module.js","../node_modules/three-dragcontrols/lib/index.module.js","../node_modules/d3-force-3d/src/center.js","../node_modules/d3-binarytree/src/add.js","../node_modules/d3-binarytree/src/cover.js","../node_modules/d3-binarytree/src/data.js","../node_modules/d3-binarytree/src/extent.js","../node_modules/d3-binarytree/src/half.js","../node_modules/d3-binarytree/src/find.js","../node_modules/d3-binarytree/src/remove.js","../node_modules/d3-binarytree/src/root.js","../node_modules/d3-binarytree/src/size.js","../node_modules/d3-binarytree/src/visit.js","../node_modules/d3-binarytree/src/visitAfter.js","../node_modules/d3-binarytree/src/x.js","../node_modules/d3-binarytree/src/binarytree.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-octree/src/add.js","../node_modules/d3-octree/src/cover.js","../node_modules/d3-octree/src/data.js","../node_modules/d3-octree/src/extent.js","../node_modules/d3-octree/src/octant.js","../node_modules/d3-octree/src/find.js","../node_modules/d3-octree/src/remove.js","../node_modules/d3-octree/src/root.js","../node_modules/d3-octree/src/size.js","../node_modules/d3-octree/src/visit.js","../node_modules/d3-octree/src/visitAfter.js","../node_modules/d3-octree/src/x.js","../node_modules/d3-octree/src/y.js","../node_modules/d3-octree/src/z.js","../node_modules/d3-octree/src/octree.js","../node_modules/d3-force-3d/src/constant.js","../node_modules/d3-force-3d/src/jiggle.js","../node_modules/d3-force-3d/src/link.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-force-3d/src/simulation.js","../node_modules/d3-force-3d/src/manyBody.js","../node_modules/d3-force-3d/src/radial.js","../node_modules/ngraph.events/index.js","../node_modules/ngraph.graph/index.js","../node_modules/ngraph.physics.simulator/lib/spring.js","../node_modules/ngraph.expose/index.js","../node_modules/ngraph.merge/index.js","../node_modules/ngraph.random/index.js","../node_modules/ngraph.quadtreebh/node.js","../node_modules/ngraph.quadtreebh/insertStack.js","../node_modules/ngraph.quadtreebh/isSamePosition.js","../node_modules/ngraph.quadtreebh/index.js","../node_modules/ngraph.physics.simulator/lib/bounds.js","../node_modules/ngraph.physics.simulator/lib/dragForce.js","../node_modules/ngraph.physics.simulator/lib/springForce.js","../node_modules/ngraph.physics.simulator/lib/eulerIntegrator.js","../node_modules/ngraph.physics.primitives/index.js","../node_modules/ngraph.physics.simulator/lib/createBody.js","../node_modules/ngraph.physics.simulator/index.js","../node_modules/ngraph.forcelayout/index.js","../node_modules/ngraph.quadtreebh3d/node.js","../node_modules/ngraph.quadtreebh3d/insertStack.js","../node_modules/ngraph.quadtreebh3d/isSamePosition.js","../node_modules/ngraph.quadtreebh3d/index.js","../node_modules/ngraph.forcelayout3d/lib/bounds.js","../node_modules/ngraph.forcelayout3d/lib/dragForce.js","../node_modules/ngraph.forcelayout3d/lib/springForce.js","../node_modules/ngraph.forcelayout3d/lib/createBody.js","../node_modules/ngraph.forcelayout3d/lib/verletIntegrator.js","../node_modules/ngraph.forcelayout3d/lib/eulerIntegrator.js","../node_modules/ngraph.forcelayout3d/index.js","../node_modules/debounce/index.js","../node_modules/kapsule/dist/kapsule.module.js","../node_modules/accessor-fn/dist/accessor-fn.module.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/index-array-by/dist/index-array-by.module.js","../node_modules/data-joint/dist/data-joint.module.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/tinycolor2/tinycolor.js","../node_modules/three-forcegraph/dist/three-forcegraph.module.js","../node_modules/three/examples/jsm/controls/TrackballControls.js","../node_modules/three/examples/jsm/controls/OrbitControls.js","../node_modules/three/examples/jsm/controls/FlyControls.js","../node_modules/three/examples/jsm/shaders/CopyShader.js","../node_modules/three/examples/jsm/postprocessing/Pass.js","../node_modules/three/examples/jsm/postprocessing/ShaderPass.js","../node_modules/three/examples/jsm/postprocessing/MaskPass.js","../node_modules/three/examples/jsm/postprocessing/EffectComposer.js","../node_modules/three/examples/jsm/postprocessing/RenderPass.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/polished/dist/polished.esm.js","../node_modules/@tweenjs/tween.js/dist/tween.esm.js","../node_modules/three-render-objects/dist/three-render-objects.module.js","../src/kapsule-link.js","../src/3d-force-graph.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '118';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst FrontFaceDirectionCW = 0;\nconst FrontFaceDirectionCCW = 1;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author thezwap\n */\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from <low, high> interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from <low, high> interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$1 = new Box3();\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * depthTest: <bool>,\n * depthWrite: <bool>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>\n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y, );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\twidth = width || 1;\n\t\theight = height || 1;\n\t\tdepth = depth || 1;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: <string>,\n * vertexShader: <string>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * lights: <bool>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include <begin_vertex>\",\n\t\t\t\"\t#include <project_vertex>\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#include <common>\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV = equirectUv( direction );\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n return m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) { \\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3\\tdiffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nvar cube_frag = \"#include <envmap_common_pars_fragment>\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshbasic_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_ENVMAP\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_toon_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSPARENCY\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSPARENCY\\n\\tuniform float transparency;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <clearcoat_normal_fragment_begin>\\n\\t#include <clearcoat_normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSPARENCY\\n\\t\\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nvar shadow_vert = \"#include <common>\\n#include <fog_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransparency: { value: 0 },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Takahiro / https://github.com/takahirox\n */\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, normalized, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\tlet isGLSL3ShaderMaterial = false;\n\n\t\tconst versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( parameters.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\"\n\t];\n\n\tfunction getShaderObject( material, shaderID ) {\n\n\t\tlet shaderobject;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: material.uniforms,\n\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t};\n\n\t\t}\n\n\t\treturn shaderobject;\n\n\t}\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst shaderobject = getShaderObject( material, shaderID );\n\t\tmaterial.onBeforeCompile( shaderobject, renderer );\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: shaderobject.name,\n\n\t\t\tuniforms: shaderobject.uniforms,\n\t\t\tvertexShader: shaderobject.vertexShader,\n\t\t\tfragmentShader: shaderobject.fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>\n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: <float>,\n * nearDistance: <float>,\n * farDistance: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>\n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * @author jsantell / https://www.jsantell.com/\n\t *\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transparency.value = material.transparency;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * map: new THREE.Texture( <Image> ),\n * alphaMap: new THREE.Texture( <Image> ),\n * rotation: <float>,\n * sizeAttenuation: <bool>\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * linewidth: <float>,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n * map: new THREE.Texture( <Image> ),\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * size: <float>,\n * sizeAttenuation: <bool>\n *\n * morphTargets: <bool>\n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: <int>, // number of points on the curves\n * steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: <float>, // Depth to extrude the shape\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into the original shape bevel goes\n * bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: <float>, // how far from shape outline does bevel start\n * bevelSegments: <int>, // number of bevel layers\n *\n * extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n * UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: <THREE.Font>, // font\n *\n * size: <float>, // size of the text\n * height: <float>, // thickness to extrude text\n * curveSegments: <int>, // number of points on the curves\n *\n * bevelEnabled: <bool>, // turn on bevel\n * bevelThickness: <float>, // how deep into text bevel goes\n * bevelSize: <float>, // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: <float> // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: <THREE.Color>\n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: <hex>,\n * roughness: <float>,\n * metalness: <float>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * roughnessMap: new THREE.Texture( <Image> ),\n *\n * metalnessMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: <float>\n *\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * clearcoat: <float>,\n * clearcoatMap: new THREE.Texture( <Image> ),\n * clearcoatRoughness: <float>,\n * clearcoatRoughnessMap: new THREE.Texture( <Image> ),\n * clearcoatNormalScale: <Vector2>,\n * clearcoatNormalMap: new THREE.Texture( <Image> ),\n *\n * reflectivity: <float>,\n *\n * sheen: <Color>,\n *\n * transparency: <float>\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transparency = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transparency = source.transparency;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * specular: <hex>,\n * shininess: <float>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * color: <hex>,\n *\n * map: new THREE.Texture( <Image> ),\n * gradientMap: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: <float>,\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * map: new THREE.Texture( <Image> ),\n *\n * lightMap: new THREE.Texture( <Image> ),\n * lightMapIntensity: <float>\n *\n * aoMap: new THREE.Texture( <Image> ),\n * aoMapIntensity: <float>\n *\n * emissive: <hex>,\n * emissiveIntensity: <float>\n * emissiveMap: new THREE.Texture( <Image> ),\n *\n * specularMap: new THREE.Texture( <Image> ),\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: <float>,\n * refractionRatio: <float>,\n *\n * wireframe: <boolean>,\n * wireframeLinewidth: <float>,\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * matcap: new THREE.Texture( <Image> ),\n *\n * map: new THREE.Texture( <Image> ),\n *\n * bumpMap: new THREE.Texture( <Image> ),\n * bumpScale: <float>,\n *\n * normalMap: new THREE.Texture( <Image> ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: <Vector2>,\n *\n * displacementMap: new THREE.Texture( <Image> ),\n * displacementScale: <float>,\n * displacementBias: <float>,\n *\n * alphaMap: new THREE.Texture( <Image> ),\n *\n * skinning: <bool>,\n * morphTargets: <bool>,\n * morphNormals: <bool>\n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: <hex>,\n * opacity: <float>,\n *\n * linewidth: <float>,\n *\n * scale: <float>,\n * dashSize: <float>,\n * gapSize: <float>\n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t},\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength: function () {\n\n\t\tconst lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t},\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t},\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths: function () {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t},\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 40;\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tgetPoints: function ( divisions ) {\n\n\t\tdivisions = divisions || 12;\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2\n\t\t\t\t: ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1\n\t\t\t\t\t: ( curve && curve.isSplineCurve ) ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tconst indices = 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 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tconst indices = 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 ] );\n\n\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tconst positions = [ 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 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author Emmett Lalish / elalish\n *\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n${_getEncodings()}\n\n#define ENVMAP_TYPE_CUBE_UV\n#include <cube_uv_reflection_fragment>\n\nvec3 getSample(float theta, vec3 axis) {\n\tfloat cosTheta = cos(theta);\n\t// Rodrigues' axis-angle rotation\n\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\treturn bilinearCubeUV(envMap, sampleDirection, mipInt);\n}\n\nvoid main() {\n\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\tif (all(equal(axis, vec3(0.0))))\n\t\taxis = vec3(vOutputDirection.z, 0.0, - vOutputDirection.x);\n\taxis = normalize(axis);\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb += weights[0] * getSample(0.0, axis);\n\tfor (int i = 1; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfloat theta = dTheta * float(i);\n\t\tgl_FragColor.rgb += weights[i] * getSample(-1.0 * theta, axis);\n\t\tgl_FragColor.rgb += weights[i] * getSample(theta, axis);\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n${_getEncodings()}\n\n#include <common>\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv = equirectUv( outputDirection );\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n${_getEncodings()}\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn `\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\n\n// RH coordinate system; PMREM face-indexing convention\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t} else if (face == 2.0) {\n\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t} else if (face == 5.0) {\n\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t}\n\treturn direction;\n}\n\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn `\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include <encodings_pars_fragment>\n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t`;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","import {\n EventDispatcher,\n Plane,\n Raycaster,\n Vector2,\n Vector3\n} from 'three';\n\n/*\n * @author zz85 / https://github.com/zz85\n * @author mrdoob / http://mrdoob.com\n * Running this will allow you to drag three.js objects around the screen.\n */\n\nfunction DragControls(_objects, _camera, _domElement) {\n\n if (_objects.isCamera) {\n\n console.warn('THREE.DragControls: Constructor now expects ( objects, camera, domElement )');\n var temp = _objects;\n _objects = _camera;\n _camera = temp;\n\n }\n\n var _plane = new Plane();\n var _raycaster = new Raycaster();\n\n var _mouse = new Vector2();\n var _offset = new Vector3();\n var _intersection = new Vector3();\n\n var _selected = null,\n _hovered = null;\n\n //\n\n var scope = this;\n\n function activate() {\n\n _domElement.addEventListener('mousemove', onDocumentMouseMove, false);\n _domElement.addEventListener('mousedown', onDocumentMouseDown, false);\n _domElement.addEventListener('mouseup', onDocumentMouseCancel, false);\n _domElement.addEventListener('mouseleave', onDocumentMouseCancel, false);\n _domElement.addEventListener('touchmove', onDocumentTouchMove, false);\n _domElement.addEventListener('touchstart', onDocumentTouchStart, false);\n _domElement.addEventListener('touchend', onDocumentTouchEnd, false);\n\n }\n\n function deactivate() {\n\n _domElement.removeEventListener('mousemove', onDocumentMouseMove, false);\n _domElement.removeEventListener('mousedown', onDocumentMouseDown, false);\n _domElement.removeEventListener('mouseup', onDocumentMouseCancel, false);\n _domElement.removeEventListener('mouseleave', onDocumentMouseCancel, false);\n _domElement.removeEventListener('touchmove', onDocumentTouchMove, false);\n _domElement.removeEventListener('touchstart', onDocumentTouchStart, false);\n _domElement.removeEventListener('touchend', onDocumentTouchEnd, false);\n\n }\n\n function dispose() {\n\n deactivate();\n\n }\n\n function onDocumentMouseMove(event) {\n\n event.preventDefault();\n\n var rect = _domElement.getBoundingClientRect();\n\n _mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;\n _mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;\n\n _raycaster.setFromCamera(_mouse, _camera);\n\n if (_selected && scope.enabled) {\n\n if (_raycaster.ray.intersectPlane(_plane, _intersection)) {\n\n _selected.position.copy(_intersection.sub(_offset));\n\n }\n\n scope.dispatchEvent({\n type: 'drag',\n object: _selected\n });\n\n return;\n\n }\n\n _raycaster.setFromCamera(_mouse, _camera);\n\n var intersects = _raycaster.intersectObjects(_objects);\n\n if (intersects.length > 0) {\n\n var object = intersects[0].object;\n\n _plane.setFromNormalAndCoplanarPoint(_camera.getWorldDirection(_plane.normal), object.position);\n\n if (_hovered !== object) {\n\n scope.dispatchEvent({\n type: 'hoveron',\n object: object\n });\n\n _domElement.style.cursor = 'pointer';\n _hovered = object;\n\n }\n\n } else {\n\n if (_hovered !== null) {\n\n scope.dispatchEvent({\n type: 'hoveroff',\n object: _hovered\n });\n\n _domElement.style.cursor = 'auto';\n _hovered = null;\n\n }\n\n }\n\n }\n\n function onDocumentMouseDown(event) {\n\n event.preventDefault();\n\n _raycaster.setFromCamera(_mouse, _camera);\n\n var intersects = _raycaster.intersectObjects(_objects);\n\n if (intersects.length > 0) {\n\n _selected = intersects[0].object;\n\n if (_raycaster.ray.intersectPlane(_plane, _intersection)) {\n\n _offset.copy(_intersection).sub(_selected.position);\n\n }\n\n _domElement.style.cursor = 'move';\n\n scope.dispatchEvent({\n type: 'dragstart',\n object: _selected\n });\n\n }\n\n\n }\n\n function onDocumentMouseCancel(event) {\n\n event.preventDefault();\n\n if (_selected) {\n\n scope.dispatchEvent({\n type: 'dragend',\n object: _selected\n });\n\n _selected = null;\n\n }\n\n _domElement.style.cursor = 'auto';\n\n }\n\n function onDocumentTouchMove(event) {\n\n event.preventDefault();\n event = event.changedTouches[0];\n\n var rect = _domElement.getBoundingClientRect();\n\n _mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;\n _mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;\n\n _raycaster.setFromCamera(_mouse, _camera);\n\n if (_selected && scope.enabled) {\n\n if (_raycaster.ray.intersectPlane(_plane, _intersection)) {\n\n _selected.position.copy(_intersection.sub(_offset));\n\n }\n\n scope.dispatchEvent({\n type: 'drag',\n object: _selected\n });\n\n return;\n\n }\n\n }\n\n function onDocumentTouchStart(event) {\n\n event.preventDefault();\n event = event.changedTouches[0];\n\n var rect = _domElement.getBoundingClientRect();\n\n _mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;\n _mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;\n\n _raycaster.setFromCamera(_mouse, _camera);\n\n var intersects = _raycaster.intersectObjects(_objects);\n\n if (intersects.length > 0) {\n\n _selected = intersects[0].object;\n\n _plane.setFromNormalAndCoplanarPoint(_camera.getWorldDirection(_plane.normal), _selected.position);\n\n if (_raycaster.ray.intersectPlane(_plane, _intersection)) {\n\n _offset.copy(_intersection).sub(_selected.position);\n\n }\n\n _domElement.style.cursor = 'move';\n\n scope.dispatchEvent({\n type: 'dragstart',\n object: _selected\n });\n\n }\n\n\n }\n\n function onDocumentTouchEnd(event) {\n\n event.preventDefault();\n\n if (_selected) {\n\n scope.dispatchEvent({\n type: 'dragend',\n object: _selected\n });\n\n _selected = null;\n\n }\n\n _domElement.style.cursor = 'auto';\n\n }\n\n activate();\n\n // API\n\n this.enabled = true;\n\n this.activate = activate;\n this.deactivate = deactivate;\n this.dispose = dispose;\n\n // Backward compatibility\n\n this.setObjects = function() {\n\n console.error('THREE.DragControls: setObjects() has been removed.');\n\n };\n\n this.on = function(type, listener) {\n\n console.warn('THREE.DragControls: on() has been deprecated. Use addEventListener() instead.');\n scope.addEventListener(type, listener);\n\n };\n\n this.off = function(type, listener) {\n\n console.warn('THREE.DragControls: off() has been deprecated. Use removeEventListener() instead.');\n scope.removeEventListener(type, listener);\n\n };\n\n this.notify = function(type) {\n\n console.error('THREE.DragControls: notify() has been deprecated. Use dispatchEvent() instead.');\n scope.dispatchEvent({\n type: type\n });\n\n };\n\n}\n\nDragControls.prototype = Object.create(EventDispatcher.prototype);\nDragControls.prototype.constructor = DragControls;\n\nexport default DragControls;","export default function(x, y, z) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n if (z == null) z = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0,\n sz = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x || 0, sy += node.y || 0, sz += node.z || 0;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, sz = sz / n - z, i = 0; i < n; ++i) {\n node = nodes[i];\n if (sx) { node.x -= sx }\n if (sy) { node.y -= sy; }\n if (sz) { node.z -= sz; }\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = +_, force) : z;\n };\n\n return force;\n}\n","export default function(d) {\n var x = +this._x.call(null, d);\n return add(this.cover(x), x, d);\n}\n\nfunction add(tree, x, d) {\n if (isNaN(x)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n x1 = tree._x1,\n xm,\n xp,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (parent = node, !(node = node[i = +right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n if (x === xp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(2) : tree._root = new Array(2);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n } while ((i = +right) === (j = +(xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var i, n = data.length,\n x,\n xz = new Array(n),\n x0 = Infinity,\n x1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, data[i]))) continue;\n xz[i] = x;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n }\n\n // If there were no (valid) points, inherit the existing extent.\n if (x1 < x0) x0 = this._x0, x1 = this._x1;\n\n // Expand the tree to cover the new points.\n this.cover(x0).cover(x1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x) {\n if (isNaN(x = +x)) return this; // ignore invalid points\n\n var x0 = this._x0,\n x1 = this._x1;\n\n // If the binarytree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing half boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else if (x0 > x || x > x1) {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n switch (i = +(x < (x0 + x1) / 2)) {\n case 0: {\n do parent = new Array(2), parent[i] = node, node = parent;\n while (z *= 2, x1 = x0 + z, x > x1);\n break;\n }\n case 1: {\n do parent = new Array(2), parent[i] = node, node = parent;\n while (z *= 2, x0 = x1 - z, x0 > x);\n break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n // If the binarytree covers the point already, just return.\n else return this;\n\n this._x0 = x0;\n this._x1 = x1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0]).cover(+_[1][0])\n : isNaN(this._x0) ? undefined : [[this._x0], [this._x1]];\n}\n","export default function(node, x0, x1) {\n this.node = node;\n this.x0 = x0;\n this.x1 = x1;\n}\n","import Half from \"./half\";\n\nexport default function(x, radius) {\n var data,\n x0 = this._x0,\n x1,\n x2,\n x3 = this._x1,\n halves = [],\n node = this._root,\n q,\n i;\n\n if (node) halves.push(new Half(node, x0, x3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius;\n x3 = x + radius;\n }\n\n while (q = halves.pop()) {\n\n // Stop searching if this half can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (x2 = q.x1) < x0) continue;\n\n // Bisect the current half.\n if (node.length) {\n var xm = (x1 + x2) / 2;\n\n halves.push(\n new Half(node[1], xm, x2),\n new Half(node[0], x1, xm)\n );\n\n // Visit the closest half first.\n if (i = +(x >= xm)) {\n q = halves[halves.length - 1];\n halves[halves.length - 1] = halves[halves.length - 1 - i];\n halves[halves.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var d = Math.abs(x - +this._x.call(null, node.data));\n if (d < radius) {\n radius = d;\n x0 = x - d;\n x3 = x + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n x1 = this._x1,\n x,\n xm,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (!(parent = node, node = node[i = +right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 1]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1])\n && node === (parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Half from \"./half\";\n\nexport default function(callback) {\n var halves = [], q, node = this._root, child, x0, x1;\n if (node) halves.push(new Half(node, this._x0, this._x1));\n while (q = halves.pop()) {\n if (!callback(node = q.node, x0 = q.x0, x1 = q.x1) && node.length) {\n var xm = (x0 + x1) / 2;\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n }\n }\n return this;\n}\n","import Half from \"./half\";\n\nexport default function(callback) {\n var halves = [], next = [], q;\n if (this._root) halves.push(new Half(this._root, this._x0, this._x1));\n while (q = halves.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, x1 = q.x1, xm = (x0 + x1) / 2;\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.x1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\n\nexport default function binarytree(nodes, x) {\n var tree = new Binarytree(x == null ? defaultX : x, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Binarytree(x, x0, x1) {\n this._x = x;\n this._x0 = x0;\n this._x1 = x1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = binarytree.prototype = Binarytree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Binarytree(this._x, this._x0, this._x1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(2)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 2; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(2)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d),\n z = +this._z.call(null, d);\n return add(this.cover(x, y, z), x, y, z, d);\n}\n\nfunction add(tree, x, y, z, d) {\n if (isNaN(x) || isNaN(y) || isNaN(z)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n z0 = tree._z0,\n x1 = tree._x1,\n y1 = tree._y1,\n z1 = tree._z1,\n xm,\n ym,\n zm,\n xp,\n yp,\n zp,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (parent = node, !(node = node[i = deep << 2 | bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n zp = +tree._z.call(null, node.data);\n if (x === xp && y === yp && z === zp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(8) : tree._root = new Array(8);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n } while ((i = deep << 2 | bottom << 1 | right) === (j = (zp >= zm) << 2 | (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n z,\n xz = new Array(n),\n yz = new Array(n),\n zz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n z0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity,\n z1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n zz[i] = z;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n if (z < z0) z0 = z;\n if (z > z1) z1 = z;\n }\n\n // If there were no (valid) points, inherit the existing extent.\n if (x1 < x0) x0 = this._x0, x1 = this._x1;\n if (y1 < y0) y0 = this._y0, y1 = this._y1;\n if (z1 < z0) z0 = this._z0, z1 = this._z1;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0, z0).cover(x1, y1, z1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], zz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y, z) {\n if (isNaN(x = +x) || isNaN(y = +y) || isNaN(z = +z)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1;\n\n // If the octree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing octant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n z1 = (z0 = Math.floor(z)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else if (x0 > x || x > x1 || y0 > y || y > y1 || z0 > z || z > z1) {\n var t = x1 - x0,\n node = this._root,\n parent,\n i;\n\n switch (i = (z < (z0 + z1) / 2) << 2 | (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) {\n case 0: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x1 = x0 + t, y1 = y0 + t, z1 = z0 + t, x > x1 || y > y1 || z > z1);\n break;\n }\n case 1: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x0 = x1 - t, y1 = y0 + t, z1 = z0 + t, x0 > x || y > y1 || z > z1);\n break;\n }\n case 2: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x1 = x0 + t, y0 = y1 - t, z1 = z0 + t, x > x1 || y0 > y || z > z1);\n break;\n }\n case 3: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x0 = x1 - t, y0 = y1 - t, z1 = z0 + t, x0 > x || y0 > y || z > z1);\n break;\n }\n case 4: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x1 = x0 + t, y1 = y0 + t, z0 = z1 - t, x > x1 || y > y1 || z0 > z);\n break;\n }\n case 5: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x0 = x1 - t, y1 = y0 + t, z0 = z1 - t, x0 > x || y > y1 || z0 > z);\n break;\n }\n case 6: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x1 = x0 + t, y0 = y1 - t, z0 = z1 - t, x > x1 || y0 > y || z0 > z);\n break;\n }\n case 7: {\n do parent = new Array(8), parent[i] = node, node = parent;\n while (t *= 2, x0 = x1 - t, y0 = y1 - t, z0 = z1 - t, x0 > x || y0 > y || z0 > z);\n break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n // If the octree covers the point already, just return.\n else return this;\n\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1], +_[0][2]).cover(+_[1][0], +_[1][1], +_[1][2])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0, this._z0], [this._x1, this._y1, this._z1]];\n}\n","export default function(node, x0, y0, z0, x1, y1, z1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.z0 = z0;\n this.x1 = x1;\n this.y1 = y1;\n this.z1 = z1;\n}\n","import Octant from \"./octant\";\n\nexport default function(x, y, z, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1,\n y1,\n z1,\n x2,\n y2,\n z2,\n x3 = this._x1,\n y3 = this._y1,\n z3 = this._z1,\n octs = [],\n node = this._root,\n q,\n i;\n\n if (node) octs.push(new Octant(node, x0, y0, z0, x3, y3, z3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius, z0 = z - radius;\n x3 = x + radius, y3 = y + radius, z3 = z + radius;\n radius *= radius;\n }\n\n while (q = octs.pop()) {\n\n // Stop searching if this octant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (z1 = q.z0) > z3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0\n || (z2 = q.z1) < z0) continue;\n\n // Bisect the current octant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2,\n zm = (z1 + z2) / 2;\n\n octs.push(\n new Octant(node[7], xm, ym, zm, x2, y2, z2),\n new Octant(node[6], x1, ym, zm, xm, y2, z2),\n new Octant(node[5], xm, y1, zm, x2, ym, z2),\n new Octant(node[4], x1, y1, zm, xm, ym, z2),\n new Octant(node[3], xm, ym, z1, x2, y2, zm),\n new Octant(node[2], x1, ym, z1, xm, y2, zm),\n new Octant(node[1], xm, y1, z1, x2, ym, zm),\n new Octant(node[0], x1, y1, z1, xm, ym, zm)\n );\n\n // Visit the closest octant first.\n if (i = (z >= zm) << 2 | (y >= ym) << 1 | (x >= xm)) {\n q = octs[octs.length - 1];\n octs[octs.length - 1] = octs[octs.length - 1 - i];\n octs[octs.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n dz = z - +this._z.call(null, node.data),\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d, z0 = z - d;\n x3 = x + d, y3 = y + d, z3 = z + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1,\n x,\n y,\n z,\n xm,\n ym,\n zm,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (!(parent = node, node = node[i = deep << 2 | bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 7] || parent[(i + 2) & 7] || parent[(i + 3) & 7] || parent[(i + 4) & 7] || parent[(i + 5) & 7] || parent[(i + 6) & 7] || parent[(i + 7) & 7]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3] || parent[4] || parent[5] || parent[6] || parent[7])\n && node === (parent[7] || parent[6] || parent[5] || parent[4] || parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Octant from \"./octant\";\n\nexport default function(callback) {\n var octs = [], q, node = this._root, child, x0, y0, z0, x1, y1, z1;\n if (node) octs.push(new Octant(node, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n }\n }\n return this;\n}\n","import Octant from \"./octant\";\n\nexport default function(callback) {\n var octs = [], next = [], q;\n if (this._root) octs.push(new Octant(this._root, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.z0, q.x1, q.y1, q.z1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","export function defaultZ(d) {\n return d[2];\n}\n\nexport default function(_) {\n return arguments.length ? (this._z = _, this) : this._z;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\nimport tree_z, {defaultZ} from \"./z\";\n\nexport default function octree(nodes, x, y, z) {\n var tree = new Octree(x == null ? defaultX : x, y == null ? defaultY : y, z == null ? defaultZ : z, NaN, NaN, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Octree(x, y, z, x0, y0, z0, x1, y1, z1) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = octree.prototype = Octree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Octree(this._x, this._y, this._z, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(8)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 8; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(8)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\ntreeProto.z = tree_z;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n nDim,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x = 0, y = 0, z = 0, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n if (nDim > 1) { y = target.y + target.vy - source.y - source.vy || jiggle(); }\n if (nDim > 2) { z = target.z + target.vz - source.z - source.vz || jiggle(); }\n l = Math.sqrt(x * x + y * y + z * z);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l, z *= l;\n\n target.vx -= x * (b = bias[i]);\n if (nDim > 1) { target.vy -= y * b; }\n if (nDim > 2) { target.vz -= z * b; }\n\n source.vx += x * (b = 1 - b);\n if (nDim > 1) { source.vy += y * b; }\n if (nDim > 2) { source.vz += z * b; }\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(initNodes, numDimensions) {\n nodes = initNodes;\n nDim = numDimensions;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\n\nvar MAX_DIMENSIONS = 3;\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nexport function z(d) {\n return d.z;\n}\n\nvar initialRadius = 10,\n initialAngleRoll = Math.PI * (3 - Math.sqrt(5)), // Golden ratio angle\n initialAngleYaw = Math.PI * 20 / (9 + Math.sqrt(221)); // Markov irrational number\n\nexport default function(nodes, numDimensions) {\n numDimensions = numDimensions || 2;\n\n var nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(numDimensions))),\n simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (nDim > 1) {\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n if (nDim > 2) {\n if (node.fz == null) node.z += node.vz *= velocityDecay;\n else node.z = node.fz, node.vz = 0;\n }\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (node.fz != null) node.z = node.fz;\n if (isNaN(node.x) || (nDim > 1 && isNaN(node.y)) || (nDim > 2 && isNaN(node.z))) {\n var radius = initialRadius * (nDim > 2 ? Math.cbrt(i) : (nDim > 1 ? Math.sqrt(i) : i)),\n rollAngle = i * initialAngleRoll,\n yawAngle = i * initialAngleYaw;\n\n if (nDim === 1) {\n node.x = radius;\n } else if (nDim === 2) {\n node.x = radius * Math.cos(rollAngle);\n node.y = radius * Math.sin(rollAngle);\n } else { // 3 dimensions: use spherical distribution along 2 irrational number angles\n node.x = radius * Math.sin(rollAngle) * Math.cos(yawAngle);\n node.y = radius * Math.cos(rollAngle);\n node.z = radius * Math.sin(rollAngle) * Math.sin(yawAngle);\n }\n }\n if (isNaN(node.vx) || (nDim > 1 && isNaN(node.vy)) || (nDim > 2 && isNaN(node.vz))) {\n node.vx = 0;\n if (nDim > 1) { node.vy = 0; }\n if (nDim > 2) { node.vz = 0; }\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, nDim);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n numDimensions: function(_) {\n return arguments.length\n ? (nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(_))), forces.forEach(initializeForce), simulation)\n : nDim;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function() {\n var args = Array.prototype.slice.call(arguments);\n var x = args.shift() || 0,\n y = (nDim > 1 ? args.shift() : null) || 0,\n z = (nDim > 2 ? args.shift() : null) || 0,\n radius = args.shift() || Infinity;\n\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n dz,\n d2,\n node,\n closest;\n\n radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - (node.y || 0);\n dz = z - (node.z ||0);\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {binarytree} from \"d3-binarytree\";\nimport {quadtree} from \"d3-quadtree\";\nimport {octree} from \"d3-octree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y, z} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n nDim,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i,\n n = nodes.length,\n tree =\n (nDim === 1 ? binarytree(nodes, x)\n :(nDim === 2 ? quadtree(nodes, x, y)\n :(nDim === 3 ? octree(nodes, x, y, z)\n :null\n ))).visitAfter(accumulate);\n\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(treeNode) {\n var strength = 0, q, c, weight = 0, x, y, z, i;\n var numChildren = treeNode.length;\n\n // For internal nodes, accumulate forces from children.\n if (numChildren) {\n for (x = y = z = i = 0; i < numChildren; ++i) {\n if ((q = treeNode[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * (q.x || 0), y += c * (q.y || 0), z += c * (q.z || 0);\n }\n }\n strength *= Math.sqrt(4 / numChildren); // scale accumulated strength according to number of dimensions\n\n treeNode.x = x / weight;\n if (nDim > 1) { treeNode.y = y / weight; }\n if (nDim > 2) { treeNode.z = z / weight; }\n }\n\n // For leaf nodes, accumulate forces from coincident nodes.\n else {\n q = treeNode;\n q.x = q.data.x;\n if (nDim > 1) { q.y = q.data.y; }\n if (nDim > 2) { q.z = q.data.z; }\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n treeNode.value = strength;\n }\n\n function apply(treeNode, x1, arg1, arg2, arg3) {\n if (!treeNode.value) return true;\n var x2 = [arg1, arg2, arg3][nDim-1];\n\n var x = treeNode.x - node.x,\n y = (nDim > 1 ? treeNode.y - node.y : 0),\n z = (nDim > 2 ? treeNode.z - node.z : 0),\n w = x2 - x1,\n l = x * x + y * y + z * z;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * treeNode.value * alpha / l;\n if (nDim > 1) { node.vy += y * treeNode.value * alpha / l; }\n if (nDim > 2) { node.vz += z * treeNode.value * alpha / l; }\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (treeNode.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (treeNode.data !== node || treeNode.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (treeNode.data !== node) {\n w = strengths[treeNode.data.index] * alpha / l;\n node.vx += x * w;\n if (nDim > 1) { node.vy += y * w; }\n if (nDim > 2) { node.vz += z * w; }\n } while (treeNode = treeNode.next);\n }\n\n force.initialize = function(initNodes, numDimensions) {\n nodes = initNodes;\n nDim = numDimensions;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y, z) {\n var nodes,\n nDim,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n if (z == null) z = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = (node.y || 0) - y || 1e-6,\n dz = (node.z || 0) - z || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy + dz * dz),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n if (nDim>1) { node.vy += dy * k; }\n if (nDim>2) { node.vz += dz * k; }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(initNodes, numDimensions) {\n nodes = initNodes;\n nDim = numDimensions;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = +_, force) : z;\n };\n\n return force;\n}\n","module.exports = function eventify(subject) {\n validateSubject(subject);\n\n var eventsStorage = createEventsStorage(subject);\n subject.on = eventsStorage.on;\n subject.off = eventsStorage.off;\n subject.fire = eventsStorage.fire;\n return subject;\n};\n\nfunction createEventsStorage(subject) {\n // Store all event listeners to this hash. Key is event name, value is array\n // of callback records.\n //\n // A callback record consists of callback function and its optional context:\n // { 'eventName' => [{callback: function, ctx: object}] }\n var registeredEvents = Object.create(null);\n\n return {\n on: function (eventName, callback, ctx) {\n if (typeof callback !== 'function') {\n throw new Error('callback is expected to be a function');\n }\n var handlers = registeredEvents[eventName];\n if (!handlers) {\n handlers = registeredEvents[eventName] = [];\n }\n handlers.push({callback: callback, ctx: ctx});\n\n return subject;\n },\n\n off: function (eventName, callback) {\n var wantToRemoveAll = (typeof eventName === 'undefined');\n if (wantToRemoveAll) {\n // Killing old events storage should be enough in this case:\n registeredEvents = Object.create(null);\n return subject;\n }\n\n if (registeredEvents[eventName]) {\n var deleteAllCallbacksForEvent = (typeof callback !== 'function');\n if (deleteAllCallbacksForEvent) {\n delete registeredEvents[eventName];\n } else {\n var callbacks = registeredEvents[eventName];\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].callback === callback) {\n callbacks.splice(i, 1);\n }\n }\n }\n }\n\n return subject;\n },\n\n fire: function (eventName) {\n var callbacks = registeredEvents[eventName];\n if (!callbacks) {\n return subject;\n }\n\n var fireArguments;\n if (arguments.length > 1) {\n fireArguments = Array.prototype.splice.call(arguments, 1);\n }\n for(var i = 0; i < callbacks.length; ++i) {\n var callbackInfo = callbacks[i];\n callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);\n }\n\n return subject;\n }\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('Eventify cannot use falsy object as events subject');\n }\n var reservedWords = ['on', 'fire', 'off'];\n for (var i = 0; i < reservedWords.length; ++i) {\n if (subject.hasOwnProperty(reservedWords[i])) {\n throw new Error(\"Subject cannot be eventified, since it already has property '\" + reservedWords[i] + \"'\");\n }\n }\n}\n","/**\n * @fileOverview Contains definition of the core graph object.\n */\n\n// TODO: need to change storage layer:\n// 1. Be able to get all nodes O(1)\n// 2. Be able to get number of links O(1)\n\n/**\n * @example\n * var graph = require('ngraph.graph')();\n * graph.addNode(1); // graph has one node.\n * graph.addLink(2, 3); // now graph contains three nodes and one link.\n *\n */\nmodule.exports = createGraph;\n\nvar eventify = require('ngraph.events');\n\n/**\n * Creates a new graph\n */\nfunction createGraph(options) {\n // Graph structure is maintained as dictionary of nodes\n // and array of links. Each node has 'links' property which\n // hold all links related to that node. And general links\n // array is used to speed up all links enumeration. This is inefficient\n // in terms of memory, but simplifies coding.\n options = options || {};\n if ('uniqueLinkId' in options) {\n console.warn(\n 'ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\\n' +\n 'Use `multigraph` option instead\\n',\n '\\n',\n 'Note: there is also change in default behavior: From now on each graph\\n'+\n 'is considered to be not a multigraph by default (each edge is unique).'\n );\n\n options.multigraph = options.uniqueLinkId;\n }\n\n // Dear reader, the non-multigraphs do not guarantee that there is only\n // one link for a given pair of node. When this option is set to false\n // we can save some memory and CPU (18% faster for non-multigraph);\n if (options.multigraph === undefined) options.multigraph = false;\n\n if (typeof Map !== 'function') {\n // TODO: Should we polyfill it ourselves? We don't use much operations there..\n throw new Error('ngraph.graph requires `Map` to be defined. Please polyfill it before using ngraph');\n } \n\n var nodes = new Map();\n var links = [],\n // Hash of multi-edges. Used to track ids of edges between same nodes\n multiEdges = {},\n suspendEvents = 0,\n\n createLink = options.multigraph ? createUniqueLink : createSingleLink,\n\n // Our graph API provides means to listen to graph changes. Users can subscribe\n // to be notified about changes in the graph by using `on` method. However\n // in some cases they don't use it. To avoid unnecessary memory consumption\n // we will not record graph changes until we have at least one subscriber.\n // Code below supports this optimization.\n //\n // Accumulates all changes made during graph updates.\n // Each change element contains:\n // changeType - one of the strings: 'add', 'remove' or 'update';\n // node - if change is related to node this property is set to changed graph's node;\n // link - if change is related to link this property is set to changed graph's link;\n changes = [],\n recordLinkChange = noop,\n recordNodeChange = noop,\n enterModification = noop,\n exitModification = noop;\n\n // this is our public API:\n var graphPart = {\n /**\n * Adds node to the graph. If node with given id already exists in the graph\n * its data is extended with whatever comes in 'data' argument.\n *\n * @param nodeId the node's identifier. A string or number is preferred.\n * @param [data] additional data for the node being added. If node already\n * exists its data object is augmented with the new one.\n *\n * @return {node} The newly added node or node with given id if it already exists.\n */\n addNode: addNode,\n\n /**\n * Adds a link to the graph. The function always create a new\n * link between two nodes. If one of the nodes does not exists\n * a new node is created.\n *\n * @param fromId link start node id;\n * @param toId link end node id;\n * @param [data] additional data to be set on the new link;\n *\n * @return {link} The newly created link\n */\n addLink: addLink,\n\n /**\n * Removes link from the graph. If link does not exist does nothing.\n *\n * @param link - object returned by addLink() or getLinks() methods.\n *\n * @returns true if link was removed; false otherwise.\n */\n removeLink: removeLink,\n\n /**\n * Removes node with given id from the graph. If node does not exist in the graph\n * does nothing.\n *\n * @param nodeId node's identifier passed to addNode() function.\n *\n * @returns true if node was removed; false otherwise.\n */\n removeNode: removeNode,\n\n /**\n * Gets node with given identifier. If node does not exist undefined value is returned.\n *\n * @param nodeId requested node identifier;\n *\n * @return {node} in with requested identifier or undefined if no such node exists.\n */\n getNode: getNode,\n\n /**\n * Gets number of nodes in this graph.\n *\n * @return number of nodes in the graph.\n */\n getNodeCount: getNodeCount,\n\n /**\n * Gets total number of links in the graph.\n */\n getLinkCount: getLinkCount,\n\n /**\n * Synonym for `getLinkCount()`\n */\n getLinksCount: getLinkCount,\n \n /**\n * Synonym for `getNodeCount()`\n */\n getNodesCount: getNodeCount,\n\n /**\n * Gets all links (inbound and outbound) from the node with given id.\n * If node with given id is not found null is returned.\n *\n * @param nodeId requested node identifier.\n *\n * @return Array of links from and to requested node if such node exists;\n * otherwise null is returned.\n */\n getLinks: getLinks,\n\n /**\n * Invokes callback on each node of the graph.\n *\n * @param {Function(node)} callback Function to be invoked. The function\n * is passed one argument: visited node.\n */\n forEachNode: forEachNode,\n\n /**\n * Invokes callback on every linked (adjacent) node to the given one.\n *\n * @param nodeId Identifier of the requested node.\n * @param {Function(node, link)} callback Function to be called on all linked nodes.\n * The function is passed two parameters: adjacent node and link object itself.\n * @param oriented if true graph treated as oriented.\n */\n forEachLinkedNode: forEachLinkedNode,\n\n /**\n * Enumerates all links in the graph\n *\n * @param {Function(link)} callback Function to be called on all links in the graph.\n * The function is passed one parameter: graph's link object.\n *\n * Link object contains at least the following fields:\n * fromId - node id where link starts;\n * toId - node id where link ends,\n * data - additional data passed to graph.addLink() method.\n */\n forEachLink: forEachLink,\n\n /**\n * Suspend all notifications about graph changes until\n * endUpdate is called.\n */\n beginUpdate: enterModification,\n\n /**\n * Resumes all notifications about graph changes and fires\n * graph 'changed' event in case there are any pending changes.\n */\n endUpdate: exitModification,\n\n /**\n * Removes all nodes and links from the graph.\n */\n clear: clear,\n\n /**\n * Detects whether there is a link between two nodes.\n * Operation complexity is O(n) where n - number of links of a node.\n * NOTE: this function is synonim for getLink()\n *\n * @returns link if there is one. null otherwise.\n */\n hasLink: getLink,\n\n /**\n * Detects whether there is a node with given id\n * \n * Operation complexity is O(1)\n * NOTE: this function is synonim for getNode()\n *\n * @returns node if there is one; Falsy value otherwise.\n */\n hasNode: getNode,\n\n /**\n * Gets an edge between two nodes.\n * Operation complexity is O(n) where n - number of links of a node.\n *\n * @param {string} fromId link start identifier\n * @param {string} toId link end identifier\n *\n * @returns link if there is one. null otherwise.\n */\n getLink: getLink\n };\n\n // this will add `on()` and `fire()` methods.\n eventify(graphPart);\n\n monitorSubscribers();\n\n return graphPart;\n\n function monitorSubscribers() {\n var realOn = graphPart.on;\n\n // replace real `on` with our temporary on, which will trigger change\n // modification monitoring:\n graphPart.on = on;\n\n function on() {\n // now it's time to start tracking stuff:\n graphPart.beginUpdate = enterModification = enterModificationReal;\n graphPart.endUpdate = exitModification = exitModificationReal;\n recordLinkChange = recordLinkChangeReal;\n recordNodeChange = recordNodeChangeReal;\n\n // this will replace current `on` method with real pub/sub from `eventify`.\n graphPart.on = realOn;\n // delegate to real `on` handler:\n return realOn.apply(graphPart, arguments);\n }\n }\n\n function recordLinkChangeReal(link, changeType) {\n changes.push({\n link: link,\n changeType: changeType\n });\n }\n\n function recordNodeChangeReal(node, changeType) {\n changes.push({\n node: node,\n changeType: changeType\n });\n }\n\n function addNode(nodeId, data) {\n if (nodeId === undefined) {\n throw new Error('Invalid node identifier');\n }\n\n enterModification();\n\n var node = getNode(nodeId);\n if (!node) {\n node = new Node(nodeId, data);\n recordNodeChange(node, 'add');\n } else {\n node.data = data;\n recordNodeChange(node, 'update');\n }\n\n nodes.set(nodeId, node);\n\n exitModification();\n return node;\n }\n\n function getNode(nodeId) {\n return nodes.get(nodeId);\n }\n\n function removeNode(nodeId) {\n var node = getNode(nodeId);\n if (!node) {\n return false;\n }\n\n enterModification();\n\n var prevLinks = node.links;\n if (prevLinks) {\n node.links = null;\n for(var i = 0; i < prevLinks.length; ++i) {\n removeLink(prevLinks[i]);\n }\n }\n\n nodes.delete(nodeId)\n\n recordNodeChange(node, 'remove');\n\n exitModification();\n\n return true;\n }\n\n\n function addLink(fromId, toId, data) {\n enterModification();\n\n var fromNode = getNode(fromId) || addNode(fromId);\n var toNode = getNode(toId) || addNode(toId);\n\n var link = createLink(fromId, toId, data);\n\n links.push(link);\n\n // TODO: this is not cool. On large graphs potentially would consume more memory.\n addLinkToNode(fromNode, link);\n if (fromId !== toId) {\n // make sure we are not duplicating links for self-loops\n addLinkToNode(toNode, link);\n }\n\n recordLinkChange(link, 'add');\n\n exitModification();\n\n return link;\n }\n\n function createSingleLink(fromId, toId, data) {\n var linkId = makeLinkId(fromId, toId);\n return new Link(fromId, toId, data, linkId);\n }\n\n function createUniqueLink(fromId, toId, data) {\n // TODO: Get rid of this method.\n var linkId = makeLinkId(fromId, toId);\n var isMultiEdge = multiEdges.hasOwnProperty(linkId);\n if (isMultiEdge || getLink(fromId, toId)) {\n if (!isMultiEdge) {\n multiEdges[linkId] = 0;\n }\n var suffix = '@' + (++multiEdges[linkId]);\n linkId = makeLinkId(fromId + suffix, toId + suffix);\n }\n\n return new Link(fromId, toId, data, linkId);\n }\n\n function getNodeCount() {\n return nodes.size;\n }\n\n function getLinkCount() {\n return links.length;\n }\n\n function getLinks(nodeId) {\n var node = getNode(nodeId);\n return node ? node.links : null;\n }\n\n function removeLink(link) {\n if (!link) {\n return false;\n }\n var idx = indexOfElementInArray(link, links);\n if (idx < 0) {\n return false;\n }\n\n enterModification();\n\n links.splice(idx, 1);\n\n var fromNode = getNode(link.fromId);\n var toNode = getNode(link.toId);\n\n if (fromNode) {\n idx = indexOfElementInArray(link, fromNode.links);\n if (idx >= 0) {\n fromNode.links.splice(idx, 1);\n }\n }\n\n if (toNode) {\n idx = indexOfElementInArray(link, toNode.links);\n if (idx >= 0) {\n toNode.links.splice(idx, 1);\n }\n }\n\n recordLinkChange(link, 'remove');\n\n exitModification();\n\n return true;\n }\n\n function getLink(fromNodeId, toNodeId) {\n // TODO: Use sorted links to speed this up\n var node = getNode(fromNodeId),\n i;\n if (!node || !node.links) {\n return null;\n }\n\n for (i = 0; i < node.links.length; ++i) {\n var link = node.links[i];\n if (link.fromId === fromNodeId && link.toId === toNodeId) {\n return link;\n }\n }\n\n return null; // no link.\n }\n\n function clear() {\n enterModification();\n forEachNode(function(node) {\n removeNode(node.id);\n });\n exitModification();\n }\n\n function forEachLink(callback) {\n var i, length;\n if (typeof callback === 'function') {\n for (i = 0, length = links.length; i < length; ++i) {\n callback(links[i]);\n }\n }\n }\n\n function forEachLinkedNode(nodeId, callback, oriented) {\n var node = getNode(nodeId);\n\n if (node && node.links && typeof callback === 'function') {\n if (oriented) {\n return forEachOrientedLink(node.links, nodeId, callback);\n } else {\n return forEachNonOrientedLink(node.links, nodeId, callback);\n }\n }\n }\n\n function forEachNonOrientedLink(links, nodeId, callback) {\n var quitFast;\n for (var i = 0; i < links.length; ++i) {\n var link = links[i];\n var linkedNodeId = link.fromId === nodeId ? link.toId : link.fromId;\n\n quitFast = callback(nodes.get(linkedNodeId), link);\n if (quitFast) {\n return true; // Client does not need more iterations. Break now.\n }\n }\n }\n\n function forEachOrientedLink(links, nodeId, callback) {\n var quitFast;\n for (var i = 0; i < links.length; ++i) {\n var link = links[i];\n if (link.fromId === nodeId) {\n quitFast = callback(nodes.get(link.toId), link)\n if (quitFast) {\n return true; // Client does not need more iterations. Break now.\n }\n }\n }\n }\n\n // we will not fire anything until users of this library explicitly call `on()`\n // method.\n function noop() {}\n\n // Enter, Exit modification allows bulk graph updates without firing events.\n function enterModificationReal() {\n suspendEvents += 1;\n }\n\n function exitModificationReal() {\n suspendEvents -= 1;\n if (suspendEvents === 0 && changes.length > 0) {\n graphPart.fire('changed', changes);\n changes.length = 0;\n }\n }\n\n function forEachNode(callback) {\n if (typeof callback !== 'function') {\n throw new Error('Function is expected to iterate over graph nodes. You passed ' + callback);\n }\n\n var valuesIterator = nodes.values();\n var nextValue = valuesIterator.next();\n while (!nextValue.done) {\n if (callback(nextValue.value)) {\n return true; // client doesn't want to proceed. Return.\n }\n nextValue = valuesIterator.next();\n }\n }\n}\n\n// need this for old browsers. Should this be a separate module?\nfunction indexOfElementInArray(element, array) {\n if (!array) return -1;\n\n if (array.indexOf) {\n return array.indexOf(element);\n }\n\n var len = array.length,\n i;\n\n for (i = 0; i < len; i += 1) {\n if (array[i] === element) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n * Internal structure to represent node;\n */\nfunction Node(id, data) {\n this.id = id;\n this.links = null;\n this.data = data;\n}\n\nfunction addLinkToNode(node, link) {\n if (node.links) {\n node.links.push(link);\n } else {\n node.links = [link];\n }\n}\n\n/**\n * Internal structure to represent links;\n */\nfunction Link(fromId, toId, data, id) {\n this.fromId = fromId;\n this.toId = toId;\n this.data = data;\n this.id = id;\n}\n\nfunction makeLinkId(fromId, toId) {\n return fromId.toString() + '👉 ' + toId.toString();\n}\n","module.exports = Spring;\n\n/**\n * Represents a physical spring. Spring connects two bodies, has rest length\n * stiffness coefficient and optional weight\n */\nfunction Spring(fromBody, toBody, length, coeff) {\n this.from = fromBody;\n this.to = toBody;\n this.length = length;\n this.coeff = coeff;\n};\n","module.exports = exposeProperties;\n\n/**\n * Augments `target` object with getter/setter functions, which modify settings\n *\n * @example\n * var target = {};\n * exposeProperties({ age: 42}, target);\n * target.age(); // returns 42\n * target.age(24); // make age 24;\n *\n * var filteredTarget = {};\n * exposeProperties({ age: 42, name: 'John'}, filteredTarget, ['name']);\n * filteredTarget.name(); // returns 'John'\n * filteredTarget.age === undefined; // true\n */\nfunction exposeProperties(settings, target, filter) {\n var needsFilter = Object.prototype.toString.call(filter) === '[object Array]';\n if (needsFilter) {\n for (var i = 0; i < filter.length; ++i) {\n augment(settings, target, filter[i]);\n }\n } else {\n for (var key in settings) {\n augment(settings, target, key);\n }\n }\n}\n\nfunction augment(source, target, key) {\n if (source.hasOwnProperty(key)) {\n if (typeof target[key] === 'function') {\n // this accessor is already defined. Ignore it\n return;\n }\n target[key] = function (value) {\n if (value !== undefined) {\n source[key] = value;\n return target;\n }\n return source[key];\n }\n }\n}\n","module.exports = merge;\n\n/**\n * Augments `target` with properties in `options`. Does not override\n * target's properties if they are defined and matches expected type in \n * options\n *\n * @returns {Object} merged object\n */\nfunction merge(target, options) {\n var key;\n if (!target) { target = {}; }\n if (options) {\n for (key in options) {\n if (options.hasOwnProperty(key)) {\n var targetHasIt = target.hasOwnProperty(key),\n optionsValueType = typeof options[key],\n shouldReplace = !targetHasIt || (typeof target[key] !== optionsValueType);\n\n if (shouldReplace) {\n target[key] = options[key];\n } else if (optionsValueType === 'object') {\n // go deep, don't care about loops here, we are simple API!:\n target[key] = merge(target[key], options[key]);\n }\n }\n }\n }\n\n return target;\n}\n","module.exports = random;\n\n// TODO: Deprecate?\nmodule.exports.random = random,\nmodule.exports.randomIterator = randomIterator\n\n/**\n * Creates seeded PRNG with two methods:\n * next() and nextDouble()\n */\nfunction random(inputSeed) {\n var seed = typeof inputSeed === 'number' ? inputSeed : (+new Date());\n return new Generator(seed)\n}\n\nfunction Generator(seed) {\n this.seed = seed;\n}\n\n/**\n * Generates random integer number in the range from 0 (inclusive) to maxValue (exclusive)\n *\n * @param maxValue Number REQUIRED. Omitting this number will result in NaN values from PRNG.\n */\nGenerator.prototype.next = next;\n\n/**\n * Generates random double number in the range from 0 (inclusive) to 1 (exclusive)\n * This function is the same as Math.random() (except that it could be seeded)\n */\nGenerator.prototype.nextDouble = nextDouble;\n\n/**\n * Returns a random real number uniformly in [0, 1)\n */\nGenerator.prototype.uniform = nextDouble;\n\nGenerator.prototype.gaussian = gaussian;\n\nfunction gaussian() {\n // use the polar form of the Box-Muller transform\n // based on https://introcs.cs.princeton.edu/java/23recursion/StdRandom.java\n var r, x, y;\n do {\n x = this.nextDouble() * 2 - 1;\n y = this.nextDouble() * 2 - 1;\n r = x * x + y * y;\n } while (r >= 1 || r === 0);\n\n return x * Math.sqrt(-2 * Math.log(r)/r);\n}\n\nfunction nextDouble() {\n var seed = this.seed;\n // Robert Jenkins' 32 bit integer hash function.\n seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;\n seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;\n seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;\n seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;\n seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;\n seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;\n this.seed = seed;\n return (seed & 0xfffffff) / 0x10000000;\n}\n\nfunction next(maxValue) {\n return Math.floor(this.nextDouble() * maxValue);\n}\n\n/*\n * Creates iterator over array, which returns items of array in random order\n * Time complexity is guaranteed to be O(n);\n */\nfunction randomIterator(array, customRandom) {\n var localRandom = customRandom || random();\n if (typeof localRandom.next !== 'function') {\n throw new Error('customRandom does not match expected API: next() function is missing');\n }\n\n return {\n forEach: forEach,\n\n /**\n * Shuffles array randomly, in place.\n */\n shuffle: shuffle\n };\n\n function shuffle() {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n }\n\n return array;\n }\n\n function forEach(callback) {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n\n callback(t);\n }\n\n if (array.length) {\n callback(array[0]);\n }\n }\n}","/**\n * Internal data structure to represent 2D QuadTree node\n */\nmodule.exports = function Node() {\n // body stored inside this node. In quad tree only leaf nodes (by construction)\n // contain boides:\n this.body = null;\n\n // Child nodes are stored in quads. Each quad is presented by number:\n // 0 | 1\n // -----\n // 2 | 3\n this.quad0 = null;\n this.quad1 = null;\n this.quad2 = null;\n this.quad3 = null;\n\n // Total mass of current node\n this.mass = 0;\n\n // Center of mass coordinates\n this.massX = 0;\n this.massY = 0;\n\n // bounding box coordinates\n this.left = 0;\n this.top = 0;\n this.bottom = 0;\n this.right = 0;\n};\n","module.exports = InsertStack;\n\n/**\n * Our implmentation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n this.stack = [];\n this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n isEmpty: function() {\n return this.popIdx === 0;\n },\n push: function (node, body) {\n var item = this.stack[this.popIdx];\n if (!item) {\n // we are trying to avoid memory pressue: create new element\n // only when absolutely necessary\n this.stack[this.popIdx] = new InsertStackElement(node, body);\n } else {\n item.node = node;\n item.body = body;\n }\n ++this.popIdx;\n },\n pop: function () {\n if (this.popIdx > 0) {\n return this.stack[--this.popIdx];\n }\n },\n reset: function () {\n this.popIdx = 0;\n }\n};\n\nfunction InsertStackElement(node, body) {\n this.node = node; // QuadTree node\n this.body = body; // physical body which needs to be inserted to node\n}\n","module.exports = function isSamePosition(point1, point2) {\n var dx = Math.abs(point1.x - point2.x);\n var dy = Math.abs(point1.y - point2.y);\n\n return (dx < 1e-8 && dy < 1e-8);\n};\n","/**\n * This is Barnes Hut simulation algorithm for 2d case. Implementation\n * is highly optimized (avoids recusion and gc pressure)\n *\n * http://www.cs.princeton.edu/courses/archive/fall03/cs126/assignments/barnes-hut.html\n */\n\nmodule.exports = function(options) {\n options = options || {};\n options.gravity = typeof options.gravity === 'number' ? options.gravity : -1;\n options.theta = typeof options.theta === 'number' ? options.theta : 0.8;\n\n // we require deterministic randomness here\n var random = require('ngraph.random').random(1984),\n Node = require('./node'),\n InsertStack = require('./insertStack'),\n isSamePosition = require('./isSamePosition');\n\n var gravity = options.gravity,\n updateQueue = [],\n insertStack = new InsertStack(),\n theta = options.theta,\n\n nodesCache = [],\n currentInCache = 0,\n root = newNode();\n\n return {\n insertBodies: insertBodies,\n /**\n * Gets root node if its present\n */\n getRoot: function() {\n return root;\n },\n updateBodyForce: update,\n options: function(newOptions) {\n if (newOptions) {\n if (typeof newOptions.gravity === 'number') {\n gravity = newOptions.gravity;\n }\n if (typeof newOptions.theta === 'number') {\n theta = newOptions.theta;\n }\n\n return this;\n }\n\n return {\n gravity: gravity,\n theta: theta\n };\n }\n };\n\n function newNode() {\n // To avoid pressure on GC we reuse nodes.\n var node = nodesCache[currentInCache];\n if (node) {\n node.quad0 = null;\n node.quad1 = null;\n node.quad2 = null;\n node.quad3 = null;\n node.body = null;\n node.mass = node.massX = node.massY = 0;\n node.left = node.right = node.top = node.bottom = 0;\n } else {\n node = new Node();\n nodesCache[currentInCache] = node;\n }\n\n ++currentInCache;\n return node;\n }\n\n function update(sourceBody) {\n var queue = updateQueue,\n v,\n dx,\n dy,\n r, fx = 0,\n fy = 0,\n queueLength = 1,\n shiftIdx = 0,\n pushIdx = 1;\n\n queue[0] = root;\n\n while (queueLength) {\n var node = queue[shiftIdx],\n body = node.body;\n\n queueLength -= 1;\n shiftIdx += 1;\n var differentBody = (body !== sourceBody);\n if (body && differentBody) {\n // If the current node is a leaf node (and it is not source body),\n // calculate the force exerted by the current node on body, and add this\n // amount to body's net force.\n dx = body.pos.x - sourceBody.pos.x;\n dy = body.pos.y - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Poor man's protection against zero distance.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n // This is standard gravition force calculation but we divide\n // by r^3 to save two operations when normalizing force vector.\n v = gravity * body.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else if (differentBody) {\n // Otherwise, calculate the ratio s / r, where s is the width of the region\n // represented by the internal node, and r is the distance between the body\n // and the node's center-of-mass\n dx = node.massX / node.mass - sourceBody.pos.x;\n dy = node.massY / node.mass - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Sorry about code duplucation. I don't want to create many functions\n // right away. Just want to see performance first.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n // If s / r < θ, treat this internal node as a single body, and calculate the\n // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n if ((node.right - node.left) / r < theta) {\n // in the if statement above we consider node's width only\n // because the region was squarified during tree creation.\n // Thus there is no difference between using width or height.\n v = gravity * node.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else {\n // Otherwise, run the procedure recursively on each of the current node's children.\n\n // I intentionally unfolded this loop, to save several CPU cycles.\n if (node.quad0) {\n queue[pushIdx] = node.quad0;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad1) {\n queue[pushIdx] = node.quad1;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad2) {\n queue[pushIdx] = node.quad2;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad3) {\n queue[pushIdx] = node.quad3;\n queueLength += 1;\n pushIdx += 1;\n }\n }\n }\n }\n\n sourceBody.force.x += fx;\n sourceBody.force.y += fy;\n }\n\n function insertBodies(bodies) {\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE,\n i,\n max = bodies.length;\n\n // To reduce quad tree depth we are looking for exact bounding box of all particles.\n i = max;\n while (i--) {\n var x = bodies[i].pos.x;\n var y = bodies[i].pos.y;\n if (x < x1) {\n x1 = x;\n }\n if (x > x2) {\n x2 = x;\n }\n if (y < y1) {\n y1 = y;\n }\n if (y > y2) {\n y2 = y;\n }\n }\n\n // Squarify the bounds.\n var dx = x2 - x1,\n dy = y2 - y1;\n if (dx > dy) {\n y2 = y1 + dx;\n } else {\n x2 = x1 + dy;\n }\n\n currentInCache = 0;\n root = newNode();\n root.left = x1;\n root.right = x2;\n root.top = y1;\n root.bottom = y2;\n\n i = max - 1;\n if (i >= 0) {\n root.body = bodies[i];\n }\n while (i--) {\n insert(bodies[i], root);\n }\n }\n\n function insert(newBody) {\n insertStack.reset();\n insertStack.push(root, newBody);\n\n while (!insertStack.isEmpty()) {\n var stackItem = insertStack.pop(),\n node = stackItem.node,\n body = stackItem.body;\n\n if (!node.body) {\n // This is internal node. Update the total mass of the node and center-of-mass.\n var x = body.pos.x;\n var y = body.pos.y;\n node.mass = node.mass + body.mass;\n node.massX = node.massX + body.mass * x;\n node.massY = node.massY + body.mass * y;\n\n // Recursively insert the body in the appropriate quadrant.\n // But first find the appropriate quadrant.\n var quadIdx = 0, // Assume we are in the 0's quad.\n left = node.left,\n right = (node.right + left) / 2,\n top = node.top,\n bottom = (node.bottom + top) / 2;\n\n if (x > right) { // somewhere in the eastern part.\n quadIdx = quadIdx + 1;\n left = right;\n right = node.right;\n }\n if (y > bottom) { // and in south.\n quadIdx = quadIdx + 2;\n top = bottom;\n bottom = node.bottom;\n }\n\n var child = getChild(node, quadIdx);\n if (!child) {\n // The node is internal but this quadrant is not taken. Add\n // subnode to it.\n child = newNode();\n child.left = left;\n child.top = top;\n child.right = right;\n child.bottom = bottom;\n child.body = body;\n\n setChild(node, quadIdx, child);\n } else {\n // continue searching in this quadrant.\n insertStack.push(child, body);\n }\n } else {\n // We are trying to add to the leaf node.\n // We have to convert current leaf into internal node\n // and continue adding two nodes.\n var oldBody = node.body;\n node.body = null; // internal nodes do not cary bodies\n\n if (isSamePosition(oldBody.pos, body.pos)) {\n // Prevent infinite subdivision by bumping one node\n // anywhere in this quadrant\n var retriesCount = 3;\n do {\n var offset = random.nextDouble();\n var dx = (node.right - node.left) * offset;\n var dy = (node.bottom - node.top) * offset;\n\n oldBody.pos.x = node.left + dx;\n oldBody.pos.y = node.top + dy;\n retriesCount -= 1;\n // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n // This is very bad, we ran out of precision.\n // if we do not return from the method we'll get into\n // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n // Next layout iteration should get larger bounding box in the first step and fix this\n return;\n }\n }\n // Next iteration should subdivide node further.\n insertStack.push(node, oldBody);\n insertStack.push(node, body);\n }\n }\n }\n};\n\nfunction getChild(node, idx) {\n if (idx === 0) return node.quad0;\n if (idx === 1) return node.quad1;\n if (idx === 2) return node.quad2;\n if (idx === 3) return node.quad3;\n return null;\n}\n\nfunction setChild(node, idx, child) {\n if (idx === 0) node.quad0 = child;\n else if (idx === 1) node.quad1 = child;\n else if (idx === 2) node.quad2 = child;\n else if (idx === 3) node.quad3 = child;\n}\n","module.exports = function (bodies, settings) {\n var random = require('ngraph.random').random(42);\n var boundingBox = { x1: 0, y1: 0, x2: 0, y2: 0 };\n\n return {\n box: boundingBox,\n\n update: updateBoundingBox,\n\n reset : function () {\n boundingBox.x1 = boundingBox.y1 = 0;\n boundingBox.x2 = boundingBox.y2 = 0;\n },\n\n getBestNewPosition: function (neighbors) {\n var graphRect = boundingBox;\n\n var baseX = 0, baseY = 0;\n\n if (neighbors.length) {\n for (var i = 0; i < neighbors.length; ++i) {\n baseX += neighbors[i].pos.x;\n baseY += neighbors[i].pos.y;\n }\n\n baseX /= neighbors.length;\n baseY /= neighbors.length;\n } else {\n baseX = (graphRect.x1 + graphRect.x2) / 2;\n baseY = (graphRect.y1 + graphRect.y2) / 2;\n }\n\n var springLength = settings.springLength;\n return {\n x: baseX + random.next(springLength) - springLength / 2,\n y: baseY + random.next(springLength) - springLength / 2\n };\n }\n };\n\n function updateBoundingBox() {\n var i = bodies.length;\n if (i === 0) { return; } // don't have to wory here.\n\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE;\n\n while(i--) {\n // this is O(n), could it be done faster with quadtree?\n // how about pinned nodes?\n var body = bodies[i];\n if (body.isPinned) {\n body.pos.x = body.prevPos.x;\n body.pos.y = body.prevPos.y;\n } else {\n body.prevPos.x = body.pos.x;\n body.prevPos.y = body.pos.y;\n }\n if (body.pos.x < x1) {\n x1 = body.pos.x;\n }\n if (body.pos.x > x2) {\n x2 = body.pos.x;\n }\n if (body.pos.y < y1) {\n y1 = body.pos.y;\n }\n if (body.pos.y > y2) {\n y2 = body.pos.y;\n }\n }\n\n boundingBox.x1 = x1;\n boundingBox.x2 = x2;\n boundingBox.y1 = y1;\n boundingBox.y2 = y2;\n }\n}\n","/**\n * Represents drag force, which reduces force value on each step by given\n * coefficient.\n *\n * @param {Object} options for the drag force\n * @param {Number=} options.dragCoeff drag force coefficient. 0.1 by default\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge'),\n expose = require('ngraph.expose');\n\n options = merge(options, {\n dragCoeff: 0.02\n });\n\n var api = {\n update : function (body) {\n body.force.x -= options.dragCoeff * body.velocity.x;\n body.force.y -= options.dragCoeff * body.velocity.y;\n }\n };\n\n // let easy access to dragCoeff:\n expose(options, api, ['dragCoeff']);\n\n return api;\n};\n","/**\n * Represents spring force, which updates forces acting on two bodies, connected\n * by a spring.\n *\n * @param {Object} options for the spring force\n * @param {Number=} options.springCoeff spring force coefficient.\n * @param {Number=} options.springLength desired length of a spring at rest.\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge');\n var random = require('ngraph.random').random(42);\n var expose = require('ngraph.expose');\n\n options = merge(options, {\n springCoeff: 0.0002,\n springLength: 80\n });\n\n var api = {\n /**\n * Upsates forces acting on a spring\n */\n update : function (spring) {\n var body1 = spring.from,\n body2 = spring.to,\n length = spring.length < 0 ? options.springLength : spring.length,\n dx = body2.pos.x - body1.pos.x,\n dy = body2.pos.y - body1.pos.y,\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n var d = r - length;\n var coeff = ((!spring.coeff || spring.coeff < 0) ? options.springCoeff : spring.coeff) * d / r;\n\n body1.force.x += coeff * dx;\n body1.force.y += coeff * dy;\n\n body2.force.x -= coeff * dx;\n body2.force.y -= coeff * dy;\n }\n };\n\n expose(options, api, ['springCoeff', 'springLength']);\n return api;\n}\n","/**\n * Performs forces integration, using given time step. Uses Euler method to solve\n * differential equation (http://en.wikipedia.org/wiki/Euler_method ).\n *\n * @returns {Number} squared distance of total position updates.\n */\n\nmodule.exports = integrate;\n\nfunction integrate(bodies, timeStep) {\n var dx = 0, tx = 0,\n dy = 0, ty = 0,\n i,\n max = bodies.length;\n\n if (max === 0) {\n return 0;\n }\n\n for (i = 0; i < max; ++i) {\n var body = bodies[i],\n coeff = timeStep / body.mass;\n\n body.velocity.x += coeff * body.force.x;\n body.velocity.y += coeff * body.force.y;\n var vx = body.velocity.x,\n vy = body.velocity.y,\n v = Math.sqrt(vx * vx + vy * vy);\n\n if (v > 1) {\n // We normalize it so that we move within timeStep range. \n // for the case when v <= 1 - we let velocity to fade out.\n body.velocity.x = vx / v;\n body.velocity.y = vy / v;\n }\n\n dx = timeStep * body.velocity.x;\n dy = timeStep * body.velocity.y;\n\n body.pos.x += dx;\n body.pos.y += dy;\n\n tx += Math.abs(dx); ty += Math.abs(dy);\n }\n\n return (tx * tx + ty * ty)/max;\n}\n","module.exports = {\n Body: Body,\n Vector2d: Vector2d,\n Body3d: Body3d,\n Vector3d: Vector3d\n};\n\nfunction Body(x, y) {\n this.pos = new Vector2d(x, y);\n this.prevPos = new Vector2d(x, y);\n this.force = new Vector2d();\n this.velocity = new Vector2d();\n this.mass = 1;\n}\n\nBody.prototype.setPosition = function (x, y) {\n this.prevPos.x = this.pos.x = x;\n this.prevPos.y = this.pos.y = y;\n};\n\nfunction Vector2d(x, y) {\n if (x && typeof x !== 'number') {\n // could be another vector\n this.x = typeof x.x === 'number' ? x.x : 0;\n this.y = typeof x.y === 'number' ? x.y : 0;\n } else {\n this.x = typeof x === 'number' ? x : 0;\n this.y = typeof y === 'number' ? y : 0;\n }\n}\n\nVector2d.prototype.reset = function () {\n this.x = this.y = 0;\n};\n\nfunction Body3d(x, y, z) {\n this.pos = new Vector3d(x, y, z);\n this.prevPos = new Vector3d(x, y, z);\n this.force = new Vector3d();\n this.velocity = new Vector3d();\n this.mass = 1;\n}\n\nBody3d.prototype.setPosition = function (x, y, z) {\n this.prevPos.x = this.pos.x = x;\n this.prevPos.y = this.pos.y = y;\n this.prevPos.z = this.pos.z = z;\n};\n\nfunction Vector3d(x, y, z) {\n if (x && typeof x !== 'number') {\n // could be another vector\n this.x = typeof x.x === 'number' ? x.x : 0;\n this.y = typeof x.y === 'number' ? x.y : 0;\n this.z = typeof x.z === 'number' ? x.z : 0;\n } else {\n this.x = typeof x === 'number' ? x : 0;\n this.y = typeof y === 'number' ? y : 0;\n this.z = typeof z === 'number' ? z : 0;\n }\n};\n\nVector3d.prototype.reset = function () {\n this.x = this.y = this.z = 0;\n};\n","var physics = require('ngraph.physics.primitives');\n\nmodule.exports = function(pos) {\n return new physics.Body(pos);\n}\n","/**\n * Manages a simulation of physical forces acting on bodies and springs.\n */\nmodule.exports = physicsSimulator;\n\nfunction physicsSimulator(settings) {\n var Spring = require('./lib/spring');\n var expose = require('ngraph.expose');\n var merge = require('ngraph.merge');\n var eventify = require('ngraph.events');\n\n settings = merge(settings, {\n /**\n * Ideal length for links (springs in physical model).\n */\n springLength: 30,\n\n /**\n * Hook's law coefficient. 1 - solid spring.\n */\n springCoeff: 0.0008,\n\n /**\n * Coulomb's law coefficient. It's used to repel nodes thus should be negative\n * if you make it positive nodes start attract each other :).\n */\n gravity: -1.2,\n\n /**\n * Theta coefficient from Barnes Hut simulation. Ranged between (0, 1).\n * The closer it's to 1 the more nodes algorithm will have to go through.\n * Setting it to one makes Barnes Hut simulation no different from\n * brute-force forces calculation (each node is considered).\n */\n theta: 0.8,\n\n /**\n * Drag force coefficient. Used to slow down system, thus should be less than 1.\n * The closer it is to 0 the less tight system will be.\n */\n dragCoeff: 0.02,\n\n /**\n * Default time step (dt) for forces integration\n */\n timeStep : 20,\n });\n\n // We allow clients to override basic factory methods:\n var createQuadTree = settings.createQuadTree || require('ngraph.quadtreebh');\n var createBounds = settings.createBounds || require('./lib/bounds');\n var createDragForce = settings.createDragForce || require('./lib/dragForce');\n var createSpringForce = settings.createSpringForce || require('./lib/springForce');\n var integrate = settings.integrator || require('./lib/eulerIntegrator');\n var createBody = settings.createBody || require('./lib/createBody');\n\n var bodies = [], // Bodies in this simulation.\n springs = [], // Springs in this simulation.\n quadTree = createQuadTree(settings),\n bounds = createBounds(bodies, settings),\n springForce = createSpringForce(settings),\n dragForce = createDragForce(settings);\n\n var bboxNeedsUpdate = true;\n var totalMovement = 0; // how much movement we made on last step\n\n var publicApi = {\n /**\n * Array of bodies, registered with current simulator\n *\n * Note: To add new body, use addBody() method. This property is only\n * exposed for testing/performance purposes.\n */\n bodies: bodies,\n\n quadTree: quadTree,\n\n /**\n * Array of springs, registered with current simulator\n *\n * Note: To add new spring, use addSpring() method. This property is only\n * exposed for testing/performance purposes.\n */\n springs: springs,\n\n /**\n * Returns settings with which current simulator was initialized\n */\n settings: settings,\n\n /**\n * Performs one step of force simulation.\n *\n * @returns {boolean} true if system is considered stable; False otherwise.\n */\n step: function () {\n accumulateForces();\n\n var movement = integrate(bodies, settings.timeStep);\n bounds.update();\n\n return movement;\n },\n\n /**\n * Adds body to the system\n *\n * @param {ngraph.physics.primitives.Body} body physical body\n *\n * @returns {ngraph.physics.primitives.Body} added body\n */\n addBody: function (body) {\n if (!body) {\n throw new Error('Body is required');\n }\n bodies.push(body);\n\n return body;\n },\n\n /**\n * Adds body to the system at given position\n *\n * @param {Object} pos position of a body\n *\n * @returns {ngraph.physics.primitives.Body} added body\n */\n addBodyAt: function (pos) {\n if (!pos) {\n throw new Error('Body position is required');\n }\n var body = createBody(pos);\n bodies.push(body);\n\n return body;\n },\n\n /**\n * Removes body from the system\n *\n * @param {ngraph.physics.primitives.Body} body to remove\n *\n * @returns {Boolean} true if body found and removed. falsy otherwise;\n */\n removeBody: function (body) {\n if (!body) { return; }\n\n var idx = bodies.indexOf(body);\n if (idx < 0) { return; }\n\n bodies.splice(idx, 1);\n if (bodies.length === 0) {\n bounds.reset();\n }\n return true;\n },\n\n /**\n * Adds a spring to this simulation.\n *\n * @returns {Object} - a handle for a spring. If you want to later remove\n * spring pass it to removeSpring() method.\n */\n addSpring: function (body1, body2, springLength, springCoefficient) {\n if (!body1 || !body2) {\n throw new Error('Cannot add null spring to force simulator');\n }\n\n if (typeof springLength !== 'number') {\n springLength = -1; // assume global configuration\n }\n\n var spring = new Spring(body1, body2, springLength, springCoefficient >= 0 ? springCoefficient : -1);\n springs.push(spring);\n\n // TODO: could mark simulator as dirty.\n return spring;\n },\n\n /**\n * Returns amount of movement performed on last step() call\n */\n getTotalMovement: function () {\n return totalMovement;\n },\n\n /**\n * Removes spring from the system\n *\n * @param {Object} spring to remove. Spring is an object returned by addSpring\n *\n * @returns {Boolean} true if spring found and removed. falsy otherwise;\n */\n removeSpring: function (spring) {\n if (!spring) { return; }\n var idx = springs.indexOf(spring);\n if (idx > -1) {\n springs.splice(idx, 1);\n return true;\n }\n },\n\n getBestNewBodyPosition: function (neighbors) {\n return bounds.getBestNewPosition(neighbors);\n },\n\n /**\n * Returns bounding box which covers all bodies\n */\n getBBox: function () {\n if (bboxNeedsUpdate) {\n bounds.update();\n bboxNeedsUpdate = false;\n }\n return bounds.box;\n },\n\n invalidateBBox: function () {\n bboxNeedsUpdate = true;\n },\n\n gravity: function (value) {\n if (value !== undefined) {\n settings.gravity = value;\n quadTree.options({gravity: value});\n return this;\n } else {\n return settings.gravity;\n }\n },\n\n theta: function (value) {\n if (value !== undefined) {\n settings.theta = value;\n quadTree.options({theta: value});\n return this;\n } else {\n return settings.theta;\n }\n }\n };\n\n // allow settings modification via public API:\n expose(settings, publicApi);\n\n eventify(publicApi);\n\n return publicApi;\n\n function accumulateForces() {\n // Accumulate forces acting on bodies.\n var body,\n i = bodies.length;\n\n if (i) {\n // only add bodies if there the array is not empty:\n quadTree.insertBodies(bodies); // performance: O(n * log n)\n while (i--) {\n body = bodies[i];\n // If body is pinned there is no point updating its forces - it should\n // never move:\n if (!body.isPinned) {\n body.force.reset();\n\n quadTree.updateBodyForce(body);\n dragForce.update(body);\n }\n }\n }\n\n i = springs.length;\n while(i--) {\n springForce.update(springs[i]);\n }\n }\n};\n","module.exports = createLayout;\nmodule.exports.simulator = require('ngraph.physics.simulator');\n\nvar eventify = require('ngraph.events');\n\n/**\n * Creates force based layout for a given graph.\n *\n * @param {ngraph.graph} graph which needs to be laid out\n * @param {object} physicsSettings if you need custom settings\n * for physics simulator you can pass your own settings here. If it's not passed\n * a default one will be created.\n */\nfunction createLayout(graph, physicsSettings) {\n if (!graph) {\n throw new Error('Graph structure cannot be undefined');\n }\n\n var createSimulator = require('ngraph.physics.simulator');\n var physicsSimulator = createSimulator(physicsSettings);\n\n var nodeMass = defaultNodeMass\n if (physicsSettings && typeof physicsSettings.nodeMass === 'function') {\n nodeMass = physicsSettings.nodeMass\n }\n\n var nodeBodies = new Map();\n var springs = {};\n var bodiesCount = 0;\n\n var springTransform = physicsSimulator.settings.springTransform || noop;\n\n // Initialize physics with what we have in the graph:\n initPhysics();\n listenToEvents();\n\n var wasStable = false;\n\n var api = {\n /**\n * Performs one step of iterative layout algorithm\n *\n * @returns {boolean} true if the system should be considered stable; False otherwise.\n * The system is stable if no further call to `step()` can improve the layout.\n */\n step: function() {\n if (bodiesCount === 0) return true; // TODO: This will never fire 'stable'\n\n var lastMove = physicsSimulator.step();\n\n // Save the movement in case if someone wants to query it in the step\n // callback.\n api.lastMove = lastMove;\n\n // Allow listeners to perform low-level actions after nodes are updated.\n api.fire('step');\n\n var ratio = lastMove/bodiesCount;\n var isStableNow = ratio <= 0.01; // TODO: The number is somewhat arbitrary...\n\n if (wasStable !== isStableNow) {\n wasStable = isStableNow;\n onStableChanged(isStableNow);\n }\n\n return isStableNow;\n },\n\n /**\n * For a given `nodeId` returns position\n */\n getNodePosition: function (nodeId) {\n return getInitializedBody(nodeId).pos;\n },\n\n /**\n * Sets position of a node to a given coordinates\n * @param {string} nodeId node identifier\n * @param {number} x position of a node\n * @param {number} y position of a node\n * @param {number=} z position of node (only if applicable to body)\n */\n setNodePosition: function (nodeId) {\n var body = getInitializedBody(nodeId);\n body.setPosition.apply(body, Array.prototype.slice.call(arguments, 1));\n physicsSimulator.invalidateBBox();\n },\n\n /**\n * @returns {Object} Link position by link id\n * @returns {Object.from} {x, y} coordinates of link start\n * @returns {Object.to} {x, y} coordinates of link end\n */\n getLinkPosition: function (linkId) {\n var spring = springs[linkId];\n if (spring) {\n return {\n from: spring.from.pos,\n to: spring.to.pos\n };\n }\n },\n\n /**\n * @returns {Object} area required to fit in the graph. Object contains\n * `x1`, `y1` - top left coordinates\n * `x2`, `y2` - bottom right coordinates\n */\n getGraphRect: function () {\n return physicsSimulator.getBBox();\n },\n\n /**\n * Iterates over each body in the layout simulator and performs a callback(body, nodeId)\n */\n forEachBody: forEachBody,\n\n /*\n * Requests layout algorithm to pin/unpin node to its current position\n * Pinned nodes should not be affected by layout algorithm and always\n * remain at their position\n */\n pinNode: function (node, isPinned) {\n var body = getInitializedBody(node.id);\n body.isPinned = !!isPinned;\n },\n\n /**\n * Checks whether given graph's node is currently pinned\n */\n isNodePinned: function (node) {\n return getInitializedBody(node.id).isPinned;\n },\n\n /**\n * Request to release all resources\n */\n dispose: function() {\n graph.off('changed', onGraphChanged);\n api.fire('disposed');\n },\n\n /**\n * Gets physical body for a given node id. If node is not found undefined\n * value is returned.\n */\n getBody: getBody,\n\n /**\n * Gets spring for a given edge.\n *\n * @param {string} linkId link identifer. If two arguments are passed then\n * this argument is treated as formNodeId\n * @param {string=} toId when defined this parameter denotes head of the link\n * and first argument is treated as tail of the link (fromId)\n */\n getSpring: getSpring,\n\n /**\n * [Read only] Gets current physics simulator\n */\n simulator: physicsSimulator,\n\n /**\n * Gets the graph that was used for layout\n */\n graph: graph,\n\n /**\n * Gets amount of movement performed during last step operation\n */\n lastMove: 0\n };\n\n eventify(api);\n\n return api;\n\n function forEachBody(cb) {\n nodeBodies.forEach(function(body, bodyId) {\n cb(body, bodyId);\n })\n }\n\n function getSpring(fromId, toId) {\n var linkId;\n if (toId === undefined) {\n if (typeof fromId !== 'object') {\n // assume fromId as a linkId:\n linkId = fromId;\n } else {\n // assume fromId to be a link object:\n linkId = fromId.id;\n }\n } else {\n // toId is defined, should grab link:\n var link = graph.hasLink(fromId, toId);\n if (!link) return;\n linkId = link.id;\n }\n\n return springs[linkId];\n }\n\n function getBody(nodeId) {\n return nodeBodies.get(nodeId);\n }\n\n function listenToEvents() {\n graph.on('changed', onGraphChanged);\n }\n\n function onStableChanged(isStable) {\n api.fire('stable', isStable);\n }\n\n function onGraphChanged(changes) {\n for (var i = 0; i < changes.length; ++i) {\n var change = changes[i];\n if (change.changeType === 'add') {\n if (change.node) {\n initBody(change.node.id);\n }\n if (change.link) {\n initLink(change.link);\n }\n } else if (change.changeType === 'remove') {\n if (change.node) {\n releaseNode(change.node);\n }\n if (change.link) {\n releaseLink(change.link);\n }\n }\n }\n bodiesCount = graph.getNodesCount();\n }\n\n function initPhysics() {\n bodiesCount = 0;\n\n graph.forEachNode(function (node) {\n initBody(node.id);\n bodiesCount += 1;\n });\n\n graph.forEachLink(initLink);\n }\n\n function initBody(nodeId) {\n var body = nodeBodies.get(nodeId);\n if (!body) {\n var node = graph.getNode(nodeId);\n if (!node) {\n throw new Error('initBody() was called with unknown node id');\n }\n\n var pos = node.position;\n if (!pos) {\n var neighbors = getNeighborBodies(node);\n pos = physicsSimulator.getBestNewBodyPosition(neighbors);\n }\n\n body = physicsSimulator.addBodyAt(pos);\n body.id = nodeId;\n\n nodeBodies.set(nodeId, body);\n updateBodyMass(nodeId);\n\n if (isNodeOriginallyPinned(node)) {\n body.isPinned = true;\n }\n }\n }\n\n function releaseNode(node) {\n var nodeId = node.id;\n var body = nodeBodies.get(nodeId);\n if (body) {\n nodeBodies.delete(nodeId);\n physicsSimulator.removeBody(body);\n }\n }\n\n function initLink(link) {\n updateBodyMass(link.fromId);\n updateBodyMass(link.toId);\n\n var fromBody = nodeBodies.get(link.fromId),\n toBody = nodeBodies.get(link.toId),\n spring = physicsSimulator.addSpring(fromBody, toBody, link.length);\n\n springTransform(link, spring);\n\n springs[link.id] = spring;\n }\n\n function releaseLink(link) {\n var spring = springs[link.id];\n if (spring) {\n var from = graph.getNode(link.fromId),\n to = graph.getNode(link.toId);\n\n if (from) updateBodyMass(from.id);\n if (to) updateBodyMass(to.id);\n\n delete springs[link.id];\n\n physicsSimulator.removeSpring(spring);\n }\n }\n\n function getNeighborBodies(node) {\n // TODO: Could probably be done better on memory\n var neighbors = [];\n if (!node.links) {\n return neighbors;\n }\n var maxNeighbors = Math.min(node.links.length, 2);\n for (var i = 0; i < maxNeighbors; ++i) {\n var link = node.links[i];\n var otherBody = link.fromId !== node.id ? nodeBodies.get(link.fromId) : nodeBodies.get(link.toId);\n if (otherBody && otherBody.pos) {\n neighbors.push(otherBody);\n }\n }\n\n return neighbors;\n }\n\n function updateBodyMass(nodeId) {\n var body = nodeBodies.get(nodeId);\n body.mass = nodeMass(nodeId);\n if (Number.isNaN(body.mass)) {\n throw new Error('Node mass should be a number')\n }\n }\n\n /**\n * Checks whether graph node has in its settings pinned attribute,\n * which means layout algorithm cannot move it. Node can be marked\n * as pinned, if it has \"isPinned\" attribute, or when node.data has it.\n *\n * @param {Object} node a graph node to check\n * @return {Boolean} true if node should be treated as pinned; false otherwise.\n */\n function isNodeOriginallyPinned(node) {\n return (node && (node.isPinned || (node.data && node.data.isPinned)));\n }\n\n function getInitializedBody(nodeId) {\n var body = nodeBodies.get(nodeId);\n if (!body) {\n initBody(nodeId);\n body = nodeBodies.get(nodeId);\n }\n return body;\n }\n\n /**\n * Calculates mass of a body, which corresponds to node with given id.\n *\n * @param {String|Number} nodeId identifier of a node, for which body mass needs to be calculated\n * @returns {Number} recommended mass of the body;\n */\n function defaultNodeMass(nodeId) {\n var links = graph.getLinks(nodeId);\n if (!links) return 1;\n return 1 + links.length / 3.0;\n }\n}\n\nfunction noop() { }\n","/**\n * Internal data structure to represent 3D QuadTree node\n */\nmodule.exports = function Node() {\n // body stored inside this node. In quad tree only leaf nodes (by construction)\n // contain boides:\n this.body = null;\n\n // Child nodes are stored in quads. Each quad is presented by number:\n // Behind Z median:\n // 0 | 1\n // -----\n // 2 | 3\n // In front of Z median:\n // 4 | 5\n // -----\n // 6 | 7\n this.quad0 = null;\n this.quad1 = null;\n this.quad2 = null;\n this.quad3 = null;\n this.quad4 = null;\n this.quad5 = null;\n this.quad6 = null;\n this.quad7 = null;\n\n // Total mass of current node\n this.mass = 0;\n\n // Center of mass coordinates\n this.massX = 0;\n this.massY = 0;\n this.massZ = 0;\n\n // bounding box coordinates\n this.left = 0;\n this.top = 0;\n this.bottom = 0;\n this.right = 0;\n this.front = 0;\n this.back = 0;\n};\n","module.exports = InsertStack;\n\n/**\n * Our implementation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n this.stack = [];\n this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n isEmpty: function() {\n return this.popIdx === 0;\n },\n push: function (node, body) {\n var item = this.stack[this.popIdx];\n if (!item) {\n // we are trying to avoid memory pressure: create new element\n // only when absolutely necessary\n this.stack[this.popIdx] = new InsertStackElement(node, body);\n } else {\n item.node = node;\n item.body = body;\n }\n ++this.popIdx;\n },\n pop: function () {\n if (this.popIdx > 0) {\n return this.stack[--this.popIdx];\n }\n },\n reset: function () {\n this.popIdx = 0;\n }\n};\n\nfunction InsertStackElement(node, body) {\n this.node = node; // QuadTree node\n this.body = body; // physical body which needs to be inserted to node\n}\n","module.exports = function isSamePosition(point1, point2) {\n var dx = Math.abs(point1.x - point2.x);\n var dy = Math.abs(point1.y - point2.y);\n var dz = Math.abs(point1.z - point2.z);\n\n return (dx < 1e-8 && dy < 1e-8 && dz < 1e-8);\n};\n","/**\n * This is Barnes Hut simulation algorithm for 3d case. Implementation\n * is highly optimized (avoids recusion and gc pressure)\n *\n * http://www.cs.princeton.edu/courses/archive/fall03/cs126/assignments/barnes-hut.html\n *\n * NOTE: This module duplicates a lot of code from 2d case. Primary reason for\n * this is performance. Every time I tried to abstract away vector operations\n * I had negative impact on performance. So in this case I'm scarifying code\n * reuse in favor of speed\n */\n\nmodule.exports = function(options) {\n options = options || {};\n options.gravity = typeof options.gravity === 'number' ? options.gravity : -1;\n options.theta = typeof options.theta === 'number' ? options.theta : 0.8;\n\n // we require deterministic randomness here\n var random = require('ngraph.random').random(1984),\n Node = require('./node'),\n InsertStack = require('./insertStack'),\n isSamePosition = require('./isSamePosition');\n\n var gravity = options.gravity,\n updateQueue = [],\n insertStack = new InsertStack(),\n theta = options.theta,\n\n nodesCache = [],\n currentInCache = 0,\n newNode = function() {\n // To avoid pressure on GC we reuse nodes.\n var node = nodesCache[currentInCache];\n if (node) {\n node.quad0 = null;\n node.quad4 = null;\n node.quad1 = null;\n node.quad5 = null;\n node.quad2 = null;\n node.quad6 = null;\n node.quad3 = null;\n node.quad7 = null;\n node.body = null;\n node.mass = node.massX = node.massY = node.massZ = 0;\n node.left = node.right = node.top = node.bottom = node.front = node.back = 0;\n } else {\n node = new Node();\n nodesCache[currentInCache] = node;\n }\n\n ++currentInCache;\n return node;\n },\n\n root = newNode(),\n\n // Inserts body to the tree\n insert = function(newBody) {\n insertStack.reset();\n insertStack.push(root, newBody);\n\n while (!insertStack.isEmpty()) {\n var stackItem = insertStack.pop(),\n node = stackItem.node,\n body = stackItem.body;\n\n if (!node.body) {\n // This is internal node. Update the total mass of the node and center-of-mass.\n var x = body.pos.x;\n var y = body.pos.y;\n var z = body.pos.z;\n node.mass += body.mass;\n node.massX += body.mass * x;\n node.massY += body.mass * y;\n node.massZ += body.mass * z;\n\n // Recursively insert the body in the appropriate quadrant.\n // But first find the appropriate quadrant.\n var quadIdx = 0, // Assume we are in the 0's quad.\n left = node.left,\n right = (node.right + left) / 2,\n top = node.top,\n bottom = (node.bottom + top) / 2,\n back = node.back,\n front = (node.front + back) / 2;\n\n if (x > right) { // somewhere in the eastern part.\n quadIdx += 1;\n var oldLeft = left;\n left = right;\n right = right + (right - oldLeft);\n }\n if (y > bottom) { // and in south.\n quadIdx += 2;\n var oldTop = top;\n top = bottom;\n bottom = bottom + (bottom - oldTop);\n }\n if (z > front) { // and in frontal part\n quadIdx += 4;\n var oldBack = back;\n back = front;\n front = back + (back - oldBack);\n }\n\n var child = getChild(node, quadIdx);\n if (!child) {\n // The node is internal but this quadrant is not taken. Add subnode to it.\n child = newNode();\n child.left = left;\n child.top = top;\n child.right = right;\n child.bottom = bottom;\n child.back = back;\n child.front = front;\n child.body = body;\n\n setChild(node, quadIdx, child);\n } else {\n // continue searching in this quadrant.\n insertStack.push(child, body);\n }\n } else {\n // We are trying to add to the leaf node.\n // We have to convert current leaf into internal node\n // and continue adding two nodes.\n var oldBody = node.body;\n node.body = null; // internal nodes do not carry bodies\n\n if (isSamePosition(oldBody.pos, body.pos)) {\n // Prevent infinite subdivision by bumping one node\n // anywhere in this quadrant\n var retriesCount = 3;\n do {\n var offset = random.nextDouble();\n var dx = (node.right - node.left) * offset;\n var dy = (node.bottom - node.top) * offset;\n var dz = (node.front - node.back) * offset;\n\n oldBody.pos.x = node.left + dx;\n oldBody.pos.y = node.top + dy;\n oldBody.pos.z = node.back + dz;\n retriesCount -= 1;\n // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n // This is very bad, we ran out of precision.\n // if we do not return from the method we'll get into\n // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n // Next layout iteration should get larger bounding box in the first step and fix this\n return;\n }\n }\n // Next iteration should subdivide node further.\n insertStack.push(node, oldBody);\n insertStack.push(node, body);\n }\n }\n },\n\n update = function(sourceBody) {\n var queue = updateQueue,\n v,\n dx, dy, dz,\n r, fx = 0,\n fy = 0,\n fz = 0,\n queueLength = 1,\n shiftIdx = 0,\n pushIdx = 1;\n\n queue[0] = root;\n\n while (queueLength) {\n var node = queue[shiftIdx],\n body = node.body;\n\n queueLength -= 1;\n shiftIdx += 1;\n var differentBody = (body !== sourceBody);\n if (body && differentBody) {\n // If the current node is a leaf node (and it is not source body),\n // calculate the force exerted by the current node on body, and add this\n // amount to body's net force.\n dx = body.pos.x - sourceBody.pos.x;\n dy = body.pos.y - sourceBody.pos.y;\n dz = body.pos.z - sourceBody.pos.z;\n r = Math.sqrt(dx * dx + dy * dy + dz * dz);\n\n if (r === 0) {\n // Poor man's protection against zero distance.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n dz = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // This is standard gravitation force calculation but we divide\n // by r^3 to save two operations when normalizing force vector.\n v = gravity * body.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n fz += v * dz;\n } else if (differentBody) {\n // Otherwise, calculate the ratio s / r, where s is the width of the region\n // represented by the internal node, and r is the distance between the body\n // and the node's center-of-mass\n dx = node.massX / node.mass - sourceBody.pos.x;\n dy = node.massY / node.mass - sourceBody.pos.y;\n dz = node.massZ / node.mass - sourceBody.pos.z;\n\n r = Math.sqrt(dx * dx + dy * dy + dz * dz);\n\n if (r === 0) {\n // Sorry about code duplication. I don't want to create many functions\n // right away. Just want to see performance first.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n dz = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // If s / r < θ, treat this internal node as a single body, and calculate the\n // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n if ((node.right - node.left) / r < theta) {\n // in the if statement above we consider node's width only\n // because the region was squarified during tree creation.\n // Thus there is no difference between using width or height.\n v = gravity * node.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n fz += v * dz;\n } else {\n // Otherwise, run the procedure recursively on each of the current node's children.\n\n // I intentionally unfolded this loop, to save several CPU cycles.\n if (node.quad0) {\n queue[pushIdx] = node.quad0;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad1) {\n queue[pushIdx] = node.quad1;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad2) {\n queue[pushIdx] = node.quad2;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad3) {\n queue[pushIdx] = node.quad3;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad4) {\n queue[pushIdx] = node.quad4;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad5) {\n queue[pushIdx] = node.quad5;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad6) {\n queue[pushIdx] = node.quad6;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad7) {\n queue[pushIdx] = node.quad7;\n queueLength += 1;\n pushIdx += 1;\n }\n }\n }\n }\n\n sourceBody.force.x += fx;\n sourceBody.force.y += fy;\n sourceBody.force.z += fz;\n },\n\n insertBodies = function(bodies) {\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n z1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE,\n z2 = Number.MIN_VALUE,\n i,\n max = bodies.length;\n\n // To reduce quad tree depth we are looking for exact bounding box of all particles.\n i = max;\n while (i--) {\n var pos = bodies[i].pos;\n var x = pos.x;\n var y = pos.y;\n var z = pos.z;\n if (x < x1) {\n x1 = x;\n }\n if (x > x2) {\n x2 = x;\n }\n if (y < y1) {\n y1 = y;\n }\n if (y > y2) {\n y2 = y;\n }\n if (z < z1) {\n z1 = z;\n }\n if (z > z2) {\n z2 = z;\n }\n }\n\n // Squarify the bounds.\n var maxSide = Math.max(x2 - x1, Math.max(y2 - y1, z2 - z1));\n\n x2 = x1 + maxSide;\n y2 = y1 + maxSide;\n z2 = z1 + maxSide;\n\n currentInCache = 0;\n root = newNode();\n root.left = x1;\n root.right = x2;\n root.top = y1;\n root.bottom = y2;\n root.back = z1;\n root.front = z2;\n\n i = max - 1;\n if (i > 0) {\n root.body = bodies[i];\n }\n while (i--) {\n insert(bodies[i], root);\n }\n };\n\n return {\n insertBodies: insertBodies,\n updateBodyForce: update,\n options: function(newOptions) {\n if (newOptions) {\n if (typeof newOptions.gravity === 'number') {\n gravity = newOptions.gravity;\n }\n if (typeof newOptions.theta === 'number') {\n theta = newOptions.theta;\n }\n\n return this;\n }\n\n return {\n gravity: gravity,\n theta: theta\n };\n }\n };\n};\n\nfunction getChild(node, idx) {\n if (idx === 0) return node.quad0;\n if (idx === 1) return node.quad1;\n if (idx === 2) return node.quad2;\n if (idx === 3) return node.quad3;\n if (idx === 4) return node.quad4;\n if (idx === 5) return node.quad5;\n if (idx === 6) return node.quad6;\n if (idx === 7) return node.quad7;\n return null;\n}\n\nfunction setChild(node, idx, child) {\n if (idx === 0) node.quad0 = child;\n else if (idx === 1) node.quad1 = child;\n else if (idx === 2) node.quad2 = child;\n else if (idx === 3) node.quad3 = child;\n else if (idx === 4) node.quad4 = child;\n else if (idx === 5) node.quad5 = child;\n else if (idx === 6) node.quad6 = child;\n else if (idx === 7) node.quad7 = child;\n}\n","module.exports = function (bodies, settings) {\n var random = require('ngraph.random').random(42);\n var boundingBox = { x1: 0, y1: 0, z1: 0, x2: 0, y2: 0, z2: 0 };\n\n return {\n box: boundingBox,\n\n update: updateBoundingBox,\n\n reset : function () {\n boundingBox.x1 = boundingBox.y1 = 0;\n boundingBox.x2 = boundingBox.y2 = 0;\n boundingBox.z1 = boundingBox.z2 = 0;\n },\n\n getBestNewPosition: function (neighbors) {\n var graphRect = boundingBox;\n\n var baseX = 0, baseY = 0, baseZ = 0;\n\n if (neighbors.length) {\n for (var i = 0; i < neighbors.length; ++i) {\n baseX += neighbors[i].pos.x;\n baseY += neighbors[i].pos.y;\n baseZ += neighbors[i].pos.z;\n }\n\n baseX /= neighbors.length;\n baseY /= neighbors.length;\n baseZ /= neighbors.length;\n } else {\n baseX = (graphRect.x1 + graphRect.x2) / 2;\n baseY = (graphRect.y1 + graphRect.y2) / 2;\n baseZ = (graphRect.z1 + graphRect.z2) / 2;\n }\n\n var springLength = settings.springLength;\n return {\n x: baseX + random.next(springLength) - springLength / 2,\n y: baseY + random.next(springLength) - springLength / 2,\n z: baseZ + random.next(springLength) - springLength / 2\n };\n }\n };\n\n function updateBoundingBox() {\n var i = bodies.length;\n if (i === 0) { return; } // don't have to wory here.\n\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n z1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE,\n z2 = Number.MIN_VALUE;\n\n while(i--) {\n // this is O(n), could it be done faster with quadtree?\n // how about pinned nodes?\n var body = bodies[i];\n if (body.isPinned) {\n body.pos.x = body.prevPos.x;\n body.pos.y = body.prevPos.y;\n body.pos.z = body.prevPos.z;\n } else {\n body.prevPos.x = body.pos.x;\n body.prevPos.y = body.pos.y;\n body.prevPos.z = body.pos.z;\n }\n if (body.pos.x < x1) {\n x1 = body.pos.x;\n }\n if (body.pos.x > x2) {\n x2 = body.pos.x;\n }\n if (body.pos.y < y1) {\n y1 = body.pos.y;\n }\n if (body.pos.y > y2) {\n y2 = body.pos.y;\n }\n if (body.pos.z < z1) {\n z1 = body.pos.z;\n }\n if (body.pos.z > z2) {\n z2 = body.pos.z;\n }\n }\n\n boundingBox.x1 = x1;\n boundingBox.x2 = x2;\n boundingBox.y1 = y1;\n boundingBox.y2 = y2;\n boundingBox.z1 = z1;\n boundingBox.z2 = z2;\n }\n};\n","/**\n * Represents 3d drag force, which reduces force value on each step by given\n * coefficient.\n *\n * @param {Object} options for the drag force\n * @param {Number=} options.dragCoeff drag force coefficient. 0.1 by default\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge'),\n expose = require('ngraph.expose');\n\n options = merge(options, {\n dragCoeff: 0.02\n });\n\n var api = {\n update : function (body) {\n body.force.x -= options.dragCoeff * body.velocity.x;\n body.force.y -= options.dragCoeff * body.velocity.y;\n body.force.z -= options.dragCoeff * body.velocity.z;\n }\n };\n\n // let easy access to dragCoeff:\n expose(options, api, ['dragCoeff']);\n\n return api;\n};\n","/**\n * Represents 3d spring force, which updates forces acting on two bodies, conntected\n * by a spring.\n *\n * @param {Object} options for the spring force\n * @param {Number=} options.springCoeff spring force coefficient.\n * @param {Number=} options.springLength desired length of a spring at rest.\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge');\n var random = require('ngraph.random').random(42);\n var expose = require('ngraph.expose');\n\n options = merge(options, {\n springCoeff: 0.0002,\n springLength: 80\n });\n\n var api = {\n /**\n * Upsates forces acting on a spring\n */\n update : function (spring) {\n var body1 = spring.from,\n body2 = spring.to,\n length = spring.length < 0 ? options.springLength : spring.length,\n dx = body2.pos.x - body1.pos.x,\n dy = body2.pos.y - body1.pos.y,\n dz = body2.pos.z - body1.pos.z,\n r = Math.sqrt(dx * dx + dy * dy + dz * dz);\n\n if (r === 0) {\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n dz = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n var d = r - length;\n var coeff = ((!spring.coeff || spring.coeff < 0) ? options.springCoeff : spring.coeff) * d / r * spring.weight;\n\n body1.force.x += coeff * dx;\n body1.force.y += coeff * dy;\n body1.force.z += coeff * dz;\n\n body2.force.x -= coeff * dx;\n body2.force.y -= coeff * dy;\n body2.force.z -= coeff * dz;\n }\n };\n\n expose(options, api, ['springCoeff', 'springLength']);\n return api;\n}\n","var physics = require('ngraph.physics.primitives');\n\nmodule.exports = function(pos) {\n return new physics.Body3d(pos);\n}\n","module.exports = integrate;\n\nfunction integrate(bodies, timeStep) {\n var tx = 0, ty = 0, tz = 0,\n i, max = bodies.length;\n\n for (i = 0; i < max; ++i) {\n var body = bodies[i],\n coeff = timeStep * timeStep / body.mass;\n\n body.pos.x = 2 * body.pos.x - body.prevPos.x + body.force.x * coeff;\n body.pos.y = 2 * body.pos.y - body.prevPos.y + body.force.y * coeff;\n body.pos.z = 2 * body.pos.z - body.prevPos.z + body.force.z * coeff;\n\n tx += Math.abs(body.pos.x - body.prevPos.x)\n ty += Math.abs(body.pos.y - body.prevPos.y)\n tz += Math.abs(body.pos.z - body.prevPos.z)\n }\n\n return (tx * tx + ty * ty + tz * tz)/bodies.length;\n}\n","/**\n * Performs 3d forces integration, using given timestep. Uses Euler method to solve\n * differential equation (http://en.wikipedia.org/wiki/Euler_method ).\n *\n * @returns {Number} squared distance of total position updates.\n */\n\nmodule.exports = integrate;\n\nfunction integrate(bodies, timeStep) {\n var dx = 0, tx = 0,\n dy = 0, ty = 0,\n dz = 0, tz = 0,\n i,\n max = bodies.length;\n\n for (i = 0; i < max; ++i) {\n var body = bodies[i],\n coeff = timeStep / body.mass;\n\n body.velocity.x += coeff * body.force.x;\n body.velocity.y += coeff * body.force.y;\n body.velocity.z += coeff * body.force.z;\n\n var vx = body.velocity.x,\n vy = body.velocity.y,\n vz = body.velocity.z,\n v = Math.sqrt(vx * vx + vy * vy + vz * vz);\n\n if (v > 1) {\n body.velocity.x = vx / v;\n body.velocity.y = vy / v;\n body.velocity.z = vz / v;\n }\n\n dx = timeStep * body.velocity.x;\n dy = timeStep * body.velocity.y;\n dz = timeStep * body.velocity.z;\n\n body.pos.x += dx;\n body.pos.y += dy;\n body.pos.z += dz;\n\n tx += Math.abs(dx); ty += Math.abs(dy); tz += Math.abs(dz);\n }\n\n return (tx * tx + ty * ty + tz * tz)/bodies.length;\n}\n","/**\n * This module provides all required forces to regular ngraph.physics.simulator\n * to make it 3D simulator. Ideally ngraph.physics.simulator should operate\n * with vectors, but on practices that showed performance decrease... Maybe\n * I was doing it wrong, will see if I can refactor/throw away this module.\n */\nmodule.exports = createLayout;\ncreateLayout.get2dLayout = require('ngraph.forcelayout');\n\nfunction createLayout(graph, physicsSettings) {\n var merge = require('ngraph.merge');\n physicsSettings = merge(physicsSettings, {\n createQuadTree: require('ngraph.quadtreebh3d'),\n createBounds: require('./lib/bounds'),\n createDragForce: require('./lib/dragForce'),\n createSpringForce: require('./lib/springForce'),\n integrator: getIntegrator(physicsSettings),\n createBody: require('./lib/createBody')\n });\n\n return createLayout.get2dLayout(graph, physicsSettings);\n}\n\nfunction getIntegrator(physicsSettings) {\n if (physicsSettings && physicsSettings.integrator === 'verlet') {\n return require('./lib/verletIntegrator.js');\n }\n\n return require('./lib/eulerIntegrator')\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","import debounce from 'debounce';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar Prop = function Prop(name, _ref) {\n var _ref$default = _ref[\"default\"],\n defaultVal = _ref$default === void 0 ? null : _ref$default,\n _ref$triggerUpdate = _ref.triggerUpdate,\n triggerUpdate = _ref$triggerUpdate === void 0 ? true : _ref$triggerUpdate,\n _ref$onChange = _ref.onChange,\n onChange = _ref$onChange === void 0 ? function (newVal, state) {} : _ref$onChange;\n\n _classCallCheck(this, Prop);\n\n this.name = name;\n this.defaultVal = defaultVal;\n this.triggerUpdate = triggerUpdate;\n this.onChange = onChange;\n};\n\nfunction index (_ref2) {\n var _ref2$stateInit = _ref2.stateInit,\n stateInit = _ref2$stateInit === void 0 ? function () {\n return {};\n } : _ref2$stateInit,\n _ref2$props = _ref2.props,\n rawProps = _ref2$props === void 0 ? {} : _ref2$props,\n _ref2$methods = _ref2.methods,\n methods = _ref2$methods === void 0 ? {} : _ref2$methods,\n _ref2$aliases = _ref2.aliases,\n aliases = _ref2$aliases === void 0 ? {} : _ref2$aliases,\n _ref2$init = _ref2.init,\n initFn = _ref2$init === void 0 ? function () {} : _ref2$init,\n _ref2$update = _ref2.update,\n updateFn = _ref2$update === void 0 ? function () {} : _ref2$update;\n // Parse props into Prop instances\n var props = Object.keys(rawProps).map(function (propName) {\n return new Prop(propName, rawProps[propName]);\n });\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Holds component state\n var state = Object.assign({}, stateInit instanceof Function ? stateInit(options) : stateInit, // Support plain objects for backwards compatibility\n {\n initialised: false\n }); // keeps track of which props triggered an update\n\n var changedProps = {}; // Component constructor\n\n function comp(nodeElement) {\n initStatic(nodeElement, options);\n digest();\n return comp;\n }\n\n var initStatic = function initStatic(nodeElement, options) {\n initFn.call(comp, nodeElement, state, options);\n state.initialised = true;\n };\n\n var digest = debounce(function () {\n if (!state.initialised) {\n return;\n }\n\n updateFn.call(comp, state, changedProps);\n changedProps = {};\n }, 1); // Getter/setter methods\n\n props.forEach(function (prop) {\n comp[prop.name] = getSetProp(prop);\n\n function getSetProp(_ref3) {\n var prop = _ref3.name,\n _ref3$triggerUpdate = _ref3.triggerUpdate,\n redigest = _ref3$triggerUpdate === void 0 ? false : _ref3$triggerUpdate,\n _ref3$onChange = _ref3.onChange,\n onChange = _ref3$onChange === void 0 ? function (newVal, state) {} : _ref3$onChange,\n _ref3$defaultVal = _ref3.defaultVal,\n defaultVal = _ref3$defaultVal === void 0 ? null : _ref3$defaultVal;\n return function (_) {\n var curVal = state[prop];\n\n if (!arguments.length) {\n return curVal;\n } // Getter mode\n\n\n var val = _ === undefined ? defaultVal : _; // pick default if value passed is undefined\n\n state[prop] = val;\n onChange.call(comp, val, state, curVal); // track changed props\n\n !changedProps.hasOwnProperty(prop) && (changedProps[prop] = curVal);\n\n if (redigest) {\n digest();\n }\n\n return comp;\n };\n }\n }); // Other methods\n\n Object.keys(methods).forEach(function (methodName) {\n comp[methodName] = function () {\n var _methods$methodName;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_methods$methodName = methods[methodName]).call.apply(_methods$methodName, [comp, state].concat(args));\n };\n }); // Link aliases\n\n Object.entries(aliases).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n alias = _ref5[0],\n target = _ref5[1];\n\n return comp[alias] = comp[target];\n }); // Reset all component props to their default value\n\n comp.resetProps = function () {\n props.forEach(function (prop) {\n comp[prop.name](prop.defaultVal);\n });\n return comp;\n }; //\n\n\n comp.resetProps(); // Apply all prop defaults\n\n state._rerender = digest; // Expose digest method\n\n return comp;\n };\n}\n\nexport default index;\n","var index = (function (p) {\n return p instanceof Function ? p // fn\n : typeof p === 'string' ? function (obj) {\n return obj[p];\n } // property name\n : function (obj) {\n return p;\n };\n}); // constant\n\nexport default index;\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar index = (function () {\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var keyAccessors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var multiItem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var flattenKeys = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var keys = (keyAccessors instanceof Array ? keyAccessors.length ? keyAccessors : [undefined] : [keyAccessors]).map(function (key) {\n return {\n keyAccessor: key,\n isProp: !(key instanceof Function)\n };\n });\n var indexedResult = list.reduce(function (res, item) {\n var iterObj = res;\n var itemVal = item;\n keys.forEach(function (_ref, idx) {\n var keyAccessor = _ref.keyAccessor,\n isProp = _ref.isProp;\n var key;\n\n if (isProp) {\n var _itemVal = itemVal,\n propVal = _itemVal[keyAccessor],\n rest = _objectWithoutProperties(_itemVal, [keyAccessor].map(_toPropertyKey));\n\n key = propVal;\n itemVal = rest;\n } else {\n key = keyAccessor(itemVal, idx);\n }\n\n if (idx + 1 < keys.length) {\n if (!iterObj.hasOwnProperty(key)) {\n iterObj[key] = {};\n }\n\n iterObj = iterObj[key];\n } else {\n // Leaf key\n if (multiItem) {\n if (!iterObj.hasOwnProperty(key)) {\n iterObj[key] = [];\n }\n\n iterObj[key].push(itemVal);\n } else {\n iterObj[key] = itemVal;\n }\n }\n });\n return res;\n }, {});\n\n if (multiItem instanceof Function) {\n // Reduce leaf multiple values\n (function reduce(node) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n if (level === keys.length) {\n Object.keys(node).forEach(function (k) {\n return node[k] = multiItem(node[k]);\n });\n } else {\n Object.values(node).forEach(function (child) {\n return reduce(child, level + 1);\n });\n }\n })(indexedResult); // IIFE\n\n }\n\n var result = indexedResult;\n\n if (flattenKeys) {\n // flatten into array\n result = [];\n\n (function flatten(node) {\n var accKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (accKeys.length === keys.length) {\n result.push({\n keys: accKeys,\n vals: node\n });\n } else {\n Object.entries(node).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n val = _ref3[1];\n\n return flatten(val, [].concat(_toConsumableArray(accKeys), [key]));\n });\n }\n })(indexedResult); //IIFE\n\n\n if (keyAccessors instanceof Array && keyAccessors.length === 0 && result.length === 1) {\n // clear keys if there's no key accessors (single result)\n result[0].keys = [];\n }\n }\n\n return result;\n});\n\nexport default index;\n","import indexBy from 'index-array-by';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nfunction diffArrays(prev, next, idAccessor) {\n var result = {\n enter: [],\n update: [],\n exit: []\n };\n\n if (!idAccessor) {\n // use object references for comparison\n var prevSet = new Set(prev);\n var nextSet = new Set(next);\n new Set([].concat(_toConsumableArray(prevSet), _toConsumableArray(nextSet))).forEach(function (item) {\n var type = !prevSet.has(item) ? 'enter' : !nextSet.has(item) ? 'exit' : 'update';\n result[type].push(type === 'update' ? [item, item] : item);\n });\n } else {\n // compare by id (duplicate keys are ignored)\n var prevById = indexBy(prev, idAccessor, false);\n var nextById = indexBy(next, idAccessor, false);\n var byId = Object.assign({}, prevById, nextById);\n Object.entries(byId).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n id = _ref2[0],\n item = _ref2[1];\n\n var type = !prevById.hasOwnProperty(id) ? 'enter' : !nextById.hasOwnProperty(id) ? 'exit' : 'update';\n result[type].push(type === 'update' ? [prevById[id], nextById[id]] : item);\n });\n }\n\n return result;\n}\n\nfunction dataBindDiff(data, existingObjs, _ref3) {\n var _ref3$objBindAttr = _ref3.objBindAttr,\n objBindAttr = _ref3$objBindAttr === void 0 ? '__obj' : _ref3$objBindAttr,\n _ref3$dataBindAttr = _ref3.dataBindAttr,\n dataBindAttr = _ref3$dataBindAttr === void 0 ? '__data' : _ref3$dataBindAttr,\n idAccessor = _ref3.idAccessor,\n _ref3$purge = _ref3.purge,\n purge = _ref3$purge === void 0 ? false : _ref3$purge;\n\n var isObjValid = function isObjValid(obj) {\n return obj.hasOwnProperty(dataBindAttr);\n };\n\n var removeObjs = existingObjs.filter(function (obj) {\n return !isObjValid(obj);\n });\n var prevD = existingObjs.filter(isObjValid).map(function (obj) {\n return obj[dataBindAttr];\n });\n var nextD = data;\n var diff = purge ? {\n enter: nextD,\n exit: prevD,\n update: []\n } // don't diff data in purge mode\n : diffArrays(prevD, nextD, idAccessor);\n diff.update = diff.update.map(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n prevD = _ref5[0],\n nextD = _ref5[1];\n\n if (prevD !== nextD) {\n // transfer obj to new data point (if different)\n nextD[objBindAttr] = prevD[objBindAttr];\n nextD[objBindAttr][dataBindAttr] = nextD;\n }\n\n return nextD;\n });\n diff.exit = diff.exit.concat(removeObjs.map(function (obj) {\n return _defineProperty({}, objBindAttr, obj);\n }));\n return diff;\n}\n\nfunction viewDigest(data, existingObjs, // list\nappendObj, // item => {...} function\nremoveObj, // item => {...} function\n_ref7) {\n var _ref7$createObj = _ref7.createObj,\n createObj = _ref7$createObj === void 0 ? function (d) {\n return {};\n } : _ref7$createObj,\n _ref7$updateObj = _ref7.updateObj,\n updateObj = _ref7$updateObj === void 0 ? function (obj, d) {} : _ref7$updateObj,\n _ref7$exitObj = _ref7.exitObj,\n exitObj = _ref7$exitObj === void 0 ? function (obj) {} : _ref7$exitObj,\n _ref7$objBindAttr = _ref7.objBindAttr,\n objBindAttr = _ref7$objBindAttr === void 0 ? '__obj' : _ref7$objBindAttr,\n _ref7$dataBindAttr = _ref7.dataBindAttr,\n dataBindAttr = _ref7$dataBindAttr === void 0 ? '__data' : _ref7$dataBindAttr,\n dataDiffOptions = _objectWithoutProperties(_ref7, [\"createObj\", \"updateObj\", \"exitObj\", \"objBindAttr\", \"dataBindAttr\"]);\n\n var _dataBindDiff = dataBindDiff(data, existingObjs, _objectSpread2({\n objBindAttr: objBindAttr,\n dataBindAttr: dataBindAttr\n }, dataDiffOptions)),\n enter = _dataBindDiff.enter,\n update = _dataBindDiff.update,\n exit = _dataBindDiff.exit; // Remove exiting points\n\n\n exit.forEach(function (d) {\n var obj = d[objBindAttr];\n delete d[objBindAttr]; // unbind obj\n\n exitObj(obj);\n removeObj(obj);\n });\n var newObjs = createObjs(enter);\n var pointsData = [].concat(_toConsumableArray(enter), _toConsumableArray(update));\n updateObjs(pointsData); // Add new points\n\n newObjs.forEach(appendObj); //\n\n function createObjs(data) {\n var newObjs = [];\n data.forEach(function (d) {\n var obj = createObj(d);\n\n if (obj) {\n obj[dataBindAttr] = d;\n d[objBindAttr] = obj;\n newObjs.push(obj);\n }\n });\n return newObjs;\n }\n\n function updateObjs(data) {\n data.forEach(function (d) {\n var obj = d[objBindAttr];\n\n if (obj) {\n obj[dataBindAttr] = d;\n updateObj(obj, d);\n }\n });\n }\n}\n\nexport default viewDigest;\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","// TinyColor v1.4.1\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n","import { Group, Mesh, MeshLambertMaterial, Color, BufferGeometry, BufferAttribute, Matrix4, Vector3, SphereBufferGeometry, CylinderBufferGeometry, TubeBufferGeometry, ConeBufferGeometry, Line, LineBasicMaterial, QuadraticBezierCurve3, CubicBezierCurve3, Box3 } from 'three';\nimport { forceSimulation, forceLink, forceManyBody, forceCenter, forceRadial } from 'd3-force-3d';\nimport graph from 'ngraph.graph';\nimport forcelayout from 'ngraph.forcelayout';\nimport forcelayout3d from 'ngraph.forcelayout3d';\nimport Kapsule from 'kapsule';\nimport accessorFn from 'accessor-fn';\nimport { min, max } from 'd3-array';\nimport dataJoint from 'data-joint';\nimport { scaleOrdinal } from 'd3-scale';\nimport { schemePaired } from 'd3-scale-chromatic';\nimport tinyColor from 'tinycolor2';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar materialDispose = function materialDispose(material) {\n if (material instanceof Array) {\n material.forEach(materialDispose);\n } else {\n if (material.map) {\n material.map.dispose();\n }\n\n material.dispose();\n }\n};\n\nvar deallocate = function deallocate(obj) {\n if (obj.geometry) {\n obj.geometry.dispose();\n }\n\n if (obj.material) {\n materialDispose(obj.material);\n }\n\n if (obj.texture) {\n obj.texture.dispose();\n }\n\n if (obj.children) {\n obj.children.forEach(deallocate);\n }\n};\n\nvar emptyObject = function emptyObject(obj) {\n while (obj.children.length) {\n var childObj = obj.children[0];\n obj.remove(childObj);\n deallocate(childObj);\n }\n};\n\nfunction threeDigest(data, scene) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var _ref$objFilter = _ref.objFilter,\n objFilter = _ref$objFilter === void 0 ? function () {\n return true;\n } : _ref$objFilter,\n options = _objectWithoutProperties(_ref, [\"objFilter\"]);\n\n return dataJoint(data, scene.children.filter(objFilter), function (obj) {\n return scene.add(obj);\n }, function (obj) {\n scene.remove(obj);\n emptyObject(obj);\n }, _objectSpread2({\n objBindAttr: '__threeObj'\n }, options));\n}\n\nvar colorStr2Hex = function colorStr2Hex(str) {\n return isNaN(str) ? parseInt(tinyColor(str).toHex(), 16) : str;\n};\n\nvar colorAlpha = function colorAlpha(str) {\n return isNaN(str) ? tinyColor(str).getAlpha() : 1;\n};\n\nvar autoColorScale = scaleOrdinal(schemePaired); // Autoset attribute colorField by colorByAccessor property\n// If an object has already a color, don't set it\n// Objects can be nodes or links\n\nfunction autoColorObjects(objects, colorByAccessor, colorField) {\n if (!colorByAccessor || typeof colorField !== 'string') return;\n objects.filter(function (obj) {\n return !obj[colorField];\n }).forEach(function (obj) {\n obj[colorField] = autoColorScale(colorByAccessor(obj));\n });\n}\n\nfunction getDagDepths (_ref, idAccessor) {\n var nodes = _ref.nodes,\n links = _ref.links;\n\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$nodeFilter = _ref2.nodeFilter,\n nodeFilter = _ref2$nodeFilter === void 0 ? function () {\n return true;\n } : _ref2$nodeFilter,\n _ref2$onLoopError = _ref2.onLoopError,\n onLoopError = _ref2$onLoopError === void 0 ? function (loopIds) {\n throw \"Invalid DAG structure! Found cycle in node path: \".concat(loopIds.join(' -> '), \".\");\n } : _ref2$onLoopError;\n\n // linked graph\n var graph = {};\n nodes.forEach(function (node) {\n return graph[idAccessor(node)] = {\n data: node,\n out: [],\n depth: -1,\n skip: !nodeFilter(node)\n };\n });\n links.forEach(function (_ref3) {\n var source = _ref3.source,\n target = _ref3.target;\n var sourceId = getNodeId(source);\n var targetId = getNodeId(target);\n if (!graph.hasOwnProperty(sourceId)) throw \"Missing source node with id: \".concat(sourceId);\n if (!graph.hasOwnProperty(targetId)) throw \"Missing target node with id: \".concat(targetId);\n var sourceNode = graph[sourceId];\n var targetNode = graph[targetId];\n sourceNode.out.push(targetNode);\n\n function getNodeId(node) {\n return _typeof(node) === 'object' ? idAccessor(node) : node;\n }\n });\n var foundLoops = [];\n traverse(Object.values(graph));\n var nodeDepths = Object.assign.apply(Object, [{}].concat(_toConsumableArray(Object.entries(graph).filter(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n node = _ref5[1];\n\n return !node.skip;\n }).map(function (_ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n id = _ref7[0],\n node = _ref7[1];\n\n return _defineProperty({}, id, node.depth);\n }))));\n return nodeDepths;\n\n function traverse(nodes) {\n var nodeStack = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var currentDepth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n\n if (nodeStack.indexOf(node) !== -1) {\n var _ret = function () {\n var loop = [].concat(_toConsumableArray(nodeStack.slice(nodeStack.indexOf(node))), [node]).map(function (d) {\n return idAccessor(d.data);\n });\n\n if (!foundLoops.some(function (foundLoop) {\n return foundLoop.length === loop.length && foundLoop.every(function (id, idx) {\n return id === loop[idx];\n });\n })) {\n foundLoops.push(loop);\n onLoopError(loop);\n }\n\n return \"continue\";\n }();\n\n if (_ret === \"continue\") continue;\n }\n\n if (currentDepth > node.depth) {\n // Don't unnecessarily revisit chunks of the graph\n node.depth = currentDepth;\n traverse(node.out, [].concat(_toConsumableArray(nodeStack), [node]), currentDepth + (node.skip ? 0 : 1));\n }\n }\n }\n}\n\nvar three = window.THREE ? window.THREE // Prefer consumption from global THREE, if exists\n: {\n Group: Group,\n Mesh: Mesh,\n MeshLambertMaterial: MeshLambertMaterial,\n Color: Color,\n BufferGeometry: BufferGeometry,\n BufferAttribute: BufferAttribute,\n Matrix4: Matrix4,\n Vector3: Vector3,\n SphereBufferGeometry: SphereBufferGeometry,\n CylinderBufferGeometry: CylinderBufferGeometry,\n TubeBufferGeometry: TubeBufferGeometry,\n ConeBufferGeometry: ConeBufferGeometry,\n Line: Line,\n LineBasicMaterial: LineBasicMaterial,\n QuadraticBezierCurve3: QuadraticBezierCurve3,\n CubicBezierCurve3: CubicBezierCurve3,\n Box3: Box3\n};\nvar ngraph = {\n graph: graph,\n forcelayout: forcelayout,\n forcelayout3d: forcelayout3d\n};\n\nvar DAG_LEVEL_NODE_RATIO = 2; // support multiple method names for backwards threejs compatibility\n\nvar setAttributeFn = new three.BufferGeometry().setAttribute ? 'setAttribute' : 'addAttribute';\nvar applyMatrix4Fn = new three.BufferGeometry().applyMatrix4 ? 'applyMatrix4' : 'applyMatrix';\nvar ForceGraph = Kapsule({\n props: {\n jsonUrl: {\n onChange: function onChange(jsonUrl, state) {\n var _this = this;\n\n if (jsonUrl && !state.fetchingJson) {\n // Load data asynchronously\n state.fetchingJson = true;\n state.onLoading();\n fetch(jsonUrl).then(function (r) {\n return r.json();\n }).then(function (json) {\n state.fetchingJson = false;\n state.onFinishLoading(json);\n\n _this.graphData(json);\n });\n }\n },\n triggerUpdate: false\n },\n graphData: {\n \"default\": {\n nodes: [],\n links: []\n },\n onChange: function onChange(graphData, state) {\n if (graphData.nodes.length || graphData.links.length) {\n console.info('force-graph loading', graphData.nodes.length + ' nodes', graphData.links.length + ' links');\n }\n\n state.engineRunning = false; // Pause simulation immediately\n }\n },\n numDimensions: {\n \"default\": 3,\n onChange: function onChange(numDim, state) {\n var chargeForce = state.d3ForceLayout.force('charge'); // Increase repulsion on 3D mode for improved spatial separation\n\n if (chargeForce) {\n chargeForce.strength(numDim > 2 ? -60 : -30);\n }\n\n if (numDim < 3) {\n eraseDimension(state.graphData.nodes, 'z');\n }\n\n if (numDim < 2) {\n eraseDimension(state.graphData.nodes, 'y');\n }\n\n function eraseDimension(nodes, dim) {\n nodes.forEach(function (d) {\n delete d[dim]; // position\n\n delete d[\"v\".concat(dim)]; // velocity\n });\n }\n }\n },\n dagMode: {\n onChange: function onChange(dagMode, state) {\n // td, bu, lr, rl, zin, zout, radialin, radialout\n !dagMode && state.forceEngine === 'd3' && (state.graphData.nodes || []).forEach(function (n) {\n return n.fx = n.fy = n.fz = undefined;\n }); // unfix nodes when disabling dag mode\n }\n },\n dagLevelDistance: {},\n dagNodeFilter: {\n \"default\": function _default(node) {\n return true;\n }\n },\n onDagError: {\n triggerUpdate: false\n },\n nodeRelSize: {\n \"default\": 4\n },\n // volume per val unit\n nodeId: {\n \"default\": 'id'\n },\n nodeVal: {\n \"default\": 'val'\n },\n nodeResolution: {\n \"default\": 8\n },\n // how many slice segments in the sphere's circumference\n nodeColor: {\n \"default\": 'color'\n },\n nodeAutoColorBy: {},\n nodeOpacity: {\n \"default\": 0.75\n },\n nodeVisibility: {\n \"default\": true\n },\n nodeThreeObject: {},\n nodeThreeObjectExtend: {\n \"default\": false\n },\n linkSource: {\n \"default\": 'source'\n },\n linkTarget: {\n \"default\": 'target'\n },\n linkVisibility: {\n \"default\": true\n },\n linkColor: {\n \"default\": 'color'\n },\n linkAutoColorBy: {},\n linkOpacity: {\n \"default\": 0.2\n },\n linkWidth: {},\n // Rounded to nearest decimal. For falsy values use dimensionless line with 1px regardless of distance.\n linkResolution: {\n \"default\": 6\n },\n // how many radial segments in each line tube's geometry\n linkCurvature: {\n \"default\": 0,\n triggerUpdate: false\n },\n // line curvature radius (0: straight, 1: semi-circle)\n linkCurveRotation: {\n \"default\": 0,\n triggerUpdate: false\n },\n // line curve rotation along the line axis (0: interection with XY plane, PI: upside down)\n linkMaterial: {},\n linkThreeObject: {},\n linkThreeObjectExtend: {\n \"default\": false\n },\n linkPositionUpdate: {\n triggerUpdate: false\n },\n // custom function to call for updating the link's position. Signature: (threeObj, { start: { x, y, z}, end: { x, y, z }}, link). If the function returns a truthy value, the regular link position update will not run.\n linkDirectionalArrowLength: {\n \"default\": 0\n },\n linkDirectionalArrowColor: {},\n linkDirectionalArrowRelPos: {\n \"default\": 0.5,\n triggerUpdate: false\n },\n // value between 0<>1 indicating the relative pos along the (exposed) line\n linkDirectionalArrowResolution: {\n \"default\": 8\n },\n // how many slice segments in the arrow's conic circumference\n linkDirectionalParticles: {\n \"default\": 0\n },\n // animate photons travelling in the link direction\n linkDirectionalParticleSpeed: {\n \"default\": 0.01,\n triggerUpdate: false\n },\n // in link length ratio per frame\n linkDirectionalParticleWidth: {\n \"default\": 0.5\n },\n linkDirectionalParticleColor: {},\n linkDirectionalParticleResolution: {\n \"default\": 4\n },\n // how many slice segments in the particle sphere's circumference\n forceEngine: {\n \"default\": 'd3'\n },\n // d3 or ngraph\n d3AlphaMin: {\n \"default\": 0,\n triggerUpdate: false\n },\n d3AlphaDecay: {\n \"default\": 0.0228,\n triggerUpdate: false,\n onChange: function onChange(alphaDecay, state) {\n state.d3ForceLayout.alphaDecay(alphaDecay);\n }\n },\n d3AlphaTarget: {\n \"default\": 0,\n triggerUpdate: false,\n onChange: function onChange(alphaTarget, state) {\n state.d3ForceLayout.alphaTarget(alphaTarget);\n }\n },\n d3VelocityDecay: {\n \"default\": 0.4,\n triggerUpdate: false,\n onChange: function onChange(velocityDecay, state) {\n state.d3ForceLayout.velocityDecay(velocityDecay);\n }\n },\n ngraphPhysics: {},\n warmupTicks: {\n \"default\": 0,\n triggerUpdate: false\n },\n // how many times to tick the force engine at init before starting to render\n cooldownTicks: {\n \"default\": Infinity,\n triggerUpdate: false\n },\n cooldownTime: {\n \"default\": 15000,\n triggerUpdate: false\n },\n // ms\n onLoading: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onFinishLoading: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onUpdate: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onFinishUpdate: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onEngineTick: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onEngineStop: {\n \"default\": function _default() {},\n triggerUpdate: false\n }\n },\n methods: {\n refresh: function refresh(state) {\n state._flushObjects = true;\n\n state._rerender();\n\n return this;\n },\n // Expose d3 forces for external manipulation\n d3Force: function d3Force(state, forceName, forceFn) {\n if (forceFn === undefined) {\n return state.d3ForceLayout.force(forceName); // Force getter\n }\n\n state.d3ForceLayout.force(forceName, forceFn); // Force setter\n\n return this;\n },\n d3ReheatSimulation: function d3ReheatSimulation(state) {\n state.d3ForceLayout.alpha(1);\n this.resetCountdown();\n return this;\n },\n // reset cooldown state\n resetCountdown: function resetCountdown(state) {\n state.cntTicks = 0;\n state.startTickTime = new Date();\n state.engineRunning = true;\n return this;\n },\n tickFrame: function tickFrame(state) {\n var isD3Sim = state.forceEngine !== 'ngraph';\n\n if (state.engineRunning) {\n layoutTick();\n }\n\n updateArrows();\n updatePhotons();\n return this; //\n\n function layoutTick() {\n if (++state.cntTicks > state.cooldownTicks || new Date() - state.startTickTime > state.cooldownTime || isD3Sim && state.d3AlphaMin > 0 && state.d3ForceLayout.alpha() < state.d3AlphaMin) {\n state.engineRunning = false; // Stop ticking graph\n\n state.onEngineStop();\n } else {\n state.layout[isD3Sim ? 'tick' : 'step'](); // Tick it\n\n state.onEngineTick();\n } // Update nodes position\n\n\n state.graphData.nodes.forEach(function (node) {\n var obj = node.__threeObj;\n if (!obj) return;\n var pos = isD3Sim ? node : state.layout.getNodePosition(node[state.nodeId]);\n obj.position.x = pos.x;\n obj.position.y = pos.y || 0;\n obj.position.z = pos.z || 0;\n }); // Update links position\n\n var linkWidthAccessor = accessorFn(state.linkWidth);\n var linkCurvatureAccessor = accessorFn(state.linkCurvature);\n var linkCurveRotationAccessor = accessorFn(state.linkCurveRotation);\n var linkThreeObjectExtendAccessor = accessorFn(state.linkThreeObjectExtend);\n state.graphData.links.forEach(function (link) {\n var lineObj = link.__lineObj;\n if (!lineObj) return;\n var pos = isD3Sim ? link : state.layout.getLinkPosition(state.layout.graph.getLink(link.source, link.target).id);\n var start = pos[isD3Sim ? 'source' : 'from'];\n var end = pos[isD3Sim ? 'target' : 'to'];\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n calcLinkCurve(link); // calculate link curve for all links, including custom replaced, so it can be used in directional functionality\n\n var extendedObj = linkThreeObjectExtendAccessor(link);\n\n if (state.linkPositionUpdate && state.linkPositionUpdate(extendedObj ? lineObj.children[1] : lineObj, // pass child custom object if extending the default\n {\n start: {\n x: start.x,\n y: start.y,\n z: start.z\n },\n end: {\n x: end.x,\n y: end.y,\n z: end.z\n }\n }, link) && !extendedObj) {\n // exit if successfully custom updated position of non-extended obj\n return;\n }\n\n var curveResolution = 30; // # line segments\n\n var curve = link.__curve; // select default line obj if it's an extended group\n\n var line = lineObj.children.length ? lineObj.children[0] : lineObj;\n\n if (line.type === 'Line') {\n // Update line geometry\n if (!curve) {\n // straight line\n var linePos = line.geometry.getAttribute('position');\n\n if (!linePos || !linePos.array || linePos.array.length !== 6) {\n line.geometry[setAttributeFn]('position', linePos = new three.BufferAttribute(new Float32Array(2 * 3), 3));\n }\n\n linePos.array[0] = start.x;\n linePos.array[1] = start.y || 0;\n linePos.array[2] = start.z || 0;\n linePos.array[3] = end.x;\n linePos.array[4] = end.y || 0;\n linePos.array[5] = end.z || 0;\n linePos.needsUpdate = true;\n } else {\n // bezier curve line\n line.geometry.setFromPoints(curve.getPoints(curveResolution));\n }\n\n line.geometry.computeBoundingSphere();\n } else if (line.type === 'Mesh') {\n // Update cylinder geometry\n if (!curve) {\n // straight tube\n if (line.geometry.type !== 'CylinderBufferGeometry') {\n var linkWidth = Math.ceil(linkWidthAccessor(link) * 10) / 10;\n var r = linkWidth / 2;\n var geometry = new three.CylinderBufferGeometry(r, r, 1, state.linkResolution, 1, false);\n geometry[applyMatrix4Fn](new three.Matrix4().makeTranslation(0, 1 / 2, 0));\n geometry[applyMatrix4Fn](new three.Matrix4().makeRotationX(Math.PI / 2));\n line.geometry.dispose();\n line.geometry = geometry;\n }\n\n var vStart = new three.Vector3(start.x, start.y || 0, start.z || 0);\n var vEnd = new three.Vector3(end.x, end.y || 0, end.z || 0);\n var distance = vStart.distanceTo(vEnd);\n line.position.x = vStart.x;\n line.position.y = vStart.y;\n line.position.z = vStart.z;\n line.scale.z = distance;\n line.parent.localToWorld(vEnd); // lookAt requires world coords\n\n line.lookAt(vEnd);\n } else {\n // curved tube\n if (line.geometry.type !== 'TubeBufferGeometry') {\n // reset object positioning\n line.position.set(0, 0, 0);\n line.rotation.set(0, 0, 0);\n line.scale.set(1, 1, 1);\n }\n\n var _linkWidth = Math.ceil(linkWidthAccessor(link) * 10) / 10;\n\n var _r = _linkWidth / 2;\n\n var _geometry = new three.TubeBufferGeometry(curve, curveResolution, _r, state.linkResolution, false);\n\n line.geometry.dispose();\n line.geometry = _geometry;\n }\n }\n }); //\n\n function calcLinkCurve(link) {\n var pos = isD3Sim ? link : state.layout.getLinkPosition(state.layout.graph.getLink(link.source, link.target).id);\n var start = pos[isD3Sim ? 'source' : 'from'];\n var end = pos[isD3Sim ? 'target' : 'to'];\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n var curvature = linkCurvatureAccessor(link);\n\n if (!curvature) {\n link.__curve = null; // Straight line\n } else {\n // bezier curve line (only for line types)\n var vStart = new three.Vector3(start.x, start.y || 0, start.z || 0);\n var vEnd = new three.Vector3(end.x, end.y || 0, end.z || 0);\n var l = vStart.distanceTo(vEnd); // line length\n\n var curve;\n var curveRotation = linkCurveRotationAccessor(link);\n\n if (l > 0) {\n var dx = end.x - start.x;\n var dy = end.y - start.y || 0;\n var vLine = new three.Vector3().subVectors(vEnd, vStart);\n var cp = vLine.clone().multiplyScalar(curvature).cross(dx !== 0 || dy !== 0 ? new three.Vector3(0, 0, 1) : new three.Vector3(0, 1, 0)) // avoid cross-product of parallel vectors (prefer Z, fallback to Y)\n .applyAxisAngle(vLine.normalize(), curveRotation) // rotate along line axis according to linkCurveRotation\n .add(new three.Vector3().addVectors(vStart, vEnd).divideScalar(2));\n curve = new three.QuadraticBezierCurve3(vStart, cp, vEnd);\n } else {\n // Same point, draw a loop\n var d = curvature * 70;\n var endAngle = -curveRotation; // Rotate clockwise (from Z angle perspective)\n\n var startAngle = endAngle + Math.PI / 2;\n curve = new three.CubicBezierCurve3(vStart, new three.Vector3(d * Math.cos(startAngle), d * Math.sin(startAngle), 0).add(vStart), new three.Vector3(d * Math.cos(endAngle), d * Math.sin(endAngle), 0).add(vStart), vEnd);\n }\n\n link.__curve = curve;\n }\n }\n }\n\n function updateArrows() {\n // update link arrow position\n var arrowRelPosAccessor = accessorFn(state.linkDirectionalArrowRelPos);\n var arrowLengthAccessor = accessorFn(state.linkDirectionalArrowLength);\n var nodeValAccessor = accessorFn(state.nodeVal);\n state.graphData.links.forEach(function (link) {\n var arrowObj = link.__arrowObj;\n if (!arrowObj) return;\n var pos = isD3Sim ? link : state.layout.getLinkPosition(state.layout.graph.getLink(link.source, link.target).id);\n var start = pos[isD3Sim ? 'source' : 'from'];\n var end = pos[isD3Sim ? 'target' : 'to'];\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n var startR = Math.sqrt(Math.max(0, nodeValAccessor(start) || 1)) * state.nodeRelSize;\n var endR = Math.sqrt(Math.max(0, nodeValAccessor(end) || 1)) * state.nodeRelSize;\n var arrowLength = arrowLengthAccessor(link);\n var arrowRelPos = arrowRelPosAccessor(link);\n var getPosAlongLine = link.__curve ? function (t) {\n return link.__curve.getPoint(t);\n } // interpolate along bezier curve\n : function (t) {\n // straight line: interpolate linearly\n var iplt = function iplt(dim, start, end, t) {\n return start[dim] + (end[dim] - start[dim]) * t || 0;\n };\n\n return {\n x: iplt('x', start, end, t),\n y: iplt('y', start, end, t),\n z: iplt('z', start, end, t)\n };\n };\n var lineLen = link.__curve ? link.__curve.getLength() : Math.sqrt(['x', 'y', 'z'].map(function (dim) {\n return Math.pow((end[dim] || 0) - (start[dim] || 0), 2);\n }).reduce(function (acc, v) {\n return acc + v;\n }, 0));\n var posAlongLine = startR + arrowLength + (lineLen - startR - endR - arrowLength) * arrowRelPos;\n var arrowHead = getPosAlongLine(posAlongLine / lineLen);\n var arrowTail = getPosAlongLine((posAlongLine - arrowLength) / lineLen);\n ['x', 'y', 'z'].forEach(function (dim) {\n return arrowObj.position[dim] = arrowTail[dim];\n });\n\n var headVec = _construct(three.Vector3, _toConsumableArray(['x', 'y', 'z'].map(function (c) {\n return arrowHead[c];\n })));\n\n arrowObj.parent.localToWorld(headVec); // lookAt requires world coords\n\n arrowObj.lookAt(headVec);\n });\n }\n\n function updatePhotons() {\n // update link particle positions\n var particleSpeedAccessor = accessorFn(state.linkDirectionalParticleSpeed);\n state.graphData.links.forEach(function (link) {\n var cyclePhotons = link.__photonsObj && link.__photonsObj.children;\n var singleHopPhotons = link.__singleHopPhotonsObj && link.__singleHopPhotonsObj.children;\n if ((!singleHopPhotons || !singleHopPhotons.length) && (!cyclePhotons || !cyclePhotons.length)) return;\n var pos = isD3Sim ? link : state.layout.getLinkPosition(state.layout.graph.getLink(link.source, link.target).id);\n var start = pos[isD3Sim ? 'source' : 'from'];\n var end = pos[isD3Sim ? 'target' : 'to'];\n if (!start || !end || !start.hasOwnProperty('x') || !end.hasOwnProperty('x')) return; // skip invalid link\n\n var particleSpeed = particleSpeedAccessor(link);\n var getPhotonPos = link.__curve ? function (t) {\n return link.__curve.getPoint(t);\n } // interpolate along bezier curve\n : function (t) {\n // straight line: interpolate linearly\n var iplt = function iplt(dim, start, end, t) {\n return start[dim] + (end[dim] - start[dim]) * t || 0;\n };\n\n return {\n x: iplt('x', start, end, t),\n y: iplt('y', start, end, t),\n z: iplt('z', start, end, t)\n };\n };\n var photons = [].concat(_toConsumableArray(cyclePhotons || []), _toConsumableArray(singleHopPhotons || []));\n photons.forEach(function (photon, idx) {\n var singleHop = photon.parent.__linkThreeObjType === 'singleHopPhotons';\n\n if (!photon.hasOwnProperty('__progressRatio')) {\n photon.__progressRatio = singleHop ? 0 : idx / cyclePhotons.length;\n }\n\n photon.__progressRatio += particleSpeed;\n\n if (photon.__progressRatio >= 1) {\n if (!singleHop) {\n photon.__progressRatio = photon.__progressRatio % 1;\n } else {\n // remove particle\n photon.parent.remove(photon);\n emptyObject(photon);\n return;\n }\n }\n\n var photonPosRatio = photon.__progressRatio;\n var pos = getPhotonPos(photonPosRatio);\n ['x', 'y', 'z'].forEach(function (dim) {\n return photon.position[dim] = pos[dim];\n });\n });\n });\n }\n },\n emitParticle: function emitParticle(state, link) {\n if (link) {\n if (!link.__singleHopPhotonsObj) {\n var obj = new three.Group();\n obj.__linkThreeObjType = 'singleHopPhotons';\n link.__singleHopPhotonsObj = obj;\n state.graphScene.add(obj);\n }\n\n var particleWidthAccessor = accessorFn(state.linkDirectionalParticleWidth);\n var photonR = Math.ceil(particleWidthAccessor(link) * 10) / 10 / 2;\n var numSegments = state.linkDirectionalParticleResolution;\n var particleGeometry = new three.SphereBufferGeometry(photonR, numSegments, numSegments);\n var linkColorAccessor = accessorFn(state.linkColor);\n var particleColorAccessor = accessorFn(state.linkDirectionalParticleColor);\n var photonColor = particleColorAccessor(link) || linkColorAccessor(link) || '#f0f0f0';\n var materialColor = new three.Color(colorStr2Hex(photonColor));\n var opacity = state.linkOpacity * 3;\n var particleMaterial = new three.MeshLambertMaterial({\n color: materialColor,\n transparent: true,\n opacity: opacity\n }); // add a single hop particle\n\n link.__singleHopPhotonsObj.add(new three.Mesh(particleGeometry, particleMaterial));\n }\n\n return this;\n },\n getGraphBbox: function getGraphBbox(state) {\n var nodeFilter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n if (!state.initialised) return null; // recursively collect all nested geometries bboxes\n\n var bboxes = function getBboxes(obj) {\n var bboxes = [];\n\n if (obj.geometry) {\n obj.geometry.computeBoundingBox();\n var box = new three.Box3();\n box.copy(obj.geometry.boundingBox).applyMatrix4(obj.matrixWorld);\n bboxes.push(box);\n }\n\n return bboxes.concat.apply(bboxes, _toConsumableArray((obj.children || []).filter(function (obj) {\n return !obj.hasOwnProperty('__graphObjType') || obj.__graphObjType === 'node' && nodeFilter(obj.__data);\n } // exclude filtered out nodes\n ).map(getBboxes)));\n }(state.graphScene);\n\n if (!bboxes.length) return null; // extract global x,y,z min/max\n\n return Object.assign.apply(Object, _toConsumableArray(['x', 'y', 'z'].map(function (c) {\n return _defineProperty({}, c, [min(bboxes, function (bb) {\n return bb.min[c];\n }), max(bboxes, function (bb) {\n return bb.max[c];\n })]);\n })));\n }\n },\n stateInit: function stateInit() {\n return {\n d3ForceLayout: forceSimulation().force('link', forceLink()).force('charge', forceManyBody()).force('center', forceCenter()).force('dagRadial', null).stop(),\n engineRunning: false\n };\n },\n init: function init(threeObj, state) {\n // Main three object to manipulate\n state.graphScene = threeObj;\n },\n update: function update(state, changedProps) {\n var hasAnyPropChanged = function hasAnyPropChanged(propList) {\n return propList.some(function (p) {\n return changedProps.hasOwnProperty(p);\n });\n };\n\n state.engineRunning = false; // pause simulation\n\n state.onUpdate();\n\n if (state.nodeAutoColorBy !== null && hasAnyPropChanged(['nodeAutoColorBy', 'graphData', 'nodeColor'])) {\n // Auto add color to uncolored nodes\n autoColorObjects(state.graphData.nodes, accessorFn(state.nodeAutoColorBy), state.nodeColor);\n }\n\n if (state.linkAutoColorBy !== null && hasAnyPropChanged(['linkAutoColorBy', 'graphData', 'linkColor'])) {\n // Auto add color to uncolored links\n autoColorObjects(state.graphData.links, accessorFn(state.linkAutoColorBy), state.linkColor);\n } // Digest nodes WebGL objects\n\n\n if (state._flushObjects || hasAnyPropChanged(['graphData', 'nodeThreeObject', 'nodeThreeObjectExtend', 'nodeVal', 'nodeColor', 'nodeVisibility', 'nodeRelSize', 'nodeResolution', 'nodeOpacity'])) {\n var customObjectAccessor = accessorFn(state.nodeThreeObject);\n var customObjectExtendAccessor = accessorFn(state.nodeThreeObjectExtend);\n var valAccessor = accessorFn(state.nodeVal);\n var colorAccessor = accessorFn(state.nodeColor);\n var visibilityAccessor = accessorFn(state.nodeVisibility);\n var sphereGeometries = {}; // indexed by node value\n\n var sphereMaterials = {}; // indexed by color\n\n threeDigest(state.graphData.nodes.filter(visibilityAccessor), state.graphScene, {\n purge: state._flushObjects || hasAnyPropChanged([// recreate objects if any of these props have changed\n 'nodeThreeObject', 'nodeThreeObjectExtend']),\n objFilter: function objFilter(obj) {\n return obj.__graphObjType === 'node';\n },\n createObj: function createObj(node) {\n var customObj = customObjectAccessor(node);\n var extendObj = customObjectExtendAccessor(node);\n\n if (customObj && state.nodeThreeObject === customObj) {\n // clone object if it's a shared object among all nodes\n customObj = customObj.clone();\n }\n\n var obj;\n\n if (customObj && !extendObj) {\n obj = customObj;\n } else {\n // Add default object (sphere mesh)\n obj = new three.Mesh();\n obj.__graphDefaultObj = true;\n\n if (customObj && extendObj) {\n obj.add(customObj); // extend default with custom\n }\n }\n\n obj.__graphObjType = 'node'; // Add object type\n\n return obj;\n },\n updateObj: function updateObj(obj, node) {\n if (obj.__graphDefaultObj) {\n // bypass internal updates for custom node objects\n var val = valAccessor(node) || 1;\n var radius = Math.cbrt(val) * state.nodeRelSize;\n var numSegments = state.nodeResolution;\n\n if (obj.geometry.type !== 'SphereBufferGeometry' || obj.geometry.parameters.radius !== radius || obj.geometry.parameters.widthSegments !== numSegments) {\n if (!sphereGeometries.hasOwnProperty(val)) {\n sphereGeometries[val] = new three.SphereBufferGeometry(radius, numSegments, numSegments);\n }\n\n obj.geometry.dispose();\n obj.geometry = sphereGeometries[val];\n }\n\n var color = colorAccessor(node);\n var materialColor = new three.Color(colorStr2Hex(color || '#ffffaa'));\n var opacity = state.nodeOpacity * colorAlpha(color);\n\n if (obj.material.type !== 'MeshLambertMaterial' || !obj.material.color.equals(materialColor) || obj.material.opacity !== opacity) {\n if (!sphereMaterials.hasOwnProperty(color)) {\n sphereMaterials[color] = new three.MeshLambertMaterial({\n color: materialColor,\n transparent: true,\n opacity: opacity\n });\n }\n\n obj.material.dispose();\n obj.material = sphereMaterials[color];\n }\n }\n }\n });\n } // Digest links WebGL objects\n\n\n if (state._flushObjects || hasAnyPropChanged(['graphData', 'linkThreeObject', 'linkThreeObjectExtend', 'linkMaterial', 'linkColor', 'linkWidth', 'linkVisibility', 'linkResolution', 'linkOpacity', 'linkDirectionalArrowLength', 'linkDirectionalArrowColor', 'linkDirectionalArrowResolution', 'linkDirectionalParticles', 'linkDirectionalParticleWidth', 'linkDirectionalParticleColor', 'linkDirectionalParticleResolution'])) {\n var _customObjectAccessor = accessorFn(state.linkThreeObject);\n\n var _customObjectExtendAccessor = accessorFn(state.linkThreeObjectExtend);\n\n var customMaterialAccessor = accessorFn(state.linkMaterial);\n\n var _visibilityAccessor = accessorFn(state.linkVisibility);\n\n var _colorAccessor = accessorFn(state.linkColor);\n\n var widthAccessor = accessorFn(state.linkWidth);\n var cylinderGeometries = {}; // indexed by link width\n\n var lambertLineMaterials = {}; // for cylinder objects, indexed by link color\n\n var basicLineMaterials = {}; // for line objects, indexed by link color\n\n var visibleLinks = state.graphData.links.filter(_visibilityAccessor); // lines digest cycle\n\n threeDigest(visibleLinks, state.graphScene, {\n objBindAttr: '__lineObj',\n purge: state._flushObjects || hasAnyPropChanged([// recreate objects if any of these props have changed\n 'linkThreeObject', 'linkThreeObjectExtend', 'linkWidth']),\n objFilter: function objFilter(obj) {\n return obj.__graphObjType === 'link';\n },\n createObj: function createObj(link) {\n var customObj = _customObjectAccessor(link);\n\n var extendObj = _customObjectExtendAccessor(link);\n\n if (customObj && state.linkThreeObject === customObj) {\n // clone object if it's a shared object among all links\n customObj = customObj.clone();\n }\n\n var defaultObj;\n\n if (!customObj || extendObj) {\n // construct default line obj\n var useCylinder = !!widthAccessor(link);\n\n if (useCylinder) {\n defaultObj = new three.Mesh();\n } else {\n // Use plain line (constant width)\n var lineGeometry = new three.BufferGeometry();\n lineGeometry[setAttributeFn]('position', new three.BufferAttribute(new Float32Array(2 * 3), 3));\n defaultObj = new three.Line(lineGeometry);\n }\n }\n\n var obj;\n\n if (!customObj) {\n obj = defaultObj;\n obj.__graphDefaultObj = true;\n } else {\n if (!extendObj) {\n // use custom object\n obj = customObj;\n } else {\n // extend default with custom in a group\n obj = new three.Group();\n obj.__graphDefaultObj = true;\n obj.add(defaultObj);\n obj.add(customObj);\n }\n }\n\n obj.renderOrder = 10; // Prevent visual glitches of dark lines on top of nodes by rendering them last\n\n obj.__graphObjType = 'link'; // Add object type\n\n return obj;\n },\n updateObj: function updateObj(updObj, link) {\n if (updObj.__graphDefaultObj) {\n // bypass internal updates for custom link objects\n // select default object if it's an extended group\n var obj = updObj.children.length ? updObj.children[0] : updObj;\n var linkWidth = Math.ceil(widthAccessor(link) * 10) / 10;\n var useCylinder = !!linkWidth;\n\n if (useCylinder) {\n var r = linkWidth / 2;\n var numSegments = state.linkResolution;\n\n if (obj.geometry.type !== 'CylinderBufferGeometry' || obj.geometry.parameters.radiusTop !== r || obj.geometry.parameters.radialSegments !== numSegments) {\n if (!cylinderGeometries.hasOwnProperty(linkWidth)) {\n var geometry = new three.CylinderBufferGeometry(r, r, 1, numSegments, 1, false);\n geometry[applyMatrix4Fn](new three.Matrix4().makeTranslation(0, 1 / 2, 0));\n geometry[applyMatrix4Fn](new three.Matrix4().makeRotationX(Math.PI / 2));\n cylinderGeometries[linkWidth] = geometry;\n }\n\n obj.geometry.dispose();\n obj.geometry = cylinderGeometries[linkWidth];\n }\n }\n\n var customMaterial = customMaterialAccessor(link);\n\n if (customMaterial) {\n obj.material = customMaterial;\n } else {\n var color = _colorAccessor(link);\n\n var materialColor = new three.Color(colorStr2Hex(color || '#f0f0f0'));\n var opacity = state.linkOpacity * colorAlpha(color);\n var materialType = useCylinder ? 'MeshLambertMaterial' : 'LineBasicMaterial';\n\n if (obj.material.type !== materialType || !obj.material.color.equals(materialColor) || obj.material.opacity !== opacity) {\n var lineMaterials = useCylinder ? lambertLineMaterials : basicLineMaterials;\n\n if (!lineMaterials.hasOwnProperty(color)) {\n lineMaterials[color] = new three[materialType]({\n color: materialColor,\n transparent: opacity < 1,\n opacity: opacity,\n depthWrite: opacity >= 1 // Prevent transparency issues\n\n });\n }\n\n obj.material.dispose();\n obj.material = lineMaterials[color];\n }\n }\n }\n }\n }); // Arrows digest cycle\n\n if (state.linkDirectionalArrowLength || changedProps.hasOwnProperty('linkDirectionalArrowLength')) {\n var arrowLengthAccessor = accessorFn(state.linkDirectionalArrowLength);\n var arrowColorAccessor = accessorFn(state.linkDirectionalArrowColor);\n threeDigest(visibleLinks.filter(arrowLengthAccessor), state.graphScene, {\n objBindAttr: '__arrowObj',\n objFilter: function objFilter(obj) {\n return obj.__linkThreeObjType === 'arrow';\n },\n createObj: function createObj() {\n var obj = new three.Mesh(undefined, new three.MeshLambertMaterial({\n transparent: true\n }));\n obj.__linkThreeObjType = 'arrow'; // Add object type\n\n return obj;\n },\n updateObj: function updateObj(obj, link) {\n var arrowLength = arrowLengthAccessor(link);\n var numSegments = state.linkDirectionalArrowResolution;\n\n if (obj.geometry.type !== 'ConeBufferGeometry' || obj.geometry.parameters.height !== arrowLength || obj.geometry.parameters.radialSegments !== numSegments) {\n var coneGeometry = new three.ConeBufferGeometry(arrowLength * 0.25, arrowLength, numSegments); // Correct orientation\n\n coneGeometry.translate(0, arrowLength / 2, 0);\n coneGeometry.rotateX(Math.PI / 2);\n obj.geometry.dispose();\n obj.geometry = coneGeometry;\n }\n\n obj.material.color = new three.Color(arrowColorAccessor(link) || _colorAccessor(link) || '#f0f0f0');\n obj.material.opacity = state.linkOpacity * 3;\n }\n });\n } // Photon particles digest cycle\n\n\n if (state.linkDirectionalParticles || changedProps.hasOwnProperty('linkDirectionalParticles')) {\n var particlesAccessor = accessorFn(state.linkDirectionalParticles);\n var particleWidthAccessor = accessorFn(state.linkDirectionalParticleWidth);\n var particleColorAccessor = accessorFn(state.linkDirectionalParticleColor);\n var particleMaterials = {}; // indexed by link color\n\n var particleGeometries = {}; // indexed by particle width\n\n threeDigest(visibleLinks.filter(particlesAccessor), state.graphScene, {\n objBindAttr: '__photonsObj',\n objFilter: function objFilter(obj) {\n return obj.__linkThreeObjType === 'photons';\n },\n createObj: function createObj() {\n var obj = new three.Group();\n obj.__linkThreeObjType = 'photons'; // Add object type\n\n return obj;\n },\n updateObj: function updateObj(obj, link) {\n var numPhotons = Math.round(Math.abs(particlesAccessor(link)));\n var curPhoton = !!obj.children.length && obj.children[0];\n var photonR = Math.ceil(particleWidthAccessor(link) * 10) / 10 / 2;\n var numSegments = state.linkDirectionalParticleResolution;\n var particleGeometry;\n\n if (curPhoton && curPhoton.geometry.parameters.radius === photonR && curPhoton.geometry.parameters.widthSegments === numSegments) {\n particleGeometry = curPhoton.geometry;\n } else {\n if (!particleGeometries.hasOwnProperty(photonR)) {\n particleGeometries[photonR] = new three.SphereBufferGeometry(photonR, numSegments, numSegments);\n }\n\n particleGeometry = particleGeometries[photonR];\n curPhoton && curPhoton.geometry.dispose();\n }\n\n var photonColor = particleColorAccessor(link) || _colorAccessor(link) || '#f0f0f0';\n var materialColor = new three.Color(colorStr2Hex(photonColor));\n var opacity = state.linkOpacity * 3;\n var particleMaterial;\n\n if (curPhoton && curPhoton.material.color.equals(materialColor) && curPhoton.material.opacity === opacity) {\n particleMaterial = curPhoton.material;\n } else {\n if (!particleMaterials.hasOwnProperty(photonColor)) {\n particleMaterials[photonColor] = new three.MeshLambertMaterial({\n color: materialColor,\n transparent: true,\n opacity: opacity\n });\n }\n\n particleMaterial = particleMaterials[photonColor];\n curPhoton && curPhoton.material.dispose();\n } // digest cycle for each photon\n\n\n threeDigest(_toConsumableArray(new Array(numPhotons)).map(function (_, idx) {\n return {\n idx: idx\n };\n }), obj, {\n idAccessor: function idAccessor(d) {\n return d.idx;\n },\n createObj: function createObj() {\n return new three.Mesh(particleGeometry, particleMaterial);\n },\n updateObj: function updateObj(obj) {\n obj.geometry = particleGeometry;\n obj.material = particleMaterial;\n }\n });\n }\n });\n }\n }\n\n state._flushObjects = false; // reset objects refresh flag\n // simulation engine\n\n if (hasAnyPropChanged(['graphData', 'nodeId', 'linkSource', 'linkTarget', 'numDimensions', 'forceEngine', 'dagMode', 'dagNodeFilter', 'dagLevelDistance'])) {\n state.engineRunning = false; // Pause simulation\n // parse links\n\n state.graphData.links.forEach(function (link) {\n link.source = link[state.linkSource];\n link.target = link[state.linkTarget];\n }); // Feed data to force-directed layout\n\n var isD3Sim = state.forceEngine !== 'ngraph';\n var layout;\n\n if (isD3Sim) {\n // D3-force\n (layout = state.d3ForceLayout).stop().alpha(1) // re-heat the simulation\n .numDimensions(state.numDimensions).nodes(state.graphData.nodes); // add links (if link force is still active)\n\n var linkForce = state.d3ForceLayout.force('link');\n\n if (linkForce) {\n linkForce.id(function (d) {\n return d[state.nodeId];\n }).links(state.graphData.links);\n } // setup dag force constraints\n\n\n var nodeDepths = state.dagMode && getDagDepths(state.graphData, function (node) {\n return node[state.nodeId];\n }, {\n nodeFilter: state.dagNodeFilter,\n onLoopError: state.onDagError || undefined\n });\n var maxDepth = Math.max.apply(Math, _toConsumableArray(Object.values(nodeDepths || [])));\n var dagLevelDistance = state.dagLevelDistance || state.graphData.nodes.length / (maxDepth || 1) * DAG_LEVEL_NODE_RATIO * (['radialin', 'radialout'].indexOf(state.dagMode) !== -1 ? 0.7 : 1); // Fix nodes to x,y,z for dag mode\n\n if (state.dagMode) {\n var getFFn = function getFFn(fix, invert) {\n return function (node) {\n return !fix ? undefined : (nodeDepths[node[state.nodeId]] - maxDepth / 2) * dagLevelDistance * (invert ? -1 : 1);\n };\n };\n\n var fxFn = getFFn(['lr', 'rl'].indexOf(state.dagMode) !== -1, state.dagMode === 'rl');\n var fyFn = getFFn(['td', 'bu'].indexOf(state.dagMode) !== -1, state.dagMode === 'td');\n var fzFn = getFFn(['zin', 'zout'].indexOf(state.dagMode) !== -1, state.dagMode === 'zout');\n state.graphData.nodes.filter(state.dagNodeFilter).forEach(function (node) {\n node.fx = fxFn(node);\n node.fy = fyFn(node);\n node.fz = fzFn(node);\n });\n } // Use radial force for radial dags\n\n\n state.d3ForceLayout.force('dagRadial', ['radialin', 'radialout'].indexOf(state.dagMode) !== -1 ? forceRadial(function (node) {\n var nodeDepth = nodeDepths[node[state.nodeId]] || -1;\n return (state.dagMode === 'radialin' ? maxDepth - nodeDepth : nodeDepth) * dagLevelDistance;\n }).strength(function (node) {\n return state.dagNodeFilter(node) ? 1 : 0;\n }) : null);\n } else {\n // ngraph\n var _graph = ngraph.graph();\n\n state.graphData.nodes.forEach(function (node) {\n _graph.addNode(node[state.nodeId]);\n });\n state.graphData.links.forEach(function (link) {\n _graph.addLink(link.source, link.target);\n });\n layout = ngraph['forcelayout' + (state.numDimensions === 2 ? '' : '3d')](_graph, state.ngraphPhysics || undefined);\n layout.graph = _graph; // Attach graph reference to layout\n }\n\n for (var i = 0; i < state.warmupTicks && !(isD3Sim && state.d3AlphaMin > 0 && state.d3ForceLayout.alpha() < state.d3AlphaMin); i++) {\n layout[isD3Sim ? \"tick\" : \"step\"]();\n } // Initial ticks before starting to render\n\n\n state.layout = layout;\n this.resetCountdown();\n }\n\n state.engineRunning = true; // resume simulation\n\n state.onFinishUpdate();\n }\n});\n\nfunction fromKapsule (kapsule) {\n var baseClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Object;\n var initKapsuleWithSelf = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var FromKapsule = /*#__PURE__*/function (_baseClass) {\n _inherits(FromKapsule, _baseClass);\n\n var _super = _createSuper(FromKapsule);\n\n function FromKapsule() {\n var _this;\n\n _classCallCheck(this, FromKapsule);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.__kapsuleInstance = kapsule().apply(void 0, [].concat(_toConsumableArray(initKapsuleWithSelf ? [_assertThisInitialized(_this)] : []), args));\n return _this;\n }\n\n return FromKapsule;\n }(baseClass); // attach kapsule props/methods to class prototype\n\n\n Object.keys(kapsule()).forEach(function (m) {\n return FromKapsule.prototype[m] = function () {\n var _this$__kapsuleInstan;\n\n var returnVal = (_this$__kapsuleInstan = this.__kapsuleInstance)[m].apply(_this$__kapsuleInstan, arguments);\n\n return returnVal === this.__kapsuleInstance ? this // chain based on this class, not the kapsule obj\n : returnVal;\n };\n });\n return FromKapsule;\n}\n\nvar three$1 = window.THREE ? window.THREE : {\n Group: Group\n}; // Prefer consumption from global THREE, if exists\nvar threeForcegraph = fromKapsule(ForceGraph, three$1.Group, true);\n\nexport default threeForcegraph;\n","/**\n * @author Eberhard Graether / http://egraether.com/\n * @author Mark Lundin \t/ http://mark-lundin.com\n * @author Simone Manini / http://daron1337.github.io\n * @author Luca Antiga \t/ http://lantiga.github.io\n */\n\nimport {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tVector2,\n\tVector3\n} from \"../../../build/three.module.js\";\n\nvar TrackballControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.TrackballControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.TrackballControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tvar scope = this;\n\tvar STATE = { NONE: - 1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 };\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// API\n\n\tthis.enabled = true;\n\n\tthis.screen = { left: 0, top: 0, width: 0, height: 0 };\n\n\tthis.rotateSpeed = 1.0;\n\tthis.zoomSpeed = 1.2;\n\tthis.panSpeed = 0.3;\n\n\tthis.noRotate = false;\n\tthis.noZoom = false;\n\tthis.noPan = false;\n\n\tthis.staticMoving = false;\n\tthis.dynamicDampingFactor = 0.2;\n\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\tthis.keys = [ 65 /*A*/, 83 /*S*/, 68 /*D*/ ];\n\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.ZOOM, RIGHT: MOUSE.PAN };\n\n\t// internals\n\n\tthis.target = new Vector3();\n\n\tvar EPS = 0.000001;\n\n\tvar lastPosition = new Vector3();\n\tvar lastZoom = 1;\n\n\tvar _state = STATE.NONE,\n\t\t_keyState = STATE.NONE,\n\n\t\t_eye = new Vector3(),\n\n\t\t_movePrev = new Vector2(),\n\t\t_moveCurr = new Vector2(),\n\n\t\t_lastAxis = new Vector3(),\n\t\t_lastAngle = 0,\n\n\t\t_zoomStart = new Vector2(),\n\t\t_zoomEnd = new Vector2(),\n\n\t\t_touchZoomDistanceStart = 0,\n\t\t_touchZoomDistanceEnd = 0,\n\n\t\t_panStart = new Vector2(),\n\t\t_panEnd = new Vector2();\n\n\t// for reset\n\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.up0 = this.object.up.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t// events\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\n\t// methods\n\n\tthis.handleResize = function () {\n\n\t\tvar box = scope.domElement.getBoundingClientRect();\n\t\t// adjustments come from similar code in the jquery offset() function\n\t\tvar d = scope.domElement.ownerDocument.documentElement;\n\t\tscope.screen.left = box.left + window.pageXOffset - d.clientLeft;\n\t\tscope.screen.top = box.top + window.pageYOffset - d.clientTop;\n\t\tscope.screen.width = box.width;\n\t\tscope.screen.height = box.height;\n\n\t};\n\n\tvar getMouseOnScreen = ( function () {\n\n\t\tvar vector = new Vector2();\n\n\t\treturn function getMouseOnScreen( pageX, pageY ) {\n\n\t\t\tvector.set(\n\t\t\t\t( pageX - scope.screen.left ) / scope.screen.width,\n\t\t\t\t( pageY - scope.screen.top ) / scope.screen.height\n\t\t\t);\n\n\t\t\treturn vector;\n\n\t\t};\n\n\t}() );\n\n\tvar getMouseOnCircle = ( function () {\n\n\t\tvar vector = new Vector2();\n\n\t\treturn function getMouseOnCircle( pageX, pageY ) {\n\n\t\t\tvector.set(\n\t\t\t\t( ( pageX - scope.screen.width * 0.5 - scope.screen.left ) / ( scope.screen.width * 0.5 ) ),\n\t\t\t\t( ( scope.screen.height + 2 * ( scope.screen.top - pageY ) ) / scope.screen.width ) // screen.width intentional\n\t\t\t);\n\n\t\t\treturn vector;\n\n\t\t};\n\n\t}() );\n\n\tthis.rotateCamera = ( function () {\n\n\t\tvar axis = new Vector3(),\n\t\t\tquaternion = new Quaternion(),\n\t\t\teyeDirection = new Vector3(),\n\t\t\tobjectUpDirection = new Vector3(),\n\t\t\tobjectSidewaysDirection = new Vector3(),\n\t\t\tmoveDirection = new Vector3(),\n\t\t\tangle;\n\n\t\treturn function rotateCamera() {\n\n\t\t\tmoveDirection.set( _moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0 );\n\t\t\tangle = moveDirection.length();\n\n\t\t\tif ( angle ) {\n\n\t\t\t\t_eye.copy( scope.object.position ).sub( scope.target );\n\n\t\t\t\teyeDirection.copy( _eye ).normalize();\n\t\t\t\tobjectUpDirection.copy( scope.object.up ).normalize();\n\t\t\t\tobjectSidewaysDirection.crossVectors( objectUpDirection, eyeDirection ).normalize();\n\n\t\t\t\tobjectUpDirection.setLength( _moveCurr.y - _movePrev.y );\n\t\t\t\tobjectSidewaysDirection.setLength( _moveCurr.x - _movePrev.x );\n\n\t\t\t\tmoveDirection.copy( objectUpDirection.add( objectSidewaysDirection ) );\n\n\t\t\t\taxis.crossVectors( moveDirection, _eye ).normalize();\n\n\t\t\t\tangle *= scope.rotateSpeed;\n\t\t\t\tquaternion.setFromAxisAngle( axis, angle );\n\n\t\t\t\t_eye.applyQuaternion( quaternion );\n\t\t\t\tscope.object.up.applyQuaternion( quaternion );\n\n\t\t\t\t_lastAxis.copy( axis );\n\t\t\t\t_lastAngle = angle;\n\n\t\t\t} else if ( ! scope.staticMoving && _lastAngle ) {\n\n\t\t\t\t_lastAngle *= Math.sqrt( 1.0 - scope.dynamicDampingFactor );\n\t\t\t\t_eye.copy( scope.object.position ).sub( scope.target );\n\t\t\t\tquaternion.setFromAxisAngle( _lastAxis, _lastAngle );\n\t\t\t\t_eye.applyQuaternion( quaternion );\n\t\t\t\tscope.object.up.applyQuaternion( quaternion );\n\n\t\t\t}\n\n\t\t\t_movePrev.copy( _moveCurr );\n\n\t\t};\n\n\t}() );\n\n\n\tthis.zoomCamera = function () {\n\n\t\tvar factor;\n\n\t\tif ( _state === STATE.TOUCH_ZOOM_PAN ) {\n\n\t\t\tfactor = _touchZoomDistanceStart / _touchZoomDistanceEnd;\n\t\t\t_touchZoomDistanceStart = _touchZoomDistanceEnd;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t_eye.multiplyScalar( factor );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom *= factor;\n\t\t\t\tscope.object.updateProjectionMatrix();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.TrackballControls: Unsupported camera type' );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tfactor = 1.0 + ( _zoomEnd.y - _zoomStart.y ) * scope.zoomSpeed;\n\n\t\t\tif ( factor !== 1.0 && factor > 0.0 ) {\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t_eye.multiplyScalar( factor );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tscope.object.zoom /= factor;\n\t\t\t\t\tscope.object.updateProjectionMatrix();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.TrackballControls: Unsupported camera type' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( scope.staticMoving ) {\n\n\t\t\t\t_zoomStart.copy( _zoomEnd );\n\n\t\t\t} else {\n\n\t\t\t\t_zoomStart.y += ( _zoomEnd.y - _zoomStart.y ) * this.dynamicDampingFactor;\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.panCamera = ( function () {\n\n\t\tvar mouseChange = new Vector2(),\n\t\t\tobjectUp = new Vector3(),\n\t\t\tpan = new Vector3();\n\n\t\treturn function panCamera() {\n\n\t\t\tmouseChange.copy( _panEnd ).sub( _panStart );\n\n\t\t\tif ( mouseChange.lengthSq() ) {\n\n\t\t\t\tif ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\tvar scale_x = ( scope.object.right - scope.object.left ) / scope.object.zoom / scope.domElement.clientWidth;\n\t\t\t\t\tvar scale_y = ( scope.object.top - scope.object.bottom ) / scope.object.zoom / scope.domElement.clientWidth;\n\n\t\t\t\t\tmouseChange.x *= scale_x;\n\t\t\t\t\tmouseChange.y *= scale_y;\n\n\t\t\t\t}\n\n\t\t\t\tmouseChange.multiplyScalar( _eye.length() * scope.panSpeed );\n\n\t\t\t\tpan.copy( _eye ).cross( scope.object.up ).setLength( mouseChange.x );\n\t\t\t\tpan.add( objectUp.copy( scope.object.up ).setLength( mouseChange.y ) );\n\n\t\t\t\tscope.object.position.add( pan );\n\t\t\t\tscope.target.add( pan );\n\n\t\t\t\tif ( scope.staticMoving ) {\n\n\t\t\t\t\t_panStart.copy( _panEnd );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_panStart.add( mouseChange.subVectors( _panEnd, _panStart ).multiplyScalar( scope.dynamicDampingFactor ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tthis.checkDistances = function () {\n\n\t\tif ( ! scope.noZoom || ! scope.noPan ) {\n\n\t\t\tif ( _eye.lengthSq() > scope.maxDistance * scope.maxDistance ) {\n\n\t\t\t\tscope.object.position.addVectors( scope.target, _eye.setLength( scope.maxDistance ) );\n\t\t\t\t_zoomStart.copy( _zoomEnd );\n\n\t\t\t}\n\n\t\t\tif ( _eye.lengthSq() < scope.minDistance * scope.minDistance ) {\n\n\t\t\t\tscope.object.position.addVectors( scope.target, _eye.setLength( scope.minDistance ) );\n\t\t\t\t_zoomStart.copy( _zoomEnd );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.update = function () {\n\n\t\t_eye.subVectors( scope.object.position, scope.target );\n\n\t\tif ( ! scope.noRotate ) {\n\n\t\t\tscope.rotateCamera();\n\n\t\t}\n\n\t\tif ( ! scope.noZoom ) {\n\n\t\t\tscope.zoomCamera();\n\n\t\t}\n\n\t\tif ( ! scope.noPan ) {\n\n\t\t\tscope.panCamera();\n\n\t\t}\n\n\t\tscope.object.position.addVectors( scope.target, _eye );\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscope.checkDistances();\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( lastPosition.distanceToSquared( scope.object.position ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\n\t\t\t}\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( lastPosition.distanceToSquared( scope.object.position ) > EPS || lastZoom !== scope.object.zoom ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastZoom = scope.object.zoom;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.TrackballControls: Unsupported camera type' );\n\n\t\t}\n\n\t};\n\n\tthis.reset = function () {\n\n\t\t_state = STATE.NONE;\n\t\t_keyState = STATE.NONE;\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.up.copy( scope.up0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\n\t\t_eye.subVectors( scope.object.position, scope.target );\n\n\t\tscope.object.lookAt( scope.target );\n\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tlastPosition.copy( scope.object.position );\n\t\tlastZoom = scope.object.zoom;\n\n\t};\n\n\t// listeners\n\n\tfunction keydown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\twindow.removeEventListener( 'keydown', keydown );\n\n\t\tif ( _keyState !== STATE.NONE ) {\n\n\t\t\treturn;\n\n\t\t} else if ( event.keyCode === scope.keys[ STATE.ROTATE ] && ! scope.noRotate ) {\n\n\t\t\t_keyState = STATE.ROTATE;\n\n\t\t} else if ( event.keyCode === scope.keys[ STATE.ZOOM ] && ! scope.noZoom ) {\n\n\t\t\t_keyState = STATE.ZOOM;\n\n\t\t} else if ( event.keyCode === scope.keys[ STATE.PAN ] && ! scope.noPan ) {\n\n\t\t\t_keyState = STATE.PAN;\n\n\t\t}\n\n\t}\n\n\tfunction keyup() {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\t_keyState = STATE.NONE;\n\n\t\twindow.addEventListener( 'keydown', keydown, false );\n\n\t}\n\n\tfunction mousedown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif ( _state === STATE.NONE ) {\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase scope.mouseButtons.LEFT:\n\t\t\t\t\t_state = STATE.ROTATE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.mouseButtons.MIDDLE:\n\t\t\t\t\t_state = STATE.ZOOM;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.mouseButtons.RIGHT:\n\t\t\t\t\t_state = STATE.PAN;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\t_state = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar state = ( _keyState !== STATE.NONE ) ? _keyState : _state;\n\n\t\tif ( state === STATE.ROTATE && ! scope.noRotate ) {\n\n\t\t\t_moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );\n\t\t\t_movePrev.copy( _moveCurr );\n\n\t\t} else if ( state === STATE.ZOOM && ! scope.noZoom ) {\n\n\t\t\t_zoomStart.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\t\t\t_zoomEnd.copy( _zoomStart );\n\n\t\t} else if ( state === STATE.PAN && ! scope.noPan ) {\n\n\t\t\t_panStart.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\t\t\t_panEnd.copy( _panStart );\n\n\t\t}\n\n\t\tscope.domElement.ownerDocument.addEventListener( 'mousemove', mousemove, false );\n\t\tscope.domElement.ownerDocument.addEventListener( 'mouseup', mouseup, false );\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t}\n\n\tfunction mousemove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tvar state = ( _keyState !== STATE.NONE ) ? _keyState : _state;\n\n\t\tif ( state === STATE.ROTATE && ! scope.noRotate ) {\n\n\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t_moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) );\n\n\t\t} else if ( state === STATE.ZOOM && ! scope.noZoom ) {\n\n\t\t\t_zoomEnd.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\n\t\t} else if ( state === STATE.PAN && ! scope.noPan ) {\n\n\t\t\t_panEnd.copy( getMouseOnScreen( event.pageX, event.pageY ) );\n\n\t\t}\n\n\t}\n\n\tfunction mouseup( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t_state = STATE.NONE;\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', mousemove );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', mouseup );\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction mousewheel( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tif ( scope.noZoom === true ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tswitch ( event.deltaMode ) {\n\n\t\t\tcase 2:\n\t\t\t\t// Zoom in pages\n\t\t\t\t_zoomStart.y -= event.deltaY * 0.025;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\t// Zoom in lines\n\t\t\t\t_zoomStart.y -= event.deltaY * 0.01;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// undefined, 0, assume pixels\n\t\t\t\t_zoomStart.y -= event.deltaY * 0.00025;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tscope.dispatchEvent( startEvent );\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction touchstart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\t\t\t\t_state = STATE.TOUCH_ROTATE;\n\t\t\t\t_moveCurr.copy( getMouseOnCircle( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );\n\t\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t\tbreak;\n\n\t\t\tdefault: // 2 or more\n\t\t\t\t_state = STATE.TOUCH_ZOOM_PAN;\n\t\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\t\t\t\t_touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\t\tvar x = ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ) / 2;\n\t\t\t\tvar y = ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ) / 2;\n\t\t\t\t_panStart.copy( getMouseOnScreen( x, y ) );\n\t\t\t\t_panEnd.copy( _panStart );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t}\n\n\tfunction touchmove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\t\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t\t_moveCurr.copy( getMouseOnCircle( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );\n\t\t\t\tbreak;\n\n\t\t\tdefault: // 2 or more\n\t\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\t\t\t\t_touchZoomDistanceEnd = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\t\tvar x = ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ) / 2;\n\t\t\t\tvar y = ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ) / 2;\n\t\t\t\t_panEnd.copy( getMouseOnScreen( x, y ) );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction touchend( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 0:\n\t\t\t\t_state = STATE.NONE;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\t_state = STATE.TOUCH_ROTATE;\n\t\t\t\t_moveCurr.copy( getMouseOnCircle( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ) );\n\t\t\t\t_movePrev.copy( _moveCurr );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction contextmenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', contextmenu, false );\n\t\tscope.domElement.removeEventListener( 'mousedown', mousedown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', mousewheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', touchstart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', touchend, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', touchmove, false );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', mousemove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', mouseup, false );\n\n\t\twindow.removeEventListener( 'keydown', keydown, false );\n\t\twindow.removeEventListener( 'keyup', keyup, false );\n\n\t};\n\n\tthis.domElement.addEventListener( 'contextmenu', contextmenu, false );\n\tthis.domElement.addEventListener( 'mousedown', mousedown, false );\n\tthis.domElement.addEventListener( 'wheel', mousewheel, false );\n\n\tthis.domElement.addEventListener( 'touchstart', touchstart, false );\n\tthis.domElement.addEventListener( 'touchend', touchend, false );\n\tthis.domElement.addEventListener( 'touchmove', touchmove, false );\n\n\twindow.addEventListener( 'keydown', keydown, false );\n\twindow.addEventListener( 'keyup', keyup, false );\n\n\tthis.handleResize();\n\n\t// force an update at start\n\tthis.update();\n\n};\n\nTrackballControls.prototype = Object.create( EventDispatcher.prototype );\nTrackballControls.prototype.constructor = TrackballControls;\n\nexport { TrackballControls };\n","/**\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n * @author ScieCode / http://github.com/sciecode\n */\n\nimport {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from \"../../../build/three.module.js\";\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nvar OrbitControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// \"target\" sets the location of focus, where the object orbits around\n\tthis.target = new Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.05;\n\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.panSpeed = 1.0;\n\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// Set to false to disable use of the keys\n\tthis.enableKeys = true;\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t// Touch fingers\n\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().inverse();\n\n\t\tvar lastPosition = new Vector3();\n\t\tvar lastQuaternion = new Quaternion();\n\n\t\tvar twoPI = 2 * Math.PI;\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t} else {\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t}\n\n\t\t\t// restrict theta to be between desired limits\n\n\t\t\tvar min = scope.minAzimuthAngle;\n\t\t\tvar max = scope.maxAzimuthAngle;\n\n\t\t\tif ( isFinite ( min ) && isFinite( max ) ) {\n\n\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\tif ( min < max ) {\n\n\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t}\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel, false );\n\n\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.domElement.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: 'change' };\n\tvar startEvent = { type: 'start' };\n\tvar endEvent = { type: 'end' };\n\n\tvar STATE = {\n\t\tNONE: - 1,\n\t\tROTATE: 0,\n\t\tDOLLY: 1,\n\t\tPAN: 2,\n\t\tTOUCH_ROTATE: 3,\n\t\tTOUCH_PAN: 4,\n\t\tTOUCH_DOLLY_PAN: 5,\n\t\tTOUCH_DOLLY_ROTATE: 6\n\t};\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new Spherical();\n\tvar sphericalDelta = new Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new Vector2();\n\tvar rotateEnd = new Vector2();\n\tvar rotateDelta = new Vector2();\n\n\tvar panStart = new Vector2();\n\tvar panEnd = new Vector2();\n\tvar panDelta = new Vector2();\n\n\tvar dollyStart = new Vector2();\n\tvar dollyEnd = new Vector2();\n\tvar dollyDelta = new Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t} else {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t}\n\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\tvar needsUpdate = false;\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tneedsUpdate = true;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.update();\n\n\t\t}\n\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanStart.set( x, y );\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchStartPan( event );\n\n\t}\n\n\tfunction handleTouchStartDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchStartDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchStartRotate( event );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\trotateEnd.set( x, y );\n\n\t\t}\n\n\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\tvar element = scope.domElement;\n\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\tif ( event.touches.length == 1 ) {\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t} else {\n\n\t\t\tvar x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX );\n\t\t\tvar y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY );\n\n\t\t\tpanEnd.set( x, y );\n\n\t\t}\n\n\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\tdollyOut( dollyDelta.y );\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t}\n\n\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t}\n\n\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t}\n\n\tfunction handleTouchEnd( /*event*/ ) {\n\n\t\t// no-op\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onMouseDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\t// Prevent the browser from scrolling.\n\t\tevent.preventDefault();\n\n\t\t// Manually set the focus since calling preventDefault above\n\t\t// prevents the browser from setting it automatically.\n\n\t\tscope.domElement.focus ? scope.domElement.focus() : window.focus();\n\n\t\tvar mouseAction;\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase 0:\n\n\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\n\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tmouseAction = - 1;\n\n\t\t}\n\n\t\tswitch ( mouseAction ) {\n\n\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase MOUSE.PAN:\n\n\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\tscope.domElement.ownerDocument.addEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\tscope.domElement.ownerDocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tscope.dispatchEvent( startEvent );\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\n\n\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\n\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyPan( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleTouchStartDollyRotate( event );\n\n\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault(); // prevent scrolling\n\t\tevent.stopPropagation();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\tscope.update();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\tscope.domElement.addEventListener( 'wheel', onMouseWheel, false );\n\n\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\tscope.domElement.addEventListener( 'keydown', onKeyDown, false );\n\n\t// make sure element can receive keys.\n\n\tif ( scope.domElement.tabIndex === - 1 ) {\n\n\t\tscope.domElement.tabIndex = 0;\n\n\t}\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nvar MapControls = function ( object, domElement ) {\n\n\tOrbitControls.call( this, object, domElement );\n\n\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\tthis.touches.ONE = TOUCH.PAN;\n\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n};\n\nMapControls.prototype = Object.create( EventDispatcher.prototype );\nMapControls.prototype.constructor = MapControls;\n\nexport { OrbitControls, MapControls };\n","/**\n * @author James Baicoianu / http://www.baicoianu.com/\n */\n\nimport {\n\tQuaternion,\n\tVector3\n} from \"../../../build/three.module.js\";\n\nvar FlyControls = function ( object, domElement ) {\n\n\tif ( domElement === undefined ) {\n\n\t\tconsole.warn( 'THREE.FlyControls: The second parameter \"domElement\" is now mandatory.' );\n\t\tdomElement = document;\n\n\t}\n\n\tthis.object = object;\n\tthis.domElement = domElement;\n\n\tif ( domElement ) this.domElement.setAttribute( 'tabindex', - 1 );\n\n\t// API\n\n\tthis.movementSpeed = 1.0;\n\tthis.rollSpeed = 0.005;\n\n\tthis.dragToLook = false;\n\tthis.autoForward = false;\n\n\t// disable default target object behavior\n\n\t// internals\n\n\tthis.tmpQuaternion = new Quaternion();\n\n\tthis.mouseStatus = 0;\n\n\tthis.moveState = { up: 0, down: 0, left: 0, right: 0, forward: 0, back: 0, pitchUp: 0, pitchDown: 0, yawLeft: 0, yawRight: 0, rollLeft: 0, rollRight: 0 };\n\tthis.moveVector = new Vector3( 0, 0, 0 );\n\tthis.rotationVector = new Vector3( 0, 0, 0 );\n\n\tthis.keydown = function ( event ) {\n\n\t\tif ( event.altKey ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//event.preventDefault();\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase 16: /* shift */ this.movementSpeedMultiplier = .1; break;\n\n\t\t\tcase 87: /*W*/ this.moveState.forward = 1; break;\n\t\t\tcase 83: /*S*/ this.moveState.back = 1; break;\n\n\t\t\tcase 65: /*A*/ this.moveState.left = 1; break;\n\t\t\tcase 68: /*D*/ this.moveState.right = 1; break;\n\n\t\t\tcase 82: /*R*/ this.moveState.up = 1; break;\n\t\t\tcase 70: /*F*/ this.moveState.down = 1; break;\n\n\t\t\tcase 38: /*up*/ this.moveState.pitchUp = 1; break;\n\t\t\tcase 40: /*down*/ this.moveState.pitchDown = 1; break;\n\n\t\t\tcase 37: /*left*/ this.moveState.yawLeft = 1; break;\n\t\t\tcase 39: /*right*/ this.moveState.yawRight = 1; break;\n\n\t\t\tcase 81: /*Q*/ this.moveState.rollLeft = 1; break;\n\t\t\tcase 69: /*E*/ this.moveState.rollRight = 1; break;\n\n\t\t}\n\n\t\tthis.updateMovementVector();\n\t\tthis.updateRotationVector();\n\n\t};\n\n\tthis.keyup = function ( event ) {\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase 16: /* shift */ this.movementSpeedMultiplier = 1; break;\n\n\t\t\tcase 87: /*W*/ this.moveState.forward = 0; break;\n\t\t\tcase 83: /*S*/ this.moveState.back = 0; break;\n\n\t\t\tcase 65: /*A*/ this.moveState.left = 0; break;\n\t\t\tcase 68: /*D*/ this.moveState.right = 0; break;\n\n\t\t\tcase 82: /*R*/ this.moveState.up = 0; break;\n\t\t\tcase 70: /*F*/ this.moveState.down = 0; break;\n\n\t\t\tcase 38: /*up*/ this.moveState.pitchUp = 0; break;\n\t\t\tcase 40: /*down*/ this.moveState.pitchDown = 0; break;\n\n\t\t\tcase 37: /*left*/ this.moveState.yawLeft = 0; break;\n\t\t\tcase 39: /*right*/ this.moveState.yawRight = 0; break;\n\n\t\t\tcase 81: /*Q*/ this.moveState.rollLeft = 0; break;\n\t\t\tcase 69: /*E*/ this.moveState.rollRight = 0; break;\n\n\t\t}\n\n\t\tthis.updateMovementVector();\n\t\tthis.updateRotationVector();\n\n\t};\n\n\tthis.mousedown = function ( event ) {\n\n\t\tif ( this.domElement !== document ) {\n\n\t\t\tthis.domElement.focus();\n\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif ( this.dragToLook ) {\n\n\t\t\tthis.mouseStatus ++;\n\n\t\t} else {\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0: this.moveState.forward = 1; break;\n\t\t\t\tcase 2: this.moveState.back = 1; break;\n\n\t\t\t}\n\n\t\t\tthis.updateMovementVector();\n\n\t\t}\n\n\t};\n\n\tthis.mousemove = function ( event ) {\n\n\t\tif ( ! this.dragToLook || this.mouseStatus > 0 ) {\n\n\t\t\tvar container = this.getContainerDimensions();\n\t\t\tvar halfWidth = container.size[ 0 ] / 2;\n\t\t\tvar halfHeight = container.size[ 1 ] / 2;\n\n\t\t\tthis.moveState.yawLeft = - ( ( event.pageX - container.offset[ 0 ] ) - halfWidth ) / halfWidth;\n\t\t\tthis.moveState.pitchDown = ( ( event.pageY - container.offset[ 1 ] ) - halfHeight ) / halfHeight;\n\n\t\t\tthis.updateRotationVector();\n\n\t\t}\n\n\t};\n\n\tthis.mouseup = function ( event ) {\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif ( this.dragToLook ) {\n\n\t\t\tthis.mouseStatus --;\n\n\t\t\tthis.moveState.yawLeft = this.moveState.pitchDown = 0;\n\n\t\t} else {\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0: this.moveState.forward = 0; break;\n\t\t\t\tcase 2: this.moveState.back = 0; break;\n\n\t\t\t}\n\n\t\t\tthis.updateMovementVector();\n\n\t\t}\n\n\t\tthis.updateRotationVector();\n\n\t};\n\n\tthis.update = function ( delta ) {\n\n\t\tvar moveMult = delta * this.movementSpeed;\n\t\tvar rotMult = delta * this.rollSpeed;\n\n\t\tthis.object.translateX( this.moveVector.x * moveMult );\n\t\tthis.object.translateY( this.moveVector.y * moveMult );\n\t\tthis.object.translateZ( this.moveVector.z * moveMult );\n\n\t\tthis.tmpQuaternion.set( this.rotationVector.x * rotMult, this.rotationVector.y * rotMult, this.rotationVector.z * rotMult, 1 ).normalize();\n\t\tthis.object.quaternion.multiply( this.tmpQuaternion );\n\n\t\t// expose the rotation vector for convenience\n\t\tthis.object.rotation.setFromQuaternion( this.object.quaternion, this.object.rotation.order );\n\n\n\t};\n\n\tthis.updateMovementVector = function () {\n\n\t\tvar forward = ( this.moveState.forward || ( this.autoForward && ! this.moveState.back ) ) ? 1 : 0;\n\n\t\tthis.moveVector.x = ( - this.moveState.left + this.moveState.right );\n\t\tthis.moveVector.y = ( - this.moveState.down + this.moveState.up );\n\t\tthis.moveVector.z = ( - forward + this.moveState.back );\n\n\t\t//console.log( 'move:', [ this.moveVector.x, this.moveVector.y, this.moveVector.z ] );\n\n\t};\n\n\tthis.updateRotationVector = function () {\n\n\t\tthis.rotationVector.x = ( - this.moveState.pitchDown + this.moveState.pitchUp );\n\t\tthis.rotationVector.y = ( - this.moveState.yawRight + this.moveState.yawLeft );\n\t\tthis.rotationVector.z = ( - this.moveState.rollRight + this.moveState.rollLeft );\n\n\t\t//console.log( 'rotate:', [ this.rotationVector.x, this.rotationVector.y, this.rotationVector.z ] );\n\n\t};\n\n\tthis.getContainerDimensions = function () {\n\n\t\tif ( this.domElement != document ) {\n\n\t\t\treturn {\n\t\t\t\tsize: [ this.domElement.offsetWidth, this.domElement.offsetHeight ],\n\t\t\t\toffset: [ this.domElement.offsetLeft, this.domElement.offsetTop ]\n\t\t\t};\n\n\t\t} else {\n\n\t\t\treturn {\n\t\t\t\tsize: [ window.innerWidth, window.innerHeight ],\n\t\t\t\toffset: [ 0, 0 ]\n\t\t\t};\n\n\t\t}\n\n\t};\n\n\tfunction bind( scope, fn ) {\n\n\t\treturn function () {\n\n\t\t\tfn.apply( scope, arguments );\n\n\t\t};\n\n\t}\n\n\tfunction contextmenu( event ) {\n\n\t\tevent.preventDefault();\n\n\t}\n\n\tthis.dispose = function () {\n\n\t\tthis.domElement.removeEventListener( 'contextmenu', contextmenu, false );\n\t\tthis.domElement.removeEventListener( 'mousedown', _mousedown, false );\n\t\tthis.domElement.removeEventListener( 'mousemove', _mousemove, false );\n\t\tthis.domElement.removeEventListener( 'mouseup', _mouseup, false );\n\n\t\twindow.removeEventListener( 'keydown', _keydown, false );\n\t\twindow.removeEventListener( 'keyup', _keyup, false );\n\n\t};\n\n\tvar _mousemove = bind( this, this.mousemove );\n\tvar _mousedown = bind( this, this.mousedown );\n\tvar _mouseup = bind( this, this.mouseup );\n\tvar _keydown = bind( this, this.keydown );\n\tvar _keyup = bind( this, this.keyup );\n\n\tthis.domElement.addEventListener( 'contextmenu', contextmenu, false );\n\n\tthis.domElement.addEventListener( 'mousemove', _mousemove, false );\n\tthis.domElement.addEventListener( 'mousedown', _mousedown, false );\n\tthis.domElement.addEventListener( 'mouseup', _mouseup, false );\n\n\twindow.addEventListener( 'keydown', _keydown, false );\n\twindow.addEventListener( 'keyup', _keyup, false );\n\n\tthis.updateMovementVector();\n\tthis.updateRotationVector();\n\n};\n\nexport { FlyControls };\n","/**\n * @author alteredq / http://alteredqualia.com/\n *\n * Full-screen textured quad shader\n */\n\n\n\nvar CopyShader = {\n\n\tuniforms: {\n\n\t\t\"tDiffuse\": { value: null },\n\t\t\"opacity\": { value: 1.0 }\n\n\t},\n\n\tvertexShader: [\n\n\t\t\"varying vec2 vUv;\",\n\n\t\t\"void main() {\",\n\n\t\t\"\tvUv = uv;\",\n\t\t\"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\n\n\t\t\"}\"\n\n\t].join( \"\\n\" ),\n\n\tfragmentShader: [\n\n\t\t\"uniform float opacity;\",\n\n\t\t\"uniform sampler2D tDiffuse;\",\n\n\t\t\"varying vec2 vUv;\",\n\n\t\t\"void main() {\",\n\n\t\t\"\tvec4 texel = texture2D( tDiffuse, vUv );\",\n\t\t\"\tgl_FragColor = opacity * texel;\",\n\n\t\t\"}\"\n\n\t].join( \"\\n\" )\n\n};\n\nexport { CopyShader };\n","import {\n\tOrthographicCamera,\n\tPlaneBufferGeometry,\n\tMesh\n} from \"../../../build/three.module.js\";\n\nfunction Pass() {\n\n\t// if set to true, the pass is processed by the composer\n\tthis.enabled = true;\n\n\t// if set to true, the pass indicates to swap read and write buffer after rendering\n\tthis.needsSwap = true;\n\n\t// if set to true, the pass clears its buffer before rendering\n\tthis.clear = false;\n\n\t// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n\tthis.renderToScreen = false;\n\n}\n\nObject.assign( Pass.prototype, {\n\n\tsetSize: function ( /* width, height */ ) {},\n\n\trender: function ( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\tconsole.error( 'THREE.Pass: .render() must be implemented in derived pass.' );\n\n\t}\n\n} );\n\n// Helper for passes that need to fill the viewport with a single quad.\n\nPass.FullScreenQuad = ( function () {\n\n\tvar camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar geometry = new PlaneBufferGeometry( 2, 2 );\n\n\tvar FullScreenQuad = function ( material ) {\n\n\t\tthis._mesh = new Mesh( geometry, material );\n\n\t};\n\n\tObject.defineProperty( FullScreenQuad.prototype, 'material', {\n\n\t\tget: function () {\n\n\t\t\treturn this._mesh.material;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._mesh.material = value;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( FullScreenQuad.prototype, {\n\n\t\tdispose: function () {\n\n\t\t\tthis._mesh.geometry.dispose();\n\n\t\t},\n\n\t\trender: function ( renderer ) {\n\n\t\t\trenderer.render( this._mesh, camera );\n\n\t\t}\n\n\t} );\n\n\treturn FullScreenQuad;\n\n} )();\n\nexport { Pass };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nimport {\n\tShaderMaterial,\n\tUniformsUtils\n} from \"../../../build/three.module.js\";\nimport { Pass } from \"../postprocessing/Pass.js\";\n\nvar ShaderPass = function ( shader, textureID ) {\n\n\tPass.call( this );\n\n\tthis.textureID = ( textureID !== undefined ) ? textureID : \"tDiffuse\";\n\n\tif ( shader instanceof ShaderMaterial ) {\n\n\t\tthis.uniforms = shader.uniforms;\n\n\t\tthis.material = shader;\n\n\t} else if ( shader ) {\n\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\tthis.material = new ShaderMaterial( {\n\n\t\t\tdefines: Object.assign( {}, shader.defines ),\n\t\t\tuniforms: this.uniforms,\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader\n\n\t\t} );\n\n\t}\n\n\tthis.fsQuad = new Pass.FullScreenQuad( this.material );\n\n};\n\nShaderPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: ShaderPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tif ( this.uniforms[ this.textureID ] ) {\n\n\t\t\tthis.uniforms[ this.textureID ].value = readBuffer.texture;\n\n\t\t}\n\n\t\tthis.fsQuad.material = this.material;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n} );\n\nexport { ShaderPass };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\n\nimport { Pass } from \"../postprocessing/Pass.js\";\n\nvar MaskPass = function ( scene, camera ) {\n\n\tPass.call( this );\n\n\tthis.scene = scene;\n\tthis.camera = camera;\n\n\tthis.clear = true;\n\tthis.needsSwap = false;\n\n\tthis.inverse = false;\n\n};\n\nMaskPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: MaskPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tvar context = renderer.getContext();\n\t\tvar state = renderer.state;\n\n\t\t// don't update color or depth\n\n\t\tstate.buffers.color.setMask( false );\n\t\tstate.buffers.depth.setMask( false );\n\n\t\t// lock buffers\n\n\t\tstate.buffers.color.setLocked( true );\n\t\tstate.buffers.depth.setLocked( true );\n\n\t\t// set up stencil\n\n\t\tvar writeValue, clearValue;\n\n\t\tif ( this.inverse ) {\n\n\t\t\twriteValue = 0;\n\t\t\tclearValue = 1;\n\n\t\t} else {\n\n\t\t\twriteValue = 1;\n\t\t\tclearValue = 0;\n\n\t\t}\n\n\t\tstate.buffers.stencil.setTest( true );\n\t\tstate.buffers.stencil.setOp( context.REPLACE, context.REPLACE, context.REPLACE );\n\t\tstate.buffers.stencil.setFunc( context.ALWAYS, writeValue, 0xffffffff );\n\t\tstate.buffers.stencil.setClear( clearValue );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t\t// draw into the stencil buffer\n\n\t\trenderer.setRenderTarget( readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\trenderer.setRenderTarget( writeBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// unlock color and depth buffer for subsequent rendering\n\n\t\tstate.buffers.color.setLocked( false );\n\t\tstate.buffers.depth.setLocked( false );\n\n\t\t// only render where stencil is set to 1\n\n\t\tstate.buffers.stencil.setLocked( false );\n\t\tstate.buffers.stencil.setFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 1\n\t\tstate.buffers.stencil.setOp( context.KEEP, context.KEEP, context.KEEP );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t}\n\n} );\n\n\nvar ClearMaskPass = function () {\n\n\tPass.call( this );\n\n\tthis.needsSwap = false;\n\n};\n\nClearMaskPass.prototype = Object.create( Pass.prototype );\n\nObject.assign( ClearMaskPass.prototype, {\n\n\trender: function ( renderer /*, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\trenderer.state.buffers.stencil.setLocked( false );\n\t\trenderer.state.buffers.stencil.setTest( false );\n\n\t}\n\n} );\n\nexport { MaskPass, ClearMaskPass };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nimport {\n\tClock,\n\tLinearFilter,\n\tMesh,\n\tOrthographicCamera,\n\tPlaneBufferGeometry,\n\tRGBAFormat,\n\tVector2,\n\tWebGLRenderTarget\n} from \"../../../build/three.module.js\";\nimport { CopyShader } from \"../shaders/CopyShader.js\";\nimport { ShaderPass } from \"../postprocessing/ShaderPass.js\";\nimport { MaskPass } from \"../postprocessing/MaskPass.js\";\nimport { ClearMaskPass } from \"../postprocessing/MaskPass.js\";\n\nvar EffectComposer = function ( renderer, renderTarget ) {\n\n\tthis.renderer = renderer;\n\n\tif ( renderTarget === undefined ) {\n\n\t\tvar parameters = {\n\t\t\tminFilter: LinearFilter,\n\t\t\tmagFilter: LinearFilter,\n\t\t\tformat: RGBAFormat,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tvar size = renderer.getSize( new Vector2() );\n\t\tthis._pixelRatio = renderer.getPixelRatio();\n\t\tthis._width = size.width;\n\t\tthis._height = size.height;\n\n\t\trenderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, parameters );\n\t\trenderTarget.texture.name = 'EffectComposer.rt1';\n\n\t} else {\n\n\t\tthis._pixelRatio = 1;\n\t\tthis._width = renderTarget.width;\n\t\tthis._height = renderTarget.height;\n\n\t}\n\n\tthis.renderTarget1 = renderTarget;\n\tthis.renderTarget2 = renderTarget.clone();\n\tthis.renderTarget2.texture.name = 'EffectComposer.rt2';\n\n\tthis.writeBuffer = this.renderTarget1;\n\tthis.readBuffer = this.renderTarget2;\n\n\tthis.renderToScreen = true;\n\n\tthis.passes = [];\n\n\t// dependencies\n\n\tif ( CopyShader === undefined ) {\n\n\t\tconsole.error( 'THREE.EffectComposer relies on CopyShader' );\n\n\t}\n\n\tif ( ShaderPass === undefined ) {\n\n\t\tconsole.error( 'THREE.EffectComposer relies on ShaderPass' );\n\n\t}\n\n\tthis.copyPass = new ShaderPass( CopyShader );\n\n\tthis.clock = new Clock();\n\n};\n\nObject.assign( EffectComposer.prototype, {\n\n\tswapBuffers: function () {\n\n\t\tvar tmp = this.readBuffer;\n\t\tthis.readBuffer = this.writeBuffer;\n\t\tthis.writeBuffer = tmp;\n\n\t},\n\n\taddPass: function ( pass ) {\n\n\t\tthis.passes.push( pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t},\n\n\tinsertPass: function ( pass, index ) {\n\n\t\tthis.passes.splice( index, 0, pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t},\n\n\tisLastEnabledPass: function ( passIndex ) {\n\n\t\tfor ( var i = passIndex + 1; i < this.passes.length; i ++ ) {\n\n\t\t\tif ( this.passes[ i ].enabled ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\trender: function ( deltaTime ) {\n\n\t\t// deltaTime value is in seconds\n\n\t\tif ( deltaTime === undefined ) {\n\n\t\t\tdeltaTime = this.clock.getDelta();\n\n\t\t}\n\n\t\tvar currentRenderTarget = this.renderer.getRenderTarget();\n\n\t\tvar maskActive = false;\n\n\t\tvar pass, i, il = this.passes.length;\n\n\t\tfor ( i = 0; i < il; i ++ ) {\n\n\t\t\tpass = this.passes[ i ];\n\n\t\t\tif ( pass.enabled === false ) continue;\n\n\t\t\tpass.renderToScreen = ( this.renderToScreen && this.isLastEnabledPass( i ) );\n\t\t\tpass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive );\n\n\t\t\tif ( pass.needsSwap ) {\n\n\t\t\t\tif ( maskActive ) {\n\n\t\t\t\t\tvar context = this.renderer.getContext();\n\t\t\t\t\tvar stencil = this.renderer.state.buffers.stencil;\n\n\t\t\t\t\t//context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.NOTEQUAL, 1, 0xffffffff );\n\n\t\t\t\t\tthis.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime );\n\n\t\t\t\t\t//context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.EQUAL, 1, 0xffffffff );\n\n\t\t\t\t}\n\n\t\t\t\tthis.swapBuffers();\n\n\t\t\t}\n\n\t\t\tif ( MaskPass !== undefined ) {\n\n\t\t\t\tif ( pass instanceof MaskPass ) {\n\n\t\t\t\t\tmaskActive = true;\n\n\t\t\t\t} else if ( pass instanceof ClearMaskPass ) {\n\n\t\t\t\t\tmaskActive = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.renderer.setRenderTarget( currentRenderTarget );\n\n\t},\n\n\treset: function ( renderTarget ) {\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tvar size = this.renderer.getSize( new Vector2() );\n\t\t\tthis._pixelRatio = this.renderer.getPixelRatio();\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = this.renderTarget1.clone();\n\t\t\trenderTarget.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t\t}\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t},\n\n\tsetSize: function ( width, height ) {\n\n\t\tthis._width = width;\n\t\tthis._height = height;\n\n\t\tvar effectiveWidth = this._width * this._pixelRatio;\n\t\tvar effectiveHeight = this._height * this._pixelRatio;\n\n\t\tthis.renderTarget1.setSize( effectiveWidth, effectiveHeight );\n\t\tthis.renderTarget2.setSize( effectiveWidth, effectiveHeight );\n\n\t\tfor ( var i = 0; i < this.passes.length; i ++ ) {\n\n\t\t\tthis.passes[ i ].setSize( effectiveWidth, effectiveHeight );\n\n\t\t}\n\n\t},\n\n\tsetPixelRatio: function ( pixelRatio ) {\n\n\t\tthis._pixelRatio = pixelRatio;\n\n\t\tthis.setSize( this._width, this._height );\n\n\t}\n\n} );\n\n\nvar Pass = function () {\n\n\t// if set to true, the pass is processed by the composer\n\tthis.enabled = true;\n\n\t// if set to true, the pass indicates to swap read and write buffer after rendering\n\tthis.needsSwap = true;\n\n\t// if set to true, the pass clears its buffer before rendering\n\tthis.clear = false;\n\n\t// if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n\tthis.renderToScreen = false;\n\n};\n\nObject.assign( Pass.prototype, {\n\n\tsetSize: function ( /* width, height */ ) {},\n\n\trender: function ( /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\tconsole.error( 'THREE.Pass: .render() must be implemented in derived pass.' );\n\n\t}\n\n} );\n\n// Helper for passes that need to fill the viewport with a single quad.\nPass.FullScreenQuad = ( function () {\n\n\tvar camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\tvar geometry = new PlaneBufferGeometry( 2, 2 );\n\n\tvar FullScreenQuad = function ( material ) {\n\n\t\tthis._mesh = new Mesh( geometry, material );\n\n\t};\n\n\tObject.defineProperty( FullScreenQuad.prototype, 'material', {\n\n\t\tget: function () {\n\n\t\t\treturn this._mesh.material;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._mesh.material = value;\n\n\t\t}\n\n\t} );\n\n\tObject.assign( FullScreenQuad.prototype, {\n\n\t\tdispose: function () {\n\n\t\t\tthis._mesh.geometry.dispose();\n\n\t\t},\n\n\t\trender: function ( renderer ) {\n\n\t\t\trenderer.render( this._mesh, camera );\n\n\t\t}\n\n\t} );\n\n\treturn FullScreenQuad;\n\n} )();\n\nexport { EffectComposer, Pass };\n","/**\n * @author alteredq / http://alteredqualia.com/\n */\n\n\nimport { Pass } from \"../postprocessing/Pass.js\";\n\nvar RenderPass = function ( scene, camera, overrideMaterial, clearColor, clearAlpha ) {\n\n\tPass.call( this );\n\n\tthis.scene = scene;\n\tthis.camera = camera;\n\n\tthis.overrideMaterial = overrideMaterial;\n\n\tthis.clearColor = clearColor;\n\tthis.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;\n\n\tthis.clear = true;\n\tthis.clearDepth = false;\n\tthis.needsSwap = false;\n\n};\n\nRenderPass.prototype = Object.assign( Object.create( Pass.prototype ), {\n\n\tconstructor: RenderPass,\n\n\trender: function ( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tvar oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tvar oldClearColor, oldClearAlpha, oldOverrideMaterial;\n\n\t\tif ( this.overrideMaterial !== undefined ) {\n\n\t\t\toldOverrideMaterial = this.scene.overrideMaterial;\n\n\t\t\tthis.scene.overrideMaterial = this.overrideMaterial;\n\n\t\t}\n\n\t\tif ( this.clearColor ) {\n\n\t\t\toldClearColor = renderer.getClearColor().getHex();\n\t\t\toldClearAlpha = renderer.getClearAlpha();\n\n\t\t\trenderer.setClearColor( this.clearColor, this.clearAlpha );\n\n\t\t}\n\n\t\tif ( this.clearDepth ) {\n\n\t\t\trenderer.clearDepth();\n\n\t\t}\n\n\t\trenderer.setRenderTarget( this.renderToScreen ? null : readBuffer );\n\n\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\trenderer.render( this.scene, this.camera );\n\n\t\tif ( this.clearColor ) {\n\n\t\t\trenderer.setClearColor( oldClearColor, oldClearAlpha );\n\n\t\t}\n\n\t\tif ( this.overrideMaterial !== undefined ) {\n\n\t\t\tthis.scene.overrideMaterial = oldOverrideMaterial;\n\n\t\t}\n\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n} );\n\nexport { RenderPass };\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _wrapNativeSuper from '@babel/runtime/helpers/esm/wrapNativeSuper';\nimport _taggedTemplateLiteralLoose from '@babel/runtime/helpers/esm/taggedTemplateLiteralLoose';\n\nfunction last() {\n var _ref;\n\n return _ref = arguments.length - 1, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref];\n}\n\nfunction negation(a) {\n return -a;\n}\n\nfunction addition(a, b) {\n return a + b;\n}\n\nfunction subtraction(a, b) {\n return a - b;\n}\n\nfunction multiplication(a, b) {\n return a * b;\n}\n\nfunction division(a, b) {\n return a / b;\n}\n\nfunction factorial(a) {\n if (a % 1 || !(+a >= 0)) return NaN;\n if (a > 170) return Infinity;else if (a === 0) return 1;else {\n return a * factorial(a - 1);\n }\n}\n\nfunction power(a, b) {\n return Math.pow(a, b);\n}\n\nfunction sqrt(a) {\n return Math.sqrt(a);\n}\n\nfunction max() {\n return Math.max.apply(Math, arguments);\n}\n\nfunction min() {\n return Math.min.apply(Math, arguments);\n}\n\nfunction comma() {\n return Array.of.apply(Array, arguments);\n}\n\nvar defaultMathSymbols = {\n symbols: {\n '!': {\n postfix: {\n symbol: '!',\n f: factorial,\n notation: 'postfix',\n precedence: 6,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '!',\n regSymbol: '!'\n },\n '^': {\n infix: {\n symbol: '^',\n f: power,\n notation: 'infix',\n precedence: 5,\n rightToLeft: 1,\n argCount: 2\n },\n symbol: '^',\n regSymbol: '\\\\^'\n },\n '*': {\n infix: {\n symbol: '*',\n f: multiplication,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '*',\n regSymbol: '\\\\*'\n },\n '/': {\n infix: {\n symbol: '/',\n f: division,\n notation: 'infix',\n precedence: 4,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: '/',\n regSymbol: '/'\n },\n '+': {\n infix: {\n symbol: '+',\n f: addition,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '+',\n f: last,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '+',\n regSymbol: '\\\\+'\n },\n '-': {\n infix: {\n symbol: '-',\n f: subtraction,\n notation: 'infix',\n precedence: 2,\n rightToLeft: 0,\n argCount: 2\n },\n prefix: {\n symbol: '-',\n f: negation,\n notation: 'prefix',\n precedence: 3,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '-',\n regSymbol: '-'\n },\n ',': {\n infix: {\n symbol: ',',\n f: comma,\n notation: 'infix',\n precedence: 1,\n rightToLeft: 0,\n argCount: 2\n },\n symbol: ',',\n regSymbol: ','\n },\n '(': {\n prefix: {\n symbol: '(',\n f: last,\n notation: 'prefix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: '(',\n regSymbol: '\\\\('\n },\n ')': {\n postfix: {\n symbol: ')',\n f: undefined,\n notation: 'postfix',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: ')',\n regSymbol: '\\\\)'\n },\n min: {\n func: {\n symbol: 'min',\n f: min,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'min',\n regSymbol: 'min\\\\b'\n },\n max: {\n func: {\n symbol: 'max',\n f: max,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'max',\n regSymbol: 'max\\\\b'\n },\n sqrt: {\n func: {\n symbol: 'sqrt',\n f: sqrt,\n notation: 'func',\n precedence: 0,\n rightToLeft: 0,\n argCount: 1\n },\n symbol: 'sqrt',\n regSymbol: 'sqrt\\\\b'\n }\n }\n};\n\n// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js\n\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n * @private\n */\nvar ERRORS = {\n \"1\": \"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\\n\\n\",\n \"2\": \"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\\n\\n\",\n \"3\": \"Passed an incorrect argument to a color function, please pass a string representation of a color.\\n\\n\",\n \"4\": \"Couldn't generate valid rgb string from %s, it returned %s.\\n\\n\",\n \"5\": \"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\\n\\n\",\n \"6\": \"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\\n\\n\",\n \"7\": \"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\\n\\n\",\n \"8\": \"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\\n\\n\",\n \"9\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"10\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"11\": \"Invalid value passed as base to modularScale, expected number or em string but got \\\"%s\\\"\\n\\n\",\n \"12\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"13\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"14\": \"Passed invalid pixel value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"15\": \"Passed invalid base value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"16\": \"You must provide a template to this method.\\n\\n\",\n \"17\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"18\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"19\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"20\": \"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"21\": \"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"22\": \"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"23\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"24\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"25\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"26\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"27\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"28\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"29\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"30\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"31\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"32\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\\n\\n\",\n \"33\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"34\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"35\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"36\": \"Property must be a string value.\\n\\n\",\n \"37\": \"Syntax Error at %s.\\n\\n\",\n \"38\": \"Formula contains a function that needs parentheses at %s.\\n\\n\",\n \"39\": \"Formula is missing closing parenthesis at %s.\\n\\n\",\n \"40\": \"Formula has too many closing parentheses at %s.\\n\\n\",\n \"41\": \"All values in a formula must have the same unit or be unitless.\\n\\n\",\n \"42\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"43\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"44\": \"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\\n\\n\",\n \"45\": \"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\\n\\n\",\n \"46\": \"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\\n\\n\",\n \"47\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"48\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"49\": \"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"50\": \"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"51\": \"Expects the first argument object to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"52\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"53\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"54\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"55\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"56\": \"linearGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"57\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"58\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"59\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"60\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"61\": \"Property must be a string value.\\n\\n\",\n \"62\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"63\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"64\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"65\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\\n\\n\",\n \"66\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"67\": \"You must provide a template to this method.\\n\\n\",\n \"68\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"69\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got %s instead.\\n\\n\",\n \"70\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got %s instead.\\n\\n\",\n \"71\": \"Passed invalid pixel value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"72\": \"Passed invalid base value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"73\": \"Please provide a valid CSS variable.\\n\\n\",\n \"74\": \"CSS variable not found.\\n\"\n};\n/**\n * super basic version of sprintf\n * @private\n */\n\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var a = args[0];\n var b = [];\n var c;\n\n for (c = 1; c < args.length; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n * @private\n */\n\n\nvar PolishedError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(PolishedError, _Error);\n\n function PolishedError(code) {\n var _this;\n\n if (process.env.NODE_ENV === 'production') {\n _this = _Error.call(this, \"An error occurred. See https://github.com/styled-components/polished/blob/master/src/internalHelpers/errors.md#\" + code + \" for more information.\") || this;\n } else {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this = _Error.call(this, format.apply(void 0, [ERRORS[code]].concat(args))) || this;\n }\n\n return _assertThisInitialized(_this);\n }\n\n return PolishedError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar unitRegExp = /((?!\\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\\D|$)|ged|darg?|nrut)/g; // Merges additional math functionality into the defaults.\n\nfunction mergeSymbolMaps(additionalSymbols) {\n var symbolMap = {};\n symbolMap.symbols = additionalSymbols ? _extends({}, defaultMathSymbols.symbols, {}, additionalSymbols.symbols) : _extends({}, defaultMathSymbols.symbols);\n return symbolMap;\n}\n\nfunction exec(operators, values) {\n var _ref;\n\n var op = operators.pop();\n values.push(op.f.apply(op, (_ref = []).concat.apply(_ref, values.splice(-op.argCount))));\n return op.precedence;\n}\n\nfunction calculate(expression, additionalSymbols) {\n var symbolMap = mergeSymbolMaps(additionalSymbols);\n var match;\n var operators = [symbolMap.symbols['('].prefix];\n var values = [];\n var pattern = new RegExp( // Pattern for numbers\n \"\\\\d+(?:\\\\.\\\\d+)?|\" + // ...and patterns for individual operators/function names\n Object.keys(symbolMap.symbols).map(function (key) {\n return symbolMap.symbols[key];\n }) // longer symbols should be listed first\n // $FlowFixMe\n .sort(function (a, b) {\n return b.symbol.length - a.symbol.length;\n }) // $FlowFixMe\n .map(function (val) {\n return val.regSymbol;\n }).join('|') + \"|(\\\\S)\", 'g');\n pattern.lastIndex = 0; // Reset regular expression object\n\n var afterValue = false;\n\n do {\n match = pattern.exec(expression);\n\n var _ref2 = match || [')', undefined],\n token = _ref2[0],\n bad = _ref2[1];\n\n var notNumber = symbolMap.symbols[token];\n var notNewValue = notNumber && !notNumber.prefix && !notNumber.func;\n var notAfterValue = !notNumber || !notNumber.postfix && !notNumber.infix; // Check for syntax errors:\n\n if (bad || (afterValue ? notAfterValue : notNewValue)) {\n throw new PolishedError(37, match ? match.index : expression.length, expression);\n }\n\n if (afterValue) {\n // We either have an infix or postfix operator (they should be mutually exclusive)\n var curr = notNumber.postfix || notNumber.infix;\n\n do {\n var prev = operators[operators.length - 1];\n if ((curr.precedence - prev.precedence || prev.rightToLeft) > 0) break; // Apply previous operator, since it has precedence over current one\n } while (exec(operators, values)); // Exit loop after executing an opening parenthesis or function\n\n\n afterValue = curr.notation === 'postfix';\n\n if (curr.symbol !== ')') {\n operators.push(curr); // Postfix always has precedence over any operator that follows after it\n\n if (afterValue) exec(operators, values);\n }\n } else if (notNumber) {\n // prefix operator or function\n operators.push(notNumber.prefix || notNumber.func);\n\n if (notNumber.func) {\n // Require an opening parenthesis\n match = pattern.exec(expression);\n\n if (!match || match[0] !== '(') {\n throw new PolishedError(38, match ? match.index : expression.length, expression);\n }\n }\n } else {\n // number\n values.push(+token);\n afterValue = true;\n }\n } while (match && operators.length);\n\n if (operators.length) {\n throw new PolishedError(39, match ? match.index : expression.length, expression);\n } else if (match) {\n throw new PolishedError(40, match ? match.index : expression.length, expression);\n } else {\n return values.pop();\n }\n}\n\nfunction reverseString(str) {\n return str.split('').reverse().join('');\n}\n/**\n * Helper for doing math with CSS Units. Accepts a formula as a string. All values in the formula must have the same unit (or be unitless). Supports complex formulas utliziing addition, subtraction, multiplication, division, square root, powers, factorial, min, max, as well as parentheses for order of operation.\n *\n *In cases where you need to do calculations with mixed units where one unit is a [relative length unit](https://developer.mozilla.org/en-US/docs/Web/CSS/length#Relative_length_units), you will want to use [CSS Calc](https://developer.mozilla.org/en-US/docs/Web/CSS/calc).\n *\n * *warning* While we've done everything possible to ensure math safely evalutes formulas expressed as strings, you should always use extreme caution when passing `math` user provided values.\n * @example\n * // Styles as object usage\n * const styles = {\n * fontSize: math('12rem + 8rem'),\n * fontSize: math('(12px + 2px) * 3'),\n * fontSize: math('3px^2 + sqrt(4)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * fontSize: ${math('12rem + 8rem')};\n * fontSize: ${math('(12px + 2px) * 3')};\n * fontSize: ${math('3px^2 + sqrt(4)')};\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * fontSize: '20rem',\n * fontSize: '42px',\n * fontSize: '11px',\n * }\n */\n\n\nfunction math(formula, additionalSymbols) {\n var reversedFormula = reverseString(formula);\n var formulaMatch = reversedFormula.match(unitRegExp); // Check that all units are the same\n\n if (formulaMatch && !formulaMatch.every(function (unit) {\n return unit === formulaMatch[0];\n })) {\n throw new PolishedError(41);\n }\n\n var cleanFormula = reverseString(reversedFormula.replace(unitRegExp, ''));\n return \"\" + calculate(cleanFormula, additionalSymbols) + (formulaMatch ? reverseString(formulaMatch[0]) : '');\n}\n\nvar cssVariableRegex = /--[\\S]*/g;\n/**\n * Fetches the value of a passed CSS Variable.\n *\n * Passthrough can be enabled (off by default) for when you are unsure of the input and want non-variable values to be returned instead of an error.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'background': cssVar('--background-color'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${cssVar('--background-color')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'background': 'red'\n * }\n */\n\nfunction cssVar(cssVariable, passThrough) {\n if (!cssVariable || !cssVariable.match(cssVariableRegex)) {\n if (passThrough) return cssVariable;\n throw new PolishedError(73);\n }\n\n var variableValue;\n /* eslint-disable */\n\n /* istanbul ignore next */\n\n if (typeof document !== 'undefined' && document.documentElement !== null) {\n variableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariable);\n }\n /* eslint-enable */\n\n\n if (variableValue) {\n return variableValue.trim();\n } else {\n throw new PolishedError(74);\n }\n}\n\n// @private\nfunction capitalizeString(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar positionMap = ['Top', 'Right', 'Bottom', 'Left'];\n\nfunction generateProperty(property, position) {\n if (!property) return position.toLowerCase();\n var splitProperty = property.split('-');\n\n if (splitProperty.length > 1) {\n splitProperty.splice(1, 0, position);\n return splitProperty.reduce(function (acc, val) {\n return \"\" + acc + capitalizeString(val);\n });\n }\n\n var joinedProperty = property.replace(/([a-z])([A-Z])/g, \"$1\" + position + \"$2\");\n return property === joinedProperty ? \"\" + property + position : joinedProperty;\n}\n\nfunction generateStyles(property, valuesWithDefaults) {\n var styles = {};\n\n for (var i = 0; i < valuesWithDefaults.length; i += 1) {\n if (valuesWithDefaults[i] || valuesWithDefaults[i] === 0) {\n styles[generateProperty(property, positionMap[i])] = valuesWithDefaults[i];\n }\n }\n\n return styles;\n}\n/**\n * Enables shorthand for direction-based properties. It accepts a property (hyphenated or camelCased) and up to four values that map to top, right, bottom, and left, respectively. You can optionally pass an empty string to get only the directional values as properties. You can also optionally pass a null argument for a directional value to ignore it.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...directionalProperty('padding', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${directionalProperty('padding', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'paddingTop': '12px',\n * 'paddingRight': '24px',\n * 'paddingBottom': '36px',\n * 'paddingLeft': '48px'\n * }\n */\n\n\nfunction directionalProperty(property) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n // prettier-ignore\n var firstValue = values[0],\n _values$ = values[1],\n secondValue = _values$ === void 0 ? firstValue : _values$,\n _values$2 = values[2],\n thirdValue = _values$2 === void 0 ? firstValue : _values$2,\n _values$3 = values[3],\n fourthValue = _values$3 === void 0 ? secondValue : _values$3;\n var valuesWithDefaults = [firstValue, secondValue, thirdValue, fourthValue];\n return generateStyles(property, valuesWithDefaults);\n}\n\n/**\n * Check if a string ends with something\n * @private\n */\nfunction endsWith (string, suffix) {\n return string.substr(-suffix.length) === suffix;\n}\n\nvar cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n/**\n * Returns a given CSS value minus its unit of measure.\n *\n * @deprecated - stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * '--dimension': stripUnit('100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * --dimension: ${stripUnit('100px')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * '--dimension': 100\n * }\n */\n\nfunction stripUnit(value, unitReturn) {\n if (typeof value !== 'string') return unitReturn ? [value, undefined] : value;\n var matchedValue = value.match(cssRegex);\n\n if (unitReturn) {\n // eslint-disable-next-line no-console\n console.warn(\"stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.\");\n if (matchedValue) return [parseFloat(value), matchedValue[2]];\n return [value, undefined];\n }\n\n if (matchedValue) return parseFloat(value);\n return value;\n}\n\n/**\n * Factory function that creates pixel-to-x converters\n * @private\n */\n\nvar pxtoFactory = function pxtoFactory(to) {\n return function (pxval, base) {\n if (base === void 0) {\n base = '16px';\n }\n\n var newPxval = pxval;\n var newBase = base;\n\n if (typeof pxval === 'string') {\n if (!endsWith(pxval, 'px')) {\n throw new PolishedError(69, to, pxval);\n }\n\n newPxval = stripUnit(pxval);\n }\n\n if (typeof base === 'string') {\n if (!endsWith(base, 'px')) {\n throw new PolishedError(70, to, base);\n }\n\n newBase = stripUnit(base);\n }\n\n if (typeof newPxval === 'string') {\n throw new PolishedError(71, pxval, to);\n }\n\n if (typeof newBase === 'string') {\n throw new PolishedError(72, base, to);\n }\n\n return \"\" + newPxval / newBase + to;\n };\n};\n\n/**\n * Convert pixel value to ems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n * 'height': em('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * height: ${em('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'height': '1em'\n * }\n */\n\nvar em = /*#__PURE__*/pxtoFactory('em');\n\nvar cssRegex$1 = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n/**\n * Returns a given CSS value and its unit as elements of an array.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * '--dimension': getValueAndUnit('100px')[0],\n * '--unit': getValueAndUnit('100px')[1],\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * --dimension: ${getValueAndUnit('100px')[0]};\n * --unit: ${getValueAndUnit('100px')[1]};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * '--dimension': 100,\n * '--unit': 'px',\n * }\n */\n\nfunction getValueAndUnit(value) {\n if (typeof value !== 'string') return [value, ''];\n var matchedValue = value.match(cssRegex$1);\n if (matchedValue) return [parseFloat(value), matchedValue[2]];\n return [value, undefined];\n}\n\nvar ratioNames = {\n minorSecond: 1.067,\n majorSecond: 1.125,\n minorThird: 1.2,\n majorThird: 1.25,\n perfectFourth: 1.333,\n augFourth: 1.414,\n perfectFifth: 1.5,\n minorSixth: 1.6,\n goldenSection: 1.618,\n majorSixth: 1.667,\n minorSeventh: 1.778,\n majorSeventh: 1.875,\n octave: 2,\n majorTenth: 2.5,\n majorEleventh: 2.667,\n majorTwelfth: 3,\n doubleOctave: 4\n};\n\nfunction getRatio(ratioName) {\n return ratioNames[ratioName];\n}\n/**\n * Establish consistent measurements and spacial relationships throughout your projects by incrementing an em or rem value up or down a defined scale. We provide a list of commonly used scales as pre-defined variables.\n * @example\n * // Styles as object usage\n * const styles = {\n * // Increment two steps up the default scale\n * 'fontSize': modularScale(2)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * // Increment two steps up the default scale\n * fontSize: ${modularScale(2)}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'fontSize': '1.77689em'\n * }\n */\n\n\nfunction modularScale(steps, base, ratio) {\n if (base === void 0) {\n base = '1em';\n }\n\n if (ratio === void 0) {\n ratio = 1.333;\n }\n\n if (typeof steps !== 'number') {\n throw new PolishedError(42);\n }\n\n if (typeof ratio === 'string' && !ratioNames[ratio]) {\n throw new PolishedError(43);\n }\n\n var _ref = typeof base === 'string' ? getValueAndUnit(base) : [base, ''],\n realBase = _ref[0],\n unit = _ref[1];\n\n var realRatio = typeof ratio === 'string' ? getRatio(ratio) : ratio;\n\n if (typeof realBase === 'string') {\n throw new PolishedError(44, base);\n }\n\n return \"\" + realBase * Math.pow(realRatio, steps) + (unit || '');\n}\n\n/**\n * Convert pixel value to rems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n * 'height': rem('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * height: ${rem('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * 'height': '1rem'\n * }\n */\n\nvar rem = /*#__PURE__*/pxtoFactory('rem');\n\n/**\n * Returns a CSS calc formula for linear interpolation of a property between two values. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px').\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * fontSize: between('20px', '100px', '400px', '1000px'),\n * fontSize: between('20px', '100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * fontSize: ${between('20px', '100px', '400px', '1000px')};\n * fontSize: ${between('20px', '100px')}\n * `\n *\n * // CSS as JS Output\n *\n * h1: {\n * 'fontSize': 'calc(-33.33333333333334px + 13.333333333333334vw)',\n * 'fontSize': 'calc(-9.090909090909093px + 9.090909090909092vw)'\n * }\n */\n\nfunction between(fromSize, toSize, minScreen, maxScreen) {\n if (minScreen === void 0) {\n minScreen = '320px';\n }\n\n if (maxScreen === void 0) {\n maxScreen = '1200px';\n }\n\n var _getValueAndUnit = getValueAndUnit(fromSize),\n unitlessFromSize = _getValueAndUnit[0],\n fromSizeUnit = _getValueAndUnit[1];\n\n var _getValueAndUnit2 = getValueAndUnit(toSize),\n unitlessToSize = _getValueAndUnit2[0],\n toSizeUnit = _getValueAndUnit2[1];\n\n var _getValueAndUnit3 = getValueAndUnit(minScreen),\n unitlessMinScreen = _getValueAndUnit3[0],\n minScreenUnit = _getValueAndUnit3[1];\n\n var _getValueAndUnit4 = getValueAndUnit(maxScreen),\n unitlessMaxScreen = _getValueAndUnit4[0],\n maxScreenUnit = _getValueAndUnit4[1];\n\n if (typeof unitlessMinScreen !== 'number' || typeof unitlessMaxScreen !== 'number' || !minScreenUnit || !maxScreenUnit || minScreenUnit !== maxScreenUnit) {\n throw new PolishedError(47);\n }\n\n if (typeof unitlessFromSize !== 'number' || typeof unitlessToSize !== 'number' || fromSizeUnit !== toSizeUnit) {\n throw new PolishedError(48);\n }\n\n var slope = (unitlessFromSize - unitlessToSize) / (unitlessMinScreen - unitlessMaxScreen);\n var base = unitlessToSize - slope * unitlessMaxScreen;\n return \"calc(\" + base.toFixed(2) + (fromSizeUnit || '') + \" + \" + (100 * slope).toFixed(2) + \"vw)\";\n}\n\n/**\n * CSS to contain a float (credit to CSSMojo).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...clearFix(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${clearFix()}\n * `\n *\n * // CSS as JS Output\n *\n * '&::after': {\n * 'clear': 'both',\n * 'content': '\"\"',\n * 'display': 'table'\n * }\n */\nfunction clearFix(parent) {\n var _ref;\n\n if (parent === void 0) {\n parent = '&';\n }\n\n var pseudoSelector = parent + \"::after\";\n return _ref = {}, _ref[pseudoSelector] = {\n clear: 'both',\n content: '\"\"',\n display: 'table'\n }, _ref;\n}\n\n/**\n * CSS to fully cover an area. Can optionally be passed an offset to act as a \"padding\".\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...cover()\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${cover()}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * 'position': 'absolute',\n * 'top': '0',\n * 'right: '0',\n * 'bottom': '0',\n * 'left: '0'\n * }\n */\nfunction cover(offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n return {\n position: 'absolute',\n top: offset,\n right: offset,\n bottom: offset,\n left: offset\n };\n}\n\n/**\n * CSS to represent truncated text with an ellipsis.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...ellipsis('250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${ellipsis('250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * 'display': 'inline-block',\n * 'maxWidth': '250px',\n * 'overflow': 'hidden',\n * 'textOverflow': 'ellipsis',\n * 'whiteSpace': 'nowrap',\n * 'wordWrap': 'normal'\n * }\n */\nfunction ellipsis(width) {\n if (width === void 0) {\n width = '100%';\n }\n\n return {\n display: 'inline-block',\n maxWidth: width,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n wordWrap: 'normal'\n };\n}\n\nfunction _createForOfIteratorHelperLoose(o) { var i = 0; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } i = o[Symbol.iterator](); return i.next.bind(i); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Returns a set of media queries that resizes a property (or set of properties) between a provided fromSize and toSize. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px') to constrain the interpolation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...fluidRange(\n * {\n * prop: 'padding',\n * fromSize: '20px',\n * toSize: '100px',\n * },\n * '400px',\n * '1000px',\n * )\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${fluidRange(\n * {\n * prop: 'padding',\n * fromSize: '20px',\n * toSize: '100px',\n * },\n * '400px',\n * '1000px',\n * )}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n * \"@media (min-width: 1000px)\": Object {\n * \"padding\": \"100px\",\n * },\n * \"@media (min-width: 400px)\": Object {\n * \"padding\": \"calc(-33.33333333333334px + 13.333333333333334vw)\",\n * },\n * \"padding\": \"20px\",\n * }\n */\nfunction fluidRange(cssProp, minScreen, maxScreen) {\n if (minScreen === void 0) {\n minScreen = '320px';\n }\n\n if (maxScreen === void 0) {\n maxScreen = '1200px';\n }\n\n if (!Array.isArray(cssProp) && typeof cssProp !== 'object' || cssProp === null) {\n throw new PolishedError(49);\n }\n\n if (Array.isArray(cssProp)) {\n var mediaQueries = {};\n var fallbacks = {};\n\n for (var _iterator = _createForOfIteratorHelperLoose(cssProp), _step; !(_step = _iterator()).done;) {\n var _extends2, _extends3;\n\n var obj = _step.value;\n\n if (!obj.prop || !obj.fromSize || !obj.toSize) {\n throw new PolishedError(50);\n }\n\n fallbacks[obj.prop] = obj.fromSize;\n mediaQueries[\"@media (min-width: \" + minScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + minScreen + \")\"], (_extends2 = {}, _extends2[obj.prop] = between(obj.fromSize, obj.toSize, minScreen, maxScreen), _extends2));\n mediaQueries[\"@media (min-width: \" + maxScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + maxScreen + \")\"], (_extends3 = {}, _extends3[obj.prop] = obj.toSize, _extends3));\n }\n\n return _extends({}, fallbacks, {}, mediaQueries);\n } else {\n var _ref, _ref2, _ref3;\n\n if (!cssProp.prop || !cssProp.fromSize || !cssProp.toSize) {\n throw new PolishedError(51);\n }\n\n return _ref3 = {}, _ref3[cssProp.prop] = cssProp.fromSize, _ref3[\"@media (min-width: \" + minScreen + \")\"] = (_ref = {}, _ref[cssProp.prop] = between(cssProp.fromSize, cssProp.toSize, minScreen, maxScreen), _ref), _ref3[\"@media (min-width: \" + maxScreen + \")\"] = (_ref2 = {}, _ref2[cssProp.prop] = cssProp.toSize, _ref2), _ref3;\n }\n}\n\nvar dataURIRegex = /^\\s*data:([a-z]+\\/[a-z-]+(;[a-z-]+=[a-z-]+)?)?(;charset=[a-z0-9-]+)?(;base64)?,[a-z0-9!$&',()*+,;=\\-._~:@/?%\\s]*\\s*$/i;\nvar formatHintMap = {\n woff: 'woff',\n woff2: 'woff2',\n ttf: 'truetype',\n otf: 'opentype',\n eot: 'embedded-opentype',\n svg: 'svg',\n svgz: 'svg'\n};\n\nfunction generateFormatHint(format, formatHint) {\n if (!formatHint) return '';\n return \" format(\\\"\" + formatHintMap[format] + \"\\\")\";\n}\n\nfunction isDataURI(fontFilePath) {\n return !!fontFilePath.match(dataURIRegex);\n}\n\nfunction generateFileReferences(fontFilePath, fileFormats, formatHint) {\n if (isDataURI(fontFilePath)) {\n return \"url(\\\"\" + fontFilePath + \"\\\")\" + generateFormatHint(fileFormats[0], formatHint);\n }\n\n var fileFontReferences = fileFormats.map(function (format) {\n return \"url(\\\"\" + fontFilePath + \".\" + format + \"\\\")\" + generateFormatHint(format, formatHint);\n });\n return fileFontReferences.join(', ');\n}\n\nfunction generateLocalReferences(localFonts) {\n var localFontReferences = localFonts.map(function (font) {\n return \"local(\\\"\" + font + \"\\\")\";\n });\n return localFontReferences.join(', ');\n}\n\nfunction generateSources(fontFilePath, localFonts, fileFormats, formatHint) {\n var fontReferences = [];\n if (localFonts) fontReferences.push(generateLocalReferences(localFonts));\n\n if (fontFilePath) {\n fontReferences.push(generateFileReferences(fontFilePath, fileFormats, formatHint));\n }\n\n return fontReferences.join(', ');\n}\n/**\n * CSS for a @font-face declaration.\n *\n * @example\n * // Styles as object basic usage\n * const styles = {\n * ...fontFace({\n * 'fontFamily': 'Sans-Pro',\n * 'fontFilePath': 'path/to/file'\n * })\n * }\n *\n * // styled-components basic usage\n * const GlobalStyle = createGlobalStyle`${\n * fontFace({\n * 'fontFamily': 'Sans-Pro',\n * 'fontFilePath': 'path/to/file'\n * }\n * )}`\n *\n * // CSS as JS Output\n *\n * '@font-face': {\n * 'fontFamily': 'Sans-Pro',\n * 'src': 'url(\"path/to/file.eot\"), url(\"path/to/file.woff2\"), url(\"path/to/file.woff\"), url(\"path/to/file.ttf\"), url(\"path/to/file.svg\")',\n * }\n */\n\n\nfunction fontFace(_ref) {\n var fontFamily = _ref.fontFamily,\n fontFilePath = _ref.fontFilePath,\n fontStretch = _ref.fontStretch,\n fontStyle = _ref.fontStyle,\n fontVariant = _ref.fontVariant,\n fontWeight = _ref.fontWeight,\n _ref$fileFormats = _ref.fileFormats,\n fileFormats = _ref$fileFormats === void 0 ? ['eot', 'woff2', 'woff', 'ttf', 'svg'] : _ref$fileFormats,\n _ref$formatHint = _ref.formatHint,\n formatHint = _ref$formatHint === void 0 ? false : _ref$formatHint,\n localFonts = _ref.localFonts,\n unicodeRange = _ref.unicodeRange,\n fontDisplay = _ref.fontDisplay,\n fontVariationSettings = _ref.fontVariationSettings,\n fontFeatureSettings = _ref.fontFeatureSettings;\n // Error Handling\n if (!fontFamily) throw new PolishedError(55);\n\n if (!fontFilePath && !localFonts) {\n throw new PolishedError(52);\n }\n\n if (localFonts && !Array.isArray(localFonts)) {\n throw new PolishedError(53);\n }\n\n if (!Array.isArray(fileFormats)) {\n throw new PolishedError(54);\n }\n\n var fontFaceDeclaration = {\n '@font-face': {\n fontFamily: fontFamily,\n src: generateSources(fontFilePath, localFonts, fileFormats, formatHint),\n unicodeRange: unicodeRange,\n fontStretch: fontStretch,\n fontStyle: fontStyle,\n fontVariant: fontVariant,\n fontWeight: fontWeight,\n fontDisplay: fontDisplay,\n fontVariationSettings: fontVariationSettings,\n fontFeatureSettings: fontFeatureSettings\n }\n }; // Removes undefined fields for cleaner css object.\n\n return JSON.parse(JSON.stringify(fontFaceDeclaration));\n}\n\n/**\n * CSS to hide text to show a background image in a SEO-friendly way.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'backgroundImage': 'url(logo.png)',\n * ...hideText(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * backgroundImage: url(logo.png);\n * ${hideText()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'backgroundImage': 'url(logo.png)',\n * 'textIndent': '101%',\n * 'overflow': 'hidden',\n * 'whiteSpace': 'nowrap',\n * }\n */\nfunction hideText() {\n return {\n textIndent: '101%',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n };\n}\n\n/**\n * CSS to hide content visually but remain accessible to screen readers.\n * from [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate/blob/9a176f57af1cfe8ec70300da4621fb9b07e5fa31/src/css/main.css#L121)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...hideVisually(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${hideVisually()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'border': '0',\n * 'clip': 'rect(0 0 0 0)',\n * 'height': '1px',\n * 'margin': '-1px',\n * 'overflow': 'hidden',\n * 'padding': '0',\n * 'position': 'absolute',\n * 'whiteSpace': 'nowrap',\n * 'width': '1px',\n * }\n */\nfunction hideVisually() {\n return {\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n };\n}\n\n/**\n * Generates a media query to target HiDPI devices.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * [hiDPI(1.5)]: {\n * width: 200px;\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${hiDPI(1.5)} {\n * width: 200px;\n * }\n * `\n *\n * // CSS as JS Output\n *\n * '@media only screen and (-webkit-min-device-pixel-ratio: 1.5),\n * only screen and (min--moz-device-pixel-ratio: 1.5),\n * only screen and (-o-min-device-pixel-ratio: 1.5/1),\n * only screen and (min-resolution: 144dpi),\n * only screen and (min-resolution: 1.5dppx)': {\n * 'width': '200px',\n * }\n */\nfunction hiDPI(ratio) {\n if (ratio === void 0) {\n ratio = 1.3;\n }\n\n return \"\\n @media only screen and (-webkit-min-device-pixel-ratio: \" + ratio + \"),\\n only screen and (min--moz-device-pixel-ratio: \" + ratio + \"),\\n only screen and (-o-min-device-pixel-ratio: \" + ratio + \"/1),\\n only screen and (min-resolution: \" + Math.round(ratio * 96) + \"dpi),\\n only screen and (min-resolution: \" + ratio + \"dppx)\\n \";\n}\n\nfunction constructGradientValue(literals) {\n var template = '';\n\n for (var _len = arguments.length, substitutions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n substitutions[_key - 1] = arguments[_key];\n }\n\n for (var i = 0; i < literals.length; i += 1) {\n template += literals[i];\n\n if (i === substitutions.length - 1 && substitutions[i]) {\n var definedValues = substitutions.filter(function (substitute) {\n return !!substitute;\n }); // Adds leading coma if properties preceed color-stops\n\n if (definedValues.length > 1) {\n template = template.slice(0, -1);\n template += \", \" + substitutions[i]; // No trailing space if color-stops is the only param provided\n } else if (definedValues.length === 1) {\n template += \"\" + substitutions[i];\n }\n } else if (substitutions[i]) {\n template += substitutions[i] + \" \";\n }\n }\n\n return template.trim();\n}\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteralLoose([\"linear-gradient(\", \"\", \")\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n/**\n * CSS for declaring a linear gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...linearGradient({\n colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n toDirection: 'to top right',\n fallback: '#FFF',\n })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${linearGradient({\n colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n toDirection: 'to top right',\n fallback: '#FFF',\n })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n * 'backgroundColor': '#FFF',\n * 'backgroundImage': 'linear-gradient(to top right, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction linearGradient(_ref) {\n var colorStops = _ref.colorStops,\n fallback = _ref.fallback,\n _ref$toDirection = _ref.toDirection,\n toDirection = _ref$toDirection === void 0 ? '' : _ref$toDirection;\n\n if (!colorStops || colorStops.length < 2) {\n throw new PolishedError(56);\n }\n\n return {\n backgroundColor: fallback || colorStops[0].split(' ')[0],\n backgroundImage: constructGradientValue(_templateObject(), toDirection, colorStops.join(', '))\n };\n}\n\n/**\n * CSS to normalize abnormalities across browsers (normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...normalize(),\n * }\n *\n * // styled-components usage\n * const GlobalStyle = createGlobalStyle`${normalize()}`\n *\n * // CSS as JS Output\n *\n * html {\n * lineHeight: 1.15,\n * textSizeAdjust: 100%,\n * } ...\n */\nfunction normalize() {\n var _ref;\n\n return [(_ref = {\n html: {\n lineHeight: '1.15',\n textSizeAdjust: '100%'\n },\n body: {\n margin: '0'\n },\n main: {\n display: 'block'\n },\n h1: {\n fontSize: '2em',\n margin: '0.67em 0'\n },\n hr: {\n boxSizing: 'content-box',\n height: '0',\n overflow: 'visible'\n },\n pre: {\n fontFamily: 'monospace, monospace',\n fontSize: '1em'\n },\n a: {\n backgroundColor: 'transparent'\n },\n 'abbr[title]': {\n borderBottom: 'none',\n textDecoration: 'underline'\n }\n }, _ref[\"b,\\n strong\"] = {\n fontWeight: 'bolder'\n }, _ref[\"code,\\n kbd,\\n samp\"] = {\n fontFamily: 'monospace, monospace',\n fontSize: '1em'\n }, _ref.small = {\n fontSize: '80%'\n }, _ref[\"sub,\\n sup\"] = {\n fontSize: '75%',\n lineHeight: '0',\n position: 'relative',\n verticalAlign: 'baseline'\n }, _ref.sub = {\n bottom: '-0.25em'\n }, _ref.sup = {\n top: '-0.5em'\n }, _ref.img = {\n borderStyle: 'none'\n }, _ref[\"button,\\n input,\\n optgroup,\\n select,\\n textarea\"] = {\n fontFamily: 'inherit',\n fontSize: '100%',\n lineHeight: '1.15',\n margin: '0'\n }, _ref[\"button,\\n input\"] = {\n overflow: 'visible'\n }, _ref[\"button,\\n select\"] = {\n textTransform: 'none'\n }, _ref[\"button,\\n html [type=\\\"button\\\"],\\n [type=\\\"reset\\\"],\\n [type=\\\"submit\\\"]\"] = {\n WebkitAppearance: 'button'\n }, _ref[\"button::-moz-focus-inner,\\n [type=\\\"button\\\"]::-moz-focus-inner,\\n [type=\\\"reset\\\"]::-moz-focus-inner,\\n [type=\\\"submit\\\"]::-moz-focus-inner\"] = {\n borderStyle: 'none',\n padding: '0'\n }, _ref[\"button:-moz-focusring,\\n [type=\\\"button\\\"]:-moz-focusring,\\n [type=\\\"reset\\\"]:-moz-focusring,\\n [type=\\\"submit\\\"]:-moz-focusring\"] = {\n outline: '1px dotted ButtonText'\n }, _ref.fieldset = {\n padding: '0.35em 0.625em 0.75em'\n }, _ref.legend = {\n boxSizing: 'border-box',\n color: 'inherit',\n display: 'table',\n maxWidth: '100%',\n padding: '0',\n whiteSpace: 'normal'\n }, _ref.progress = {\n verticalAlign: 'baseline'\n }, _ref.textarea = {\n overflow: 'auto'\n }, _ref[\"[type=\\\"checkbox\\\"],\\n [type=\\\"radio\\\"]\"] = {\n boxSizing: 'border-box',\n padding: '0'\n }, _ref[\"[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n [type=\\\"number\\\"]::-webkit-outer-spin-button\"] = {\n height: 'auto'\n }, _ref['[type=\"search\"]'] = {\n WebkitAppearance: 'textfield',\n outlineOffset: '-2px'\n }, _ref['[type=\"search\"]::-webkit-search-decoration'] = {\n WebkitAppearance: 'none'\n }, _ref['::-webkit-file-upload-button'] = {\n WebkitAppearance: 'button',\n font: 'inherit'\n }, _ref.details = {\n display: 'block'\n }, _ref.summary = {\n display: 'list-item'\n }, _ref.template = {\n display: 'none'\n }, _ref['[hidden]'] = {\n display: 'none'\n }, _ref), {\n 'abbr[title]': {\n textDecoration: 'underline dotted'\n }\n }];\n}\n\nfunction _templateObject$1() {\n var data = _taggedTemplateLiteralLoose([\"radial-gradient(\", \"\", \"\", \"\", \")\"]);\n\n _templateObject$1 = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n/**\n * CSS for declaring a radial gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...radialGradient({\n * colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n * extent: 'farthest-corner at 45px 45px',\n * position: 'center',\n * shape: 'ellipse',\n * })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${radialGradient({\n * colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n * extent: 'farthest-corner at 45px 45px',\n * position: 'center',\n * shape: 'ellipse',\n * })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n * 'backgroundColor': '#00FFFF',\n * 'backgroundImage': 'radial-gradient(center ellipse farthest-corner at 45px 45px, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction radialGradient(_ref) {\n var colorStops = _ref.colorStops,\n _ref$extent = _ref.extent,\n extent = _ref$extent === void 0 ? '' : _ref$extent,\n fallback = _ref.fallback,\n _ref$position = _ref.position,\n position = _ref$position === void 0 ? '' : _ref$position,\n _ref$shape = _ref.shape,\n shape = _ref$shape === void 0 ? '' : _ref$shape;\n\n if (!colorStops || colorStops.length < 2) {\n throw new PolishedError(57);\n }\n\n return {\n backgroundColor: fallback || colorStops[0].split(' ')[0],\n backgroundImage: constructGradientValue(_templateObject$1(), position, shape, extent, colorStops.join(', '))\n };\n}\n\n/**\n * A helper to generate a retina background image and non-retina\n * background image. The retina background image will output to a HiDPI media query. The mixin uses\n * a _2x.png filename suffix by default.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...retinaImage('my-img')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${retinaImage('my-img')}\n * `\n *\n * // CSS as JS Output\n * div {\n * backgroundImage: 'url(my-img.png)',\n * '@media only screen and (-webkit-min-device-pixel-ratio: 1.3),\n * only screen and (min--moz-device-pixel-ratio: 1.3),\n * only screen and (-o-min-device-pixel-ratio: 1.3/1),\n * only screen and (min-resolution: 144dpi),\n * only screen and (min-resolution: 1.5dppx)': {\n * backgroundImage: 'url(my-img_2x.png)',\n * }\n * }\n */\nfunction retinaImage(filename, backgroundSize, extension, retinaFilename, retinaSuffix) {\n var _ref;\n\n if (extension === void 0) {\n extension = 'png';\n }\n\n if (retinaSuffix === void 0) {\n retinaSuffix = '_2x';\n }\n\n if (!filename) {\n throw new PolishedError(58);\n } // Replace the dot at the beginning of the passed extension if one exists\n\n\n var ext = extension.replace(/^\\./, '');\n var rFilename = retinaFilename ? retinaFilename + \".\" + ext : \"\" + filename + retinaSuffix + \".\" + ext;\n return _ref = {\n backgroundImage: \"url(\" + filename + \".\" + ext + \")\"\n }, _ref[hiDPI()] = _extends({\n backgroundImage: \"url(\" + rFilename + \")\"\n }, backgroundSize ? {\n backgroundSize: backgroundSize\n } : {}), _ref;\n}\n\n/* eslint-disable key-spacing */\nvar functionsMap = {\n easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',\n easeInCirc: 'cubic-bezier(0.600, 0.040, 0.980, 0.335)',\n easeInCubic: 'cubic-bezier(0.550, 0.055, 0.675, 0.190)',\n easeInExpo: 'cubic-bezier(0.950, 0.050, 0.795, 0.035)',\n easeInQuad: 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n easeInQuart: 'cubic-bezier(0.895, 0.030, 0.685, 0.220)',\n easeInQuint: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',\n easeInSine: 'cubic-bezier(0.470, 0.000, 0.745, 0.715)',\n easeOutBack: 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',\n easeOutCubic: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',\n easeOutCirc: 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',\n easeOutExpo: 'cubic-bezier(0.190, 1.000, 0.220, 1.000)',\n easeOutQuad: 'cubic-bezier(0.250, 0.460, 0.450, 0.940)',\n easeOutQuart: 'cubic-bezier(0.165, 0.840, 0.440, 1.000)',\n easeOutQuint: 'cubic-bezier(0.230, 1.000, 0.320, 1.000)',\n easeOutSine: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n easeInOutBack: 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',\n easeInOutCirc: 'cubic-bezier(0.785, 0.135, 0.150, 0.860)',\n easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',\n easeInOutExpo: 'cubic-bezier(1.000, 0.000, 0.000, 1.000)',\n easeInOutQuad: 'cubic-bezier(0.455, 0.030, 0.515, 0.955)',\n easeInOutQuart: 'cubic-bezier(0.770, 0.000, 0.175, 1.000)',\n easeInOutQuint: 'cubic-bezier(0.860, 0.000, 0.070, 1.000)',\n easeInOutSine: 'cubic-bezier(0.445, 0.050, 0.550, 0.950)'\n};\n/* eslint-enable key-spacing */\n\nfunction getTimingFunction(functionName) {\n return functionsMap[functionName];\n}\n/**\n * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * 'transitionTimingFunction': timingFunctions('easeInQuad')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * transitionTimingFunction: ${timingFunctions('easeInQuad')};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n * 'transitionTimingFunction': 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',\n * }\n */\n\n\nfunction timingFunctions(timingFunction) {\n return getTimingFunction(timingFunction);\n}\n\nvar getBorderWidth = function getBorderWidth(pointingDirection, height, width) {\n var fullWidth = \"\" + width[0] + (width[1] || '');\n var halfWidth = \"\" + width[0] / 2 + (width[1] || '');\n var fullHeight = \"\" + height[0] + (height[1] || '');\n var halfHeight = \"\" + height[0] / 2 + (height[1] || '');\n\n switch (pointingDirection) {\n case 'top':\n return \"0 \" + halfWidth + \" \" + fullHeight + \" \" + halfWidth;\n\n case 'topLeft':\n return fullWidth + \" \" + fullHeight + \" 0 0\";\n\n case 'left':\n return halfHeight + \" \" + fullWidth + \" \" + halfHeight + \" 0\";\n\n case 'bottomLeft':\n return fullWidth + \" 0 0 \" + fullHeight;\n\n case 'bottom':\n return fullHeight + \" \" + halfWidth + \" 0 \" + halfWidth;\n\n case 'bottomRight':\n return \"0 0 \" + fullWidth + \" \" + fullHeight;\n\n case 'right':\n return halfHeight + \" 0 \" + halfHeight + \" \" + fullWidth;\n\n case 'topRight':\n default:\n return \"0 \" + fullWidth + \" \" + fullHeight + \" 0\";\n }\n};\n\nvar getBorderColor = function getBorderColor(pointingDirection, foregroundColor, backgroundColor) {\n switch (pointingDirection) {\n case 'top':\n case 'bottomRight':\n return backgroundColor + \" \" + backgroundColor + \" \" + foregroundColor + \" \" + backgroundColor;\n\n case 'right':\n case 'bottomLeft':\n return backgroundColor + \" \" + backgroundColor + \" \" + backgroundColor + \" \" + foregroundColor;\n\n case 'bottom':\n case 'topLeft':\n return foregroundColor + \" \" + backgroundColor + \" \" + backgroundColor + \" \" + backgroundColor;\n\n case 'left':\n case 'topRight':\n return backgroundColor + \" \" + foregroundColor + \" \" + backgroundColor + \" \" + backgroundColor;\n\n default:\n throw new PolishedError(59);\n }\n};\n/**\n * CSS to represent triangle with any pointing direction with an optional background color.\n *\n * @example\n * // Styles as object usage\n *\n * const styles = {\n * ...triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })\n * }\n *\n *\n * // styled-components usage\n * const div = styled.div`\n * ${triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })}\n *\n *\n * // CSS as JS Output\n *\n * div: {\n * 'borderColor': 'transparent transparent transparent red',\n * 'borderStyle': 'solid',\n * 'borderWidth': '50px 0 50px 100px',\n * 'height': '0',\n * 'width': '0',\n * }\n */\n\n\nfunction triangle(_ref) {\n var pointingDirection = _ref.pointingDirection,\n height = _ref.height,\n width = _ref.width,\n foregroundColor = _ref.foregroundColor,\n _ref$backgroundColor = _ref.backgroundColor,\n backgroundColor = _ref$backgroundColor === void 0 ? 'transparent' : _ref$backgroundColor;\n var widthAndUnit = getValueAndUnit(width);\n var heightAndUnit = getValueAndUnit(height);\n\n if (isNaN(heightAndUnit[0]) || isNaN(widthAndUnit[0])) {\n throw new PolishedError(60);\n }\n\n return {\n width: '0',\n height: '0',\n borderColor: getBorderColor(pointingDirection, foregroundColor, backgroundColor),\n borderStyle: 'solid',\n borderWidth: getBorderWidth(pointingDirection, heightAndUnit, widthAndUnit)\n };\n}\n\n/**\n * Provides an easy way to change the `wordWrap` property.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...wordWrap('break-word')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${wordWrap('break-word')}\n * `\n *\n * // CSS as JS Output\n *\n * const styles = {\n * overflowWrap: 'break-word',\n * wordWrap: 'break-word',\n * wordBreak: 'break-all',\n * }\n */\nfunction wordWrap(wrap) {\n if (wrap === void 0) {\n wrap = 'break-word';\n }\n\n var wordBreak = wrap === 'break-word' ? 'break-all' : wrap;\n return {\n overflowWrap: wrap,\n wordWrap: wrap,\n wordBreak: wordBreak\n };\n}\n\nfunction colorToInt(color) {\n return Math.round(color * 255);\n}\n\nfunction convertToInt(red, green, blue) {\n return colorToInt(red) + \",\" + colorToInt(green) + \",\" + colorToInt(blue);\n}\n\nfunction hslToRgb(hue, saturation, lightness, convert) {\n if (convert === void 0) {\n convert = convertToInt;\n }\n\n if (saturation === 0) {\n // achromatic\n return convert(lightness, lightness, lightness);\n } // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n\n\n var huePrime = (hue % 360 + 360) % 360 / 60;\n var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;\n var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n var red = 0;\n var green = 0;\n var blue = 0;\n\n if (huePrime >= 0 && huePrime < 1) {\n red = chroma;\n green = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n red = secondComponent;\n green = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n green = chroma;\n blue = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n green = secondComponent;\n blue = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n red = secondComponent;\n blue = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n red = chroma;\n blue = secondComponent;\n }\n\n var lightnessModification = lightness - chroma / 2;\n var finalRed = red + lightnessModification;\n var finalGreen = green + lightnessModification;\n var finalBlue = blue + lightnessModification;\n return convert(finalRed, finalGreen, finalBlue);\n}\n\nvar namedColorMap = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkgrey: 'a9a9a9',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n grey: '808080',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgreen: '90ee90',\n lightgrey: 'd3d3d3',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '789',\n lightslategrey: '789',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '0f0',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'f0f',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370db',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'db7093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '639',\n red: 'f00',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'fff',\n whitesmoke: 'f5f5f5',\n yellow: 'ff0',\n yellowgreen: '9acd32'\n};\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n * @private\n */\n\nfunction nameToHex(color) {\n if (typeof color !== 'string') return color;\n var normalizedColorName = color.toLowerCase();\n return namedColorMap[normalizedColorName] ? \"#\" + namedColorMap[normalizedColorName] : color;\n}\n\nvar hexRegex = /^#[a-fA-F0-9]{6}$/;\nvar hexRgbaRegex = /^#[a-fA-F0-9]{8}$/;\nvar reducedHexRegex = /^#[a-fA-F0-9]{3}$/;\nvar reducedRgbaHexRegex = /^#[a-fA-F0-9]{4}$/;\nvar rgbRegex = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i;\nvar rgbaRegex = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*([-+]?[0-9]*[.]?[0-9]+)\\s*\\)$/i;\nvar hslRegex = /^hsl\\(\\s*(\\d{0,3}[.]?[0-9]+)\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*\\)$/i;\nvar hslaRegex = /^hsla\\(\\s*(\\d{0,3}[.]?[0-9]+)\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*([-+]?[0-9]*[.]?[0-9]+)\\s*\\)$/i;\n/**\n * Returns an RgbColor or RgbaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a RgbColor or RgbaColor object back to a string.\n *\n * @example\n * // Assigns `{ red: 255, green: 0, blue: 0 }` to color1\n * const color1 = parseToRgb('rgb(255, 0, 0)');\n * // Assigns `{ red: 92, green: 102, blue: 112, alpha: 0.75 }` to color2\n * const color2 = parseToRgb('hsla(210, 10%, 40%, 0.75)');\n */\n\nfunction parseToRgb(color) {\n if (typeof color !== 'string') {\n throw new PolishedError(3);\n }\n\n var normalizedColor = nameToHex(color);\n\n if (normalizedColor.match(hexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16)\n };\n }\n\n if (normalizedColor.match(hexRgbaRegex)) {\n var alpha = parseFloat((parseInt(\"\" + normalizedColor[7] + normalizedColor[8], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16),\n alpha: alpha\n };\n }\n\n if (normalizedColor.match(reducedHexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16)\n };\n }\n\n if (normalizedColor.match(reducedRgbaHexRegex)) {\n var _alpha = parseFloat((parseInt(\"\" + normalizedColor[4] + normalizedColor[4], 16) / 255).toFixed(2));\n\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16),\n alpha: _alpha\n };\n }\n\n var rgbMatched = rgbRegex.exec(normalizedColor);\n\n if (rgbMatched) {\n return {\n red: parseInt(\"\" + rgbMatched[1], 10),\n green: parseInt(\"\" + rgbMatched[2], 10),\n blue: parseInt(\"\" + rgbMatched[3], 10)\n };\n }\n\n var rgbaMatched = rgbaRegex.exec(normalizedColor);\n\n if (rgbaMatched) {\n return {\n red: parseInt(\"\" + rgbaMatched[1], 10),\n green: parseInt(\"\" + rgbaMatched[2], 10),\n blue: parseInt(\"\" + rgbaMatched[3], 10),\n alpha: parseFloat(\"\" + rgbaMatched[4])\n };\n }\n\n var hslMatched = hslRegex.exec(normalizedColor);\n\n if (hslMatched) {\n var hue = parseInt(\"\" + hslMatched[1], 10);\n var saturation = parseInt(\"\" + hslMatched[2], 10) / 100;\n var lightness = parseInt(\"\" + hslMatched[3], 10) / 100;\n var rgbColorString = \"rgb(\" + hslToRgb(hue, saturation, lightness) + \")\";\n var hslRgbMatched = rgbRegex.exec(rgbColorString);\n\n if (!hslRgbMatched) {\n throw new PolishedError(4, normalizedColor, rgbColorString);\n }\n\n return {\n red: parseInt(\"\" + hslRgbMatched[1], 10),\n green: parseInt(\"\" + hslRgbMatched[2], 10),\n blue: parseInt(\"\" + hslRgbMatched[3], 10)\n };\n }\n\n var hslaMatched = hslaRegex.exec(normalizedColor);\n\n if (hslaMatched) {\n var _hue = parseInt(\"\" + hslaMatched[1], 10);\n\n var _saturation = parseInt(\"\" + hslaMatched[2], 10) / 100;\n\n var _lightness = parseInt(\"\" + hslaMatched[3], 10) / 100;\n\n var _rgbColorString = \"rgb(\" + hslToRgb(_hue, _saturation, _lightness) + \")\";\n\n var _hslRgbMatched = rgbRegex.exec(_rgbColorString);\n\n if (!_hslRgbMatched) {\n throw new PolishedError(4, normalizedColor, _rgbColorString);\n }\n\n return {\n red: parseInt(\"\" + _hslRgbMatched[1], 10),\n green: parseInt(\"\" + _hslRgbMatched[2], 10),\n blue: parseInt(\"\" + _hslRgbMatched[3], 10),\n alpha: parseFloat(\"\" + hslaMatched[4])\n };\n }\n\n throw new PolishedError(5);\n}\n\nfunction rgbToHsl(color) {\n // make sure rgb are contained in a set of [0, 255]\n var red = color.red / 255;\n var green = color.green / 255;\n var blue = color.blue / 255;\n var max = Math.max(red, green, blue);\n var min = Math.min(red, green, blue);\n var lightness = (max + min) / 2;\n\n if (max === min) {\n // achromatic\n if (color.alpha !== undefined) {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness,\n alpha: color.alpha\n };\n } else {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness\n };\n }\n }\n\n var hue;\n var delta = max - min;\n var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n switch (max) {\n case red:\n hue = (green - blue) / delta + (green < blue ? 6 : 0);\n break;\n\n case green:\n hue = (blue - red) / delta + 2;\n break;\n\n default:\n // blue case\n hue = (red - green) / delta + 4;\n break;\n }\n\n hue *= 60;\n\n if (color.alpha !== undefined) {\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness,\n alpha: color.alpha\n };\n }\n\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness\n };\n}\n\n/**\n * Returns an HslColor or HslaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a HslColor or HslaColor object back to a string.\n *\n * @example\n * // Assigns `{ hue: 0, saturation: 1, lightness: 0.5 }` to color1\n * const color1 = parseToHsl('rgb(255, 0, 0)');\n * // Assigns `{ hue: 128, saturation: 1, lightness: 0.5, alpha: 0.75 }` to color2\n * const color2 = parseToHsl('hsla(128, 100%, 50%, 0.75)');\n */\nfunction parseToHsl(color) {\n // Note: At a later stage we can optimize this function as right now a hsl\n // color would be parsed converted to rgb values and converted back to hsl.\n return rgbToHsl(parseToRgb(color));\n}\n\n/**\n * Reduces hex values if possible e.g. #ff8866 to #f86\n * @private\n */\nvar reduceHexValue = function reduceHexValue(value) {\n if (value.length === 7 && value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {\n return \"#\" + value[1] + value[3] + value[5];\n }\n\n return value;\n};\n\nfunction numberToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n}\n\nfunction colorToHex(color) {\n return numberToHex(Math.round(color * 255));\n}\n\nfunction convertToHex(red, green, blue) {\n return reduceHexValue(\"#\" + colorToHex(red) + colorToHex(green) + colorToHex(blue));\n}\n\nfunction hslToHex(hue, saturation, lightness) {\n return hslToRgb(hue, saturation, lightness, convertToHex);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsl(359, 0.75, 0.4),\n * background: hsl({ hue: 360, saturation: 0.75, lightness: 0.4 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsl(359, 0.75, 0.4)};\n * background: ${hsl({ hue: 360, saturation: 0.75, lightness: 0.4 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#b3191c\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsl(value, saturation, lightness) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number') {\n return hslToHex(value, saturation, lightness);\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined) {\n return hslToHex(value.hue, value.saturation, value.lightness);\n }\n\n throw new PolishedError(1);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsla(359, 0.75, 0.4, 0.7),\n * background: hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 }),\n * background: hsla(359, 0.75, 0.4, 1),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsla(359, 0.75, 0.4, 0.7)};\n * background: ${hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 })};\n * background: ${hsla(359, 0.75, 0.4, 1)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsla(value, saturation, lightness, alpha) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number' && typeof alpha === 'number') {\n return alpha >= 1 ? hslToHex(value, saturation, lightness) : \"rgba(\" + hslToRgb(value, saturation, lightness) + \",\" + alpha + \")\";\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined && alpha === undefined) {\n return value.alpha >= 1 ? hslToHex(value.hue, value.saturation, value.lightness) : \"rgba(\" + hslToRgb(value.hue, value.saturation, value.lightness) + \",\" + value.alpha + \")\";\n }\n\n throw new PolishedError(2);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgb(255, 205, 100),\n * background: rgb({ red: 255, green: 205, blue: 100 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgb(255, 205, 100)};\n * background: ${rgb({ red: 255, green: 205, blue: 100 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffcd64\";\n * background: \"#ffcd64\";\n * }\n */\nfunction rgb(value, green, blue) {\n if (typeof value === 'number' && typeof green === 'number' && typeof blue === 'number') {\n return reduceHexValue(\"#\" + numberToHex(value) + numberToHex(green) + numberToHex(blue));\n } else if (typeof value === 'object' && green === undefined && blue === undefined) {\n return reduceHexValue(\"#\" + numberToHex(value.red) + numberToHex(value.green) + numberToHex(value.blue));\n }\n\n throw new PolishedError(6);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * Can also be used to fade a color by passing a hex value or named CSS color along with an alpha value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgba(255, 205, 100, 0.7),\n * background: rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 }),\n * background: rgba(255, 205, 100, 1),\n * background: rgba('#ffffff', 0.4),\n * background: rgba('black', 0.7),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgba(255, 205, 100, 0.7)};\n * background: ${rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 })};\n * background: ${rgba(255, 205, 100, 1)};\n * background: ${rgba('#ffffff', 0.4)};\n * background: ${rgba('black', 0.7)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"#ffcd64\";\n * background: \"rgba(255,255,255,0.4)\";\n * background: \"rgba(0,0,0,0.7)\";\n * }\n */\nfunction rgba(firstValue, secondValue, thirdValue, fourthValue) {\n if (typeof firstValue === 'string' && typeof secondValue === 'number') {\n var rgbValue = parseToRgb(firstValue);\n return \"rgba(\" + rgbValue.red + \",\" + rgbValue.green + \",\" + rgbValue.blue + \",\" + secondValue + \")\";\n } else if (typeof firstValue === 'number' && typeof secondValue === 'number' && typeof thirdValue === 'number' && typeof fourthValue === 'number') {\n return fourthValue >= 1 ? rgb(firstValue, secondValue, thirdValue) : \"rgba(\" + firstValue + \",\" + secondValue + \",\" + thirdValue + \",\" + fourthValue + \")\";\n } else if (typeof firstValue === 'object' && secondValue === undefined && thirdValue === undefined && fourthValue === undefined) {\n return firstValue.alpha >= 1 ? rgb(firstValue.red, firstValue.green, firstValue.blue) : \"rgba(\" + firstValue.red + \",\" + firstValue.green + \",\" + firstValue.blue + \",\" + firstValue.alpha + \")\";\n }\n\n throw new PolishedError(7);\n}\n\nvar isRgb = function isRgb(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\n\nvar isRgba = function isRgba(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && typeof color.alpha === 'number';\n};\n\nvar isHsl = function isHsl(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\n\nvar isHsla = function isHsla(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && typeof color.alpha === 'number';\n};\n/**\n * Converts a RgbColor, RgbaColor, HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb`, `rgba`, `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: toColorString({ red: 255, green: 205, blue: 100 }),\n * background: toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * background: toColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${toColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * background: ${toColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\n\n\nfunction toColorString(color) {\n if (typeof color !== 'object') throw new PolishedError(8);\n if (isRgba(color)) return rgba(color);\n if (isRgb(color)) return rgb(color);\n if (isHsla(color)) return hsla(color);\n if (isHsl(color)) return hsl(color);\n throw new PolishedError(8);\n}\n\n// Type definitions taken from https://github.com/gcanti/flow-static-land/blob/master/src/Fun.js\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-redeclare\nfunction curried(f, length, acc) {\n return function fn() {\n // eslint-disable-next-line prefer-rest-params\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n} // eslint-disable-next-line no-redeclare\n\n\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}\n\n/**\n * Changes the hue of the color. Hue is a number between 0 to 360. The first\n * argument for adjustHue is the amount of degrees the color is rotated around\n * the color wheel, always producing a positive hue value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: adjustHue(180, '#448'),\n * background: adjustHue('180', 'rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${adjustHue(180, '#448')};\n * background: ${adjustHue('180', 'rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#888844\";\n * background: \"rgba(136,136,68,0.7)\";\n * }\n */\n\nfunction adjustHue(degree, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n hue: hslColor.hue + parseFloat(degree)\n }));\n} // prettier-ignore\n\n\nvar curriedAdjustHue = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(adjustHue);\n\n/**\n * Returns the complement of the provided color. This is identical to adjustHue(180, <color>).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: complement('#448'),\n * background: complement('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${complement('#448')};\n * background: ${complement('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#884\";\n * background: \"rgba(153,153,153,0.7)\";\n * }\n */\n\nfunction complement(color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n hue: (hslColor.hue + 180) % 360\n }));\n}\n\nfunction guard(lowerBoundary, upperBoundary, value) {\n return Math.max(lowerBoundary, Math.min(upperBoundary, value));\n}\n\n/**\n * Returns a string value for the darkened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: darken(0.2, '#FFCD64'),\n * background: darken('0.2', 'rgba(255,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${darken(0.2, '#FFCD64')};\n * background: ${darken('0.2', 'rgba(255,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffbd31\";\n * background: \"rgba(255,189,49,0.7)\";\n * }\n */\n\nfunction darken(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n lightness: guard(0, 1, hslColor.lightness - parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedDarken = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(darken);\n\n/**\n * Decreases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the desaturate function is the amount by how much the color\n * intensity should be decreased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: desaturate(0.2, '#CCCD64'),\n * background: desaturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${desaturate(0.2, '#CCCD64')};\n * background: ${desaturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#b8b979\";\n * background: \"rgba(184,185,121,0.7)\";\n * }\n */\n\nfunction desaturate(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n saturation: guard(0, 1, hslColor.saturation - parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedDesaturate = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(desaturate);\n\n/**\n * Returns a number (float) representing the luminance of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff',\n * background: getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)',\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff'};\n * background: ${getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)'};\n *\n * // CSS in JS Output\n *\n * div {\n * background: \"#CCCD64\";\n * background: \"rgba(58, 133, 255, 1)\";\n * }\n */\n\nfunction getLuminance(color) {\n if (color === 'transparent') return 0;\n var rgbColor = parseToRgb(color);\n\n var _Object$keys$map = Object.keys(rgbColor).map(function (key) {\n var channel = rgbColor[key] / 255;\n return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n }),\n r = _Object$keys$map[0],\n g = _Object$keys$map[1],\n b = _Object$keys$map[2];\n\n return parseFloat((0.2126 * r + 0.7152 * g + 0.0722 * b).toFixed(3));\n}\n\n/**\n * Returns the contrast ratio between two colors based on\n * [W3's recommended equation for calculating contrast](http://www.w3.org/TR/WCAG20/#contrast-ratiodef).\n *\n * @example\n * const contrastRatio = getContrast('#444', '#fff');\n */\n\nfunction getContrast(color1, color2) {\n var luminance1 = getLuminance(color1);\n var luminance2 = getLuminance(color2);\n return parseFloat((luminance1 > luminance2 ? (luminance1 + 0.05) / (luminance2 + 0.05) : (luminance2 + 0.05) / (luminance1 + 0.05)).toFixed(2));\n}\n\n/**\n * Converts the color to a grayscale, by reducing its saturation to 0.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: grayscale('#CCCD64'),\n * background: grayscale('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${grayscale('#CCCD64')};\n * background: ${grayscale('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#999\";\n * background: \"rgba(153,153,153,0.7)\";\n * }\n */\n\nfunction grayscale(color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n saturation: 0\n }));\n}\n\n/**\n * Converts a HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\nfunction hslToColorString(color) {\n if (typeof color === 'object' && typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number') {\n if (color.alpha && typeof color.alpha === 'number') {\n return hsla({\n hue: color.hue,\n saturation: color.saturation,\n lightness: color.lightness,\n alpha: color.alpha\n });\n }\n\n return hsl({\n hue: color.hue,\n saturation: color.saturation,\n lightness: color.lightness\n });\n }\n\n throw new PolishedError(45);\n}\n\n/**\n * Inverts the red, green and blue values of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: invert('#CCCD64'),\n * background: invert('rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${invert('#CCCD64')};\n * background: ${invert('rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#33329b\";\n * background: \"rgba(154,155,50,0.7)\";\n * }\n */\n\nfunction invert(color) {\n if (color === 'transparent') return color; // parse color string to rgb\n\n var value = parseToRgb(color);\n return toColorString(_extends({}, value, {\n red: 255 - value.red,\n green: 255 - value.green,\n blue: 255 - value.blue\n }));\n}\n\n/**\n * Returns a string value for the lightened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: lighten(0.2, '#CCCD64'),\n * background: lighten('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${lighten(0.2, '#FFCD64')};\n * background: ${lighten('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e5e6b1\";\n * background: \"rgba(229,230,177,0.7)\";\n * }\n */\n\nfunction lighten(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n lightness: guard(0, 1, hslColor.lightness + parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedLighten = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(lighten);\n\n/**\n * Determines which contrast guidelines have been met for two colors.\n * Based on the [contrast calculations recommended by W3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-enhanced.html).\n *\n * @example\n * const scores = meetsContrastGuidelines('#444', '#fff');\n */\nfunction meetsContrastGuidelines(color1, color2) {\n var contrastRatio = getContrast(color1, color2);\n return {\n AA: contrastRatio >= 4.5,\n AALarge: contrastRatio >= 3,\n AAA: contrastRatio >= 7,\n AAALarge: contrastRatio >= 4.5\n };\n}\n\n/**\n * Mixes the two provided colors together by calculating the average of each of the RGB components weighted to the first color by the provided weight.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: mix(0.5, '#f00', '#00f')\n * background: mix(0.25, '#f00', '#00f')\n * background: mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${mix(0.5, '#f00', '#00f')};\n * background: ${mix(0.25, '#f00', '#00f')};\n * background: ${mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#7f007f\";\n * background: \"#3f00bf\";\n * background: \"rgba(63, 0, 191, 0.75)\";\n * }\n */\n\nfunction mix(weight, color, otherColor) {\n if (color === 'transparent') return otherColor;\n if (otherColor === 'transparent') return color;\n if (weight === 0) return otherColor;\n var parsedColor1 = parseToRgb(color);\n\n var color1 = _extends({}, parsedColor1, {\n alpha: typeof parsedColor1.alpha === 'number' ? parsedColor1.alpha : 1\n });\n\n var parsedColor2 = parseToRgb(otherColor);\n\n var color2 = _extends({}, parsedColor2, {\n alpha: typeof parsedColor2.alpha === 'number' ? parsedColor2.alpha : 1\n }); // The formula is copied from the original Sass implementation:\n // http://sass-lang.com/documentation/Sass/Script/Functions.html#mix-instance_method\n\n\n var alphaDelta = color1.alpha - color2.alpha;\n var x = parseFloat(weight) * 2 - 1;\n var y = x * alphaDelta === -1 ? x : x + alphaDelta;\n var z = 1 + x * alphaDelta;\n var weight1 = (y / z + 1) / 2.0;\n var weight2 = 1 - weight1;\n var mixedColor = {\n red: Math.floor(color1.red * weight1 + color2.red * weight2),\n green: Math.floor(color1.green * weight1 + color2.green * weight2),\n blue: Math.floor(color1.blue * weight1 + color2.blue * weight2),\n alpha: color1.alpha * (parseFloat(weight) / 1.0) + color2.alpha * (1 - parseFloat(weight) / 1.0)\n };\n return rgba(mixedColor);\n} // prettier-ignore\n\n\nvar curriedMix = /*#__PURE__*/curry\n/* ::<number | string, string, string, string> */\n(mix);\n\n/**\n * Increases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: opacify(0.1, 'rgba(255, 255, 255, 0.9)');\n * background: opacify(0.2, 'hsla(0, 0%, 100%, 0.5)'),\n * background: opacify('0.5', 'rgba(255, 0, 0, 0.2)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${opacify(0.1, 'rgba(255, 255, 255, 0.9)')};\n * background: ${opacify(0.2, 'hsla(0, 0%, 100%, 0.5)')},\n * background: ${opacify('0.5', 'rgba(255, 0, 0, 0.2)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#fff\";\n * background: \"rgba(255,255,255,0.7)\";\n * background: \"rgba(255,0,0,0.7)\";\n * }\n */\n\nfunction opacify(amount, color) {\n if (color === 'transparent') return color;\n var parsedColor = parseToRgb(color);\n var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n\n var colorWithAlpha = _extends({}, parsedColor, {\n alpha: guard(0, 1, (alpha * 100 + parseFloat(amount) * 100) / 100)\n });\n\n return rgba(colorWithAlpha);\n} // prettier-ignore\n\n\nvar curriedOpacify = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(opacify);\n\nvar defaultLightReturnColor = '#000';\nvar defaultDarkReturnColor = '#fff';\n/**\n * Returns black or white (or optional light and dark return colors) for best\n * contrast depending on the luminosity of the given color.\n * When passing custom return colors, set `strict` to `true` to ensure that the\n * return color always meets or exceeds WCAG level AA or greater. If this test\n * fails, the default return color (black or white) is returned in place of the\n * custom return color.\n *\n * Follows [W3C specs for readability](https://www.w3.org/TR/WCAG20-TECHS/G18.html).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * color: readableColor('#000'),\n * color: readableColor('black', '#001', '#ff8'),\n * color: readableColor('white', '#001', '#ff8'),\n * color: readableColor('red', '#333', '#ddd', true)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * color: ${readableColor('#000')};\n * color: ${readableColor('black', '#001', '#ff8')};\n * color: ${readableColor('white', '#001', '#ff8')};\n * color: ${readableColor('red', '#333', '#ddd', true)};\n * `\n *\n * // CSS in JS Output\n * element {\n * color: \"#fff\";\n * color: \"#ff8\";\n * color: \"#001\";\n * color: \"#000\";\n * }\n */\n\nfunction readableColor(color, lightReturnColor, darkReturnColor, strict) {\n if (lightReturnColor === void 0) {\n lightReturnColor = defaultLightReturnColor;\n }\n\n if (darkReturnColor === void 0) {\n darkReturnColor = defaultDarkReturnColor;\n }\n\n if (strict === void 0) {\n strict = false;\n }\n\n var isLightColor = getLuminance(color) > 0.179;\n var preferredReturnColor = isLightColor ? lightReturnColor : darkReturnColor; // TODO: Make `strict` the default behaviour in the next major release.\n // Without `strict`, this may return a color that does not meet WCAG AA.\n\n if (!strict || getContrast(color, preferredReturnColor) >= 4.5) {\n return preferredReturnColor;\n }\n\n return isLightColor ? defaultLightReturnColor : defaultDarkReturnColor;\n}\n\n/**\n * Converts a RgbColor or RgbaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb` or `rgba`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgbToColorString({ red: 255, green: 205, blue: 100 }),\n * background: rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgbToColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * }\n */\nfunction rgbToColorString(color) {\n if (typeof color === 'object' && typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number') {\n if (typeof color.alpha === 'number') {\n return rgba({\n red: color.red,\n green: color.green,\n blue: color.blue,\n alpha: color.alpha\n });\n }\n\n return rgb({\n red: color.red,\n green: color.green,\n blue: color.blue\n });\n }\n\n throw new PolishedError(46);\n}\n\n/**\n * Increases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the saturate function is the amount by how much the color\n * intensity should be increased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: saturate(0.2, '#CCCD64'),\n * background: saturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${saturate(0.2, '#FFCD64')};\n * background: ${saturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e0e250\";\n * background: \"rgba(224,226,80,0.7)\";\n * }\n */\n\nfunction saturate(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = parseToHsl(color);\n return toColorString(_extends({}, hslColor, {\n saturation: guard(0, 1, hslColor.saturation + parseFloat(amount))\n }));\n} // prettier-ignore\n\n\nvar curriedSaturate = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(saturate);\n\n/**\n * Sets the hue of a color to the provided value. The hue range can be\n * from 0 and 359.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setHue(42, '#CCCD64'),\n * background: setHue('244', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setHue(42, '#CCCD64')};\n * background: ${setHue('244', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#cdae64\";\n * background: \"rgba(107,100,205,0.7)\";\n * }\n */\n\nfunction setHue(hue, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n hue: parseFloat(hue)\n }));\n} // prettier-ignore\n\n\nvar curriedSetHue = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(setHue);\n\n/**\n * Sets the lightness of a color to the provided value. The lightness range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setLightness(0.2, '#CCCD64'),\n * background: setLightness('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setLightness(0.2, '#CCCD64')};\n * background: ${setLightness('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#4d4d19\";\n * background: \"rgba(223,224,159,0.7)\";\n * }\n */\n\nfunction setLightness(lightness, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n lightness: parseFloat(lightness)\n }));\n} // prettier-ignore\n\n\nvar curriedSetLightness = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(setLightness);\n\n/**\n * Sets the saturation of a color to the provided value. The saturation range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: setSaturation(0.2, '#CCCD64'),\n * background: setSaturation('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${setSaturation(0.2, '#CCCD64')};\n * background: ${setSaturation('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#adad84\";\n * background: \"rgba(228,229,76,0.7)\";\n * }\n */\n\nfunction setSaturation(saturation, color) {\n if (color === 'transparent') return color;\n return toColorString(_extends({}, parseToHsl(color), {\n saturation: parseFloat(saturation)\n }));\n} // prettier-ignore\n\n\nvar curriedSetSaturation = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(setSaturation);\n\n/**\n * Shades a color by mixing it with black. `shade` can produce\n * hue shifts, where as `darken` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: shade(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${shade(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#00003f\";\n * }\n */\n\nfunction shade(percentage, color) {\n if (color === 'transparent') return color;\n return curriedMix(parseFloat(percentage), 'rgb(0, 0, 0)', color);\n} // prettier-ignore\n\n\nvar curriedShade = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(shade);\n\n/**\n * Tints a color by mixing it with white. `tint` can produce\n * hue shifts, where as `lighten` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: tint(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${tint(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#bfbfff\";\n * }\n */\n\nfunction tint(percentage, color) {\n if (color === 'transparent') return color;\n return curriedMix(parseFloat(percentage), 'rgb(255, 255, 255)', color);\n} // prettier-ignore\n\n\nvar curriedTint = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(tint);\n\n/**\n * Decreases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: transparentize(0.1, '#fff');\n * background: transparentize(0.2, 'hsl(0, 0%, 100%)'),\n * background: transparentize('0.5', 'rgba(255, 0, 0, 0.8)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${transparentize(0.1, '#fff')};\n * background: ${transparentize(0.2, 'hsl(0, 0%, 100%)')},\n * background: ${transparentize('0.5', 'rgba(255, 0, 0, 0.8)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,255,255,0.9)\";\n * background: \"rgba(255,255,255,0.8)\";\n * background: \"rgba(255,0,0,0.3)\";\n * }\n */\n\nfunction transparentize(amount, color) {\n if (color === 'transparent') return color;\n var parsedColor = parseToRgb(color);\n var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n\n var colorWithAlpha = _extends({}, parsedColor, {\n alpha: guard(0, 1, (alpha * 100 - parseFloat(amount) * 100) / 100)\n });\n\n return rgba(colorWithAlpha);\n} // prettier-ignore\n\n\nvar curriedTransparentize = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(transparentize);\n\n/**\n * Shorthand for easily setting the animation property. Allows either multiple arrays with animations\n * or a single animation spread over the arguments.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'animation': 'rotate 1s ease-in-out, colorchange 2s'\n * }\n * @example\n * // Styles as object usage\n * const styles = {\n * ...animation('rotate', '1s', 'ease-in-out')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${animation('rotate', '1s', 'ease-in-out')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'animation': 'rotate 1s ease-in-out'\n * }\n */\nfunction animation() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // Allow single or multiple animations passed\n var multiMode = Array.isArray(args[0]);\n\n if (!multiMode && args.length > 8) {\n throw new PolishedError(64);\n }\n\n var code = args.map(function (arg) {\n if (multiMode && !Array.isArray(arg) || !multiMode && Array.isArray(arg)) {\n throw new PolishedError(65);\n }\n\n if (Array.isArray(arg) && arg.length > 8) {\n throw new PolishedError(66);\n }\n\n return Array.isArray(arg) ? arg.join(' ') : arg;\n }).join(', ');\n return {\n animation: code\n };\n}\n\n/**\n * Shorthand that accepts any number of backgroundImage values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'backgroundImage': 'url(\"/image/background.jpg\"), linear-gradient(red, green)'\n * }\n */\nfunction backgroundImages() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n\n return {\n backgroundImage: properties.join(', ')\n };\n}\n\n/**\n * Shorthand that accepts any number of background values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'background': 'url(\"/image/background.jpg\"), linear-gradient(red, green), center no-repeat'\n * }\n */\nfunction backgrounds() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n\n return {\n background: properties.join(', ')\n };\n}\n\nvar sideMap = ['top', 'right', 'bottom', 'left'];\n/**\n * Shorthand for the border property that splits out individual properties for use with tools like Fela and Styletron. A side keyword can optionally be passed to target only one side's border properties.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * ...border('1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${border('1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderColor': 'red',\n * 'borderStyle': 'solid',\n * 'borderWidth': `1px`,\n * }\n *\n * // Styles as object usage\n * const styles = {\n * ...border('top', '1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${border('top', '1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopColor': 'red',\n * 'borderTopStyle': 'solid',\n * 'borderTopWidth': `1px`,\n * }\n */\n\nfunction border(sideKeyword) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n if (typeof sideKeyword === 'string' && sideMap.indexOf(sideKeyword) >= 0) {\n var _ref;\n\n return _ref = {}, _ref[\"border\" + capitalizeString(sideKeyword) + \"Width\"] = values[0], _ref[\"border\" + capitalizeString(sideKeyword) + \"Style\"] = values[1], _ref[\"border\" + capitalizeString(sideKeyword) + \"Color\"] = values[2], _ref;\n } else {\n values.unshift(sideKeyword);\n return {\n borderWidth: values[0],\n borderStyle: values[1],\n borderColor: values[2]\n };\n }\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderColor('red', 'green', 'blue', 'yellow')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderColor('red', 'green', 'blue', 'yellow')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopColor': 'red',\n * 'borderRightColor': 'green',\n * 'borderBottomColor': 'blue',\n * 'borderLeftColor': 'yellow'\n * }\n */\nfunction borderColor() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['borderColor'].concat(values));\n}\n\n/**\n * Shorthand that accepts a value for side and a value for radius and applies the radius value to both corners of the side.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderRadius('top', '5px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderRadius('top', '5px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopRightRadius': '5px',\n * 'borderTopLeftRadius': '5px',\n * }\n */\nfunction borderRadius(side, radius) {\n var uppercaseSide = capitalizeString(side);\n\n if (!radius && radius !== 0) {\n throw new PolishedError(62);\n }\n\n if (uppercaseSide === 'Top' || uppercaseSide === 'Bottom') {\n var _ref;\n\n return _ref = {}, _ref[\"border\" + uppercaseSide + \"RightRadius\"] = radius, _ref[\"border\" + uppercaseSide + \"LeftRadius\"] = radius, _ref;\n }\n\n if (uppercaseSide === 'Left' || uppercaseSide === 'Right') {\n var _ref2;\n\n return _ref2 = {}, _ref2[\"borderTop\" + uppercaseSide + \"Radius\"] = radius, _ref2[\"borderBottom\" + uppercaseSide + \"Radius\"] = radius, _ref2;\n }\n\n throw new PolishedError(63);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderStyle('solid', 'dashed', 'dotted', 'double')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderStyle('solid', 'dashed', 'dotted', 'double')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopStyle': 'solid',\n * 'borderRightStyle': 'dashed',\n * 'borderBottomStyle': 'dotted',\n * 'borderLeftStyle': 'double'\n * }\n */\nfunction borderStyle() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['borderStyle'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...borderWidth('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${borderWidth('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'borderTopWidth': '12px',\n * 'borderRightWidth': '24px',\n * 'borderBottomWidth': '36px',\n * 'borderLeftWidth': '48px'\n * }\n */\nfunction borderWidth() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['borderWidth'].concat(values));\n}\n\nfunction generateSelectors(template, state) {\n var stateSuffix = state ? \":\" + state : '';\n return template(stateSuffix);\n}\n/**\n * Function helper that adds an array of states to a template of selectors. Used in textInputs and buttons.\n * @private\n */\n\n\nfunction statefulSelectors(states, template, stateMap) {\n if (!template) throw new PolishedError(67);\n if (states.length === 0) return generateSelectors(template, null);\n var selectors = [];\n\n for (var i = 0; i < states.length; i += 1) {\n if (stateMap && stateMap.indexOf(states[i]) < 0) {\n throw new PolishedError(68);\n }\n\n selectors.push(generateSelectors(template, states[i]));\n }\n\n selectors = selectors.join(',');\n return selectors;\n}\n\nvar stateMap = [undefined, null, 'active', 'focus', 'hover'];\n\nfunction template(state) {\n return \"button\" + state + \",\\n input[type=\\\"button\\\"]\" + state + \",\\n input[type=\\\"reset\\\"]\" + state + \",\\n input[type=\\\"submit\\\"]\" + state;\n}\n/**\n * Populates selectors that target all buttons. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n * [buttons('active')]: {\n * 'border': 'none'\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * > ${buttons('active')} {\n * border: none;\n * }\n * `\n *\n * // CSS in JS Output\n *\n * 'button:active,\n * 'input[type=\"button\"]:active,\n * 'input[type=\\\"reset\\\"]:active,\n * 'input[type=\\\"submit\\\"]:active: {\n * 'border': 'none'\n * }\n */\n\n\nfunction buttons() {\n for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n\n return statefulSelectors(states, template, stateMap);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...margin('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${margin('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'marginTop': '12px',\n * 'marginRight': '24px',\n * 'marginBottom': '36px',\n * 'marginLeft': '48px'\n * }\n */\nfunction margin() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['margin'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...padding('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${padding('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'paddingTop': '12px',\n * 'paddingRight': '24px',\n * 'paddingBottom': '36px',\n * 'paddingLeft': '48px'\n * }\n */\nfunction padding() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return directionalProperty.apply(void 0, ['padding'].concat(values));\n}\n\nvar positionMap$1 = ['absolute', 'fixed', 'relative', 'static', 'sticky'];\n/**\n * Shorthand accepts up to five values, including null to skip a value, and maps them to their respective directions. The first value can optionally be a position keyword.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...position('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${position('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'top': '12px',\n * 'right': '24px',\n * 'bottom': '36px',\n * 'left': '48px'\n * }\n *\n * // Styles as object usage\n * const styles = {\n * ...position('absolute', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${position('absolute', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'position': 'absolute',\n * 'top': '12px',\n * 'right': '24px',\n * 'bottom': '36px',\n * 'left': '48px'\n * }\n */\n\nfunction position(firstValue) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n if (positionMap$1.indexOf(firstValue) >= 0 && firstValue) {\n return _extends({}, directionalProperty.apply(void 0, [''].concat(values)), {\n position: firstValue\n });\n } else {\n return directionalProperty.apply(void 0, ['', firstValue].concat(values));\n }\n}\n\n/**\n * Shorthand to set the height and width properties in a single statement.\n * @example\n * // Styles as object usage\n * const styles = {\n * ...size('300px', '250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${size('300px', '250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'height': '300px',\n * 'width': '250px',\n * }\n */\nfunction size(height, width) {\n if (width === void 0) {\n width = height;\n }\n\n return {\n height: height,\n width: width\n };\n}\n\nvar stateMap$1 = [undefined, null, 'active', 'focus', 'hover'];\n\nfunction template$1(state) {\n return \"input[type=\\\"color\\\"]\" + state + \",\\n input[type=\\\"date\\\"]\" + state + \",\\n input[type=\\\"datetime\\\"]\" + state + \",\\n input[type=\\\"datetime-local\\\"]\" + state + \",\\n input[type=\\\"email\\\"]\" + state + \",\\n input[type=\\\"month\\\"]\" + state + \",\\n input[type=\\\"number\\\"]\" + state + \",\\n input[type=\\\"password\\\"]\" + state + \",\\n input[type=\\\"search\\\"]\" + state + \",\\n input[type=\\\"tel\\\"]\" + state + \",\\n input[type=\\\"text\\\"]\" + state + \",\\n input[type=\\\"time\\\"]\" + state + \",\\n input[type=\\\"url\\\"]\" + state + \",\\n input[type=\\\"week\\\"]\" + state + \",\\n input:not([type])\" + state + \",\\n textarea\" + state;\n}\n/**\n * Populates selectors that target all text inputs. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n * [textInputs('active')]: {\n * 'border': 'none'\n * }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * > ${textInputs('active')} {\n * border: none;\n * }\n * `\n *\n * // CSS in JS Output\n *\n * 'input[type=\"color\"]:active,\n * input[type=\"date\"]:active,\n * input[type=\"datetime\"]:active,\n * input[type=\"datetime-local\"]:active,\n * input[type=\"email\"]:active,\n * input[type=\"month\"]:active,\n * input[type=\"number\"]:active,\n * input[type=\"password\"]:active,\n * input[type=\"search\"]:active,\n * input[type=\"tel\"]:active,\n * input[type=\"text\"]:active,\n * input[type=\"time\"]:active,\n * input[type=\"url\"]:active,\n * input[type=\"week\"]:active,\n * input:not([type]):active,\n * textarea:active': {\n * 'border': 'none'\n * }\n */\n\n\nfunction textInputs() {\n for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n\n return statefulSelectors(states, template$1, stateMap$1);\n}\n\n/**\n * Accepts any number of transition values as parameters for creating a single transition statement. You may also pass an array of properties as the first parameter that you would like to apply the same transition values to (second parameter).\n * @example\n * // Styles as object usage\n * const styles = {\n * ...transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s'),\n * ...transitions(['color', 'background-color'], '2.0s ease-in 2s')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * ${transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s')};\n * ${transitions(['color', 'background-color'], '2.0s ease-in 2s'),};\n * `\n *\n * // CSS as JS Output\n *\n * div {\n * 'transition': 'opacity 1.0s ease-in 0s, width 2.0s ease-in 2s'\n * 'transition': 'color 2.0s ease-in 2s, background-color 2.0s ease-in 2s',\n * }\n */\n\nfunction transitions() {\n for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n properties[_key] = arguments[_key];\n }\n\n if (Array.isArray(properties[0]) && properties.length === 2) {\n var value = properties[1];\n\n if (typeof value !== 'string') {\n throw new PolishedError(61);\n }\n\n var transitionsString = properties[0].map(function (property) {\n return property + \" \" + value;\n }).join(', ');\n return {\n transition: transitionsString\n };\n } else {\n return {\n transition: properties.join(', ')\n };\n }\n}\n\nexport { curriedAdjustHue as adjustHue, animation, backgroundImages, backgrounds, between, border, borderColor, borderRadius, borderStyle, borderWidth, buttons, clearFix, complement, cover, cssVar, curriedDarken as darken, curriedDesaturate as desaturate, directionalProperty, ellipsis, em, fluidRange, fontFace, getContrast, getLuminance, getValueAndUnit, grayscale, hiDPI, hideText, hideVisually, hsl, hslToColorString, hsla, invert, curriedLighten as lighten, linearGradient, margin, math, meetsContrastGuidelines, curriedMix as mix, modularScale, normalize, curriedOpacify as opacify, padding, parseToHsl, parseToRgb, position, radialGradient, readableColor, rem, retinaImage, rgb, rgbToColorString, rgba, curriedSaturate as saturate, curriedSetHue as setHue, curriedSetLightness as setLightness, curriedSetSaturation as setSaturation, curriedShade as shade, size, stripUnit, textInputs, timingFunctions, curriedTint as tint, toColorString, transitions, curriedTransparentize as transparentize, triangle, wordWrap };\n","var NOW;\r\n// Include a performance.now polyfill.\r\n// In node.js, use process.hrtime.\r\n// eslint-disable-next-line\r\n// @ts-ignore\r\nif (typeof self === 'undefined' && typeof process !== 'undefined' && process.hrtime) {\r\n NOW = function () {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n var time = process.hrtime();\r\n // Convert [seconds, nanoseconds] to milliseconds.\r\n return time[0] * 1000 + time[1] / 1000000;\r\n };\r\n}\r\n// In a browser, use self.performance.now if it is available.\r\nelse if (typeof self !== 'undefined' && self.performance !== undefined && self.performance.now !== undefined) {\r\n // This must be bound, because directly assigning this function\r\n // leads to an invocation exception in Chrome.\r\n NOW = self.performance.now.bind(self.performance);\r\n}\r\n// Use Date.now if it is available.\r\nelse if (Date.now !== undefined) {\r\n NOW = Date.now;\r\n}\r\n// Otherwise, use 'new Date().getTime()'.\r\nelse {\r\n NOW = function () {\r\n return new Date().getTime();\r\n };\r\n}\r\nvar NOW$1 = NOW;\n\n/**\r\n * Controlling groups of tweens\r\n *\r\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\r\n * In these cases, you may want to create your own smaller groups of tween\r\n */\r\nvar Group = /** @class */ (function () {\r\n function Group() {\r\n this._tweens = {};\r\n this._tweensAddedDuringUpdate = {};\r\n }\r\n Group.prototype.getAll = function () {\r\n var _this = this;\r\n return Object.keys(this._tweens).map(function (tweenId) {\r\n return _this._tweens[tweenId];\r\n });\r\n };\r\n Group.prototype.removeAll = function () {\r\n this._tweens = {};\r\n };\r\n Group.prototype.add = function (tween) {\r\n this._tweens[tween.getId()] = tween;\r\n this._tweensAddedDuringUpdate[tween.getId()] = tween;\r\n };\r\n Group.prototype.remove = function (tween) {\r\n delete this._tweens[tween.getId()];\r\n delete this._tweensAddedDuringUpdate[tween.getId()];\r\n };\r\n Group.prototype.update = function (time, preserve) {\r\n var tweenIds = Object.keys(this._tweens);\r\n if (tweenIds.length === 0) {\r\n return false;\r\n }\r\n time = time !== undefined ? time : NOW$1();\r\n // Tweens are updated in \"batches\". If you add a new tween during an\r\n // update, then the new tween will be updated in the next batch.\r\n // If you remove a tween during an update, it may or may not be updated.\r\n // However, if the removed tween was added during the current batch,\r\n // then it will not be updated.\r\n while (tweenIds.length > 0) {\r\n this._tweensAddedDuringUpdate = {};\r\n for (var i = 0; i < tweenIds.length; i++) {\r\n var tween = this._tweens[tweenIds[i]];\r\n if (tween && tween.update(time) === false && !preserve) {\r\n delete this._tweens[tweenIds[i]];\r\n }\r\n }\r\n tweenIds = Object.keys(this._tweensAddedDuringUpdate);\r\n }\r\n return true;\r\n };\r\n return Group;\r\n}());\n\n/**\r\n * The Ease class provides a collection of easing functions for use with tween.js.\r\n */\r\nvar Easing = {\r\n Linear: {\r\n None: function (amount) {\r\n return amount;\r\n },\r\n },\r\n Quadratic: {\r\n In: function (amount) {\r\n return amount * amount;\r\n },\r\n Out: function (amount) {\r\n return amount * (2 - amount);\r\n },\r\n InOut: function (amount) {\r\n if ((amount *= 2) < 1) {\r\n return 0.5 * amount * amount;\r\n }\r\n return -0.5 * (--amount * (amount - 2) - 1);\r\n },\r\n },\r\n Cubic: {\r\n In: function (amount) {\r\n return amount * amount * amount;\r\n },\r\n Out: function (amount) {\r\n return --amount * amount * amount + 1;\r\n },\r\n InOut: function (amount) {\r\n if ((amount *= 2) < 1) {\r\n return 0.5 * amount * amount * amount;\r\n }\r\n return 0.5 * ((amount -= 2) * amount * amount + 2);\r\n },\r\n },\r\n Quartic: {\r\n In: function (amount) {\r\n return amount * amount * amount * amount;\r\n },\r\n Out: function (amount) {\r\n return 1 - --amount * amount * amount * amount;\r\n },\r\n InOut: function (amount) {\r\n if ((amount *= 2) < 1) {\r\n return 0.5 * amount * amount * amount * amount;\r\n }\r\n return -0.5 * ((amount -= 2) * amount * amount * amount - 2);\r\n },\r\n },\r\n Quintic: {\r\n In: function (amount) {\r\n return amount * amount * amount * amount * amount;\r\n },\r\n Out: function (amount) {\r\n return --amount * amount * amount * amount * amount + 1;\r\n },\r\n InOut: function (amount) {\r\n if ((amount *= 2) < 1) {\r\n return 0.5 * amount * amount * amount * amount * amount;\r\n }\r\n return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);\r\n },\r\n },\r\n Sinusoidal: {\r\n In: function (amount) {\r\n return 1 - Math.cos((amount * Math.PI) / 2);\r\n },\r\n Out: function (amount) {\r\n return Math.sin((amount * Math.PI) / 2);\r\n },\r\n InOut: function (amount) {\r\n return 0.5 * (1 - Math.cos(Math.PI * amount));\r\n },\r\n },\r\n Exponential: {\r\n In: function (amount) {\r\n return amount === 0 ? 0 : Math.pow(1024, amount - 1);\r\n },\r\n Out: function (amount) {\r\n return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);\r\n },\r\n InOut: function (amount) {\r\n if (amount === 0) {\r\n return 0;\r\n }\r\n if (amount === 1) {\r\n return 1;\r\n }\r\n if ((amount *= 2) < 1) {\r\n return 0.5 * Math.pow(1024, amount - 1);\r\n }\r\n return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);\r\n },\r\n },\r\n Circular: {\r\n In: function (amount) {\r\n return 1 - Math.sqrt(1 - amount * amount);\r\n },\r\n Out: function (amount) {\r\n return Math.sqrt(1 - --amount * amount);\r\n },\r\n InOut: function (amount) {\r\n if ((amount *= 2) < 1) {\r\n return -0.5 * (Math.sqrt(1 - amount * amount) - 1);\r\n }\r\n return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);\r\n },\r\n },\r\n Elastic: {\r\n In: function (amount) {\r\n if (amount === 0) {\r\n return 0;\r\n }\r\n if (amount === 1) {\r\n return 1;\r\n }\r\n return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\r\n },\r\n Out: function (amount) {\r\n if (amount === 0) {\r\n return 0;\r\n }\r\n if (amount === 1) {\r\n return 1;\r\n }\r\n return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;\r\n },\r\n InOut: function (amount) {\r\n if (amount === 0) {\r\n return 0;\r\n }\r\n if (amount === 1) {\r\n return 1;\r\n }\r\n amount *= 2;\r\n if (amount < 1) {\r\n return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\r\n }\r\n return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;\r\n },\r\n },\r\n Back: {\r\n In: function (amount) {\r\n var s = 1.70158;\r\n return amount * amount * ((s + 1) * amount - s);\r\n },\r\n Out: function (amount) {\r\n var s = 1.70158;\r\n return --amount * amount * ((s + 1) * amount + s) + 1;\r\n },\r\n InOut: function (amount) {\r\n var s = 1.70158 * 1.525;\r\n if ((amount *= 2) < 1) {\r\n return 0.5 * (amount * amount * ((s + 1) * amount - s));\r\n }\r\n return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);\r\n },\r\n },\r\n Bounce: {\r\n In: function (amount) {\r\n return 1 - Easing.Bounce.Out(1 - amount);\r\n },\r\n Out: function (amount) {\r\n if (amount < 1 / 2.75) {\r\n return 7.5625 * amount * amount;\r\n }\r\n else if (amount < 2 / 2.75) {\r\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\r\n }\r\n else if (amount < 2.5 / 2.75) {\r\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\r\n }\r\n else {\r\n return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;\r\n }\r\n },\r\n InOut: function (amount) {\r\n if (amount < 0.5) {\r\n return Easing.Bounce.In(amount * 2) * 0.5;\r\n }\r\n return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;\r\n },\r\n },\r\n};\n\n/**\r\n *\r\n */\r\nvar Interpolation = {\r\n Linear: function (v, k) {\r\n var m = v.length - 1;\r\n var f = m * k;\r\n var i = Math.floor(f);\r\n var fn = Interpolation.Utils.Linear;\r\n if (k < 0) {\r\n return fn(v[0], v[1], f);\r\n }\r\n if (k > 1) {\r\n return fn(v[m], v[m - 1], m - f);\r\n }\r\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\r\n },\r\n Bezier: function (v, k) {\r\n var b = 0;\r\n var n = v.length - 1;\r\n var pw = Math.pow;\r\n var bn = Interpolation.Utils.Bernstein;\r\n for (var i = 0; i <= n; i++) {\r\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\r\n }\r\n return b;\r\n },\r\n CatmullRom: function (v, k) {\r\n var m = v.length - 1;\r\n var f = m * k;\r\n var i = Math.floor(f);\r\n var fn = Interpolation.Utils.CatmullRom;\r\n if (v[0] === v[m]) {\r\n if (k < 0) {\r\n i = Math.floor((f = m * (1 + k)));\r\n }\r\n return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\r\n }\r\n else {\r\n if (k < 0) {\r\n return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\r\n }\r\n if (k > 1) {\r\n return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\r\n }\r\n return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\r\n }\r\n },\r\n Utils: {\r\n Linear: function (p0, p1, t) {\r\n return (p1 - p0) * t + p0;\r\n },\r\n Bernstein: function (n, i) {\r\n var fc = Interpolation.Utils.Factorial;\r\n return fc(n) / fc(i) / fc(n - i);\r\n },\r\n Factorial: (function () {\r\n var a = [1];\r\n return function (n) {\r\n var s = 1;\r\n if (a[n]) {\r\n return a[n];\r\n }\r\n for (var i = n; i > 1; i--) {\r\n s *= i;\r\n }\r\n a[n] = s;\r\n return s;\r\n };\r\n })(),\r\n CatmullRom: function (p0, p1, p2, p3, t) {\r\n var v0 = (p2 - p0) * 0.5;\r\n var v1 = (p3 - p1) * 0.5;\r\n var t2 = t * t;\r\n var t3 = t * t2;\r\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\r\n },\r\n },\r\n};\n\n/**\r\n * Utils\r\n */\r\nvar Sequence = /** @class */ (function () {\r\n function Sequence() {\r\n }\r\n Sequence.nextId = function () {\r\n return Sequence._nextId++;\r\n };\r\n Sequence._nextId = 0;\r\n return Sequence;\r\n}());\n\n/**\r\n * Tween.js - Licensed under the MIT license\r\n * https://github.com/tweenjs/tween.js\r\n * ----------------------------------------------\r\n *\r\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\r\n * Thank you all, you're awesome!\r\n */\r\nvar Tween = /** @class */ (function () {\r\n function Tween(_object, _group) {\r\n if (_group === void 0) { _group = TWEEN; }\r\n this._object = _object;\r\n this._group = _group;\r\n this._isPaused = false;\r\n this._pauseStart = 0;\r\n this._valuesStart = {};\r\n this._valuesEnd = {};\r\n this._valuesStartRepeat = {};\r\n this._duration = 1000;\r\n this._initialRepeat = 0;\r\n this._repeat = 0;\r\n this._yoyo = false;\r\n this._isPlaying = false;\r\n this._reversed = false;\r\n this._delayTime = 0;\r\n this._startTime = 0;\r\n this._easingFunction = TWEEN.Easing.Linear.None;\r\n this._interpolationFunction = TWEEN.Interpolation.Linear;\r\n this._chainedTweens = [];\r\n this._onStartCallbackFired = false;\r\n this._id = TWEEN.nextId();\r\n this._isChainStopped = false;\r\n }\r\n Tween.prototype.getId = function () {\r\n return this._id;\r\n };\r\n Tween.prototype.isPlaying = function () {\r\n return this._isPlaying;\r\n };\r\n Tween.prototype.isPaused = function () {\r\n return this._isPaused;\r\n };\r\n Tween.prototype.to = function (properties, duration) {\r\n for (var prop in properties) {\r\n this._valuesEnd[prop] = properties[prop];\r\n }\r\n if (duration !== undefined) {\r\n this._duration = duration;\r\n }\r\n return this;\r\n };\r\n Tween.prototype.duration = function (d) {\r\n this._duration = d;\r\n return this;\r\n };\r\n Tween.prototype.start = function (time) {\r\n if (this._isPlaying) {\r\n return this;\r\n }\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._group.add(this);\r\n this._repeat = this._initialRepeat;\r\n if (this._reversed) {\r\n // If we were reversed (f.e. using the yoyo feature) then we need to\r\n // flip the tween direction back to forward.\r\n this._reversed = false;\r\n for (var property in this._valuesStartRepeat) {\r\n this._swapEndStartRepeatValues(property);\r\n this._valuesStart[property] = this._valuesStartRepeat[property];\r\n }\r\n }\r\n this._isPlaying = true;\r\n this._isPaused = false;\r\n this._onStartCallbackFired = false;\r\n this._isChainStopped = false;\r\n this._startTime =\r\n time !== undefined ? (typeof time === 'string' ? TWEEN.now() + parseFloat(time) : time) : TWEEN.now();\r\n this._startTime += this._delayTime;\r\n this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat);\r\n return this;\r\n };\r\n Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat) {\r\n for (var property in _valuesEnd) {\r\n var startValue = _object[property];\r\n var startValueIsArray = Array.isArray(startValue);\r\n var propType = startValueIsArray ? 'array' : typeof startValue;\r\n var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);\r\n // If `to()` specifies a property that doesn't exist in the source object,\r\n // we should not set that property in the object\r\n if (propType === 'undefined' || propType === 'function') {\r\n continue;\r\n }\r\n // Check if an Array was provided as property value\r\n if (isInterpolationList) {\r\n var endValues = _valuesEnd[property];\r\n if (endValues.length === 0) {\r\n continue;\r\n }\r\n // handle an array of relative values\r\n endValues = endValues.map(this._handleRelativeValue.bind(this, startValue));\r\n // Create a local copy of the Array with the start value at the front\r\n _valuesEnd[property] = [startValue].concat(endValues);\r\n }\r\n // handle the deepness of the values\r\n if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\r\n _valuesStart[property] = startValueIsArray ? [] : {};\r\n // eslint-disable-next-line\r\n for (var prop in startValue) {\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n _valuesStart[property][prop] = startValue[prop];\r\n }\r\n _valuesStartRepeat[property] = startValueIsArray ? [] : {}; // TODO? repeat nested values? And yoyo? And array values?\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._setupProperties(startValue, _valuesStart[property], _valuesEnd[property], _valuesStartRepeat[property]);\r\n }\r\n else {\r\n // Save the starting value, but only once.\r\n if (typeof _valuesStart[property] === 'undefined') {\r\n _valuesStart[property] = startValue;\r\n }\r\n if (!startValueIsArray) {\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\r\n }\r\n if (isInterpolationList) {\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\r\n }\r\n else {\r\n _valuesStartRepeat[property] = _valuesStart[property] || 0;\r\n }\r\n }\r\n }\r\n };\r\n Tween.prototype.stop = function () {\r\n if (!this._isChainStopped) {\r\n this._isChainStopped = true;\r\n this.stopChainedTweens();\r\n }\r\n if (!this._isPlaying) {\r\n return this;\r\n }\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._group.remove(this);\r\n this._isPlaying = false;\r\n this._isPaused = false;\r\n if (this._onStopCallback) {\r\n this._onStopCallback(this._object);\r\n }\r\n return this;\r\n };\r\n Tween.prototype.end = function () {\r\n this.update(Infinity);\r\n return this;\r\n };\r\n Tween.prototype.pause = function (time) {\r\n if (this._isPaused || !this._isPlaying) {\r\n return this;\r\n }\r\n this._isPaused = true;\r\n this._pauseStart = time === undefined ? TWEEN.now() : time;\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._group.remove(this);\r\n return this;\r\n };\r\n Tween.prototype.resume = function (time) {\r\n if (!this._isPaused || !this._isPlaying) {\r\n return this;\r\n }\r\n this._isPaused = false;\r\n this._startTime += (time === undefined ? TWEEN.now() : time) - this._pauseStart;\r\n this._pauseStart = 0;\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._group.add(this);\r\n return this;\r\n };\r\n Tween.prototype.stopChainedTweens = function () {\r\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\r\n this._chainedTweens[i].stop();\r\n }\r\n return this;\r\n };\r\n Tween.prototype.group = function (group) {\r\n this._group = group;\r\n return this;\r\n };\r\n Tween.prototype.delay = function (amount) {\r\n this._delayTime = amount;\r\n return this;\r\n };\r\n Tween.prototype.repeat = function (times) {\r\n this._initialRepeat = times;\r\n this._repeat = times;\r\n return this;\r\n };\r\n Tween.prototype.repeatDelay = function (amount) {\r\n this._repeatDelayTime = amount;\r\n return this;\r\n };\r\n Tween.prototype.yoyo = function (yoyo) {\r\n this._yoyo = yoyo;\r\n return this;\r\n };\r\n Tween.prototype.easing = function (easingFunction) {\r\n this._easingFunction = easingFunction;\r\n return this;\r\n };\r\n Tween.prototype.interpolation = function (interpolationFunction) {\r\n this._interpolationFunction = interpolationFunction;\r\n return this;\r\n };\r\n Tween.prototype.chain = function () {\r\n var tweens = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n tweens[_i] = arguments[_i];\r\n }\r\n this._chainedTweens = tweens;\r\n return this;\r\n };\r\n Tween.prototype.onStart = function (callback) {\r\n this._onStartCallback = callback;\r\n return this;\r\n };\r\n Tween.prototype.onUpdate = function (callback) {\r\n this._onUpdateCallback = callback;\r\n return this;\r\n };\r\n Tween.prototype.onRepeat = function (callback) {\r\n this._onRepeatCallback = callback;\r\n return this;\r\n };\r\n Tween.prototype.onComplete = function (callback) {\r\n this._onCompleteCallback = callback;\r\n return this;\r\n };\r\n Tween.prototype.onStop = function (callback) {\r\n this._onStopCallback = callback;\r\n return this;\r\n };\r\n Tween.prototype.update = function (time) {\r\n var property;\r\n var elapsed;\r\n var endTime = this._startTime + this._duration;\r\n if (time > endTime && !this._isPlaying) {\r\n return false;\r\n }\r\n // If the tween was already finished,\r\n if (!this.isPlaying) {\r\n this.start(time);\r\n }\r\n if (time < this._startTime) {\r\n return true;\r\n }\r\n if (this._onStartCallbackFired === false) {\r\n if (this._onStartCallback) {\r\n this._onStartCallback(this._object);\r\n }\r\n this._onStartCallbackFired = true;\r\n }\r\n elapsed = (time - this._startTime) / this._duration;\r\n elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed;\r\n var value = this._easingFunction(elapsed);\r\n // properties transformations\r\n this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);\r\n if (this._onUpdateCallback) {\r\n this._onUpdateCallback(this._object, elapsed);\r\n }\r\n if (elapsed === 1) {\r\n if (this._repeat > 0) {\r\n if (isFinite(this._repeat)) {\r\n this._repeat--;\r\n }\r\n // Reassign starting values, restart by making startTime = now\r\n for (property in this._valuesStartRepeat) {\r\n if (!this._yoyo && typeof this._valuesEnd[property] === 'string') {\r\n this._valuesStartRepeat[property] =\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\r\n }\r\n if (this._yoyo) {\r\n this._swapEndStartRepeatValues(property);\r\n }\r\n this._valuesStart[property] = this._valuesStartRepeat[property];\r\n }\r\n if (this._yoyo) {\r\n this._reversed = !this._reversed;\r\n }\r\n if (this._repeatDelayTime !== undefined) {\r\n this._startTime = time + this._repeatDelayTime;\r\n }\r\n else {\r\n this._startTime = time + this._delayTime;\r\n }\r\n if (this._onRepeatCallback) {\r\n this._onRepeatCallback(this._object);\r\n }\r\n return true;\r\n }\r\n else {\r\n if (this._onCompleteCallback) {\r\n this._onCompleteCallback(this._object);\r\n }\r\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\r\n // Make the chained tweens start exactly at the time they should,\r\n // even if the `update()` method was called way past the duration of the tween\r\n this._chainedTweens[i].start(this._startTime + this._duration);\r\n }\r\n this._isPlaying = false;\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) {\r\n for (var property in _valuesEnd) {\r\n // Don't update properties that do not exist in the source object\r\n if (_valuesStart[property] === undefined) {\r\n continue;\r\n }\r\n var start = _valuesStart[property] || 0;\r\n var end = _valuesEnd[property];\r\n var startIsArray = Array.isArray(_object[property]);\r\n var endIsArray = Array.isArray(end);\r\n var isInterpolationList = !startIsArray && endIsArray;\r\n if (isInterpolationList) {\r\n _object[property] = this._interpolationFunction(end, value);\r\n }\r\n else if (typeof end === 'object' && end) {\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._updateProperties(_object[property], start, end, value);\r\n }\r\n else {\r\n // Parses relative end values with start as base (e.g.: +10, -3)\r\n end = this._handleRelativeValue(start, end);\r\n // Protect against non numeric properties.\r\n if (typeof end === 'number') {\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n _object[property] = start + (end - start) * value;\r\n }\r\n }\r\n }\r\n };\r\n Tween.prototype._handleRelativeValue = function (start, end) {\r\n if (typeof end !== 'string') {\r\n return end;\r\n }\r\n if (end.charAt(0) === '+' || end.charAt(0) === '-') {\r\n return start + parseFloat(end);\r\n }\r\n else {\r\n return parseFloat(end);\r\n }\r\n };\r\n Tween.prototype._swapEndStartRepeatValues = function (property) {\r\n var tmp = this._valuesStartRepeat[property];\r\n if (typeof this._valuesEnd[property] === 'string') {\r\n // eslint-disable-next-line\r\n // @ts-ignore FIXME?\r\n this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\r\n }\r\n else {\r\n this._valuesStartRepeat[property] = this._valuesEnd[property];\r\n }\r\n this._valuesEnd[property] = tmp;\r\n };\r\n return Tween;\r\n}());\n\nvar VERSION = '18.6.0';\n\n/**\r\n * Tween.js - Licensed under the MIT license\r\n * https://github.com/tweenjs/tween.js\r\n * ----------------------------------------------\r\n *\r\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\r\n * Thank you all, you're awesome!\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/**\r\n * Controlling groups of tweens\r\n *\r\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\r\n * In these cases, you may want to create your own smaller groups of tween\r\n */\r\nvar Main = /** @class */ (function (_super) {\r\n __extends(Main, _super);\r\n function Main() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.version = VERSION;\r\n _this.now = NOW$1;\r\n _this.Group = Group;\r\n _this.Easing = Easing;\r\n _this.Interpolation = Interpolation;\r\n _this.nextId = Sequence.nextId;\r\n _this.Tween = Tween;\r\n return _this;\r\n }\r\n return Main;\r\n}(Group));\r\nvar TWEEN = new Main();\n\nexport default TWEEN;\n","import { WebGLRenderer, Scene, PerspectiveCamera, Raycaster, TextureLoader, Vector2, Vector3, Box3, Color, Mesh, SphereGeometry, MeshBasicMaterial, BackSide, EventDispatcher, MOUSE, Quaternion, Spherical, Clock } from 'three';\nimport { TrackballControls } from 'three/examples/jsm/controls/TrackballControls.js';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport { FlyControls } from 'three/examples/jsm/controls/FlyControls.js';\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';\nimport { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';\nimport { parseToRgb, opacify } from 'polished';\nimport TWEEN from '@tweenjs/tween.js';\nimport accessorFn from 'accessor-fn';\nimport Kapsule from 'kapsule';\n\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') {\n return;\n }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".scene-nav-info {\\n bottom: 5px;\\n width: 100%;\\n text-align: center;\\n color: slategrey;\\n opacity: 0.7;\\n font-size: 10px;\\n}\\n\\n.scene-tooltip {\\n color: lavender;\\n font-size: 15px;\\n}\\n\\n.scene-nav-info, .scene-tooltip {\\n position: absolute;\\n font-family: sans-serif;\\n pointer-events: none;\\n}\";\nstyleInject(css_248z);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar three = window.THREE ? window.THREE // Prefer consumption from global THREE, if exists\n: {\n WebGLRenderer: WebGLRenderer,\n Scene: Scene,\n PerspectiveCamera: PerspectiveCamera,\n Raycaster: Raycaster,\n TextureLoader: TextureLoader,\n Vector2: Vector2,\n Vector3: Vector3,\n Box3: Box3,\n Color: Color,\n Mesh: Mesh,\n SphereGeometry: SphereGeometry,\n MeshBasicMaterial: MeshBasicMaterial,\n BackSide: BackSide,\n EventDispatcher: EventDispatcher,\n MOUSE: MOUSE,\n Quaternion: Quaternion,\n Spherical: Spherical,\n Clock: Clock\n};\nvar threeRenderObjects = Kapsule({\n props: {\n width: {\n \"default\": window.innerWidth,\n onChange: function onChange(width, state, prevWidth) {\n isNaN(width) && (state.width = prevWidth);\n }\n },\n height: {\n \"default\": window.innerHeight,\n onChange: function onChange(height, state, prevHeight) {\n isNaN(height) && (state.height = prevHeight);\n }\n },\n backgroundColor: {\n \"default\": '#000011'\n },\n backgroundImageUrl: {},\n onBackgroundImageLoaded: {},\n showNavInfo: {\n \"default\": true\n },\n skyRadius: {\n \"default\": 50000\n },\n objects: {\n \"default\": []\n },\n enablePointerInteraction: {\n \"default\": true,\n onChange: function onChange(_, state) {\n // Reset hover state\n state.hoverObj = null;\n if (state.toolTipElem) state.toolTipElem.innerHTML = '';\n },\n triggerUpdate: false\n },\n lineHoverPrecision: {\n \"default\": 1,\n triggerUpdate: false\n },\n hoverOrderComparator: {\n \"default\": function _default() {\n return -1;\n },\n triggerUpdate: false\n },\n // keep existing order by default\n hoverFilter: {\n \"default\": function _default() {\n return true;\n },\n triggerUpdate: false\n },\n // exclude objects from interaction\n tooltipContent: {\n triggerUpdate: false\n },\n hoverDuringDrag: {\n \"default\": false,\n triggerUpdate: false\n },\n clickAfterDrag: {\n \"default\": false,\n triggerUpdate: false\n },\n onHover: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onClick: {\n \"default\": function _default() {},\n triggerUpdate: false\n },\n onRightClick: {\n triggerUpdate: false\n }\n },\n methods: {\n tick: function tick(state) {\n if (state.initialised) {\n state.controls.update && state.controls.update(state.clock.getDelta()); // timedelta is required for fly controls\n\n state.postProcessingComposer ? state.postProcessingComposer.render() // if using postprocessing, switch the output to it\n : state.renderer.render(state.scene, state.camera);\n\n if (state.enablePointerInteraction) {\n // Update tooltip and trigger onHover events\n var topObject = null;\n\n if (state.hoverDuringDrag || !state.isPointerDragging) {\n var intersects = this.intersectingObjects(state.pointerPos.x, state.pointerPos.y).filter(function (d) {\n return state.hoverFilter(d.object);\n }).sort(function (a, b) {\n return state.hoverOrderComparator(a.object, b.object);\n });\n var topIntersect = intersects.length ? intersects[0] : null;\n topObject = topIntersect ? topIntersect.object : null;\n state.intersectionPoint = topIntersect ? topIntersect.point : null;\n }\n\n if (topObject !== state.hoverObj) {\n state.onHover(topObject, state.hoverObj);\n state.toolTipElem.innerHTML = topObject ? accessorFn(state.tooltipContent)(topObject) || '' : '';\n state.hoverObj = topObject;\n }\n }\n\n TWEEN.update(); // update camera animation tweens\n }\n\n return this;\n },\n getPointerPos: function getPointerPos(state) {\n var _state$pointerPos = state.pointerPos,\n x = _state$pointerPos.x,\n y = _state$pointerPos.y;\n return {\n x: x,\n y: y\n };\n },\n cameraPosition: function cameraPosition(state, position, lookAt, transitionDuration) {\n var camera = state.camera; // Setter\n\n if (position && state.initialised) {\n var finalPos = position;\n var finalLookAt = lookAt || {\n x: 0,\n y: 0,\n z: 0\n };\n\n if (!transitionDuration) {\n // no animation\n setCameraPos(finalPos);\n setLookAt(finalLookAt);\n } else {\n var camPos = Object.assign({}, camera.position);\n var camLookAt = getLookAt();\n new TWEEN.Tween(camPos).to(finalPos, transitionDuration).easing(TWEEN.Easing.Quadratic.Out).onUpdate(setCameraPos).start(); // Face direction in 1/3rd of time\n\n new TWEEN.Tween(camLookAt).to(finalLookAt, transitionDuration / 3).easing(TWEEN.Easing.Quadratic.Out).onUpdate(setLookAt).start();\n }\n\n return this;\n } // Getter\n\n\n return Object.assign({}, camera.position, {\n lookAt: getLookAt()\n }); //\n\n function setCameraPos(pos) {\n var x = pos.x,\n y = pos.y,\n z = pos.z;\n if (x !== undefined) camera.position.x = x;\n if (y !== undefined) camera.position.y = y;\n if (z !== undefined) camera.position.z = z;\n }\n\n function setLookAt(lookAt) {\n state.controls.target = new three.Vector3(lookAt.x, lookAt.y, lookAt.z);\n }\n\n function getLookAt() {\n return Object.assign(new three.Vector3(0, 0, -1000).applyQuaternion(camera.quaternion).add(camera.position));\n }\n },\n zoomToFit: function zoomToFit(state) {\n var transitionDuration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var padding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n\n for (var _len = arguments.length, bboxArgs = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n bboxArgs[_key - 3] = arguments[_key];\n }\n\n return this.fitToBbox(this.getBbox.apply(this, bboxArgs), transitionDuration, padding);\n },\n fitToBbox: function fitToBbox(state, bbox) {\n var transitionDuration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var padding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;\n // based on https://discourse.threejs.org/t/camera-zoom-to-fit-object/936/24\n var camera = state.camera;\n\n if (bbox) {\n var center = new three.Vector3(0, 0, 0); // reset camera aim to center\n\n var maxBoxSide = Math.max.apply(Math, _toConsumableArray(Object.entries(bbox).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n coordType = _ref2[0],\n coords = _ref2[1];\n\n return Math.max.apply(Math, _toConsumableArray(coords.map(function (c) {\n return Math.abs(center[coordType] - c);\n })));\n }))) * 2; // find distance that fits whole bbox within padded fov\n\n var paddedFov = (1 - padding * 2 / state.height) * camera.fov;\n var fitHeightDistance = maxBoxSide / Math.atan(paddedFov * Math.PI / 180);\n var fitWidthDistance = fitHeightDistance / camera.aspect;\n var distance = Math.max(fitHeightDistance, fitWidthDistance);\n\n if (distance > 0) {\n var newCameraPosition = center.clone().sub(camera.position).normalize().multiplyScalar(-distance);\n this.cameraPosition(newCameraPosition, center, transitionDuration);\n }\n }\n\n return this;\n },\n getBbox: function getBbox(state) {\n var objFilter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n var box = new three.Box3(new three.Vector3(0, 0, 0), new three.Vector3(0, 0, 0));\n var objs = state.objects.filter(objFilter);\n if (!objs.length) return null;\n objs.forEach(function (obj) {\n return box.expandByObject(obj);\n }); // extract global x,y,z min/max\n\n return Object.assign.apply(Object, _toConsumableArray(['x', 'y', 'z'].map(function (c) {\n return _defineProperty({}, c, [box.min[c], box.max[c]]);\n })));\n },\n getScreenCoords: function getScreenCoords(state, x, y, z) {\n var vec = new three.Vector3(x, y, z);\n vec.project(this.camera()); // project to the camera plane\n\n return {\n // align relative pos to canvas dimensions\n x: (vec.x + 1) * state.width / 2,\n y: -(vec.y - 1) * state.height / 2\n };\n },\n intersectingObjects: function intersectingObjects(state, x, y) {\n var relCoords = new three.Vector2(x / state.width * 2 - 1, -(y / state.height) * 2 + 1);\n var raycaster = new three.Raycaster();\n raycaster.params.Line.threshold = state.lineHoverPrecision; // set linePrecision\n\n raycaster.setFromCamera(relCoords, state.camera);\n return raycaster.intersectObjects(state.objects, true);\n },\n renderer: function renderer(state) {\n return state.renderer;\n },\n scene: function scene(state) {\n return state.scene;\n },\n camera: function camera(state) {\n return state.camera;\n },\n postProcessingComposer: function postProcessingComposer(state) {\n return state.postProcessingComposer;\n },\n controls: function controls(state) {\n return state.controls;\n },\n tbControls: function tbControls(state) {\n return state.controls;\n } // to be deprecated\n\n },\n stateInit: function stateInit() {\n return {\n scene: new three.Scene(),\n camera: new three.PerspectiveCamera(),\n clock: new three.Clock()\n };\n },\n init: function init(domNode, state, _ref4) {\n var _ref4$controlType = _ref4.controlType,\n controlType = _ref4$controlType === void 0 ? 'trackball' : _ref4$controlType,\n _ref4$rendererConfig = _ref4.rendererConfig,\n rendererConfig = _ref4$rendererConfig === void 0 ? {} : _ref4$rendererConfig,\n _ref4$waitForLoadComp = _ref4.waitForLoadComplete,\n waitForLoadComplete = _ref4$waitForLoadComp === void 0 ? true : _ref4$waitForLoadComp;\n // Wipe DOM\n domNode.innerHTML = ''; // Add relative container\n\n domNode.appendChild(state.container = document.createElement('div'));\n state.container.style.position = 'relative'; // Add nav info section\n\n state.container.appendChild(state.navInfo = document.createElement('div'));\n state.navInfo.className = 'scene-nav-info';\n state.navInfo.textContent = {\n orbit: 'Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan',\n trackball: 'Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan',\n fly: 'WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw'\n }[controlType] || '';\n state.navInfo.style.display = state.showNavInfo ? null : 'none'; // Setup tooltip\n\n state.toolTipElem = document.createElement('div');\n state.toolTipElem.classList.add('scene-tooltip');\n state.container.appendChild(state.toolTipElem); // Capture pointer coords on move or touchstart\n\n state.pointerPos = new three.Vector2();\n state.pointerPos.x = -2; // Initialize off canvas\n\n state.pointerPos.y = -2;\n ['pointermove', 'pointerdown'].forEach(function (evType) {\n return state.container.addEventListener(evType, function (ev) {\n // detect point drag\n !state.isPointerDragging && ev.type === 'pointermove' && ev.pressure > 0 && (ev.movementX !== 0 || ev.movementY !== 0) && (state.isPointerDragging = true);\n\n if (state.enablePointerInteraction) {\n // update the pointer pos\n var offset = getOffset(state.container);\n state.pointerPos.x = ev.pageX - offset.left;\n state.pointerPos.y = ev.pageY - offset.top; // Move tooltip\n\n state.toolTipElem.style.top = \"\".concat(state.pointerPos.y, \"px\");\n state.toolTipElem.style.left = \"\".concat(state.pointerPos.x, \"px\");\n state.toolTipElem.style.transform = \"translate(-\".concat(state.pointerPos.x / state.width * 100, \"%, 21px)\"); // adjust horizontal position to not exceed canvas boundaries\n }\n\n function getOffset(el) {\n var rect = el.getBoundingClientRect(),\n scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,\n scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return {\n top: rect.top + scrollTop,\n left: rect.left + scrollLeft\n };\n }\n }, false);\n }); // Handle click events on objs\n\n state.container.addEventListener('pointerup', function (ev) {\n if (state.isPointerDragging) {\n state.isPointerDragging = false;\n if (!state.clickAfterDrag) return; // don't trigger onClick after pointer drag (camera motion via controls)\n }\n\n requestAnimationFrame(function () {\n // trigger click events asynchronously, to allow hoverObj to be set (on frame)\n if (ev.button === 0) {\n // left-click\n state.onClick(state.hoverObj || null, ev, state.intersectionPoint); // trigger background clicks with null\n }\n\n if (ev.button === 2 && state.onRightClick) {\n // right-click\n state.onRightClick(state.hoverObj || null, ev, state.intersectionPoint);\n }\n });\n }, true); // use capture phase to prevent propagation blocking from controls (specifically for fly)\n\n state.container.addEventListener('contextmenu', function (ev) {\n if (state.onRightClick) ev.preventDefault(); // prevent default contextmenu behavior and allow pointerup to fire instead\n }, false); // Setup renderer, camera and controls\n\n state.renderer = new three.WebGLRenderer(Object.assign({\n antialias: true,\n alpha: true\n }, rendererConfig));\n state.renderer.setPixelRatio(window.devicePixelRatio);\n state.container.appendChild(state.renderer.domElement); // configure post-processing composer\n\n state.postProcessingComposer = new EffectComposer(state.renderer);\n state.postProcessingComposer.addPass(new RenderPass(state.scene, state.camera)); // render scene as first pass\n // configure controls\n\n state.controls = new {\n trackball: TrackballControls,\n orbit: OrbitControls,\n fly: FlyControls\n }[controlType](state.camera, state.renderer.domElement);\n\n if (controlType === 'fly') {\n state.controls.movementSpeed = 300;\n state.controls.rollSpeed = Math.PI / 6;\n state.controls.dragToLook = true;\n }\n\n if (controlType === 'trackball' || controlType === 'orbit') {\n state.controls.minDistance = 0.1;\n state.controls.maxDistance = state.skyRadius;\n state.controls.addEventListener('start', function () {\n return state.controlsEngaged = true;\n });\n state.controls.addEventListener('change', function () {\n if (state.controlsEngaged) {\n state.controlsDragging = true;\n }\n });\n state.controls.addEventListener('end', function () {\n state.controlsEngaged = false;\n state.controlsDragging = false;\n });\n }\n\n state.renderer.setSize(state.width, state.height);\n state.postProcessingComposer.setSize(state.width, state.height);\n state.camera.aspect = state.width / state.height;\n state.camera.updateProjectionMatrix();\n state.camera.position.z = 1000; // add sky\n\n state.scene.add(state.skysphere = new three.Mesh());\n state.skysphere.visible = false;\n state.loadComplete = state.scene.visible = !waitForLoadComplete;\n window.scene = state.scene;\n },\n update: function update(state, changedProps) {\n // resize canvas\n if (state.width && state.height && (changedProps.hasOwnProperty('width') || changedProps.hasOwnProperty('height'))) {\n state.container.style.width = state.width;\n state.container.style.height = state.height;\n state.renderer.setSize(state.width, state.height);\n state.postProcessingComposer.setSize(state.width, state.height);\n state.camera.aspect = state.width / state.height;\n state.camera.updateProjectionMatrix();\n }\n\n if (changedProps.hasOwnProperty('skyRadius') && state.skyRadius) {\n state.controls.hasOwnProperty('maxDistance') && changedProps.skyRadius && (state.controls.maxDistance = state.skyRadius);\n state.camera.far = state.skyRadius * 2.5;\n state.camera.updateProjectionMatrix();\n state.skysphere.geometry = new three.SphereGeometry(state.skyRadius);\n }\n\n if (changedProps.hasOwnProperty('backgroundColor')) {\n var alpha = parseToRgb(state.backgroundColor).alpha;\n if (alpha === undefined) alpha = 1;\n state.renderer.setClearColor(new three.Color(opacify(1, state.backgroundColor)), alpha);\n }\n\n if (changedProps.hasOwnProperty('backgroundImageUrl')) {\n if (!state.backgroundImageUrl) {\n state.skysphere.visible = false;\n state.skysphere.material.map = null;\n !state.loadComplete && finishLoad();\n } else {\n new three.TextureLoader().load(state.backgroundImageUrl, function (texture) {\n state.skysphere.material = new three.MeshBasicMaterial({\n map: texture,\n side: three.BackSide\n });\n state.skysphere.visible = true; // triggered when background image finishes loading (asynchronously to allow 1 frame to load texture)\n\n state.onBackgroundImageLoaded && setTimeout(state.onBackgroundImageLoaded);\n !state.loadComplete && finishLoad();\n });\n }\n }\n\n changedProps.hasOwnProperty('showNavInfo') && (state.navInfo.style.display = state.showNavInfo ? null : 'none');\n\n if (changedProps.hasOwnProperty('objects')) {\n (changedProps.objects || []).forEach(function (obj) {\n return state.scene.remove(obj);\n }); // Clear the place\n\n state.objects.forEach(function (obj) {\n return state.scene.add(obj);\n }); // Add to scene\n } //\n\n\n function finishLoad() {\n state.loadComplete = state.scene.visible = true;\n }\n }\n});\n\nexport default threeRenderObjects;\n","export default function(kapsulePropName, kapsuleType) {\n\n const dummyK = new kapsuleType(); // To extract defaults\n\n return {\n linkProp: function(prop) { // link property config\n return {\n default: dummyK[prop](),\n onChange(v, state) { state[kapsulePropName][prop](v) },\n triggerUpdate: false\n }\n },\n linkMethod: function(method) { // link method pass-through\n return function(state, ...args) {\n const kapsuleInstance = state[kapsulePropName];\n const returnVal = kapsuleInstance[method](...args);\n\n return returnVal === kapsuleInstance\n ? this // chain based on the parent object, not the inner kapsule\n : returnVal;\n }\n }\n }\n\n}","import { AmbientLight, DirectionalLight, Vector3 } from 'three';\n\nconst three = window.THREE\n ? window.THREE // Prefer consumption from global THREE, if exists\n : { AmbientLight, DirectionalLight, Vector3 };\n\nimport ThreeDragControls from 'three-dragcontrols';\nimport ThreeForceGraph from 'three-forcegraph';\nimport ThreeRenderObjects from 'three-render-objects';\n\nimport accessorFn from 'accessor-fn';\nimport Kapsule from 'kapsule';\n\nimport linkKapsule from './kapsule-link.js';\n\n//\n\nconst CAMERA_DISTANCE2NODES_FACTOR = 170;\n\n//\n\n// Expose config from forceGraph\nconst bindFG = linkKapsule('forceGraph', ThreeForceGraph);\nconst linkedFGProps = Object.assign(...[\n 'jsonUrl',\n 'graphData',\n 'numDimensions',\n 'dagMode',\n 'dagLevelDistance',\n 'dagNodeFilter',\n 'onDagError',\n 'nodeRelSize',\n 'nodeId',\n 'nodeVal',\n 'nodeResolution',\n 'nodeColor',\n 'nodeAutoColorBy',\n 'nodeOpacity',\n 'nodeVisibility',\n 'nodeThreeObject',\n 'nodeThreeObjectExtend',\n 'linkSource',\n 'linkTarget',\n 'linkVisibility',\n 'linkColor',\n 'linkAutoColorBy',\n 'linkOpacity',\n 'linkWidth',\n 'linkResolution',\n 'linkCurvature',\n 'linkCurveRotation',\n 'linkMaterial',\n 'linkThreeObject',\n 'linkThreeObjectExtend',\n 'linkPositionUpdate',\n 'linkDirectionalArrowLength',\n 'linkDirectionalArrowColor',\n 'linkDirectionalArrowRelPos',\n 'linkDirectionalArrowResolution',\n 'linkDirectionalParticles',\n 'linkDirectionalParticleSpeed',\n 'linkDirectionalParticleWidth',\n 'linkDirectionalParticleColor',\n 'linkDirectionalParticleResolution',\n 'forceEngine',\n 'd3AlphaDecay',\n 'd3VelocityDecay',\n 'd3AlphaMin',\n 'ngraphPhysics',\n 'warmupTicks',\n 'cooldownTicks',\n 'cooldownTime',\n 'onEngineTick',\n 'onEngineStop'\n].map(p => ({ [p]: bindFG.linkProp(p)})));\nconst linkedFGMethods = Object.assign(...[\n 'refresh',\n 'getGraphBbox',\n 'd3Force',\n 'd3ReheatSimulation',\n 'emitParticle'\n].map(p => ({ [p]: bindFG.linkMethod(p)})));\n\n// Expose config from renderObjs\nconst bindRenderObjs = linkKapsule('renderObjs', ThreeRenderObjects);\nconst linkedRenderObjsProps = Object.assign(...[\n 'width',\n 'height',\n 'backgroundColor',\n 'showNavInfo',\n 'enablePointerInteraction'\n].map(p => ({ [p]: bindRenderObjs.linkProp(p)})));\nconst linkedRenderObjsMethods = Object.assign(\n ...[\n 'cameraPosition',\n 'postProcessingComposer'\n ].map(p => ({ [p]: bindRenderObjs.linkMethod(p)})),\n {\n graph2ScreenCoords: bindRenderObjs.linkMethod('getScreenCoords')\n }\n);\n\n//\n\nexport default Kapsule({\n\n props: {\n nodeLabel: { default: 'name', triggerUpdate: false },\n linkLabel: { default: 'name', triggerUpdate: false },\n linkHoverPrecision: { default: 1, onChange: (p, state) => state.renderObjs.lineHoverPrecision(p), triggerUpdate: false },\n enableNavigationControls: {\n default: true,\n onChange(enable, state) {\n const controls = state.renderObjs.controls();\n if (controls) {\n controls.enabled = enable;\n }\n },\n triggerUpdate: false\n },\n enableNodeDrag: { default: true, triggerUpdate: false },\n onNodeDrag: { default: () => {}, triggerUpdate: false },\n onNodeDragEnd: { default: () => {}, triggerUpdate: false },\n onNodeClick: { default: () => {}, triggerUpdate: false },\n onNodeRightClick: { default: () => {}, triggerUpdate: false },\n onNodeHover: { default: () => {}, triggerUpdate: false },\n onLinkClick: { default: () => {}, triggerUpdate: false },\n onLinkRightClick: { default: () => {}, triggerUpdate: false },\n onLinkHover: { default: () => {}, triggerUpdate: false },\n onBackgroundClick: { default: () => {}, triggerUpdate: false },\n onBackgroundRightClick: { default: () => {}, triggerUpdate: false },\n ...linkedFGProps,\n ...linkedRenderObjsProps\n },\n\n methods: {\n zoomToFit: function(state, transitionDuration, padding, ...bboxArgs) {\n state.renderObjs.fitToBbox(\n state.forceGraph.getGraphBbox(...bboxArgs),\n transitionDuration,\n padding\n );\n return this;\n },\n pauseAnimation: function(state) {\n if (state.animationFrameRequestId !== null) {\n cancelAnimationFrame(state.animationFrameRequestId);\n state.animationFrameRequestId = null;\n }\n return this;\n },\n\n resumeAnimation: function(state) {\n if (state.animationFrameRequestId === null) {\n this._animationCycle();\n }\n return this;\n },\n _animationCycle(state) {\n if (state.enablePointerInteraction) {\n // reset canvas cursor (override dragControls cursor)\n this.renderer().domElement.style.cursor = null;\n }\n\n // Frame cycle\n state.forceGraph.tickFrame();\n state.renderObjs.tick();\n state.animationFrameRequestId = requestAnimationFrame(this._animationCycle);\n },\n scene: state => state.renderObjs.scene(), // Expose scene\n camera: state => state.renderObjs.camera(), // Expose camera\n renderer: state => state.renderObjs.renderer(), // Expose renderer\n controls: state => state.renderObjs.controls(), // Expose controls\n tbControls: state => state.renderObjs.tbControls(), // To be deprecated\n _destructor: function() {\n this.pauseAnimation();\n this.graphData({ nodes: [], links: []});\n },\n ...linkedFGMethods,\n ...linkedRenderObjsMethods\n },\n\n stateInit: ({ controlType, rendererConfig }) => ({\n forceGraph: new ThreeForceGraph(),\n renderObjs: ThreeRenderObjects({ controlType, rendererConfig })\n }),\n\n init: function(domNode, state) {\n // Wipe DOM\n domNode.innerHTML = '';\n\n // Add relative container\n domNode.appendChild(state.container = document.createElement('div'));\n state.container.style.position = 'relative';\n\n // Add renderObjs\n const roDomNode = document.createElement('div');\n state.container.appendChild(roDomNode);\n state.renderObjs(roDomNode);\n const camera = state.renderObjs.camera();\n const renderer = state.renderObjs.renderer();\n const controls = state.renderObjs.controls();\n controls.enabled = !!state.enableNavigationControls;\n state.lastSetCameraZ = camera.position.z;\n\n // Add info space\n let infoElem;\n state.container.appendChild(infoElem = document.createElement('div'));\n infoElem.className = 'graph-info-msg';\n infoElem.textContent = '';\n\n // config forcegraph\n state.forceGraph\n .onLoading(() => { infoElem.textContent = 'Loading...' })\n .onFinishLoading(() => { infoElem.textContent = '' })\n .onUpdate(() => {\n // sync graph data structures\n state.graphData = state.forceGraph.graphData();\n\n // re-aim camera, if still in default position (not user modified)\n if (camera.position.x === 0 && camera.position.y === 0 && camera.position.z === state.lastSetCameraZ && state.graphData.nodes.length) {\n camera.lookAt(state.forceGraph.position);\n state.lastSetCameraZ = camera.position.z = Math.cbrt(state.graphData.nodes.length) * CAMERA_DISTANCE2NODES_FACTOR;\n }\n })\n .onFinishUpdate(() => {\n // Setup node drag interaction\n if (state._dragControls) {\n const curNodeDrag = state.graphData.nodes.find(node => node.__initialFixedPos && !node.__disposeControlsAfterDrag); // detect if there's a node being dragged using the existing drag controls\n if (curNodeDrag) {\n curNodeDrag.__disposeControlsAfterDrag = true; // postpone previous controls disposal until drag ends\n } else {\n state._dragControls.dispose(); // cancel previous drag controls\n }\n\n state._dragControls = undefined;\n }\n\n if (state.enableNodeDrag && state.enablePointerInteraction && state.forceEngine === 'd3') { // Can't access node positions programatically in ngraph\n const dragControls = state._dragControls = new ThreeDragControls(\n state.graphData.nodes.map(node => node.__threeObj).filter(obj => obj),\n camera,\n renderer.domElement\n );\n\n dragControls.addEventListener('dragstart', function (event) {\n controls.enabled = false; // Disable controls while dragging\n\n const node = event.object.__data;\n !node.__initialFixedPos && (node.__initialFixedPos = {fx: node.fx, fy: node.fy, fz: node.fz});\n !node.__initialPos && (node.__initialPos = {x: node.x, y: node.y, z: node.z});\n\n // lock node\n ['x', 'y', 'z'].forEach(c => node[`f${c}`] = node[c]);\n\n // drag cursor\n renderer.domElement.classList.add('grabbable');\n });\n\n dragControls.addEventListener('drag', function (event) {\n const node = event.object.__data;\n const newPos = event.object.position;\n const translate = {x: newPos.x - node.x, y: newPos.y - node.y, z: newPos.z - node.z};\n // Move fx/fy/fz (and x/y/z) of nodes based on object new position\n ['x', 'y', 'z'].forEach(c => node[`f${c}`] = node[c] = newPos[c]);\n\n state.forceGraph\n .d3AlphaTarget(0.3) // keep engine running at low intensity throughout drag\n .resetCountdown(); // prevent freeze while dragging\n\n node.__dragged = true;\n state.onNodeDrag(node, translate);\n });\n\n dragControls.addEventListener('dragend', function (event) {\n const node = event.object.__data;\n\n // dispose previous controls if needed\n if (node.__disposeControlsAfterDrag) {\n dragControls.dispose();\n delete(node.__disposeControlsAfterDrag);\n }\n\n const initFixedPos = node.__initialFixedPos;\n const initPos = node.__initialPos;\n const translate = {x: initPos.x - node.x, y: initPos.y - node.y, z: initPos.z - node.z};\n if (initFixedPos) {\n ['x', 'y', 'z'].forEach(c => {\n const fc = `f${c}`;\n if (initFixedPos[fc] === undefined) {\n delete(node[fc])\n }\n });\n delete(node.__initialFixedPos);\n delete(node.__initialPos);\n if (node.__dragged) {\n delete(node.__dragged);\n state.onNodeDragEnd(node, translate);\n }\n }\n\n state.forceGraph\n .d3AlphaTarget(0) // release engine low intensity\n .resetCountdown(); // let the engine readjust after releasing fixed nodes\n\n if (state.enableNavigationControls) {\n controls.enabled = true; // Re-enable controls\n }\n\n // clear cursor\n renderer.domElement.classList.remove('grabbable');\n });\n }\n });\n\n // config renderObjs\n const getGraphObj = object => {\n let obj = object;\n // recurse up object chain until finding the graph object\n while (obj && !obj.hasOwnProperty('__graphObjType')) {\n obj = obj.parent;\n }\n return obj;\n };\n\n state.renderObjs\n .objects([ // Populate scene\n new three.AmbientLight(0xbbbbbb),\n new three.DirectionalLight(0xffffff, 0.6),\n state.forceGraph\n ])\n .hoverOrderComparator((a, b) => {\n // Prioritize graph objects\n const aObj = getGraphObj(a);\n if (!aObj) return 1;\n const bObj = getGraphObj(b);\n if (!bObj) return -1;\n\n // Prioritize nodes over links\n const isNode = o => o.__graphObjType === 'node';\n return isNode(bObj) - isNode(aObj);\n })\n .tooltipContent(obj => {\n const graphObj = getGraphObj(obj);\n return graphObj ? accessorFn(state[`${graphObj.__graphObjType}Label`])(graphObj.__data) || '' : '';\n })\n .hoverDuringDrag(false)\n .onHover(obj => {\n // Update tooltip and trigger onHover events\n const hoverObj = getGraphObj(obj);\n\n if (hoverObj !== state.hoverObj) {\n const prevObjType = state.hoverObj ? state.hoverObj.__graphObjType : null;\n const prevObjData = state.hoverObj ? state.hoverObj.__data : null;\n const objType = hoverObj ? hoverObj.__graphObjType : null;\n const objData = hoverObj ? hoverObj.__data : null;\n if (prevObjType && prevObjType !== objType) {\n // Hover out\n state[`on${prevObjType === 'node' ? 'Node' : 'Link'}Hover`](null, prevObjData);\n }\n if (objType) {\n // Hover in\n state[`on${objType === 'node' ? 'Node' : 'Link'}Hover`](objData, prevObjType === objType ? prevObjData : null);\n }\n\n state.hoverObj = hoverObj;\n }\n })\n .clickAfterDrag(false)\n .onClick((obj, ev) => {\n const graphObj = getGraphObj(obj);\n if (graphObj) {\n state[`on${graphObj.__graphObjType === 'node' ? 'Node' : 'Link'}Click`](graphObj.__data, ev);\n } else {\n state.onBackgroundClick(ev);\n }\n })\n .onRightClick((obj, ev) => {\n // Handle right-click events\n const graphObj = getGraphObj(obj);\n if (graphObj) {\n state[`on${graphObj.__graphObjType === 'node' ? 'Node' : 'Link'}RightClick`](graphObj.__data, ev);\n } else {\n state.onBackgroundRightClick(ev);\n }\n });\n\n //\n\n // Kick-off renderer\n this._animationCycle();\n }\n});\n"],"names":["tree_addAll","tree_removeAll","add","addAll","removeAll","defaultX","leaf_copy","treeProto","tree_add","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","defaultY","tree_y","eventify","Node","require$$0","require$$1","require$$2","isSamePosition","require$$3","insertStack","physics","require$$4","require$$5","require$$6","require$$7","require$$8","createBody","require$$9","bounds","springForce","dragForce","noop","InsertStack","InsertStackElement","getChild","setChild","integrate","createLayout","index","debounce","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_defineProperty","ownKeys","_objectSpread2","_objectWithoutPropertiesLoose","_objectWithoutProperties","indexBy","_classCallCheck","_unsupportedIterableToArray","_arrayLikeToArray","dataJoint","tinyColor","scaleOrdinal","graph","forcelayout","forcelayout3d","Kapsule","accessorFn","Pass","_assertThisInitialized","_getPrototypeOf","_setPrototypeOf","_isNativeReflectConstruct","_construct","isNativeReflectConstruct","setPrototypeOf","isNativeFunction","construct","getPrototypeOf","Group","this","styleInject","css_248z","three","opacify","kapsulePropName","kapsuleType","dummyK","linkProp","prop","onChange","v","state","triggerUpdate","linkMethod","method","kapsuleInstance","args","returnVal","window","THREE","AmbientLight","DirectionalLight","Vector3","CAMERA_DISTANCE2NODES_FACTOR","bindFG","linkKapsule","ThreeForceGraph","linkedFGProps","Object","assign","map","p","linkedFGMethods","bindRenderObjs","ThreeRenderObjects","linkedRenderObjsProps","linkedRenderObjsMethods","graph2ScreenCoords","props","nodeLabel","linkLabel","linkHoverPrecision","renderObjs","lineHoverPrecision","enableNavigationControls","enable","controls","enabled","enableNodeDrag","onNodeDrag","onNodeDragEnd","onNodeClick","onNodeRightClick","onNodeHover","onLinkClick","onLinkRightClick","onLinkHover","onBackgroundClick","onBackgroundRightClick","methods","zoomToFit","transitionDuration","padding","bboxArgs","fitToBbox","forceGraph","getGraphBbox","pauseAnimation","animationFrameRequestId","cancelAnimationFrame","resumeAnimation","_animationCycle","enablePointerInteraction","renderer","domElement","style","cursor","tickFrame","tick","requestAnimationFrame","scene","camera","tbControls","_destructor","graphData","nodes","links","stateInit","controlType","rendererConfig","init","domNode","innerHTML","appendChild","container","document","createElement","position","roDomNode","lastSetCameraZ","z","infoElem","className","textContent","onLoading","onFinishLoading","onUpdate","x","y","length","lookAt","Math","cbrt","onFinishUpdate","_dragControls","curNodeDrag","find","node","__initialFixedPos","__disposeControlsAfterDrag","dispose","undefined","forceEngine","dragControls","ThreeDragControls","__threeObj","filter","obj","addEventListener","event","object","__data","fx","fy","fz","__initialPos","forEach","c","classList","newPos","translate","d3AlphaTarget","resetCountdown","__dragged","initFixedPos","initPos","fc","remove","getGraphObj","hasOwnProperty","parent","objects","hoverOrderComparator","a","b","aObj","bObj","isNode","o","__graphObjType","tooltipContent","graphObj","hoverDuringDrag","onHover","hoverObj","prevObjType","prevObjData","objType","objData","clickAfterDrag","onClick","ev","onRightClick"],"mappings":"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G,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AACpD;EACA,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EACpD,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EACpD,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AACpD;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC9C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC9C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9C;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC9C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC9C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9C;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC9C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC9C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG;AAChC;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;EAC3C,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;EAC3C,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,YAAY;AAC1B;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAC7C,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EACxC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AACzC;EACA,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/E;EACA,EAAE;AACF;EACA,CAAC,UAAU,EAAE,WAAW,MAAM,EAAE,iBAAiB,GAAG;AACpD;EACA,EAAE,KAAK,iBAAiB,KAAK,SAAS,GAAG;AACzC;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,kFAAkF,EAAE,CAAC;AACtG;EACA,GAAG;AACH;EACA,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ;EAC5B,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ;AACrB;EACA,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9C,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9C,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAC9C;EACA,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;EAC9B,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;EAC9B,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC9B;EACA,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3C;EACA,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChE;EACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AACzB;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACzB,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;EAC/C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;AAC/C;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACzB,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;EAC/C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;AAC/C;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACzB,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;EAC/C,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;AAC/C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,YAAY;AACxB;EACA,EAAE,IAAI,GAAG,CAAC;EACV,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1B;EACA,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;EAC9C,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;EAC9C,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;AAC9C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,WAAW,OAAO,GAAG;AACvC;EACA,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;AACvE;EACA,EAAE;AACF;EACA,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG;AACpC;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1B;EACA,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EAClB,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG;AAC/D;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;EACjC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AACjC;EACA,EAAE,IAAI,CAAC,GAAG;EACV,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;EACvD,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;EAC3D,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;EACV,GAAG,CAAC;AACJ;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG;AAC5B;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;EAC9C,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,KAAK,GAAG;AAC5B;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;EAC9B,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AAC9B;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EACpD,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AACpD;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;EAC9B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;EAC9B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC9B;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;EAChC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;EAChC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG;AAChC;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAC5E,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5E;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,MAAM,GAAG;AAC7B;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC3B,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC7B;EACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACjC;EACA,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,OAAO,KAAK,CAAC;AAC3C;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACvC;EACA,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACjC;EACA,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;AAC5C;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACrC;EACA,EAAE,KAAK,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;EACxC,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAC5B,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAChC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAChC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAChC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAChC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAChC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,OAAO,KAAK,CAAC;AACf;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,OAAO,CAAC;AACZ;EACA,MAAM,UAAU,GAAG;AACnB;EACA,CAAC,UAAU,EAAE,WAAW,KAAK,GAAG;AAChC;EACA,EAAE,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG;AACrC;EACA,GAAG,OAAO,KAAK,CAAC,GAAG,CAAC;AACpB;EACA,GAAG;AACH;EACA,EAAE,KAAK,OAAO,iBAAiB,IAAI,WAAW,GAAG;AACjD;EACA,GAAG,OAAO,KAAK,CAAC,GAAG,CAAC;AACpB;EACA,GAAG;AACH;EACA,EAAE,IAAI,MAAM,CAAC;AACb;EACA,EAAE,KAAK,KAAK,YAAY,iBAAiB,GAAG;AAC5C;EACA,GAAG,MAAM,GAAG,KAAK,CAAC;AAClB;EACA,GAAG,MAAM;AACT;EACA,GAAG,KAAK,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,8BAA8B,EAAE,QAAQ,EAAE,CAAC;AAC/G;EACA,GAAG,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;EAC/B,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACjC;EACA,GAAG,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9C;EACA,GAAG,KAAK,KAAK,YAAY,SAAS,GAAG;AACrC;EACA,IAAI,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxC;EACA,IAAI,MAAM;AACV;EACA,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAChE;EACA,IAAI;AACJ;EACA,GAAG,MAAM,GAAG,OAAO,CAAC;AACpB;EACA,GAAG;AACH;EACA,EAAE,KAAK,MAAM,CAAC,KAAK,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG;AACrD;EACA,GAAG,OAAO,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AAChD;EACA,GAAG,MAAM;AACT;EACA,GAAG,OAAO,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;AAC1C;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB;EACA,SAAS,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,GAAG;AAC3G;EACA,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,CAAC;AAC9D;EACA,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;AACtC;EACA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAChB;EACA,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;EAClE,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB;EACA,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;AAC1E;EACA,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,mBAAmB,CAAC;EAChE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,mBAAmB,CAAC;AAChE;EACA,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;EACrE,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,wBAAwB,CAAC;AACjF;EACA,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,KAAK,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC;AAC7D;EACA,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;EAC1D,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EAC5B,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,gBAAgB,CAAC;AAC1D;EACA,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACnC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACnC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACnC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;EACA,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;EAC9B,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7B;EACA,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;EAC7B,CAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;EAC/B,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACnB,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAC1B;EACA;EACA;EACA;EACA;EACA,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,KAAK,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;AACpE;EACA,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;EAClB,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB;EACA,CAAC;AACD;EACA,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;EAClC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;AACpC;EACA,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,EAAE;AAC/E;EACA,CAAC,WAAW,EAAE,OAAO;AACrB;EACA,CAAC,SAAS,EAAE,IAAI;AAChB;EACA,CAAC,YAAY,EAAE,YAAY;AAC3B;EACA,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACxI;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7C;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,MAAM,GAAG;AAC3B;EACA,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC1B;EACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EAC5B,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AAC3C;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC;EACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EAC5B,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B;EACA,EAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;EACpC,EAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC;EACA,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC;EACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;EAC9B,EAAE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;EAC9C,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC1B;EACA,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;EACpC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;EACpC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;EACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAClC;EACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;EAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACpC;EACA,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;EAChD,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;EAClD,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EAC5B,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;EAChD,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAClC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,IAAI,GAAG;AAC3B;EACA,EAAE,MAAM,YAAY,KAAK,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;AAC1E;EACA,EAAE,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,GAAG;AACpE;EACA,GAAG,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACrC;EACA,GAAG;AACH;EACA,EAAE,MAAM,MAAM,GAAG;AACjB;EACA,GAAG,QAAQ,EAAE;EACb,IAAI,OAAO,EAAE,GAAG;EAChB,IAAI,IAAI,EAAE,SAAS;EACnB,IAAI,SAAS,EAAE,gBAAgB;EAC/B,IAAI;AACJ;EACA,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;EAClB,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB;EACA,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB;EACA,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;EAC3C,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;EAC3C,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;EAC3C,GAAG,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B;EACA,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnC;EACA,GAAG,MAAM,EAAE,IAAI,CAAC,MAAM;EACtB,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;EAClB,GAAG,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B;EACA,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS;EAC5B,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS;EAC5B,GAAG,UAAU,EAAE,IAAI,CAAC,UAAU;AAC9B;EACA,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB;EACA,GAAG,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;EAC1C,GAAG,eAAe,EAAE,IAAI,CAAC,eAAe;AACxC;EACA,GAAG,CAAC;AACJ;EACA,EAAE,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG;AAClC;EACA;AACA;EACA,GAAG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B;EACA,GAAG,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,GAAG;AACnC;EACA,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;AAC1C;EACA,IAAI;AACJ;EACA,GAAG,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,SAAS,GAAG;AACpE;EACA,IAAI,IAAI,GAAG,CAAC;AACZ;EACA,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG;AAClC;EACA;AACA;EACA,KAAK,GAAG,GAAG,EAAE,CAAC;AACd;EACA,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACtD;EACA,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACtD;EACA,MAAM;AACN;EACA,KAAK,MAAM;AACX;EACA;AACA;EACA,KAAK,GAAG,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AAC1C;EACA,KAAK;AACL;EACA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG;EAChC,KAAK,IAAI,EAAE,KAAK,CAAC,IAAI;EACrB,KAAK,GAAG,EAAE,GAAG;EACb,KAAK,CAAC;AACN;EACA,IAAI;AACJ;EACA,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B;EACA,GAAG;AACH;EACA,EAAE,KAAK,EAAE,YAAY,GAAG;AACxB;EACA,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC;AACvC;EACA,GAAG;AACH;EACA,EAAE,OAAO,MAAM,CAAC;AAChB;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,YAAY;AACtB;EACA,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;AAC5C;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG;AAC9B;EACA,EAAE,KAAK,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,OAAO,EAAE,CAAC;AAC9C;EACA,EAAE,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACjC;EACA,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG;AAC9B;EACA,GAAG,SAAS,IAAI,CAAC,KAAK;AACtB;EACA,IAAI,KAAK,cAAc;AACvB;EACA,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;EACtC,KAAK,MAAM;AACX;EACA,IAAI,KAAK,mBAAmB;AAC5B;EACA,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC7B,KAAK,MAAM;AACX;EACA,IAAI,KAAK,sBAAsB;AAC/B;EACA,KAAK,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG;AACrD;EACA,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC;EACA,MAAM,MAAM;AACZ;EACA,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AACvC;EACA,MAAM;AACN;EACA,KAAK,MAAM;AACX;EACA,IAAI;AACJ;EACA,GAAG;AACH;EACA,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG;AAC9B;EACA,GAAG,SAAS,IAAI,CAAC,KAAK;AACtB;EACA,IAAI,KAAK,cAAc;AACvB;EACA,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;EACtC,KAAK,MAAM;AACX;EACA,IAAI,KAAK,mBAAmB;AAC5B;EACA,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC7B,KAAK,MAAM;AACX;EACA,IAAI,KAAK,sBAAsB;AAC/B;EACA,KAAK,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG;AACrD;EACA,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC;EACA,MAAM,MAAM;AACZ;EACA,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AACvC;EACA,MAAM;AACN;EACA,KAAK,MAAM;AACX;EACA,IAAI;AACJ;EACA,GAAG;AACH;EACA,EAAE,KAAK,IAAI,CAAC,KAAK,GAAG;AACpB;EACA,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACnB;EACA,GAAG;AACH;EACA,EAAE,OAAO,EAAE,CAAC;AACZ;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE;AACzD;EACA,CAAC,GAAG,EAAE,WAAW,KAAK,GAAG;AACzB;EACA,EAAE,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;AACxC;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,SAAS,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAC/C;EACA,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACZ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACZ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACZ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACZ;EACA,CAAC;AACD;EACA,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE;AAC5C;EACA,CAAC,OAAO,EAAE;AACV;EACA,EAAE,GAAG,EAAE,YAAY;AACnB;EACA,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC;AACjB;EACA,GAAG;AACH;EACA,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG;AAC1B;EACA,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAClB;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,QAAQ,EAAE;AACX;EACA,EAAE,GAAG,EAAE,YAAY;AACnB;EACA,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC;AACjB;EACA,GAAG;AACH;EACA,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG;AAC1B;EACA,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AAClB;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE;AAClC;EACA,CAAC,SAAS,EAAE,IAAI;AAChB;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC9B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,MAAM,GAAG;AAChC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;EAClB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;EAClB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;EAClB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AAClB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,KAAK,EAAE,KAAK,GAAG;AACzC;EACA,EAAE,SAAS,KAAK;AAChB;EACA,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;EACjC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;EACjC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;EACjC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;EACjC,GAAG,SAAS,MAAM,IAAI,KAAK,EAAE,yBAAyB,GAAG,KAAK,EAAE,CAAC;AACjE;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,KAAK,GAAG;AAClC;EACA,EAAE,SAAS,KAAK;AAChB;EACA,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EACzB,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EACzB,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EACzB,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EACzB,GAAG,SAAS,MAAM,IAAI,KAAK,EAAE,yBAAyB,GAAG,KAAK,EAAE,CAAC;AACjE;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAChE;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACf,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACf,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACf,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACxB;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,uFAAuF,EAAE,CAAC;EAC3G,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClC;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;AAC3B;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACd;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC/B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACpC;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACxB;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,uFAAuF,EAAE,CAAC;EAC3G,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClC;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;AAC3B;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACd;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC/B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,cAAc,EAAE,WAAW,MAAM,GAAG;AACrC;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;AACnB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;AAC9B;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EACvD,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AACvB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EAC9D,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EAC9D,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EAC/D,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/D;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,MAAM,GAAG;AACnC;EACA,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;AAC3C;EACA,EAAE;AACF;EACA,CAAC,0BAA0B,EAAE,WAAW,CAAC,GAAG;AAC5C;EACA;AACA;EACA;AACA;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC;EACA,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG;AACpB;EACA,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACd,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACd,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACd;EACA,GAAG,MAAM;AACT;EACA,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpB;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,8BAA8B,EAAE,WAAW,CAAC,GAAG;AAChD;EACA;AACA;EACA;AACA;EACA,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACrB,EAAE,MAAM,OAAO,GAAG,IAAI;EACtB,GAAG,QAAQ,GAAG,GAAG;AACjB;EACA,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ;AAClB;EACA,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9C,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9C,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAChD;EACA,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO;EACxC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE;EAC1C,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG;AAC7C;EACA;EACA;EACA;AACA;EACA,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ;EAC1C,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE;EAC5C,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE;EAC5C,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG;AACzD;EACA;AACA;EACA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3B;EACA,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,IAAI;AACJ;EACA;AACA;EACA,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;AACnB;EACA,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;EAC9B,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;EAC9B,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;EAC9B,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAChC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAChC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAChC;EACA,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG;AACrC;EACA;AACA;EACA,IAAI,KAAK,EAAE,GAAG,OAAO,GAAG;AACxB;EACA,KAAK,CAAC,GAAG,CAAC,CAAC;EACX,KAAK,CAAC,GAAG,WAAW,CAAC;EACrB,KAAK,CAAC,GAAG,WAAW,CAAC;AACrB;EACA,KAAK,MAAM;AACX;EACA,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;EACzB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChB;EACA,KAAK;AACL;EACA,IAAI,MAAM,KAAK,EAAE,GAAG,EAAE,GAAG;AACzB;EACA;AACA;EACA,IAAI,KAAK,EAAE,GAAG,OAAO,GAAG;AACxB;EACA,KAAK,CAAC,GAAG,WAAW,CAAC;EACrB,KAAK,CAAC,GAAG,CAAC,CAAC;EACX,KAAK,CAAC,GAAG,WAAW,CAAC;AACrB;EACA,KAAK,MAAM;AACX;EACA,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;EACzB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChB;EACA,KAAK;AACL;EACA,IAAI,MAAM;AACV;EACA;AACA;EACA,IAAI,KAAK,EAAE,GAAG,OAAO,GAAG;AACxB;EACA,KAAK,CAAC,GAAG,WAAW,CAAC;EACrB,KAAK,CAAC,GAAG,WAAW,CAAC;EACrB,KAAK,CAAC,GAAG,CAAC,CAAC;AACX;EACA,KAAK,MAAM;AACX;EACA,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;EACzB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChB;EACA,KAAK;AACL;EACA,IAAI;AACJ;EACA,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAC9B;EACA,GAAG,OAAO,IAAI,CAAC;AACf;EACA,GAAG;AACH;EACA;AACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,EAAE;EAClD,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,EAAE;EAChC,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;AACnC;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC;EACA;EACA;AACA;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AACpD;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG;AAC9B;EACA;AACA;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EACxD,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EACxD,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EACxD,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AACxD;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,MAAM,EAAE,MAAM,GAAG;AAC1C;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAC1D,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAC1D,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAC1D,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1D;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG;AACpC;EACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACrG;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,YAAY;AACnB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,YAAY;AAC1B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EACvE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EACvE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EACvE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AACvE;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,YAAY;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACpB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;AACrB;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE;EACA,EAAE;AACF;EACA,CAAC,QAAQ,EAAE,YAAY;AACvB;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/E;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,YAAY;AACrB;EACA,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AAC5F;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,YAAY;AAC9B;EACA,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAC3F;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,YAAY;AACxB;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;AACjD;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,MAAM,GAAG;AAChC;EACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;AACnD;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,KAAK,GAAG;AAC7B;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;EACrC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;EACrC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;EACrC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;AACrC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG;AACzC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;EAC1C,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;EAC1C,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;EAC1C,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;AAC1C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG;AACxB;EACA,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,GAAG;AAClG;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACvC;EACA,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;EAC3B,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;AAC/B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACrC;EACA,EAAE,KAAK,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;EACxC,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAC3B,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAC/B,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAC/B,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/B;EACA,EAAE,OAAO,KAAK,CAAC;AACf;EACA,EAAE;AACF;EACA,CAAC,mBAAmB,EAAE,WAAW,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG;AAC5D;EACA,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG;AAC9B;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,qEAAqE,EAAE,CAAC;AACzF;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACnC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,YAAY;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG;AACrD;EACA,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACpB,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;EACA,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;EACnD,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B;EACA,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACpD;EACA,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AACzB;EACA,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AAClM;EACA,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;EACzB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;EAClC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACpC;EACA,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;EACxG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;AAC7F;EACA,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;EACnF,CAAC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;EACzF,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AACtF;EACA,CAAC;AACD;EACA,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,EAAE;AACzF;EACA,CAAC,WAAW,EAAE,iBAAiB;AAC/B;EACA,CAAC,mBAAmB,EAAE,IAAI;AAC1B;EACA,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACrC;EACA,EAAE,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG;AACxD;EACA,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACtB,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB;EACA,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;EACpC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtC;EACA,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAClB;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;EAC3C,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1C;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7C;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,MAAM,GAAG;AAC3B;EACA,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EAC5B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B;EACA,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxC;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACxC;EACA,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;EACxC,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;EAC5C,EAAE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAC1C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,YAAY;AACtB;EACA,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;AAC5C;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;AACA;EACA,SAAS,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG;AAChE;EACA,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACxD;EACA,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClB;EACA,CAAC;AACD;EACA,4BAA4B,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,EAAE;AACtG;EACA,CAAC,WAAW,EAAE,4BAA4B;AAC1C;EACA,CAAC,8BAA8B,EAAE,IAAI;AACrC;EACA,CAAC,IAAI,EAAE,WAAW,MAAM,GAAG;AAC3B;EACA,EAAE,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,SAAS,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAClD;EACA,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACb,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACb,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACb,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACb;EACA,CAAC;AACD;EACA,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE;AAC3B;EACA,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG;AACnC;EACA,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACtC;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG;AAC/E;EACA;AACA;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;EACjC,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;EAC9B,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;EAC9B,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;AAC/B;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;EACnC,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;EAC9B,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;EAC9B,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;AAC/B;EACA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG;AAC1D;EACA,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChB;EACA,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC/C;EACA,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;EAChC,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B;EACA;EACA,GAAG,KAAK,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG;AAClC;EACA,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;EACnC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AACxC;EACA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;EAClC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAClC;EACA,IAAI;AACJ;EACA,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;AACxB;EACA,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;EAC3B,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;EAC3B,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;EAC3B,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3B;EACA;EACA,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACtB;EACA,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AACrE;EACA,IAAI,EAAE,IAAI,CAAC,CAAC;EACZ,IAAI,EAAE,IAAI,CAAC,CAAC;EACZ,IAAI,EAAE,IAAI,CAAC,CAAC;EACZ,IAAI,EAAE,IAAI,CAAC,CAAC;AACZ;EACA,IAAI;AACJ;EACA,GAAG;AACH;EACA,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;EACxB,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;EAC5B,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;EAC5B,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AAC5B;EACA,EAAE;AACF;EACA,CAAC,uBAAuB,EAAE,WAAW,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG;AAC1F;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC;EAChC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;EACpC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;EACpC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;AACpC;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC;EAChC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;EACpC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;EACpC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;AACpC;EACA,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC3D,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC/D,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC/D,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC/D;EACA,EAAE,OAAO,GAAG,CAAC;AACb;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC,SAAS,EAAE;AAC/C;EACA,CAAC,CAAC,EAAE;AACJ;EACA,EAAE,GAAG,EAAE,YAAY;AACnB;EACA,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB;EACA,GAAG;AACH;EACA,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG;AAC1B;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;EACnB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,CAAC,EAAE;AACJ;EACA,EAAE,GAAG,EAAE,YAAY;AACnB;EACA,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB;EACA,GAAG;AACH;EACA,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG;AAC1B;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;EACnB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,CAAC,EAAE;AACJ;EACA,EAAE,GAAG,EAAE,YAAY;AACnB;EACA,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB;EACA,GAAG;AACH;EACA,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG;AAC1B;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;EACnB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,CAAC,EAAE;AACJ;EACA,EAAE,GAAG,EAAE,YAAY;AACnB;EACA,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB;EACA,GAAG;AACH;EACA,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG;AAC1B;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;EACnB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE;AACrC;EACA,CAAC,YAAY,EAAE,IAAI;AACnB;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC9B;EACA,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACd;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACpE;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,UAAU,GAAG;AAC/B;EACA,EAAE,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;EACzB,EAAE,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;EACzB,EAAE,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;EACzB,EAAE,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AACzB;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AAC1C;EACA,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG;AACtC;EACA,GAAG,MAAM,IAAI,KAAK,EAAE,kGAAkG,EAAE,CAAC;AACzH;EACA,GAAG;AACH;EACA,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACtE;EACA;EACA;EACA;AACA;EACA,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACvB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB;EACA,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;EAC1B,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;EAC1B,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B;EACA,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;EAC1B,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;EAC1B,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B;EACA,EAAE,SAAS,KAAK;AAChB;EACA,GAAG,KAAK,KAAK;EACb,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,MAAM;AACV;EACA,GAAG,KAAK,KAAK;EACb,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,MAAM;AACV;EACA,GAAG,KAAK,KAAK;EACb,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,MAAM;AACV;EACA,GAAG,KAAK,KAAK;EACb,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,MAAM;AACV;EACA,GAAG,KAAK,KAAK;EACb,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,MAAM;AACV;EACA,GAAG,KAAK,KAAK;EACb,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC1C,IAAI,MAAM;AACV;EACA,GAAG;EACH,IAAI,OAAO,CAAC,IAAI,EAAE,kEAAkE,GAAG,KAAK,EAAE,CAAC;AAC/F;EACA,GAAG;AACH;EACA,EAAE,KAAK,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACnD;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,gBAAgB,EAAE,WAAW,IAAI,EAAE,KAAK,GAAG;AAC5C;EACA;AACA;EACA;AACA;EACA,EAAE,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;AACzD;EACA,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACvB,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACvB,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACvB,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;AAClC;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,qBAAqB,EAAE,WAAW,CAAC,GAAG;AACvC;EACA;AACA;EACA;AACA;EACA,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ;AACvB;EACA,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9C,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9C,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;AAC/C;EACA,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B;EACA,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG;AACnB;EACA,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,CAAC;AAC5C;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;EACtB,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAC/B;EACA,GAAG,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG;AACvC;EACA,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACtD;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;EACtB,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAC/B;EACA,GAAG,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG;AAC1B;EACA,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACtD;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;EACtB,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAC/B;EACA,GAAG,MAAM;AACT;EACA,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACtD;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;EAC/B,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;AACtB;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,kBAAkB,EAAE,WAAW,KAAK,EAAE,GAAG,GAAG;AAC7C;EACA;AACA;EACA,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC;AACvB;EACA,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B;EACA,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG;AACjB;EACA,GAAG,CAAC,GAAG,CAAC,CAAC;AACT;EACA,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG;AACpD;EACA,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAChB;EACA,IAAI,MAAM;AACV;EACA,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAChB;EACA,IAAI;AACJ;EACA,GAAG,MAAM;AACT;EACA;AACA;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EAC/C,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EAC/C,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EAC/C,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACf;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG;AACzB;EACA,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/E;EACA,EAAE;AACF;EACA,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG;AACrC;EACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAClC;EACA,EAAE,KAAK,KAAK,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC;AACjC;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC;AACxC;EACA,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,YAAY;AACtB;EACA;AACA;EACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,YAAY;AACxB;EACA,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EACjB,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EACjB,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACjB;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;AACrB;EACA,EAAE,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC3E;EACA,EAAE;AACF;EACA,CAAC,QAAQ,EAAE,YAAY;AACvB;EACA,EAAE,OAAO,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACvF;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,YAAY;AACrB;EACA,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACpG;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,YAAY;AACxB;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACxB;EACA,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG;AACjB;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACf;EACA,GAAG,MAAM;AACT;EACA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACb;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACzB;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC7B;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,wGAAwG,EAAE,CAAC;EAC5H,GAAG,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3C;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC7C;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG;AAC7B;EACA,EAAE,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAC7C;EACA,EAAE;AACF;EACA,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACxC;EACA;AACA;EACA,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;EACvD,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACvD;EACA,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1D;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG;AAC3B;EACA,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC;EAC7B,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;AACxC;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAC3D;EACA;AACA;EACA,EAAE,IAAI,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AACnE;EACA,EAAE,KAAK,YAAY,GAAG,CAAC,GAAG;AAC1B;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EACrB,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EACrB,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EACrB,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AACrB;EACA,GAAG,YAAY,GAAG,EAAE,YAAY,CAAC;AACjC;EACA,GAAG,MAAM;AACT;EACA,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB;EACA,GAAG;AACH;EACA,EAAE,KAAK,YAAY,IAAI,GAAG,GAAG;AAC7B;EACA,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACf;EACA,GAAG,OAAO,IAAI,CAAC;AACf;EACA,GAAG;AACH;EACA,EAAE,MAAM,eAAe,GAAG,GAAG,GAAG,YAAY,GAAG,YAAY,CAAC;AAC5D;EACA,EAAE,KAAK,eAAe,IAAI,MAAM,CAAC,OAAO,GAAG;AAC3C;EACA,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;EACjC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;EACjC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;EACjC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACjC;EACA,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;EACpB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B;EACA,GAAG,OAAO,IAAI,CAAC;AACf;EACA,GAAG;AACH;EACA,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;EACpD,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;EAC7D,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,GAAG,YAAY;EACjE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC;AACrD;EACA,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;EAC9C,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;EAC9C,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;EAC9C,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;AAC9C;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,UAAU,GAAG;AACjC;EACA,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,QAAQ,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,MAAM,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,MAAM,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;AAC1I;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACvC;EACA,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;EAC5B,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACrC;EACA,EAAE,KAAK,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;EACxC,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;EAC5B,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;EAChC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;EAChC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,OAAO,KAAK,CAAC;AACf;EACA,EAAE;AACF;EACA,CAAC,mBAAmB,EAAE,WAAW,SAAS,EAAE,KAAK,GAAG;AACpD;EACA,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACpC,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACpC,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACpC,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACpC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,QAAQ,GAAG;AAClC;EACA,EAAE,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;AACpC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,iBAAiB,EAAE,YAAY,EAAE;AAClC;EACA,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;EAC9B,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;AACrC;EACA,SAAS,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AACxC;EACA,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACZ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACZ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACZ;EACA,CAAC;AACD;EACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE;AAClC;EACA,CAAC,SAAS,EAAE,IAAI;AAChB;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC3B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,MAAM,GAAG;AAChC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;EAClB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;EAClB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AAClB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACb;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,KAAK,EAAE,KAAK,GAAG;AACzC;EACA,EAAE,SAAS,KAAK;AAChB;EACA,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;EACjC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;EACjC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM;EACjC,GAAG,SAAS,MAAM,IAAI,KAAK,EAAE,yBAAyB,GAAG,KAAK,EAAE,CAAC;AACjE;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,KAAK,GAAG;AAClC;EACA,EAAE,SAAS,KAAK;AAChB;EACA,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EACzB,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EACzB,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;EACzB,GAAG,SAAS,MAAM,IAAI,KAAK,EAAE,yBAAyB,GAAG,KAAK,EAAE,CAAC;AACjE;EACA,GAAG;AACH;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AACxD;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACf,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACf,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACf;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACxB;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,uFAAuF,EAAE,CAAC;EAC3G,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClC;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;AAC3B;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACd;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC/B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACpC;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACxB;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,uFAAuF,EAAE,CAAC;EAC3G,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClC;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;AAC3B;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACd;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC/B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC7B;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,iGAAiG,EAAE,CAAC;EACrH,GAAG,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvC;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,cAAc,EAAE,WAAW,MAAM,GAAG;AACrC;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;AACnB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACpC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,UAAU,EAAE,WAAW,KAAK,GAAG;AAChC;EACA,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG;AACtC;EACA,GAAG,OAAO,CAAC,KAAK,EAAE,6FAA6F,EAAE,CAAC;AAClH;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC;AACnE;EACA,EAAE;AACF;EACA,CAAC,cAAc,EAAE,WAAW,IAAI,EAAE,KAAK,GAAG;AAC1C;EACA,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;AAC7E;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;AAC9B;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EAC3C,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AACvB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EAChD,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EAChD,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAChD;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;AACnC;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;AAC5C;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;AAC9B;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EAC3C,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AACvB;EACA,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AACpE;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;EAClE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;EAClE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACnE;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG;AACjC;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EAC3C,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/C;EACA;AACA;EACA,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACtC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACtC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACtC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC;EACA;AACA;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACvD,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACvD,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AACvD;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,MAAM,GAAG;AAC9B;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAChG;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,MAAM,GAAG;AAChC;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,uBAAuB,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;AAChG;EACA,EAAE;AACF;EACA,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG;AACpC;EACA;EACA;AACA;EACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EAC3C,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AACvB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EAChD,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EAChD,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACjD;EACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG;AACxB;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,MAAM,GAAG;AACnC;EACA,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;AAC3C;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG;AAC9B;EACA;AACA;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EACxD,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EACxD,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AACxD;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,MAAM,EAAE,MAAM,GAAG;AAC1C;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAC1D,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAC1D,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1D;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG;AACpC;EACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/B;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACrG;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,YAAY;AACnB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EAChC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,YAAY;AAC1B;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EACvE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;EACvE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AACvE;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,YAAY;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACpB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;AACrB;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD;EACA,EAAE;AACF;EACA;AACA;EACA,CAAC,QAAQ,EAAE,YAAY;AACvB;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7D;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,YAAY;AACrB;EACA,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AAC1E;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,YAAY;AAC9B;EACA,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AACtE;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,YAAY;AACxB;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;AACjD;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,MAAM,GAAG;AAChC;EACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;AACnD;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,KAAK,GAAG;AAC7B;EACA,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;EACrC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;EACrC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;AACrC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG;AACzC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;EAC1C,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;EAC1C,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;AAC1C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC1B;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,2FAA2F,EAAE,CAAC;EAC/G,GAAG,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpC;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACtC;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACjC;EACA,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACrC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG;AACjC;EACA,EAAE,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnC;EACA,EAAE,KAAK,WAAW,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD;EACA,EAAE,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;AAC7C;EACA,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;AACjD;EACA,EAAE;AACF;EACA,CAAC,cAAc,EAAE,WAAW,WAAW,GAAG;AAC1C;EACA,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACtD;EACA,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAC7B;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,MAAM,GAAG;AAC9B;EACA;EACA;AACA;EACA,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACrF;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG;AACzB;EACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAClE;EACA,EAAE,KAAK,WAAW,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C;EACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC;AAC5C;EACA;AACA;EACA,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACvD;EACA,EAAE;AACF;EACA,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG;AAC5B;EACA,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;AAClD;EACA,EAAE;AACF;EACA,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;AACnC;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE;EACA,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC;EACA,EAAE;AACF;EACA,CAAC,mBAAmB,EAAE,WAAW,CAAC,GAAG;AACrC;EACA,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACxF;EACA,EAAE;AACF;EACA,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG;AAClC;EACA,EAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACjE;EACA,EAAE;AACF;EACA,CAAC,sBAAsB,EAAE,WAAW,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG;AACzD;EACA,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAChD;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;EAC5C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;EACpC,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AAC5C;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG;AACpC;EACA,EAAE,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE;EACA,EAAE;AACF;EACA,CAAC,wBAAwB,EAAE,WAAW,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG;AACzD;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;EACtC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACb,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AACtC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,qBAAqB,EAAE,WAAW,CAAC,GAAG;AACvC;EACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AACvB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG;AACpC;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;EACvD,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;EACvD,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;AACvD;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACd;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,KAAK,GAAG;AAC5C;EACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;AACjD;EACA,EAAE;AACF;EACA,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAE,KAAK,GAAG;AAC7C;EACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;AACjD;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG;AACxB;EACA,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,GAAG;AAC5E;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACvC;EACA,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;EAC3B,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;AAC/B;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,MAAM,GAAG;AACrC;EACA,EAAE,KAAK,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;EACxC,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAC3B,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAC/B,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/B;EACA,EAAE,OAAO,KAAK,CAAC;AACf;EACA,EAAE;AACF;EACA,CAAC,mBAAmB,EAAE,WAAW,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG;AAC5D;EACA,EAAE,KAAK,MAAM,KAAK,SAAS,GAAG;AAC9B;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,qEAAqE,EAAE,CAAC;AACzF;EACA,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;EACnC,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACnC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,YAAY;AACrB;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;EAC1B,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;EAC1B,MAAM,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACrC,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACpC,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;EACzB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;EACzB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;AACzB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,SAAS,OAAO,GAAG;AACnB;EACA,CAAC,IAAI,CAAC,QAAQ,GAAG;AACjB;EACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACZ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACZ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACZ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACZ;EACA,EAAE,CAAC;AACH;EACA,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG;AAC7B;EACA,EAAE,OAAO,CAAC,KAAK,EAAE,+EAA+E,EAAE,CAAC;AACnG;EACA,EAAE;AACF;EACA,CAAC;AACD;EACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE;AAClC;EACA,CAAC,SAAS,EAAE,IAAI;AAChB;EACA,CAAC,GAAG,EAAE,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG;AAClG;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;EAC9D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;EAC9D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;EAC/D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;AAC/D;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,QAAQ,EAAE,YAAY;AACvB;EACA,EAAE,IAAI,CAAC,GAAG;AACV;EACA,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACb,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACb,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACb,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACb;EACA,GAAG,CAAC;AACJ;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,KAAK,EAAE,YAAY;AACpB;EACA,EAAE,OAAO,IAAI,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClD;EACA,EAAE;AACF;EACA,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG;AACtB;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC3B,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AACxB;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAC7E,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;EAC7E,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACjF,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrF;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;AAC9B;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC5C;EACA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACtB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACtB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACtB;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,YAAY,EAAE,WAAW,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG;AAChD;EACA,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;EACvC,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;EACvC,EAAE,KAAK,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACvC;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,SAAS,EAAE,WAAW,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG;AAC7C;EACA,EAAE,IAAI,CAAC,GAAG;EACV,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;EAC/B,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;EAC/B,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;EAC/B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACb,GAAG,CAAC;AACJ;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG;AACjC;EACA;AACA;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC3B,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AACxB;EACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;EAC9D,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;EAC9D,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;AAC9D;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACd;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACd;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EAC7B,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;EAC/B,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACf;EACA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EACf,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EACf,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EACf,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACf;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,qBAAqB,EAAE,WAAW,KAAK,GAAG;AAC3C;EACA,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG;AACtC;EACA,GAAG,OAAO,CAAC,KAAK,EAAE,uGAAuG,EAAE,CAAC;AAC5H;EACA,GAAG;AACH;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;EAC9C,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;EAC7C,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;EAC7C,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AAC7C;EACA,EAAE,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG;AAC/B;EACA,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;EACrB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACf;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACrB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB;EACA,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG;AACtC;EACA,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACjB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB;EACA,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG;AACtC;EACA,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;EACrB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;EACrB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB;EACA,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG;AACtC;EACA,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EACjB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB;EACA,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG;AACtC;EACA,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EACf,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACrB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;EACrB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACzB,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1B;EACA,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,GAAG;AACtC;EACA,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EACjB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB;EACA,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EACzB,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAC1B;EACA,GAAG;AACH;EACA;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EACd,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EACd,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACf;EACA;EACA,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EACf,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EACf,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EACf,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACf;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,0BAA0B,EAAE,WAAW,CAAC,GAAG;AAC5C;EACA,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AACxC;EACA,EAAE;AACF;EACA,CAAC,MAAM,EAAE,WAAW,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG;AACtC;EACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC/B;EACA,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG;AAC7B;EACA;AACA;EACA,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACZ;EACA,GAAG;AACH;EACA,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;EACjB,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B;EACA,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG;AAC7B;EACA;AACA;EACA,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG;AACjC;EACA,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC;AACnB;EACA,IAAI,MAAM;AACV;EACA,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC;AACnB;EACA,IAAI;AACJ;EACA,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;EAClB,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC7B;EACA,GAAG;AACH;EACA,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;EACjB,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;EACjD,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;EACjD,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD;EACA,EAAE,OAAO,IAAI,CAAC;AACd;EACA,EAAE;AACF;EACA,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC7B;EACA,EAAE,KAAK,CAAC,KAAK,SAAS,GAAG;AACzB;EACA,GAAG,OAAO,CAAC,IAAI,EAAE,kGAAkG,EAAE,CAAC;EACtH,GAAG,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxC;EACA,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC1C;EACA,EAAE;AACF;EACA,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG;AAC7B;EACA,EAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAC1C;EACA,EAAE;AACF;EACA,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACrC;EACA,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;EACxB,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;EACxB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B;EACA,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACrE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrE;EACA,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACpE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACrE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrE;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC3D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;EACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAC3D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;EACA,EAAE,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,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAChF,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAChF,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAChF,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAChF,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAChF,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAChF,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAChF,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CA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A;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,OAAO;AACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,EAAE,UAAU;AAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,EAAE,UAAU;AAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,OAAO;AACpB;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,YAAY,EAAE,YAAY;AAC9B;EACA;EACA;EACA;EACA,IAAI,YAAY,EAAE,YAAY;AAC9B;EACA;EACA;EACA;EACA,IAAI,aAAa,EAAE,YAAY;EAC/B;EACA;EACA;EACA;EACA,IAAI,aAAa,EAAE,YAAY;AAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,QAAQ,EAAE,QAAQ;AACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW,EAAE,WAAW;AAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,iBAAiB,EAAE,iBAAiB;AACxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW,EAAE,WAAW;AAC5B;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW,EAAE,iBAAiB;AAClC;EACA;EACA;EACA;EACA;EACA,IAAI,SAAS,EAAE,gBAAgB;AAC/B;EACA;EACA;EACA;EACA,IAAI,KAAK,EAAE,KAAK;AAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,OAAO;AACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,OAAO;AACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,OAAO;EACpB,GAAG,CAAC;AACJ;EACA;EACA,EAAEc,aAAQ,CAAC,SAAS,CAAC,CAAC;AACtB;EACA,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"}