Skip to content

Instantly share code, notes, and snippets.

@sasha240100
Created October 10, 2018 18:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sasha240100/41092147f66248002659163f8d5f31fe to your computer and use it in GitHub Desktop.
Save sasha240100/41092147f66248002659163f8d5f31fe to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
!function(n){var t={};function e(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}e.m=n,e.c=t,e.d=function(n,t,r){e.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:r})},e.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},e.t=function(n,t){if(1&t&&(n=e(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var i in n)e.d(r,i,function(t){return n[t]}.bind(null,i));return r},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},e.p="",e(e.s=27)}([function(n,t,e){"use strict";e.r(t),function(n){function r(){}e.d(t,"WebGLRenderTargetCube",function(){return Zt}),e.d(t,"WebGLRenderTarget",function(){return Yt}),e.d(t,"WebGLRenderer",function(){return ai}),e.d(t,"ShaderLib",function(){return ae}),e.d(t,"UniformsLib",function(){return oe}),e.d(t,"UniformsUtils",function(){return ee}),e.d(t,"ShaderChunk",function(){return te}),e.d(t,"FogExp2",function(){return li}),e.d(t,"Fog",function(){return si}),e.d(t,"Scene",function(){return ci}),e.d(t,"Sprite",function(){return di}),e.d(t,"LOD",function(){return fi}),e.d(t,"SkinnedMesh",function(){return gi}),e.d(t,"Skeleton",function(){return pi}),e.d(t,"Bone",function(){return mi}),e.d(t,"Mesh",function(){return je}),e.d(t,"LineSegments",function(){return bi}),e.d(t,"LineLoop",function(){return wi}),e.d(t,"Line",function(){return xi}),e.d(t,"Points",function(){return _i}),e.d(t,"Group",function(){return ei}),e.d(t,"VideoTexture",function(){return Ei}),e.d(t,"DataTexture",function(){return Jt}),e.d(t,"CompressedTexture",function(){return Si}),e.d(t,"CubeTexture",function(){return Ve}),e.d(t,"CanvasTexture",function(){return Ti}),e.d(t,"DepthTexture",function(){return Ai}),e.d(t,"Texture",function(){return Xt}),e.d(t,"CompressedTextureLoader",function(){return ra}),e.d(t,"DataTextureLoader",function(){return ia}),e.d(t,"CubeTextureLoader",function(){return aa}),e.d(t,"TextureLoader",function(){return la}),e.d(t,"ObjectLoader",function(){return sl}),e.d(t,"MaterialLoader",function(){return el}),e.d(t,"BufferGeometryLoader",function(){return rl}),e.d(t,"DefaultLoadingManager",function(){return na}),e.d(t,"LoadingManager",function(){return $o}),e.d(t,"JSONLoader",function(){return ll}),e.d(t,"ImageLoader",function(){return oa}),e.d(t,"ImageBitmapLoader",function(){return dl}),e.d(t,"FontLoader",function(){return gl}),e.d(t,"FileLoader",function(){return ea}),e.d(t,"Loader",function(){return ol}),e.d(t,"LoaderUtils",function(){return al}),e.d(t,"Cache",function(){return Qo}),e.d(t,"AudioLoader",function(){return xl}),e.d(t,"SpotLightShadow",function(){return Ua}),e.d(t,"SpotLight",function(){return Na}),e.d(t,"PointLight",function(){return Ia}),e.d(t,"RectAreaLight",function(){return Ga}),e.d(t,"HemisphereLight",function(){return Oa}),e.d(t,"DirectionalLightShadow",function(){return Ba}),e.d(t,"DirectionalLight",function(){return Fa}),e.d(t,"AmbientLight",function(){return za}),e.d(t,"LightShadow",function(){return Da}),e.d(t,"Light",function(){return Ra}),e.d(t,"StereoCamera",function(){return bl}),e.d(t,"PerspectiveCamera",function(){return ri}),e.d(t,"OrthographicCamera",function(){return fe}),e.d(t,"CubeCamera",function(){return wl}),e.d(t,"ArrayCamera",function(){return ii}),e.d(t,"Camera",function(){return de}),e.d(t,"AudioListener",function(){return Ml}),e.d(t,"PositionalAudio",function(){return El}),e.d(t,"AudioContext",function(){return yl}),e.d(t,"AudioAnalyser",function(){return Sl}),e.d(t,"Audio",function(){return _l}),e.d(t,"VectorKeyframeTrack",function(){return $a}),e.d(t,"StringKeyframeTrack",function(){return Qa}),e.d(t,"QuaternionKeyframeTrack",function(){return Ka}),e.d(t,"NumberKeyframeTrack",function(){return Za}),e.d(t,"ColorKeyframeTrack",function(){return Ya}),e.d(t,"BooleanKeyframeTrack",function(){return qa}),e.d(t,"PropertyMixer",function(){return Tl}),e.d(t,"PropertyBinding",function(){return Cl}),e.d(t,"KeyframeTrack",function(){return Xa}),e.d(t,"AnimationUtils",function(){return ka}),e.d(t,"AnimationObjectGroup",function(){return Rl}),e.d(t,"AnimationMixer",function(){return Dl}),e.d(t,"AnimationClip",function(){return nl}),e.d(t,"Uniform",function(){return Ul}),e.d(t,"InstancedBufferGeometry",function(){return Nl}),e.d(t,"BufferGeometry",function(){return Re}),e.d(t,"Geometry",function(){return ge}),e.d(t,"InterleavedBufferAttribute",function(){return hi}),e.d(t,"InstancedInterleavedBuffer",function(){return Il}),e.d(t,"InterleavedBuffer",function(){return ui}),e.d(t,"InstancedBufferAttribute",function(){return Bl}),e.d(t,"Face3",function(){return pe}),e.d(t,"Object3D",function(){return ve}),e.d(t,"Raycaster",function(){return Fl}),e.d(t,"Layers",function(){return ue}),e.d(t,"EventDispatcher",function(){return r}),e.d(t,"Clock",function(){return kl}),e.d(t,"QuaternionLinearInterpolant",function(){return Ja}),e.d(t,"LinearInterpolant",function(){return Va}),e.d(t,"DiscreteInterpolant",function(){return Wa}),e.d(t,"CubicInterpolant",function(){return Ha}),e.d(t,"Interpolant",function(){return ja}),e.d(t,"Triangle",function(){return ke}),e.d(t,"Math",function(){return Ft}),e.d(t,"Spherical",function(){return jl}),e.d(t,"Cylindrical",function(){return Hl}),e.d(t,"Plane",function(){return $t}),e.d(t,"Frustum",function(){return ne}),e.d(t,"Sphere",function(){return Qt}),e.d(t,"Ray",function(){return Ge}),e.d(t,"Matrix4",function(){return Gt}),e.d(t,"Matrix3",function(){return Ht}),e.d(t,"Box3",function(){return Kt}),e.d(t,"Box2",function(){return Vl}),e.d(t,"Line3",function(){return Wl}),e.d(t,"Euler",function(){return ce}),e.d(t,"Vector4",function(){return qt}),e.d(t,"Vector3",function(){return jt}),e.d(t,"Vector2",function(){return zt}),e.d(t,"Quaternion",function(){return kt}),e.d(t,"Color",function(){return ie}),e.d(t,"ImmediateRenderObject",function(){return Xl}),e.d(t,"VertexNormalsHelper",function(){return ql}),e.d(t,"SpotLightHelper",function(){return Yl}),e.d(t,"SkeletonHelper",function(){return Zl}),e.d(t,"PointLightHelper",function(){return Jl}),e.d(t,"RectAreaLightHelper",function(){return Kl}),e.d(t,"HemisphereLightHelper",function(){return Ql}),e.d(t,"GridHelper",function(){return $l}),e.d(t,"PolarGridHelper",function(){return ns}),e.d(t,"FaceNormalsHelper",function(){return ts}),e.d(t,"DirectionalLightHelper",function(){return es}),e.d(t,"CameraHelper",function(){return rs}),e.d(t,"BoxHelper",function(){return is}),e.d(t,"Box3Helper",function(){return os}),e.d(t,"PlaneHelper",function(){return as}),e.d(t,"ArrowHelper",function(){return ls}),e.d(t,"AxesHelper",function(){return ss}),e.d(t,"Shape",function(){return Ca}),e.d(t,"Path",function(){return Pa}),e.d(t,"ShapePath",function(){return fl}),e.d(t,"Font",function(){return pl}),e.d(t,"CurvePath",function(){return La}),e.d(t,"Curve",function(){return sa}),e.d(t,"ImageUtils",function(){return Vt}),e.d(t,"ShapeUtils",function(){return mo}),e.d(t,"WebGLUtils",function(){return ti}),e.d(t,"WireframeGeometry",function(){return Li}),e.d(t,"ParametricGeometry",function(){return Pi}),e.d(t,"ParametricBufferGeometry",function(){return Ci}),e.d(t,"TetrahedronGeometry",function(){return Di}),e.d(t,"TetrahedronBufferGeometry",function(){return Ui}),e.d(t,"OctahedronGeometry",function(){return Ni}),e.d(t,"OctahedronBufferGeometry",function(){return Ii}),e.d(t,"IcosahedronGeometry",function(){return Bi}),e.d(t,"IcosahedronBufferGeometry",function(){return Fi}),e.d(t,"DodecahedronGeometry",function(){return zi}),e.d(t,"DodecahedronBufferGeometry",function(){return Gi}),e.d(t,"PolyhedronGeometry",function(){return Ri}),e.d(t,"PolyhedronBufferGeometry",function(){return Oi}),e.d(t,"TubeGeometry",function(){return ki}),e.d(t,"TubeBufferGeometry",function(){return ji}),e.d(t,"TorusKnotGeometry",function(){return Hi}),e.d(t,"TorusKnotBufferGeometry",function(){return Vi}),e.d(t,"TorusGeometry",function(){return Wi}),e.d(t,"TorusBufferGeometry",function(){return Xi}),e.d(t,"TextGeometry",function(){return _o}),e.d(t,"TextBufferGeometry",function(){return Eo}),e.d(t,"SphereGeometry",function(){return So}),e.d(t,"SphereBufferGeometry",function(){return To}),e.d(t,"RingGeometry",function(){return Ao}),e.d(t,"RingBufferGeometry",function(){return Lo}),e.d(t,"PlaneGeometry",function(){return Ue}),e.d(t,"PlaneBufferGeometry",function(){return Ne}),e.d(t,"LatheGeometry",function(){return Po}),e.d(t,"LatheBufferGeometry",function(){return Co}),e.d(t,"ShapeGeometry",function(){return Ro}),e.d(t,"ShapeBufferGeometry",function(){return Oo}),e.d(t,"ExtrudeGeometry",function(){return xo}),e.d(t,"ExtrudeBufferGeometry",function(){return bo}),e.d(t,"EdgesGeometry",function(){return Uo}),e.d(t,"ConeGeometry",function(){return Bo}),e.d(t,"ConeBufferGeometry",function(){return Fo}),e.d(t,"CylinderGeometry",function(){return No}),e.d(t,"CylinderBufferGeometry",function(){return Io}),e.d(t,"CircleGeometry",function(){return zo}),e.d(t,"CircleBufferGeometry",function(){return Go}),e.d(t,"BoxGeometry",function(){return Oe}),e.d(t,"BoxBufferGeometry",function(){return De}),e.d(t,"ShadowMaterial",function(){return jo}),e.d(t,"SpriteMaterial",function(){return vi}),e.d(t,"RawShaderMaterial",function(){return Ho}),e.d(t,"ShaderMaterial",function(){return ze}),e.d(t,"PointsMaterial",function(){return Mi}),e.d(t,"MeshPhysicalMaterial",function(){return Wo}),e.d(t,"MeshStandardMaterial",function(){return Vo}),e.d(t,"MeshPhongMaterial",function(){return Xo}),e.d(t,"MeshToonMaterial",function(){return qo}),e.d(t,"MeshNormalMaterial",function(){return Yo}),e.d(t,"MeshLambertMaterial",function(){return Zo}),e.d(t,"MeshDepthMaterial",function(){return Kr}),e.d(t,"MeshDistanceMaterial",function(){return Qr}),e.d(t,"MeshBasicMaterial",function(){return Fe}),e.d(t,"LineDashedMaterial",function(){return Jo}),e.d(t,"LineBasicMaterial",function(){return yi}),e.d(t,"Material",function(){return Be}),e.d(t,"Float64BufferAttribute",function(){return Ae}),e.d(t,"Float32BufferAttribute",function(){return Te}),e.d(t,"Uint32BufferAttribute",function(){return Se}),e.d(t,"Int32BufferAttribute",function(){return Ee}),e.d(t,"Uint16BufferAttribute",function(){return _e}),e.d(t,"Int16BufferAttribute",function(){return Me}),e.d(t,"Uint8ClampedBufferAttribute",function(){return we}),e.d(t,"Uint8BufferAttribute",function(){return be}),e.d(t,"Int8BufferAttribute",function(){return xe}),e.d(t,"BufferAttribute",function(){return ye}),e.d(t,"ArcCurve",function(){return ua}),e.d(t,"CatmullRomCurve3",function(){return ma}),e.d(t,"CubicBezierCurve",function(){return ba}),e.d(t,"CubicBezierCurve3",function(){return wa}),e.d(t,"EllipseCurve",function(){return ca}),e.d(t,"LineCurve",function(){return Ma}),e.d(t,"LineCurve3",function(){return _a}),e.d(t,"QuadraticBezierCurve",function(){return Ea}),e.d(t,"QuadraticBezierCurve3",function(){return Sa}),e.d(t,"SplineCurve",function(){return Ta}),e.d(t,"REVISION",function(){return i}),e.d(t,"MOUSE",function(){return o}),e.d(t,"CullFaceNone",function(){return a}),e.d(t,"CullFaceBack",function(){return l}),e.d(t,"CullFaceFront",function(){return s}),e.d(t,"CullFaceFrontBack",function(){return c}),e.d(t,"FrontFaceDirectionCW",function(){return u}),e.d(t,"FrontFaceDirectionCCW",function(){return h}),e.d(t,"BasicShadowMap",function(){return v}),e.d(t,"PCFShadowMap",function(){return d}),e.d(t,"PCFSoftShadowMap",function(){return f}),e.d(t,"FrontSide",function(){return p}),e.d(t,"BackSide",function(){return m}),e.d(t,"DoubleSide",function(){return g}),e.d(t,"FlatShading",function(){return y}),e.d(t,"SmoothShading",function(){return x}),e.d(t,"NoColors",function(){return b}),e.d(t,"FaceColors",function(){return w}),e.d(t,"VertexColors",function(){return M}),e.d(t,"NoBlending",function(){return _}),e.d(t,"NormalBlending",function(){return E}),e.d(t,"AdditiveBlending",function(){return S}),e.d(t,"SubtractiveBlending",function(){return T}),e.d(t,"MultiplyBlending",function(){return A}),e.d(t,"CustomBlending",function(){return L}),e.d(t,"AddEquation",function(){return P}),e.d(t,"SubtractEquation",function(){return C}),e.d(t,"ReverseSubtractEquation",function(){return R}),e.d(t,"MinEquation",function(){return O}),e.d(t,"MaxEquation",function(){return D}),e.d(t,"ZeroFactor",function(){return U}),e.d(t,"OneFactor",function(){return N}),e.d(t,"SrcColorFactor",function(){return I}),e.d(t,"OneMinusSrcColorFactor",function(){return B}),e.d(t,"SrcAlphaFactor",function(){return F}),e.d(t,"OneMinusSrcAlphaFactor",function(){return z}),e.d(t,"DstAlphaFactor",function(){return G}),e.d(t,"OneMinusDstAlphaFactor",function(){return k}),e.d(t,"DstColorFactor",function(){return j}),e.d(t,"OneMinusDstColorFactor",function(){return H}),e.d(t,"SrcAlphaSaturateFactor",function(){return V}),e.d(t,"NeverDepth",function(){return W}),e.d(t,"AlwaysDepth",function(){return X}),e.d(t,"LessDepth",function(){return q}),e.d(t,"LessEqualDepth",function(){return Y}),e.d(t,"EqualDepth",function(){return Z}),e.d(t,"GreaterEqualDepth",function(){return J}),e.d(t,"GreaterDepth",function(){return K}),e.d(t,"NotEqualDepth",function(){return Q}),e.d(t,"MultiplyOperation",function(){return $}),e.d(t,"MixOperation",function(){return nn}),e.d(t,"AddOperation",function(){return tn}),e.d(t,"NoToneMapping",function(){return en}),e.d(t,"LinearToneMapping",function(){return rn}),e.d(t,"ReinhardToneMapping",function(){return on}),e.d(t,"Uncharted2ToneMapping",function(){return an}),e.d(t,"CineonToneMapping",function(){return ln}),e.d(t,"UVMapping",function(){return sn}),e.d(t,"CubeReflectionMapping",function(){return cn}),e.d(t,"CubeRefractionMapping",function(){return un}),e.d(t,"EquirectangularReflectionMapping",function(){return hn}),e.d(t,"EquirectangularRefractionMapping",function(){return vn}),e.d(t,"SphericalReflectionMapping",function(){return dn}),e.d(t,"CubeUVReflectionMapping",function(){return fn}),e.d(t,"CubeUVRefractionMapping",function(){return pn}),e.d(t,"RepeatWrapping",function(){return mn}),e.d(t,"ClampToEdgeWrapping",function(){return gn}),e.d(t,"MirroredRepeatWrapping",function(){return yn}),e.d(t,"NearestFilter",function(){return xn}),e.d(t,"NearestMipMapNearestFilter",function(){return bn}),e.d(t,"NearestMipMapLinearFilter",function(){return wn}),e.d(t,"LinearFilter",function(){return Mn}),e.d(t,"LinearMipMapNearestFilter",function(){return _n}),e.d(t,"LinearMipMapLinearFilter",function(){return En}),e.d(t,"UnsignedByteType",function(){return Sn}),e.d(t,"ByteType",function(){return Tn}),e.d(t,"ShortType",function(){return An}),e.d(t,"UnsignedShortType",function(){return Ln}),e.d(t,"IntType",function(){return Pn}),e.d(t,"UnsignedIntType",function(){return Cn}),e.d(t,"FloatType",function(){return Rn}),e.d(t,"HalfFloatType",function(){return On}),e.d(t,"UnsignedShort4444Type",function(){return Dn}),e.d(t,"UnsignedShort5551Type",function(){return Un}),e.d(t,"UnsignedShort565Type",function(){return Nn}),e.d(t,"UnsignedInt248Type",function(){return In}),e.d(t,"AlphaFormat",function(){return Bn}),e.d(t,"RGBFormat",function(){return Fn}),e.d(t,"RGBAFormat",function(){return zn}),e.d(t,"LuminanceFormat",function(){return Gn}),e.d(t,"LuminanceAlphaFormat",function(){return kn}),e.d(t,"RGBEFormat",function(){return jn}),e.d(t,"DepthFormat",function(){return Hn}),e.d(t,"DepthStencilFormat",function(){return Vn}),e.d(t,"RGB_S3TC_DXT1_Format",function(){return Wn}),e.d(t,"RGBA_S3TC_DXT1_Format",function(){return Xn}),e.d(t,"RGBA_S3TC_DXT3_Format",function(){return qn}),e.d(t,"RGBA_S3TC_DXT5_Format",function(){return Yn}),e.d(t,"RGB_PVRTC_4BPPV1_Format",function(){return Zn}),e.d(t,"RGB_PVRTC_2BPPV1_Format",function(){return Jn}),e.d(t,"RGBA_PVRTC_4BPPV1_Format",function(){return Kn}),e.d(t,"RGBA_PVRTC_2BPPV1_Format",function(){return Qn}),e.d(t,"RGB_ETC1_Format",function(){return $n}),e.d(t,"RGBA_ASTC_4x4_Format",function(){return nt}),e.d(t,"RGBA_ASTC_5x4_Format",function(){return tt}),e.d(t,"RGBA_ASTC_5x5_Format",function(){return et}),e.d(t,"RGBA_ASTC_6x5_Format",function(){return rt}),e.d(t,"RGBA_ASTC_6x6_Format",function(){return it}),e.d(t,"RGBA_ASTC_8x5_Format",function(){return ot}),e.d(t,"RGBA_ASTC_8x6_Format",function(){return at}),e.d(t,"RGBA_ASTC_8x8_Format",function(){return lt}),e.d(t,"RGBA_ASTC_10x5_Format",function(){return st}),e.d(t,"RGBA_ASTC_10x6_Format",function(){return ct}),e.d(t,"RGBA_ASTC_10x8_Format",function(){return ut}),e.d(t,"RGBA_ASTC_10x10_Format",function(){return ht}),e.d(t,"RGBA_ASTC_12x10_Format",function(){return vt}),e.d(t,"RGBA_ASTC_12x12_Format",function(){return dt}),e.d(t,"LoopOnce",function(){return ft}),e.d(t,"LoopRepeat",function(){return pt}),e.d(t,"LoopPingPong",function(){return mt}),e.d(t,"InterpolateDiscrete",function(){return gt}),e.d(t,"InterpolateLinear",function(){return yt}),e.d(t,"InterpolateSmooth",function(){return xt}),e.d(t,"ZeroCurvatureEnding",function(){return bt}),e.d(t,"ZeroSlopeEnding",function(){return wt}),e.d(t,"WrapAroundEnding",function(){return Mt}),e.d(t,"TrianglesDrawMode",function(){return _t}),e.d(t,"TriangleStripDrawMode",function(){return Et}),e.d(t,"TriangleFanDrawMode",function(){return St}),e.d(t,"LinearEncoding",function(){return Tt}),e.d(t,"sRGBEncoding",function(){return At}),e.d(t,"GammaEncoding",function(){return Lt}),e.d(t,"RGBEEncoding",function(){return Pt}),e.d(t,"LogLuvEncoding",function(){return Ct}),e.d(t,"RGBM7Encoding",function(){return Rt}),e.d(t,"RGBM16Encoding",function(){return Ot}),e.d(t,"RGBDEncoding",function(){return Dt}),e.d(t,"BasicDepthPacking",function(){return Ut}),e.d(t,"RGBADepthPacking",function(){return Nt}),e.d(t,"TangentSpaceNormalMap",function(){return It}),e.d(t,"ObjectSpaceNormalMap",function(){return Bt}),e.d(t,"CubeGeometry",function(){return Oe}),e.d(t,"Face4",function(){return cs}),e.d(t,"LineStrip",function(){return us}),e.d(t,"LinePieces",function(){return hs}),e.d(t,"MeshFaceMaterial",function(){return vs}),e.d(t,"MultiMaterial",function(){return ds}),e.d(t,"PointCloud",function(){return fs}),e.d(t,"Particle",function(){return ps}),e.d(t,"ParticleSystem",function(){return ms}),e.d(t,"PointCloudMaterial",function(){return gs}),e.d(t,"ParticleBasicMaterial",function(){return ys}),e.d(t,"ParticleSystemMaterial",function(){return xs}),e.d(t,"Vertex",function(){return bs}),e.d(t,"DynamicBufferAttribute",function(){return ws}),e.d(t,"Int8Attribute",function(){return Ms}),e.d(t,"Uint8Attribute",function(){return _s}),e.d(t,"Uint8ClampedAttribute",function(){return Es}),e.d(t,"Int16Attribute",function(){return Ss}),e.d(t,"Uint16Attribute",function(){return Ts}),e.d(t,"Int32Attribute",function(){return As}),e.d(t,"Uint32Attribute",function(){return Ls}),e.d(t,"Float32Attribute",function(){return Ps}),e.d(t,"Float64Attribute",function(){return Cs}),e.d(t,"ClosedSplineCurve3",function(){return Rs}),e.d(t,"SplineCurve3",function(){return Os}),e.d(t,"Spline",function(){return Ds}),e.d(t,"AxisHelper",function(){return Us}),e.d(t,"BoundingBoxHelper",function(){return Ns}),e.d(t,"EdgesHelper",function(){return Is}),e.d(t,"WireframeHelper",function(){return Bs}),e.d(t,"XHRLoader",function(){return Fs}),e.d(t,"BinaryTextureLoader",function(){return zs}),e.d(t,"GeometryUtils",function(){return Gs}),e.d(t,"Projector",function(){return ks}),e.d(t,"CanvasRenderer",function(){return js}),e.d(t,"SceneUtils",function(){return Hs}),e.d(t,"LensFlare",function(){return Vs}),void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52)),void 0===Number.isInteger&&(Number.isInteger=function(n){return"number"==typeof n&&isFinite(n)&&Math.floor(n)===n}),void 0===Math.sign&&(Math.sign=function(n){return n<0?-1:n>0?1:+n}),"name"in Function.prototype==!1&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(n){if(void 0===n||null===n)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(n),e=1;e<arguments.length;e++){var r=arguments[e];if(void 0!==r&&null!==r)for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])}return t}),Object.assign(r.prototype,{addEventListener:function(n,t){void 0===this._listeners&&(this._listeners={});var e=this._listeners;void 0===e[n]&&(e[n]=[]),-1===e[n].indexOf(t)&&e[n].push(t)},hasEventListener:function(n,t){if(void 0===this._listeners)return!1;var e=this._listeners;return void 0!==e[n]&&-1!==e[n].indexOf(t)},removeEventListener:function(n,t){if(void 0!==this._listeners){var e=this._listeners[n];if(void 0!==e){var r=e.indexOf(t);-1!==r&&e.splice(r,1)}}},dispatchEvent:function(n){if(void 0!==this._listeners){var t=this._listeners[n.type];if(void 0!==t){n.target=this;for(var e=t.slice(0),r=0,i=e.length;r<i;r++)e[r].call(this,n)}}}});var i="95",o={LEFT:0,MIDDLE:1,RIGHT:2},a=0,l=1,s=2,c=3,u=0,h=1,v=0,d=1,f=2,p=0,m=1,g=2,y=1,x=2,b=0,w=1,M=2,_=0,E=1,S=2,T=3,A=4,L=5,P=100,C=101,R=102,O=103,D=104,U=200,N=201,I=202,B=203,F=204,z=205,G=206,k=207,j=208,H=209,V=210,W=0,X=1,q=2,Y=3,Z=4,J=5,K=6,Q=7,$=0,nn=1,tn=2,en=0,rn=1,on=2,an=3,ln=4,sn=300,cn=301,un=302,hn=303,vn=304,dn=305,fn=306,pn=307,mn=1e3,gn=1001,yn=1002,xn=1003,bn=1004,wn=1005,Mn=1006,_n=1007,En=1008,Sn=1009,Tn=1010,An=1011,Ln=1012,Pn=1013,Cn=1014,Rn=1015,On=1016,Dn=1017,Un=1018,Nn=1019,In=1020,Bn=1021,Fn=1022,zn=1023,Gn=1024,kn=1025,jn=zn,Hn=1026,Vn=1027,Wn=33776,Xn=33777,qn=33778,Yn=33779,Zn=35840,Jn=35841,Kn=35842,Qn=35843,$n=36196,nt=37808,tt=37809,et=37810,rt=37811,it=37812,ot=37813,at=37814,lt=37815,st=37816,ct=37817,ut=37818,ht=37819,vt=37820,dt=37821,ft=2200,pt=2201,mt=2202,gt=2300,yt=2301,xt=2302,bt=2400,wt=2401,Mt=2402,_t=0,Et=1,St=2,Tt=3e3,At=3001,Lt=3007,Pt=3002,Ct=3003,Rt=3004,Ot=3005,Dt=3006,Ut=3200,Nt=3201,It=0,Bt=1,Ft={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:function(){for(var n=[],t=0;t<256;t++)n[t]=(t<16?"0":"")+t.toString(16);return function(){var t=4294967295*Math.random()|0,e=4294967295*Math.random()|0,r=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return(n[255&t]+n[t>>8&255]+n[t>>16&255]+n[t>>24&255]+"-"+n[255&e]+n[e>>8&255]+"-"+n[e>>16&15|64]+n[e>>24&255]+"-"+n[63&r|128]+n[r>>8&255]+"-"+n[r>>16&255]+n[r>>24&255]+n[255&i]+n[i>>8&255]+n[i>>16&255]+n[i>>24&255]).toUpperCase()}}(),clamp:function(n,t,e){return Math.max(t,Math.min(e,n))},euclideanModulo:function(n,t){return(n%t+t)%t},mapLinear:function(n,t,e,r,i){return r+(n-t)*(i-r)/(e-t)},lerp:function(n,t,e){return(1-e)*n+e*t},smoothstep:function(n,t,e){return n<=t?0:n>=e?1:(n=(n-t)/(e-t))*n*(3-2*n)},smootherstep:function(n,t,e){return n<=t?0:n>=e?1:(n=(n-t)/(e-t))*n*n*(n*(6*n-15)+10)},randInt:function(n,t){return n+Math.floor(Math.random()*(t-n+1))},randFloat:function(n,t){return n+Math.random()*(t-n)},randFloatSpread:function(n){return n*(.5-Math.random())},degToRad:function(n){return n*Ft.DEG2RAD},radToDeg:function(n){return n*Ft.RAD2DEG},isPowerOfTwo:function(n){return 0==(n&n-1)&&0!==n},ceilPowerOfTwo:function(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))},floorPowerOfTwo:function(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}};function zt(n,t){this.x=n||0,this.y=t||0}function Gt(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function kt(n,t,e,r){this._x=n||0,this._y=t||0,this._z=e||0,this._w=void 0!==r?r:1}function jt(n,t,e){this.x=n||0,this.y=t||0,this.z=e||0}function Ht(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.defineProperties(zt.prototype,{width:{get:function(){return this.x},set:function(n){this.x=n}},height:{get:function(){return this.y},set:function(n){this.y=n}}}),Object.assign(zt.prototype,{isVector2:!0,set:function(n,t){return this.x=n,this.y=t,this},setScalar:function(n){return this.x=n,this.y=n,this},setX:function(n){return this.x=n,this},setY:function(n){return this.y=n,this},setComponent:function(n,t){switch(n){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+n)}return this},getComponent:function(n){switch(n){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+n)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(n){return this.x=n.x,this.y=n.y,this},add:function(n,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(n,t)):(this.x+=n.x,this.y+=n.y,this)},addScalar:function(n){return this.x+=n,this.y+=n,this},addVectors:function(n,t){return this.x=n.x+t.x,this.y=n.y+t.y,this},addScaledVector:function(n,t){return this.x+=n.x*t,this.y+=n.y*t,this},sub:function(n,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(n,t)):(this.x-=n.x,this.y-=n.y,this)},subScalar:function(n){return this.x-=n,this.y-=n,this},subVectors:function(n,t){return this.x=n.x-t.x,this.y=n.y-t.y,this},multiply:function(n){return this.x*=n.x,this.y*=n.y,this},multiplyScalar:function(n){return this.x*=n,this.y*=n,this},divide:function(n){return this.x/=n.x,this.y/=n.y,this},divideScalar:function(n){return this.multiplyScalar(1/n)},applyMatrix3:function(n){var t=this.x,e=this.y,r=n.elements;return this.x=r[0]*t+r[3]*e+r[6],this.y=r[1]*t+r[4]*e+r[7],this},min:function(n){return this.x=Math.min(this.x,n.x),this.y=Math.min(this.y,n.y),this},max:function(n){return this.x=Math.max(this.x,n.x),this.y=Math.max(this.y,n.y),this},clamp:function(n,t){return this.x=Math.max(n.x,Math.min(t.x,this.x)),this.y=Math.max(n.y,Math.min(t.y,this.y)),this},clampScalar:function(){var n=new zt,t=new zt;return function(e,r){return n.set(e,e),t.set(r,r),this.clamp(n,t)}}(),clampLength:function(n,t){var e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(n,Math.min(t,e)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(n){return this.x*n.x+this.y*n.y},cross:function(n){return this.x*n.y-this.y*n.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var n=Math.atan2(this.y,this.x);return n<0&&(n+=2*Math.PI),n},distanceTo:function(n){return Math.sqrt(this.distanceToSquared(n))},distanceToSquared:function(n){var t=this.x-n.x,e=this.y-n.y;return t*t+e*e},manhattanDistanceTo:function(n){return Math.abs(this.x-n.x)+Math.abs(this.y-n.y)},setLength:function(n){return this.normalize().multiplyScalar(n)},lerp:function(n,t){return this.x+=(n.x-this.x)*t,this.y+=(n.y-this.y)*t,this},lerpVectors:function(n,t,e){return this.subVectors(t,n).multiplyScalar(e).add(n)},equals:function(n){return n.x===this.x&&n.y===this.y},fromArray:function(n,t){return void 0===t&&(t=0),this.x=n[t],this.y=n[t+1],this},toArray:function(n,t){return void 0===n&&(n=[]),void 0===t&&(t=0),n[t]=this.x,n[t+1]=this.y,n},fromBufferAttribute:function(n,t,e){return void 0!==e&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=n.getX(t),this.y=n.getY(t),this},rotateAround:function(n,t){var e=Math.cos(t),r=Math.sin(t),i=this.x-n.x,o=this.y-n.y;return this.x=i*e-o*r+n.x,this.y=i*r+o*e+n.y,this}}),Object.assign(Gt.prototype,{isMatrix4:!0,set:function(n,t,e,r,i,o,a,l,s,c,u,h,v,d,f,p){var m=this.elements;return m[0]=n,m[4]=t,m[8]=e,m[12]=r,m[1]=i,m[5]=o,m[9]=a,m[13]=l,m[2]=s,m[6]=c,m[10]=u,m[14]=h,m[3]=v,m[7]=d,m[11]=f,m[15]=p,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new Gt).fromArray(this.elements)},copy:function(n){var t=this.elements,e=n.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],this},copyPosition:function(n){var t=this.elements,e=n.elements;return t[12]=e[12],t[13]=e[13],t[14]=e[14],this},extractBasis:function(n,t,e){return n.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this},makeBasis:function(n,t,e){return this.set(n.x,t.x,e.x,0,n.y,t.y,e.y,0,n.z,t.z,e.z,0,0,0,0,1),this},extractRotation:function(){var n=new jt;return function(t){var e=this.elements,r=t.elements,i=1/n.setFromMatrixColumn(t,0).length(),o=1/n.setFromMatrixColumn(t,1).length(),a=1/n.setFromMatrixColumn(t,2).length();return e[0]=r[0]*i,e[1]=r[1]*i,e[2]=r[2]*i,e[3]=0,e[4]=r[4]*o,e[5]=r[5]*o,e[6]=r[6]*o,e[7]=0,e[8]=r[8]*a,e[9]=r[9]*a,e[10]=r[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}}(),makeRotationFromEuler:function(n){n&&n.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,e=n.x,r=n.y,i=n.z,o=Math.cos(e),a=Math.sin(e),l=Math.cos(r),s=Math.sin(r),c=Math.cos(i),u=Math.sin(i);if("XYZ"===n.order){var h=o*c,v=o*u,d=a*c,f=a*u;t[0]=l*c,t[4]=-l*u,t[8]=s,t[1]=v+d*s,t[5]=h-f*s,t[9]=-a*l,t[2]=f-h*s,t[6]=d+v*s,t[10]=o*l}else if("YXZ"===n.order){var p=l*c,m=l*u,g=s*c,y=s*u;t[0]=p+y*a,t[4]=g*a-m,t[8]=o*s,t[1]=o*u,t[5]=o*c,t[9]=-a,t[2]=m*a-g,t[6]=y+p*a,t[10]=o*l}else if("ZXY"===n.order){p=l*c,m=l*u,g=s*c,y=s*u;t[0]=p-y*a,t[4]=-o*u,t[8]=g+m*a,t[1]=m+g*a,t[5]=o*c,t[9]=y-p*a,t[2]=-o*s,t[6]=a,t[10]=o*l}else if("ZYX"===n.order){h=o*c,v=o*u,d=a*c,f=a*u;t[0]=l*c,t[4]=d*s-v,t[8]=h*s+f,t[1]=l*u,t[5]=f*s+h,t[9]=v*s-d,t[2]=-s,t[6]=a*l,t[10]=o*l}else if("YZX"===n.order){var x=o*l,b=o*s,w=a*l,M=a*s;t[0]=l*c,t[4]=M-x*u,t[8]=w*u+b,t[1]=u,t[5]=o*c,t[9]=-a*c,t[2]=-s*c,t[6]=b*u+w,t[10]=x-M*u}else if("XZY"===n.order){x=o*l,b=o*s,w=a*l,M=a*s;t[0]=l*c,t[4]=-u,t[8]=s*c,t[1]=x*u+M,t[5]=o*c,t[9]=b*u-w,t[2]=w*u-b,t[6]=a*c,t[10]=M*u+x}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},makeRotationFromQuaternion:function(){var n=new jt(0,0,0),t=new jt(1,1,1);return function(e){return this.compose(n,e,t)}}(),lookAt:function(){var n=new jt,t=new jt,e=new jt;return function(r,i,o){var a=this.elements;return e.subVectors(r,i),0===e.lengthSq()&&(e.z=1),e.normalize(),n.crossVectors(o,e),0===n.lengthSq()&&(1===Math.abs(o.z)?e.x+=1e-4:e.z+=1e-4,e.normalize(),n.crossVectors(o,e)),n.normalize(),t.crossVectors(e,n),a[0]=n.x,a[4]=t.x,a[8]=e.x,a[1]=n.y,a[5]=t.y,a[9]=e.y,a[2]=n.z,a[6]=t.z,a[10]=e.z,this}}(),multiply:function(n,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(n,t)):this.multiplyMatrices(this,n)},premultiply:function(n){return this.multiplyMatrices(n,this)},multiplyMatrices:function(n,t){var e=n.elements,r=t.elements,i=this.elements,o=e[0],a=e[4],l=e[8],s=e[12],c=e[1],u=e[5],h=e[9],v=e[13],d=e[2],f=e[6],p=e[10],m=e[14],g=e[3],y=e[7],x=e[11],b=e[15],w=r[0],M=r[4],_=r[8],E=r[12],S=r[1],T=r[5],A=r[9],L=r[13],P=r[2],C=r[6],R=r[10],O=r[14],D=r[3],U=r[7],N=r[11],I=r[15];return i[0]=o*w+a*S+l*P+s*D,i[4]=o*M+a*T+l*C+s*U,i[8]=o*_+a*A+l*R+s*N,i[12]=o*E+a*L+l*O+s*I,i[1]=c*w+u*S+h*P+v*D,i[5]=c*M+u*T+h*C+v*U,i[9]=c*_+u*A+h*R+v*N,i[13]=c*E+u*L+h*O+v*I,i[2]=d*w+f*S+p*P+m*D,i[6]=d*M+f*T+p*C+m*U,i[10]=d*_+f*A+p*R+m*N,i[14]=d*E+f*L+p*O+m*I,i[3]=g*w+y*S+x*P+b*D,i[7]=g*M+y*T+x*C+b*U,i[11]=g*_+y*A+x*R+b*N,i[15]=g*E+y*L+x*O+b*I,this},multiplyScalar:function(n){var t=this.elements;return t[0]*=n,t[4]*=n,t[8]*=n,t[12]*=n,t[1]*=n,t[5]*=n,t[9]*=n,t[13]*=n,t[2]*=n,t[6]*=n,t[10]*=n,t[14]*=n,t[3]*=n,t[7]*=n,t[11]*=n,t[15]*=n,this},applyToBufferAttribute:function(){var n=new jt;return function(t){for(var e=0,r=t.count;e<r;e++)n.x=t.getX(e),n.y=t.getY(e),n.z=t.getZ(e),n.applyMatrix4(this),t.setXYZ(e,n.x,n.y,n.z);return t}}(),determinant:function(){var n=this.elements,t=n[0],e=n[4],r=n[8],i=n[12],o=n[1],a=n[5],l=n[9],s=n[13],c=n[2],u=n[6],h=n[10],v=n[14];return n[3]*(+i*l*u-r*s*u-i*a*h+e*s*h+r*a*v-e*l*v)+n[7]*(+t*l*v-t*s*h+i*o*h-r*o*v+r*s*c-i*l*c)+n[11]*(+t*s*u-t*a*v-i*o*u+e*o*v+i*a*c-e*s*c)+n[15]*(-r*a*c-t*l*u+t*a*h+r*o*u-e*o*h+e*l*c)},transpose:function(){var n,t=this.elements;return n=t[1],t[1]=t[4],t[4]=n,n=t[2],t[2]=t[8],t[8]=n,n=t[6],t[6]=t[9],t[9]=n,n=t[3],t[3]=t[12],t[12]=n,n=t[7],t[7]=t[13],t[13]=n,n=t[11],t[11]=t[14],t[14]=n,this},setPosition:function(n){var t=this.elements;return t[12]=n.x,t[13]=n.y,t[14]=n.z,this},getInverse:function(n,t){var e=this.elements,r=n.elements,i=r[0],o=r[1],a=r[2],l=r[3],s=r[4],c=r[5],u=r[6],h=r[7],v=r[8],d=r[9],f=r[10],p=r[11],m=r[12],g=r[13],y=r[14],x=r[15],b=d*y*h-g*f*h+g*u*p-c*y*p-d*u*x+c*f*x,w=m*f*h-v*y*h-m*u*p+s*y*p+v*u*x-s*f*x,M=v*g*h-m*d*h+m*c*p-s*g*p-v*c*x+s*d*x,_=m*d*u-v*g*u-m*c*f+s*g*f+v*c*y-s*d*y,E=i*b+o*w+a*M+l*_;if(0===E){var S="THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0";if(!0===t)throw new Error(S);return console.warn(S),this.identity()}var T=1/E;return e[0]=b*T,e[1]=(g*f*l-d*y*l-g*a*p+o*y*p+d*a*x-o*f*x)*T,e[2]=(c*y*l-g*u*l+g*a*h-o*y*h-c*a*x+o*u*x)*T,e[3]=(d*u*l-c*f*l-d*a*h+o*f*h+c*a*p-o*u*p)*T,e[4]=w*T,e[5]=(v*y*l-m*f*l+m*a*p-i*y*p-v*a*x+i*f*x)*T,e[6]=(m*u*l-s*y*l-m*a*h+i*y*h+s*a*x-i*u*x)*T,e[7]=(s*f*l-v*u*l+v*a*h-i*f*h-s*a*p+i*u*p)*T,e[8]=M*T,e[9]=(m*d*l-v*g*l-m*o*p+i*g*p+v*o*x-i*d*x)*T,e[10]=(s*g*l-m*c*l+m*o*h-i*g*h-s*o*x+i*c*x)*T,e[11]=(v*c*l-s*d*l-v*o*h+i*d*h+s*o*p-i*c*p)*T,e[12]=_*T,e[13]=(v*g*a-m*d*a+m*o*f-i*g*f-v*o*y+i*d*y)*T,e[14]=(m*c*a-s*g*a-m*o*u+i*g*u+s*o*y-i*c*y)*T,e[15]=(s*d*a-v*c*a+v*o*u-i*d*u-s*o*f+i*c*f)*T,this},scale:function(n){var t=this.elements,e=n.x,r=n.y,i=n.z;return t[0]*=e,t[4]*=r,t[8]*=i,t[1]*=e,t[5]*=r,t[9]*=i,t[2]*=e,t[6]*=r,t[10]*=i,t[3]*=e,t[7]*=r,t[11]*=i,this},getMaxScaleOnAxis:function(){var n=this.elements,t=n[0]*n[0]+n[1]*n[1]+n[2]*n[2],e=n[4]*n[4]+n[5]*n[5]+n[6]*n[6],r=n[8]*n[8]+n[9]*n[9]+n[10]*n[10];return Math.sqrt(Math.max(t,e,r))},makeTranslation:function(n,t,e){return this.set(1,0,0,n,0,1,0,t,0,0,1,e,0,0,0,1),this},makeRotationX:function(n){var t=Math.cos(n),e=Math.sin(n);return this.set(1,0,0,0,0,t,-e,0,0,e,t,0,0,0,0,1),this},makeRotationY:function(n){var t=Math.cos(n),e=Math.sin(n);return this.set(t,0,e,0,0,1,0,0,-e,0,t,0,0,0,0,1),this},makeRotationZ:function(n){var t=Math.cos(n),e=Math.sin(n);return this.set(t,-e,0,0,e,t,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(n,t){var e=Math.cos(t),r=Math.sin(t),i=1-e,o=n.x,a=n.y,l=n.z,s=i*o,c=i*a;return this.set(s*o+e,s*a-r*l,s*l+r*a,0,s*a+r*l,c*a+e,c*l-r*o,0,s*l-r*a,c*l+r*o,i*l*l+e,0,0,0,0,1),this},makeScale:function(n,t,e){return this.set(n,0,0,0,0,t,0,0,0,0,e,0,0,0,0,1),this},makeShear:function(n,t,e){return this.set(1,t,e,0,n,1,e,0,n,t,1,0,0,0,0,1),this},compose:function(n,t,e){var r=this.elements,i=t._x,o=t._y,a=t._z,l=t._w,s=i+i,c=o+o,u=a+a,h=i*s,v=i*c,d=i*u,f=o*c,p=o*u,m=a*u,g=l*s,y=l*c,x=l*u,b=e.x,w=e.y,M=e.z;return r[0]=(1-(f+m))*b,r[1]=(v+x)*b,r[2]=(d-y)*b,r[3]=0,r[4]=(v-x)*w,r[5]=(1-(h+m))*w,r[6]=(p+g)*w,r[7]=0,r[8]=(d+y)*M,r[9]=(p-g)*M,r[10]=(1-(h+f))*M,r[11]=0,r[12]=n.x,r[13]=n.y,r[14]=n.z,r[15]=1,this},decompose:function(){var n=new jt,t=new Gt;return function(e,r,i){var o=this.elements,a=n.set(o[0],o[1],o[2]).length(),l=n.set(o[4],o[5],o[6]).length(),s=n.set(o[8],o[9],o[10]).length();this.determinant()<0&&(a=-a),e.x=o[12],e.y=o[13],e.z=o[14],t.copy(this);var c=1/a,u=1/l,h=1/s;return t.elements[0]*=c,t.elements[1]*=c,t.elements[2]*=c,t.elements[4]*=u,t.elements[5]*=u,t.elements[6]*=u,t.elements[8]*=h,t.elements[9]*=h,t.elements[10]*=h,r.setFromRotationMatrix(t),i.x=a,i.y=l,i.z=s,this}}(),makePerspective:function(n,t,e,r,i,o){void 0===o&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var a=this.elements,l=2*i/(t-n),s=2*i/(e-r),c=(t+n)/(t-n),u=(e+r)/(e-r),h=-(o+i)/(o-i),v=-2*o*i/(o-i);return a[0]=l,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=s,a[9]=u,a[13]=0,a[2]=0,a[6]=0,a[10]=h,a[14]=v,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this},makeOrthographic:function(n,t,e,r,i,o){var a=this.elements,l=1/(t-n),s=1/(e-r),c=1/(o-i),u=(t+n)*l,h=(e+r)*s,v=(o+i)*c;return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-u,a[1]=0,a[5]=2*s,a[9]=0,a[13]=-h,a[2]=0,a[6]=0,a[10]=-2*c,a[14]=-v,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this},equals:function(n){for(var t=this.elements,e=n.elements,r=0;r<16;r++)if(t[r]!==e[r])return!1;return!0},fromArray:function(n,t){void 0===t&&(t=0);for(var e=0;e<16;e++)this.elements[e]=n[e+t];return this},toArray:function(n,t){void 0===n&&(n=[]),void 0===t&&(t=0);var e=this.elements;return n[t]=e[0],n[t+1]=e[1],n[t+2]=e[2],n[t+3]=e[3],n[t+4]=e[4],n[t+5]=e[5],n[t+6]=e[6],n[t+7]=e[7],n[t+8]=e[8],n[t+9]=e[9],n[t+10]=e[10],n[t+11]=e[11],n[t+12]=e[12],n[t+13]=e[13],n[t+14]=e[14],n[t+15]=e[15],n}}),Object.assign(kt,{slerp:function(n,t,e,r){return e.copy(n).slerp(t,r)},slerpFlat:function(n,t,e,r,i,o,a){var l=e[r+0],s=e[r+1],c=e[r+2],u=e[r+3],h=i[o+0],v=i[o+1],d=i[o+2],f=i[o+3];if(u!==f||l!==h||s!==v||c!==d){var p=1-a,m=l*h+s*v+c*d+u*f,g=m>=0?1:-1,y=1-m*m;if(y>Number.EPSILON){var x=Math.sqrt(y),b=Math.atan2(x,m*g);p=Math.sin(p*b)/x,a=Math.sin(a*b)/x}var w=a*g;if(l=l*p+h*w,s=s*p+v*w,c=c*p+d*w,u=u*p+f*w,p===1-a){var M=1/Math.sqrt(l*l+s*s+c*c+u*u);l*=M,s*=M,c*=M,u*=M}}n[t]=l,n[t+1]=s,n[t+2]=c,n[t+3]=u}}),Object.defineProperties(kt.prototype,{x:{get:function(){return this._x},set:function(n){this._x=n,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(n){this._y=n,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(n){this._z=n,this.onChangeCallback()}},w:{get:function(){return this._w},set:function(n){this._w=n,this.onChangeCallback()}}}),Object.assign(kt.prototype,{set:function(n,t,e,r){return this._x=n,this._y=t,this._z=e,this._w=r,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(n){return this._x=n.x,this._y=n.y,this._z=n.z,this._w=n.w,this.onChangeCallback(),this},setFromEuler:function(n,t){if(!n||!n.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var e=n._x,r=n._y,i=n._z,o=n.order,a=Math.cos,l=Math.sin,s=a(e/2),c=a(r/2),u=a(i/2),h=l(e/2),v=l(r/2),d=l(i/2);return"XYZ"===o?(this._x=h*c*u+s*v*d,this._y=s*v*u-h*c*d,this._z=s*c*d+h*v*u,this._w=s*c*u-h*v*d):"YXZ"===o?(this._x=h*c*u+s*v*d,this._y=s*v*u-h*c*d,this._z=s*c*d-h*v*u,this._w=s*c*u+h*v*d):"ZXY"===o?(this._x=h*c*u-s*v*d,this._y=s*v*u+h*c*d,this._z=s*c*d+h*v*u,this._w=s*c*u-h*v*d):"ZYX"===o?(this._x=h*c*u-s*v*d,this._y=s*v*u+h*c*d,this._z=s*c*d-h*v*u,this._w=s*c*u+h*v*d):"YZX"===o?(this._x=h*c*u+s*v*d,this._y=s*v*u+h*c*d,this._z=s*c*d-h*v*u,this._w=s*c*u-h*v*d):"XZY"===o&&(this._x=h*c*u-s*v*d,this._y=s*v*u-h*c*d,this._z=s*c*d+h*v*u,this._w=s*c*u+h*v*d),!1!==t&&this.onChangeCallback(),this},setFromAxisAngle:function(n,t){var e=t/2,r=Math.sin(e);return this._x=n.x*r,this._y=n.y*r,this._z=n.z*r,this._w=Math.cos(e),this.onChangeCallback(),this},setFromRotationMatrix:function(n){var t,e=n.elements,r=e[0],i=e[4],o=e[8],a=e[1],l=e[5],s=e[9],c=e[2],u=e[6],h=e[10],v=r+l+h;return v>0?(t=.5/Math.sqrt(v+1),this._w=.25/t,this._x=(u-s)*t,this._y=(o-c)*t,this._z=(a-i)*t):r>l&&r>h?(t=2*Math.sqrt(1+r-l-h),this._w=(u-s)/t,this._x=.25*t,this._y=(i+a)/t,this._z=(o+c)/t):l>h?(t=2*Math.sqrt(1+l-r-h),this._w=(o-c)/t,this._x=(i+a)/t,this._y=.25*t,this._z=(s+u)/t):(t=2*Math.sqrt(1+h-r-l),this._w=(a-i)/t,this._x=(o+c)/t,this._y=(s+u)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(){var n,t=new jt;return function(e,r){return void 0===t&&(t=new jt),(n=e.dot(r)+1)<1e-6?(n=0,Math.abs(e.x)>Math.abs(e.z)?t.set(-e.y,e.x,0):t.set(0,-e.z,e.y)):t.crossVectors(e,r),this._x=t.x,this._y=t.y,this._z=t.z,this._w=n,this.normalize()}}(),angleTo:function(n){return 2*Math.acos(Math.abs(Ft.clamp(this.dot(n),-1,1)))},rotateTowards:function(n,t){var e=this.angleTo(n);if(0===e)return this;var r=Math.min(1,t/e);return this.slerp(n,r),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(n){return this._x*n._x+this._y*n._y+this._z*n._z+this._w*n._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var n=this.length();return 0===n?(this._x=0,this._y=0,this._z=0,this._w=1):(n=1/n,this._x=this._x*n,this._y=this._y*n,this._z=this._z*n,this._w=this._w*n),this.onChangeCallback(),this},multiply:function(n,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(n,t)):this.multiplyQuaternions(this,n)},premultiply:function(n){return this.multiplyQuaternions(n,this)},multiplyQuaternions:function(n,t){var e=n._x,r=n._y,i=n._z,o=n._w,a=t._x,l=t._y,s=t._z,c=t._w;return this._x=e*c+o*a+r*s-i*l,this._y=r*c+o*l+i*a-e*s,this._z=i*c+o*s+e*l-r*a,this._w=o*c-e*a-r*l-i*s,this.onChangeCallback(),this},slerp:function(n,t){if(0===t)return this;if(1===t)return this.copy(n);var e=this._x,r=this._y,i=this._z,o=this._w,a=o*n._w+e*n._x+r*n._y+i*n._z;if(a<0?(this._w=-n._w,this._x=-n._x,this._y=-n._y,this._z=-n._z,a=-a):this.copy(n),a>=1)return this._w=o,this._x=e,this._y=r,this._z=i,this;var l=1-a*a;if(l<=Number.EPSILON){var s=1-t;return this._w=s*o+t*this._w,this._x=s*e+t*this._x,this._y=s*r+t*this._y,this._z=s*i+t*this._z,this.normalize()}var c=Math.sqrt(l),u=Math.atan2(c,a),h=Math.sin((1-t)*u)/c,v=Math.sin(t*u)/c;return this._w=o*h+this._w*v,this._x=e*h+this._x*v,this._y=r*h+this._y*v,this._z=i*h+this._z*v,this.onChangeCallback(),this},equals:function(n){return n._x===this._x&&n._y===this._y&&n._z===this._z&&n._w===this._w},fromArray:function(n,t){return void 0===t&&(t=0),this._x=n[t],this._y=n[t+1],this._z=n[t+2],this._w=n[t+3],this.onChangeCallback(),this},toArray:function(n,t){return void 0===n&&(n=[]),void 0===t&&(t=0),n[t]=this._x,n[t+1]=this._y,n[t+2]=this._z,n[t+3]=this._w,n},onChange:function(n){return this.onChangeCallback=n,this},onChangeCallback:function(){}}),Object.assign(jt.prototype,{isVector3:!0,set:function(n,t,e){return this.x=n,this.y=t,this.z=e,this},setScalar:function(n){return this.x=n,this.y=n,this.z=n,this},setX:function(n){return this.x=n,this},setY:function(n){return this.y=n,this},setZ:function(n){return this.z=n,this},setComponent:function(n,t){switch(n){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+n)}return this},getComponent:function(n){switch(n){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+n)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(n){return this.x=n.x,this.y=n.y,this.z=n.z,this},add:function(n,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(n,t)):(this.x+=n.x,this.y+=n.y,this.z+=n.z,this)},addScalar:function(n){return this.x+=n,this.y+=n,this.z+=n,this},addVectors:function(n,t){return this.x=n.x+t.x,this.y=n.y+t.y,this.z=n.z+t.z,this},addScaledVector:function(n,t){return this.x+=n.x*t,this.y+=n.y*t,this.z+=n.z*t,this},sub:function(n,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(n,t)):(this.x-=n.x,this.y-=n.y,this.z-=n.z,this)},subScalar:function(n){return this.x-=n,this.y-=n,this.z-=n,this},subVectors:function(n,t){return this.x=n.x-t.x,this.y=n.y-t.y,this.z=n.z-t.z,this},multiply:function(n,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(n,t)):(this.x*=n.x,this.y*=n.y,this.z*=n.z,this)},multiplyScalar:function(n){return this.x*=n,this.y*=n,this.z*=n,this},multiplyVectors:function(n,t){return this.x=n.x*t.x,this.y=n.y*t.y,this.z=n.z*t.z,this},applyEuler:function(){var n=new kt;return function(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(n.setFromEuler(t))}}(),applyAxisAngle:function(){var n=new kt;return function(t,e){return this.applyQuaternion(n.setFromAxisAngle(t,e))}}(),applyMatrix3:function(n){var t=this.x,e=this.y,r=this.z,i=n.elements;return this.x=i[0]*t+i[3]*e+i[6]*r,this.y=i[1]*t+i[4]*e+i[7]*r,this.z=i[2]*t+i[5]*e+i[8]*r,this},applyMatrix4:function(n){var t=this.x,e=this.y,r=this.z,i=n.elements,o=1/(i[3]*t+i[7]*e+i[11]*r+i[15]);return this.x=(i[0]*t+i[4]*e+i[8]*r+i[12])*o,this.y=(i[1]*t+i[5]*e+i[9]*r+i[13])*o,this.z=(i[2]*t+i[6]*e+i[10]*r+i[14])*o,this},applyQuaternion:function(n){var t=this.x,e=this.y,r=this.z,i=n.x,o=n.y,a=n.z,l=n.w,s=l*t+o*r-a*e,c=l*e+a*t-i*r,u=l*r+i*e-o*t,h=-i*t-o*e-a*r;return this.x=s*l+h*-i+c*-a-u*-o,this.y=c*l+h*-o+u*-i-s*-a,this.z=u*l+h*-a+s*-o-c*-i,this},project:function(){var n=new Gt;return function(t){return n.multiplyMatrices(t.projectionMatrix,n.getInverse(t.matrixWorld)),this.applyMatrix4(n)}}(),unproject:function(){var n=new Gt;return function(t){return n.multiplyMatrices(t.matrixWorld,n.getInverse(t.projectionMatrix)),this.applyMatrix4(n)}}(),transformDirection:function(n){var t=this.x,e=this.y,r=this.z,i=n.elements;return this.x=i[0]*t+i[4]*e+i[8]*r,this.y=i[1]*t+i[5]*e+i[9]*r,this.z=i[2]*t+i[6]*e+i[10]*r,this.normalize()},divide:function(n){return this.x/=n.x,this.y/=n.y,this.z/=n.z,this},divideScalar:function(n){return this.multiplyScalar(1/n)},min:function(n){return this.x=Math.min(this.x,n.x),this.y=Math.min(this.y,n.y),this.z=Math.min(this.z,n.z),this},max:function(n){return this.x=Math.max(this.x,n.x),this.y=Math.max(this.y,n.y),this.z=Math.max(this.z,n.z),this},clamp:function(n,t){return this.x=Math.max(n.x,Math.min(t.x,this.x)),this.y=Math.max(n.y,Math.min(t.y,this.y)),this.z=Math.max(n.z,Math.min(t.z,this.z)),this},clampScalar:function(){var n=new jt,t=new jt;return function(e,r){return n.set(e,e,e),t.set(r,r,r),this.clamp(n,t)}}(),clampLength:function(n,t){var e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(n,Math.min(t,e)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(n){return this.x*n.x+this.y*n.y+this.z*n.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(n){return this.normalize().multiplyScalar(n)},lerp:function(n,t){return this.x+=(n.x-this.x)*t,this.y+=(n.y-this.y)*t,this.z+=(n.z-this.z)*t,this},lerpVectors:function(n,t,e){return this.subVectors(t,n).multiplyScalar(e).add(n)},cross:function(n,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(n,t)):this.crossVectors(this,n)},crossVectors:function(n,t){var e=n.x,r=n.y,i=n.z,o=t.x,a=t.y,l=t.z;return this.x=r*l-i*a,this.y=i*o-e*l,this.z=e*a-r*o,this},projectOnVector:function(n){var t=n.dot(this)/n.lengthSq();return this.copy(n).multiplyScalar(t)},projectOnPlane:function(){var n=new jt;return function(t){return n.copy(this).projectOnVector(t),this.sub(n)}}(),reflect:function(){var n=new jt;return function(t){return this.sub(n.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(n){var t=this.dot(n)/Math.sqrt(this.lengthSq()*n.lengthSq());return Math.acos(Ft.clamp(t,-1,1))},distanceTo:function(n){return Math.sqrt(this.distanceToSquared(n))},distanceToSquared:function(n){var t=this.x-n.x,e=this.y-n.y,r=this.z-n.z;return t*t+e*e+r*r},manhattanDistanceTo:function(n){return Math.abs(this.x-n.x)+Math.abs(this.y-n.y)+Math.abs(this.z-n.z)},setFromSpherical:function(n){var t=Math.sin(n.phi)*n.radius;return this.x=t*Math.sin(n.theta),this.y=Math.cos(n.phi)*n.radius,this.z=t*Math.cos(n.theta),this},setFromCylindrical:function(n){return this.x=n.radius*Math.sin(n.theta),this.y=n.y,this.z=n.radius*Math.cos(n.theta),this},setFromMatrixPosition:function(n){var t=n.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this},setFromMatrixScale:function(n){var t=this.setFromMatrixColumn(n,0).length(),e=this.setFromMatrixColumn(n,1).length(),r=this.setFromMatrixColumn(n,2).length();return this.x=t,this.y=e,this.z=r,this},setFromMatrixColumn:function(n,t){return this.fromArray(n.elements,4*t)},equals:function(n){return n.x===this.x&&n.y===this.y&&n.z===this.z},fromArray:function(n,t){return void 0===t&&(t=0),this.x=n[t],this.y=n[t+1],this.z=n[t+2],this},toArray:function(n,t){return void 0===n&&(n=[]),void 0===t&&(t=0),n[t]=this.x,n[t+1]=this.y,n[t+2]=this.z,n},fromBufferAttribute:function(n,t,e){return void 0!==e&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=n.getX(t),this.y=n.getY(t),this.z=n.getZ(t),this}}),Object.assign(Ht.prototype,{isMatrix3:!0,set:function(n,t,e,r,i,o,a,l,s){var c=this.elements;return c[0]=n,c[1]=r,c[2]=a,c[3]=t,c[4]=i,c[5]=l,c[6]=e,c[7]=o,c[8]=s,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(n){var t=this.elements,e=n.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],this},setFromMatrix4:function(n){var t=n.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this},applyToBufferAttribute:function(){var n=new jt;return function(t){for(var e=0,r=t.count;e<r;e++)n.x=t.getX(e),n.y=t.getY(e),n.z=t.getZ(e),n.applyMatrix3(this),t.setXYZ(e,n.x,n.y,n.z);return t}}(),multiply:function(n){return this.multiplyMatrices(this,n)},premultiply:function(n){return this.multiplyMatrices(n,this)},multiplyMatrices:function(n,t){var e=n.elements,r=t.elements,i=this.elements,o=e[0],a=e[3],l=e[6],s=e[1],c=e[4],u=e[7],h=e[2],v=e[5],d=e[8],f=r[0],p=r[3],m=r[6],g=r[1],y=r[4],x=r[7],b=r[2],w=r[5],M=r[8];return i[0]=o*f+a*g+l*b,i[3]=o*p+a*y+l*w,i[6]=o*m+a*x+l*M,i[1]=s*f+c*g+u*b,i[4]=s*p+c*y+u*w,i[7]=s*m+c*x+u*M,i[2]=h*f+v*g+d*b,i[5]=h*p+v*y+d*w,i[8]=h*m+v*x+d*M,this},multiplyScalar:function(n){var t=this.elements;return t[0]*=n,t[3]*=n,t[6]*=n,t[1]*=n,t[4]*=n,t[7]*=n,t[2]*=n,t[5]*=n,t[8]*=n,this},determinant:function(){var n=this.elements,t=n[0],e=n[1],r=n[2],i=n[3],o=n[4],a=n[5],l=n[6],s=n[7],c=n[8];return t*o*c-t*a*s-e*i*c+e*a*l+r*i*s-r*o*l},getInverse:function(n,t){n&&n.isMatrix4&&console.error("THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.");var e=n.elements,r=this.elements,i=e[0],o=e[1],a=e[2],l=e[3],s=e[4],c=e[5],u=e[6],h=e[7],v=e[8],d=v*s-c*h,f=c*u-v*l,p=h*l-s*u,m=i*d+o*f+a*p;if(0===m){var g="THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0";if(!0===t)throw new Error(g);return console.warn(g),this.identity()}var y=1/m;return r[0]=d*y,r[1]=(a*h-v*o)*y,r[2]=(c*o-a*s)*y,r[3]=f*y,r[4]=(v*i-a*u)*y,r[5]=(a*l-c*i)*y,r[6]=p*y,r[7]=(o*u-h*i)*y,r[8]=(s*i-o*l)*y,this},transpose:function(){var n,t=this.elements;return n=t[1],t[1]=t[3],t[3]=n,n=t[2],t[2]=t[6],t[6]=n,n=t[5],t[5]=t[7],t[7]=n,this},getNormalMatrix:function(n){return this.setFromMatrix4(n).getInverse(this).transpose()},transposeIntoArray:function(n){var t=this.elements;return n[0]=t[0],n[1]=t[3],n[2]=t[6],n[3]=t[1],n[4]=t[4],n[5]=t[7],n[6]=t[2],n[7]=t[5],n[8]=t[8],this},setUvTransform:function(n,t,e,r,i,o,a){var l=Math.cos(i),s=Math.sin(i);this.set(e*l,e*s,-e*(l*o+s*a)+o+n,-r*s,r*l,-r*(-s*o+l*a)+a+t,0,0,1)},scale:function(n,t){var e=this.elements;return e[0]*=n,e[3]*=n,e[6]*=n,e[1]*=t,e[4]*=t,e[7]*=t,this},rotate:function(n){var t=Math.cos(n),e=Math.sin(n),r=this.elements,i=r[0],o=r[3],a=r[6],l=r[1],s=r[4],c=r[7];return r[0]=t*i+e*l,r[3]=t*o+e*s,r[6]=t*a+e*c,r[1]=-e*i+t*l,r[4]=-e*o+t*s,r[7]=-e*a+t*c,this},translate:function(n,t){var e=this.elements;return e[0]+=n*e[2],e[3]+=n*e[5],e[6]+=n*e[8],e[1]+=t*e[2],e[4]+=t*e[5],e[7]+=t*e[8],this},equals:function(n){for(var t=this.elements,e=n.elements,r=0;r<9;r++)if(t[r]!==e[r])return!1;return!0},fromArray:function(n,t){void 0===t&&(t=0);for(var e=0;e<9;e++)this.elements[e]=n[e+t];return this},toArray:function(n,t){void 0===n&&(n=[]),void 0===t&&(t=0);var e=this.elements;return n[t]=e[0],n[t+1]=e[1],n[t+2]=e[2],n[t+3]=e[3],n[t+4]=e[4],n[t+5]=e[5],n[t+6]=e[6],n[t+7]=e[7],n[t+8]=e[8],n}});var Vt={getDataURL:function(n){var t;if(n instanceof HTMLCanvasElement)t=n;else{"undefined"!=typeof OffscreenCanvas?t=new OffscreenCanvas(n.width,n.height):((t=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")).width=n.width,t.height=n.height);var e=t.getContext("2d");n instanceof ImageData?e.putImageData(n,0,0):e.drawImage(n,0,0,n.width,n.height)}return t.width>2048||t.height>2048?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}},Wt=0;function Xt(n,t,e,r,i,o,a,l,s,c){Object.defineProperty(this,"id",{value:Wt++}),this.uuid=Ft.generateUUID(),this.name="",this.image=void 0!==n?n:Xt.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=void 0!==t?t:Xt.DEFAULT_MAPPING,this.wrapS=void 0!==e?e:gn,this.wrapT=void 0!==r?r:gn,this.magFilter=void 0!==i?i:Mn,this.minFilter=void 0!==o?o:En,this.anisotropy=void 0!==s?s:1,this.format=void 0!==a?a:zn,this.type=void 0!==l?l:Sn,this.offset=new zt(0,0),this.repeat=new zt(1,1),this.center=new zt(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Ht,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=void 0!==c?c:Tt,this.version=0,this.onUpdate=null}function qt(n,t,e,r){this.x=n||0,this.y=t||0,this.z=e||0,this.w=void 0!==r?r:1}function Yt(n,t,e){this.width=n,this.height=t,this.scissor=new qt(0,0,n,t),this.scissorTest=!1,this.viewport=new qt(0,0,n,t),void 0===(e=e||{}).minFilter&&(e.minFilter=Mn),this.texture=new Xt(void 0,void 0,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.generateMipmaps=void 0===e.generateMipmaps||e.generateMipmaps,this.depthBuffer=void 0===e.depthBuffer||e.depthBuffer,this.stencilBuffer=void 0===e.stencilBuffer||e.stencilBuffer,this.depthTexture=void 0!==e.depthTexture?e.depthTexture:null}function Zt(n,t,e){Yt.call(this,n,t,e),this.activeCubeFace=0,this.activeMipMapLevel=0}function Jt(n,t,e,r,i,o,a,l,s,c,u,h){Xt.call(this,null,o,a,l,s,c,r,i,u,h),this.image={data:n,width:t,height:e},this.magFilter=void 0!==s?s:xn,this.minFilter=void 0!==c?c:xn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}function Kt(n,t){this.min=void 0!==n?n:new jt(1/0,1/0,1/0),this.max=void 0!==t?t:new jt(-1/0,-1/0,-1/0)}function Qt(n,t){this.center=void 0!==n?n:new jt,this.radius=void 0!==t?t:0}function $t(n,t){this.normal=void 0!==n?n:new jt(1,0,0),this.constant=void 0!==t?t:0}function ne(n,t,e,r,i,o){this.planes=[void 0!==n?n:new $t,void 0!==t?t:new $t,void 0!==e?e:new $t,void 0!==r?r:new $t,void 0!==i?i:new $t,void 0!==o?o:new $t]}Xt.DEFAULT_IMAGE=void 0,Xt.DEFAULT_MAPPING=sn,Xt.prototype=Object.assign(Object.create(r.prototype),{constructor:Xt,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.name=n.name,this.image=n.image,this.mipmaps=n.mipmaps.slice(0),this.mapping=n.mapping,this.wrapS=n.wrapS,this.wrapT=n.wrapT,this.magFilter=n.magFilter,this.minFilter=n.minFilter,this.anisotropy=n.anisotropy,this.format=n.format,this.type=n.type,this.offset.copy(n.offset),this.repeat.copy(n.repeat),this.center.copy(n.center),this.rotation=n.rotation,this.matrixAutoUpdate=n.matrixAutoUpdate,this.matrix.copy(n.matrix),this.generateMipmaps=n.generateMipmaps,this.premultiplyAlpha=n.premultiplyAlpha,this.flipY=n.flipY,this.unpackAlignment=n.unpackAlignment,this.encoding=n.encoding,this},toJSON:function(n){var t=void 0===n||"string"==typeof n;if(!t&&void 0!==n.textures[this.uuid])return n.textures[this.uuid];var e={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY};if(void 0!==this.image){var r=this.image;if(void 0===r.uuid&&(r.uuid=Ft.generateUUID()),!t&&void 0===n.images[r.uuid]){var i;if(Array.isArray(r)){i=[];for(var o=0,a=r.length;o<a;o++)i.push(Vt.getDataURL(r[o]))}else i=Vt.getDataURL(r);n.images[r.uuid]={uuid:r.uuid,url:i}}e.image=r.uuid}return t||(n.textures[this.uuid]=e),e},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(n){if(this.mapping===sn){if(n.applyMatrix3(this.matrix),n.x<0||n.x>1)switch(this.wrapS){case mn:n.x=n.x-Math.floor(n.x);break;case gn:n.x=n.x<0?0:1;break;case yn:1===Math.abs(Math.floor(n.x)%2)?n.x=Math.ceil(n.x)-n.x:n.x=n.x-Math.floor(n.x)}if(n.y<0||n.y>1)switch(this.wrapT){case mn:n.y=n.y-Math.floor(n.y);break;case gn:n.y=n.y<0?0:1;break;case yn:1===Math.abs(Math.floor(n.y)%2)?n.y=Math.ceil(n.y)-n.y:n.y=n.y-Math.floor(n.y)}this.flipY&&(n.y=1-n.y)}}}),Object.defineProperty(Xt.prototype,"needsUpdate",{set:function(n){!0===n&&this.version++}}),Object.assign(qt.prototype,{isVector4:!0,set:function(n,t,e,r){return this.x=n,this.y=t,this.z=e,this.w=r,this},setScalar:function(n){return this.x=n,this.y=n,this.z=n,this.w=n,this},setX:function(n){return this.x=n,this},setY:function(n){return this.y=n,this},setZ:function(n){return this.z=n,this},setW:function(n){return this.w=n,this},setComponent:function(n,t){switch(n){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+n)}return this},getComponent:function(n){switch(n){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+n)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(n){return this.x=n.x,this.y=n.y,this.z=n.z,this.w=void 0!==n.w?n.w:1,this},add:function(n,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(n,t)):(this.x+=n.x,this.y+=n.y,this.z+=n.z,this.w+=n.w,this)},addScalar:function(n){return this.x+=n,this.y+=n,this.z+=n,this.w+=n,this},addVectors:function(n,t){return this.x=n.x+t.x,this.y=n.y+t.y,this.z=n.z+t.z,this.w=n.w+t.w,this},addScaledVector:function(n,t){return this.x+=n.x*t,this.y+=n.y*t,this.z+=n.z*t,this.w+=n.w*t,this},sub:function(n,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(n,t)):(this.x-=n.x,this.y-=n.y,this.z-=n.z,this.w-=n.w,this)},subScalar:function(n){return this.x-=n,this.y-=n,this.z-=n,this.w-=n,this},subVectors:function(n,t){return this.x=n.x-t.x,this.y=n.y-t.y,this.z=n.z-t.z,this.w=n.w-t.w,this},multiplyScalar:function(n){return this.x*=n,this.y*=n,this.z*=n,this.w*=n,this},applyMatrix4:function(n){var t=this.x,e=this.y,r=this.z,i=this.w,o=n.elements;return this.x=o[0]*t+o[4]*e+o[8]*r+o[12]*i,this.y=o[1]*t+o[5]*e+o[9]*r+o[13]*i,this.z=o[2]*t+o[6]*e+o[10]*r+o[14]*i,this.w=o[3]*t+o[7]*e+o[11]*r+o[15]*i,this},divideScalar:function(n){return this.multiplyScalar(1/n)},setAxisAngleFromQuaternion:function(n){this.w=2*Math.acos(n.w);var t=Math.sqrt(1-n.w*n.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=n.x/t,this.y=n.y/t,this.z=n.z/t),this},setAxisAngleFromRotationMatrix:function(n){var t,e,r,i,o=n.elements,a=o[0],l=o[4],s=o[8],c=o[1],u=o[5],h=o[9],v=o[2],d=o[6],f=o[10];if(Math.abs(l-c)<.01&&Math.abs(s-v)<.01&&Math.abs(h-d)<.01){if(Math.abs(l+c)<.1&&Math.abs(s+v)<.1&&Math.abs(h+d)<.1&&Math.abs(a+u+f-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;var p=(a+1)/2,m=(u+1)/2,g=(f+1)/2,y=(l+c)/4,x=(s+v)/4,b=(h+d)/4;return p>m&&p>g?p<.01?(e=0,r=.707106781,i=.707106781):(r=y/(e=Math.sqrt(p)),i=x/e):m>g?m<.01?(e=.707106781,r=0,i=.707106781):(e=y/(r=Math.sqrt(m)),i=b/r):g<.01?(e=.707106781,r=.707106781,i=0):(e=x/(i=Math.sqrt(g)),r=b/i),this.set(e,r,i,t),this}var w=Math.sqrt((d-h)*(d-h)+(s-v)*(s-v)+(c-l)*(c-l));return Math.abs(w)<.001&&(w=1),this.x=(d-h)/w,this.y=(s-v)/w,this.z=(c-l)/w,this.w=Math.acos((a+u+f-1)/2),this},min:function(n){return this.x=Math.min(this.x,n.x),this.y=Math.min(this.y,n.y),this.z=Math.min(this.z,n.z),this.w=Math.min(this.w,n.w),this},max:function(n){return this.x=Math.max(this.x,n.x),this.y=Math.max(this.y,n.y),this.z=Math.max(this.z,n.z),this.w=Math.max(this.w,n.w),this},clamp:function(n,t){return this.x=Math.max(n.x,Math.min(t.x,this.x)),this.y=Math.max(n.y,Math.min(t.y,this.y)),this.z=Math.max(n.z,Math.min(t.z,this.z)),this.w=Math.max(n.w,Math.min(t.w,this.w)),this},clampScalar:function(){var n,t;return function(e,r){return void 0===n&&(n=new qt,t=new qt),n.set(e,e,e,e),t.set(r,r,r,r),this.clamp(n,t)}}(),clampLength:function(n,t){var e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(n,Math.min(t,e)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(n){return this.x*n.x+this.y*n.y+this.z*n.z+this.w*n.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(n){return this.normalize().multiplyScalar(n)},lerp:function(n,t){return this.x+=(n.x-this.x)*t,this.y+=(n.y-this.y)*t,this.z+=(n.z-this.z)*t,this.w+=(n.w-this.w)*t,this},lerpVectors:function(n,t,e){return this.subVectors(t,n).multiplyScalar(e).add(n)},equals:function(n){return n.x===this.x&&n.y===this.y&&n.z===this.z&&n.w===this.w},fromArray:function(n,t){return void 0===t&&(t=0),this.x=n[t],this.y=n[t+1],this.z=n[t+2],this.w=n[t+3],this},toArray:function(n,t){return void 0===n&&(n=[]),void 0===t&&(t=0),n[t]=this.x,n[t+1]=this.y,n[t+2]=this.z,n[t+3]=this.w,n},fromBufferAttribute:function(n,t,e){return void 0!==e&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=n.getX(t),this.y=n.getY(t),this.z=n.getZ(t),this.w=n.getW(t),this}}),Yt.prototype=Object.assign(Object.create(r.prototype),{constructor:Yt,isWebGLRenderTarget:!0,setSize:function(n,t){this.width===n&&this.height===t||(this.width=n,this.height=t,this.dispose()),this.viewport.set(0,0,n,t),this.scissor.set(0,0,n,t)},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.width=n.width,this.height=n.height,this.viewport.copy(n.viewport),this.texture=n.texture.clone(),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.depthTexture=n.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Zt.prototype=Object.create(Yt.prototype),Zt.prototype.constructor=Zt,Zt.prototype.isWebGLRenderTargetCube=!0,Jt.prototype=Object.create(Xt.prototype),Jt.prototype.constructor=Jt,Jt.prototype.isDataTexture=!0,Object.assign(Kt.prototype,{isBox3:!0,set:function(n,t){return this.min.copy(n),this.max.copy(t),this},setFromArray:function(n){for(var t=1/0,e=1/0,r=1/0,i=-1/0,o=-1/0,a=-1/0,l=0,s=n.length;l<s;l+=3){var c=n[l],u=n[l+1],h=n[l+2];c<t&&(t=c),u<e&&(e=u),h<r&&(r=h),c>i&&(i=c),u>o&&(o=u),h>a&&(a=h)}return this.min.set(t,e,r),this.max.set(i,o,a),this},setFromBufferAttribute:function(n){for(var t=1/0,e=1/0,r=1/0,i=-1/0,o=-1/0,a=-1/0,l=0,s=n.count;l<s;l++){var c=n.getX(l),u=n.getY(l),h=n.getZ(l);c<t&&(t=c),u<e&&(e=u),h<r&&(r=h),c>i&&(i=c),u>o&&(o=u),h>a&&(a=h)}return this.min.set(t,e,r),this.max.set(i,o,a),this},setFromPoints:function(n){this.makeEmpty();for(var t=0,e=n.length;t<e;t++)this.expandByPoint(n[t]);return this},setFromCenterAndSize:function(){var n=new jt;return function(t,e){var r=n.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(r),this.max.copy(t).add(r),this}}(),setFromObject:function(n){return this.makeEmpty(),this.expandByObject(n)},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.min.copy(n.min),this.max.copy(n.max),this},makeEmpty:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this},isEmpty:function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z},getCenter:function(n){return void 0===n&&(console.warn("THREE.Box3: .getCenter() target is now required"),n=new jt),this.isEmpty()?n.set(0,0,0):n.addVectors(this.min,this.max).multiplyScalar(.5)},getSize:function(n){return void 0===n&&(console.warn("THREE.Box3: .getSize() target is now required"),n=new jt),this.isEmpty()?n.set(0,0,0):n.subVectors(this.max,this.min)},expandByPoint:function(n){return this.min.min(n),this.max.max(n),this},expandByVector:function(n){return this.min.sub(n),this.max.add(n),this},expandByScalar:function(n){return this.min.addScalar(-n),this.max.addScalar(n),this},expandByObject:function(){var n,t,e,r=new jt;function i(i){var o=i.geometry;if(void 0!==o)if(o.isGeometry){var a=o.vertices;for(t=0,e=a.length;t<e;t++)r.copy(a[t]),r.applyMatrix4(i.matrixWorld),n.expandByPoint(r)}else if(o.isBufferGeometry){var l=o.attributes.position;if(void 0!==l)for(t=0,e=l.count;t<e;t++)r.fromBufferAttribute(l,t).applyMatrix4(i.matrixWorld),n.expandByPoint(r)}}return function(t){return n=this,t.updateMatrixWorld(!0),t.traverse(i),this}}(),containsPoint:function(n){return!(n.x<this.min.x||n.x>this.max.x||n.y<this.min.y||n.y>this.max.y||n.z<this.min.z||n.z>this.max.z)},containsBox:function(n){return this.min.x<=n.min.x&&n.max.x<=this.max.x&&this.min.y<=n.min.y&&n.max.y<=this.max.y&&this.min.z<=n.min.z&&n.max.z<=this.max.z},getParameter:function(n,t){return void 0===t&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new jt),t.set((n.x-this.min.x)/(this.max.x-this.min.x),(n.y-this.min.y)/(this.max.y-this.min.y),(n.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(n){return!(n.max.x<this.min.x||n.min.x>this.max.x||n.max.y<this.min.y||n.min.y>this.max.y||n.max.z<this.min.z||n.min.z>this.max.z)},intersectsSphere:function(){var n=new jt;return function(t){return this.clampPoint(t.center,n),n.distanceToSquared(t.center)<=t.radius*t.radius}}(),intersectsPlane:function(n){var t,e;return n.normal.x>0?(t=n.normal.x*this.min.x,e=n.normal.x*this.max.x):(t=n.normal.x*this.max.x,e=n.normal.x*this.min.x),n.normal.y>0?(t+=n.normal.y*this.min.y,e+=n.normal.y*this.max.y):(t+=n.normal.y*this.max.y,e+=n.normal.y*this.min.y),n.normal.z>0?(t+=n.normal.z*this.min.z,e+=n.normal.z*this.max.z):(t+=n.normal.z*this.max.z,e+=n.normal.z*this.min.z),t<=n.constant&&e>=n.constant},intersectsTriangle:function(){var n=new jt,t=new jt,e=new jt,r=new jt,i=new jt,o=new jt,a=new jt,l=new jt,s=new jt,c=new jt;function u(r){var i,o;for(i=0,o=r.length-3;i<=o;i+=3){a.fromArray(r,i);var l=s.x*Math.abs(a.x)+s.y*Math.abs(a.y)+s.z*Math.abs(a.z),c=n.dot(a),u=t.dot(a),h=e.dot(a);if(Math.max(-Math.max(c,u,h),Math.min(c,u,h))>l)return!1}return!0}return function(a){if(this.isEmpty())return!1;this.getCenter(l),s.subVectors(this.max,l),n.subVectors(a.a,l),t.subVectors(a.b,l),e.subVectors(a.c,l),r.subVectors(t,n),i.subVectors(e,t),o.subVectors(n,e);var h=[0,-r.z,r.y,0,-i.z,i.y,0,-o.z,o.y,r.z,0,-r.x,i.z,0,-i.x,o.z,0,-o.x,-r.y,r.x,0,-i.y,i.x,0,-o.y,o.x,0];return!!u(h)&&(!!u(h=[1,0,0,0,1,0,0,0,1])&&(c.crossVectors(r,i),u(h=[c.x,c.y,c.z])))}}(),clampPoint:function(n,t){return void 0===t&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new jt),t.copy(n).clamp(this.min,this.max)},distanceToPoint:function(){var n=new jt;return function(t){return n.copy(t).clamp(this.min,this.max).sub(t).length()}}(),getBoundingSphere:function(){var n=new jt;return function(t){return void 0===t&&(console.warn("THREE.Box3: .getBoundingSphere() target is now required"),t=new Qt),this.getCenter(t.center),t.radius=.5*this.getSize(n).length(),t}}(),intersect:function(n){return this.min.max(n.min),this.max.min(n.max),this.isEmpty()&&this.makeEmpty(),this},union:function(n){return this.min.min(n.min),this.max.max(n.max),this},applyMatrix4:function(n){if(this.isEmpty())return this;var t=n.elements,e=t[0]*this.min.x,r=t[1]*this.min.x,i=t[2]*this.min.x,o=t[0]*this.max.x,a=t[1]*this.max.x,l=t[2]*this.max.x,s=t[4]*this.min.y,c=t[5]*this.min.y,u=t[6]*this.min.y,h=t[4]*this.max.y,v=t[5]*this.max.y,d=t[6]*this.max.y,f=t[8]*this.min.z,p=t[9]*this.min.z,m=t[10]*this.min.z,g=t[8]*this.max.z,y=t[9]*this.max.z,x=t[10]*this.max.z;return this.min.x=Math.min(e,o)+Math.min(s,h)+Math.min(f,g)+t[12],this.min.y=Math.min(r,a)+Math.min(c,v)+Math.min(p,y)+t[13],this.min.z=Math.min(i,l)+Math.min(u,d)+Math.min(m,x)+t[14],this.max.x=Math.max(e,o)+Math.max(s,h)+Math.max(f,g)+t[12],this.max.y=Math.max(r,a)+Math.max(c,v)+Math.max(p,y)+t[13],this.max.z=Math.max(i,l)+Math.max(u,d)+Math.max(m,x)+t[14],this},translate:function(n){return this.min.add(n),this.max.add(n),this},equals:function(n){return n.min.equals(this.min)&&n.max.equals(this.max)}}),Object.assign(Qt.prototype,{set:function(n,t){return this.center.copy(n),this.radius=t,this},setFromPoints:function(){var n=new Kt;return function(t,e){var r=this.center;void 0!==e?r.copy(e):n.setFromPoints(t).getCenter(r);for(var i=0,o=0,a=t.length;o<a;o++)i=Math.max(i,r.distanceToSquared(t[o]));return this.radius=Math.sqrt(i),this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.center.copy(n.center),this.radius=n.radius,this},empty:function(){return this.radius<=0},containsPoint:function(n){return n.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(n){return n.distanceTo(this.center)-this.radius},intersectsSphere:function(n){var t=this.radius+n.radius;return n.center.distanceToSquared(this.center)<=t*t},intersectsBox:function(n){return n.intersectsSphere(this)},intersectsPlane:function(n){return Math.abs(n.distanceToPoint(this.center))<=this.radius},clampPoint:function(n,t){var e=this.center.distanceToSquared(n);return void 0===t&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),t=new jt),t.copy(n),e>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t},getBoundingBox:function(n){return void 0===n&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),n=new Kt),n.set(this.center,this.center),n.expandByScalar(this.radius),n},applyMatrix4:function(n){return this.center.applyMatrix4(n),this.radius=this.radius*n.getMaxScaleOnAxis(),this},translate:function(n){return this.center.add(n),this},equals:function(n){return n.center.equals(this.center)&&n.radius===this.radius}}),Object.assign($t.prototype,{set:function(n,t){return this.normal.copy(n),this.constant=t,this},setComponents:function(n,t,e,r){return this.normal.set(n,t,e),this.constant=r,this},setFromNormalAndCoplanarPoint:function(n,t){return this.normal.copy(n),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(){var n=new jt,t=new jt;return function(e,r,i){var o=n.subVectors(i,r).cross(t.subVectors(e,r)).normalize();return this.setFromNormalAndCoplanarPoint(o,e),this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.normal.copy(n.normal),this.constant=n.constant,this},normalize:function(){var n=1/this.normal.length();return this.normal.multiplyScalar(n),this.constant*=n,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(n){return this.normal.dot(n)+this.constant},distanceToSphere:function(n){return this.distanceToPoint(n.center)-n.radius},projectPoint:function(n,t){return void 0===t&&(console.warn("THREE.Plane: .projectPoint() target is now required"),t=new jt),t.copy(this.normal).multiplyScalar(-this.distanceToPoint(n)).add(n)},intersectLine:function(){var n=new jt;return function(t,e){void 0===e&&(console.warn("THREE.Plane: .intersectLine() target is now required"),e=new jt);var r=t.delta(n),i=this.normal.dot(r);if(0===i)return 0===this.distanceToPoint(t.start)?e.copy(t.start):void 0;var o=-(t.start.dot(this.normal)+this.constant)/i;return o<0||o>1?void 0:e.copy(r).multiplyScalar(o).add(t.start)}}(),intersectsLine:function(n){var t=this.distanceToPoint(n.start),e=this.distanceToPoint(n.end);return t<0&&e>0||e<0&&t>0},intersectsBox:function(n){return n.intersectsPlane(this)},intersectsSphere:function(n){return n.intersectsPlane(this)},coplanarPoint:function(n){return void 0===n&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),n=new jt),n.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var n=new jt,t=new Ht;return function(e,r){var i=r||t.getNormalMatrix(e),o=this.coplanarPoint(n).applyMatrix4(e),a=this.normal.applyMatrix3(i).normalize();return this.constant=-o.dot(a),this}}(),translate:function(n){return this.constant-=n.dot(this.normal),this},equals:function(n){return n.normal.equals(this.normal)&&n.constant===this.constant}}),Object.assign(ne.prototype,{set:function(n,t,e,r,i,o){var a=this.planes;return a[0].copy(n),a[1].copy(t),a[2].copy(e),a[3].copy(r),a[4].copy(i),a[5].copy(o),this},clone:function(){return(new this.constructor).copy(this)},copy:function(n){for(var t=this.planes,e=0;e<6;e++)t[e].copy(n.planes[e]);return this},setFromMatrix:function(n){var t=this.planes,e=n.elements,r=e[0],i=e[1],o=e[2],a=e[3],l=e[4],s=e[5],c=e[6],u=e[7],h=e[8],v=e[9],d=e[10],f=e[11],p=e[12],m=e[13],g=e[14],y=e[15];return t[0].setComponents(a-r,u-l,f-h,y-p).normalize(),t[1].setComponents(a+r,u+l,f+h,y+p).normalize(),t[2].setComponents(a+i,u+s,f+v,y+m).normalize(),t[3].setComponents(a-i,u-s,f-v,y-m).normalize(),t[4].setComponents(a-o,u-c,f-d,y-g).normalize(),t[5].setComponents(a+o,u+c,f+d,y+g).normalize(),this},intersectsObject:function(){var n=new Qt;return function(t){var e=t.geometry;return null===e.boundingSphere&&e.computeBoundingSphere(),n.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(n)}}(),intersectsSprite:function(){var n=new Qt;return function(t){return n.center.set(0,0,0),n.radius=.7071067811865476,n.applyMatrix4(t.matrixWorld),this.intersectsSphere(n)}}(),intersectsSphere:function(n){for(var t=this.planes,e=n.center,r=-n.radius,i=0;i<6;i++){if(t[i].distanceToPoint(e)<r)return!1}return!0},intersectsBox:function(){var n=new jt;return function(t){for(var e=this.planes,r=0;r<6;r++){var i=e[r];if(n.x=i.normal.x>0?t.max.x:t.min.x,n.y=i.normal.y>0?t.max.y:t.min.y,n.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(n)<0)return!1}return!0}}(),containsPoint:function(n){for(var t=this.planes,e=0;e<6;e++)if(t[e].distanceToPoint(n)<0)return!1;return!0}});var te={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif\n",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif\n",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif\n",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( PHYSICAL )\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",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"\nvec3 transformed = vec3( position );\n",beginnormal_vertex:"\nvec3 objectNormal = vec3( normal );\n",bsdfs:"float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\tif( decayExponent > 0.0 ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\treturn distanceFalloff * maxDistanceCutoffFactor;\n#else\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n#endif\n\t}\n\treturn 1.0;\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}\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 GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, 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_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 GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\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\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\n\treturn specularColor * AB.x + AB.y;\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",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",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif\n",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif\n",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvarying vec3 vViewPosition;\n#endif\n",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif\n",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(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}\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};\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}\n",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif\n",defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif\n",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif\n",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif\n",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif\n",encodings_fragment:" gl_FragColor = linearToOutputTexel( gl_FragColor );\n",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.xyz, vec3( gammaFactor ) ), value.w );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\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.w );\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.w );\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.xyz * value.w * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, 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.x, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.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 = value.rgb * cLogLuvM;\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 = Xp_Y_XYZp.rgb * cLogLuvInverseM;\n\treturn vec4( max(vRGB, 0.0), 1.0 );\n}\n",envmap_fragment:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, 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_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\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",envmap_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif\n",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif\n",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\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\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 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 blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, 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\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\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#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, 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",envmap_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\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",fog_vertex:"\n#ifdef USE_FOG\nfogDepth = -mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float fogDepth;\n#endif\n",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\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",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",gradientmap_pars_fragment:"#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif\n",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif\n",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\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#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\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#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\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#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif\n",lights_pars_begin:"uniform vec3 ambientLightColor;\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\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\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\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\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\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\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",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;\n",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\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\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",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif\n",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#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#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\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 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\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\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\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",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\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#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\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",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * 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( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif\n",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, clearCoatRadiance, geometry, material, reflectedLight );\n#endif\n",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#ifdef USE_LOGDEPTHBUF\n\tuniform float logDepthBufFC;\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n#endif\n",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n\tuniform float logDepthBufFC;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif\n",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n",map_particle_fragment:"#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n",map_particle_pars_fragment:"#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif\n",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif\n",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif\n",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif\n",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#endif\n",normal_fragment_maps:"#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif\n",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif\n",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}\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",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif\n",project_vertex:"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;\n",dithering_fragment:"#if defined( DITHERING )\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif\n",dithering_pars_fragment:"#if defined( 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",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif\n",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\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\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( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, 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( 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 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\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\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\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 )\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",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif\n",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif\n",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}\n",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",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform 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",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",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#endif\n",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",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif\n",tonemapping_pars_fragment:"#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\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}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\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}\n",uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n",uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif\n",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldPosition;\nvoid main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\n\tgl_FragColor.a *= opacity;\n}\n",cube_vert:"varying vec3 vWorldPosition;\n#include <common>\nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}\n",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>\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\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}\n",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>\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}\n",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",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",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldPosition;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldPosition );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n}\n",equirect_vert:"varying vec3 vWorldPosition;\n#include <common>\nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}\n",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 <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}\n",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 <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}\n",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\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_pars_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\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * 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 <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}\n",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",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\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_pars_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\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\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",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\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",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_pars_fragment>\n#include <gradientmap_pars_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",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",meshphysical_frag:"#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\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_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 <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 <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\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",meshphysical_vert:"#define PHYSICAL\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",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\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>\nvoid main() {\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",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\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>\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#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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}\n",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 <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}\n",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\t#ifdef USE_SIZEATTENUATION\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\n\t#else\n\t\tgl_PointSize = size;\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",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 <fog_fragment>\n}\n",shadow_vert:"#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 <shadowmap_vertex>\n\t#include <fog_vertex>\n}\n",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_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 <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",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\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\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\tvec4 mvPosition;\n\tmvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\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"},ee={merge:function(n){for(var t={},e=0;e<n.length;e++){var r=this.clone(n[e]);for(var i in r)t[i]=r[i]}return t},clone:function(n){var t={};for(var e in n)for(var r in t[e]={},n[e]){var i=n[e][r];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture)?t[e][r]=i.clone():Array.isArray(i)?t[e][r]=i.slice():t[e][r]=i}return t}},re={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function ie(n,t,e){return void 0===t&&void 0===e?this.set(n):this.setRGB(n,t,e)}Object.assign(ie.prototype,{isColor:!0,r:1,g:1,b:1,set:function(n){return n&&n.isColor?this.copy(n):"number"==typeof n?this.setHex(n):"string"==typeof n&&this.setStyle(n),this},setScalar:function(n){return this.r=n,this.g=n,this.b=n,this},setHex:function(n){return n=Math.floor(n),this.r=(n>>16&255)/255,this.g=(n>>8&255)/255,this.b=(255&n)/255,this},setRGB:function(n,t,e){return this.r=n,this.g=t,this.b=e,this},setHSL:function(){function n(n,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?n+6*(t-n)*e:e<.5?t:e<2/3?n+6*(t-n)*(2/3-e):n}return function(t,e,r){if(t=Ft.euclideanModulo(t,1),e=Ft.clamp(e,0,1),r=Ft.clamp(r,0,1),0===e)this.r=this.g=this.b=r;else{var i=r<=.5?r*(1+e):r+e-r*e,o=2*r-i;this.r=n(o,i,t+1/3),this.g=n(o,i,t),this.b=n(o,i,t-1/3)}return this}}(),setStyle:function(n){function t(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+n+" will be ignored.")}var e;if(e=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(n)){var r,i=e[1],o=e[2];switch(i){case"rgb":case"rgba":if(r=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(r[1],10))/255,this.g=Math.min(255,parseInt(r[2],10))/255,this.b=Math.min(255,parseInt(r[3],10))/255,t(r[5]),this;if(r=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(r[1],10))/100,this.g=Math.min(100,parseInt(r[2],10))/100,this.b=Math.min(100,parseInt(r[3],10))/100,t(r[5]),this;break;case"hsl":case"hsla":if(r=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o)){var a=parseFloat(r[1])/360,l=parseInt(r[2],10)/100,s=parseInt(r[3],10)/100;return t(r[5]),this.setHSL(a,l,s)}}}else if(e=/^\#([A-Fa-f0-9]+)$/.exec(n)){var c,u=(c=e[1]).length;if(3===u)return this.r=parseInt(c.charAt(0)+c.charAt(0),16)/255,this.g=parseInt(c.charAt(1)+c.charAt(1),16)/255,this.b=parseInt(c.charAt(2)+c.charAt(2),16)/255,this;if(6===u)return this.r=parseInt(c.charAt(0)+c.charAt(1),16)/255,this.g=parseInt(c.charAt(2)+c.charAt(3),16)/255,this.b=parseInt(c.charAt(4)+c.charAt(5),16)/255,this}n&&n.length>0&&(void 0!==(c=re[n])?this.setHex(c):console.warn("THREE.Color: Unknown color "+n));return this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(n){return this.r=n.r,this.g=n.g,this.b=n.b,this},copyGammaToLinear:function(n,t){return void 0===t&&(t=2),this.r=Math.pow(n.r,t),this.g=Math.pow(n.g,t),this.b=Math.pow(n.b,t),this},copyLinearToGamma:function(n,t){void 0===t&&(t=2);var e=t>0?1/t:1;return this.r=Math.pow(n.r,e),this.g=Math.pow(n.g,e),this.b=Math.pow(n.b,e),this},convertGammaToLinear:function(n){return this.copyGammaToLinear(this,n),this},convertLinearToGamma:function(n){return this.copyLinearToGamma(this,n),this},copySRGBToLinear:function(){function n(n){return n<.04045?.0773993808*n:Math.pow(.9478672986*n+.0521327014,2.4)}return function(t){return this.r=n(t.r),this.g=n(t.g),this.b=n(t.b),this}}(),copyLinearToSRGB:function(){function n(n){return n<.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}return function(t){return this.r=n(t.r),this.g=n(t.g),this.b=n(t.b),this}}(),convertSRGBToLinear:function(){return this.copySRGBToLinear(this),this},convertLinearToSRGB:function(){return this.copyLinearToSRGB(this),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(n){void 0===n&&(console.warn("THREE.Color: .getHSL() target is now required"),n={h:0,s:0,l:0});var t,e,r=this.r,i=this.g,o=this.b,a=Math.max(r,i,o),l=Math.min(r,i,o),s=(l+a)/2;if(l===a)t=0,e=0;else{var c=a-l;switch(e=s<=.5?c/(a+l):c/(2-a-l),a){case r:t=(i-o)/c+(i<o?6:0);break;case i:t=(o-r)/c+2;break;case o:t=(r-i)/c+4}t/=6}return n.h=t,n.s=e,n.l=s,n},getStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(){var n={};return function(t,e,r){return this.getHSL(n),n.h+=t,n.s+=e,n.l+=r,this.setHSL(n.h,n.s,n.l),this}}(),add:function(n){return this.r+=n.r,this.g+=n.g,this.b+=n.b,this},addColors:function(n,t){return this.r=n.r+t.r,this.g=n.g+t.g,this.b=n.b+t.b,this},addScalar:function(n){return this.r+=n,this.g+=n,this.b+=n,this},sub:function(n){return this.r=Math.max(0,this.r-n.r),this.g=Math.max(0,this.g-n.g),this.b=Math.max(0,this.b-n.b),this},multiply:function(n){return this.r*=n.r,this.g*=n.g,this.b*=n.b,this},multiplyScalar:function(n){return this.r*=n,this.g*=n,this.b*=n,this},lerp:function(n,t){return this.r+=(n.r-this.r)*t,this.g+=(n.g-this.g)*t,this.b+=(n.b-this.b)*t,this},equals:function(n){return n.r===this.r&&n.g===this.g&&n.b===this.b},fromArray:function(n,t){return void 0===t&&(t=0),this.r=n[t],this.g=n[t+1],this.b=n[t+2],this},toArray:function(n,t){return void 0===n&&(n=[]),void 0===t&&(t=0),n[t]=this.r,n[t+1]=this.g,n[t+2]=this.b,n},toJSON:function(){return this.getHex()}});var oe={common:{diffuse:{value:new ie(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Ht},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new zt(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ie(16777215)}},lights:{ambientLightColor:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}}},points:{diffuse:{value:new ie(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},uvTransform:{value:new Ht}},sprite:{diffuse:{value:new ie(15658734)},opacity:{value:1},center:{value:new zt(.5,.5)},rotation:{value:0},map:{value:null},uvTransform:{value:new Ht}}},ae={basic:{uniforms:ee.merge([oe.common,oe.specularmap,oe.envmap,oe.aomap,oe.lightmap,oe.fog]),vertexShader:te.meshbasic_vert,fragmentShader:te.meshbasic_frag},lambert:{uniforms:ee.merge([oe.common,oe.specularmap,oe.envmap,oe.aomap,oe.lightmap,oe.emissivemap,oe.fog,oe.lights,{emissive:{value:new ie(0)}}]),vertexShader:te.meshlambert_vert,fragmentShader:te.meshlambert_frag},phong:{uniforms:ee.merge([oe.common,oe.specularmap,oe.envmap,oe.aomap,oe.lightmap,oe.emissivemap,oe.bumpmap,oe.normalmap,oe.displacementmap,oe.gradientmap,oe.fog,oe.lights,{emissive:{value:new ie(0)},specular:{value:new ie(1118481)},shininess:{value:30}}]),vertexShader:te.meshphong_vert,fragmentShader:te.meshphong_frag},standard:{uniforms:ee.merge([oe.common,oe.envmap,oe.aomap,oe.lightmap,oe.emissivemap,oe.bumpmap,oe.normalmap,oe.displacementmap,oe.roughnessmap,oe.metalnessmap,oe.fog,oe.lights,{emissive:{value:new ie(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:te.meshphysical_vert,fragmentShader:te.meshphysical_frag},points:{uniforms:ee.merge([oe.points,oe.fog]),vertexShader:te.points_vert,fragmentShader:te.points_frag},dashed:{uniforms:ee.merge([oe.common,oe.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:te.linedashed_vert,fragmentShader:te.linedashed_frag},depth:{uniforms:ee.merge([oe.common,oe.displacementmap]),vertexShader:te.depth_vert,fragmentShader:te.depth_frag},normal:{uniforms:ee.merge([oe.common,oe.bumpmap,oe.normalmap,oe.displacementmap,{opacity:{value:1}}]),vertexShader:te.normal_vert,fragmentShader:te.normal_frag},sprite:{uniforms:ee.merge([oe.sprite,oe.fog]),vertexShader:te.sprite_vert,fragmentShader:te.sprite_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:te.cube_vert,fragmentShader:te.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:te.equirect_vert,fragmentShader:te.equirect_frag},distanceRGBA:{uniforms:ee.merge([oe.common,oe.displacementmap,{referencePosition:{value:new jt},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:te.distanceRGBA_vert,fragmentShader:te.distanceRGBA_frag},shadow:{uniforms:ee.merge([oe.lights,oe.fog,{color:{value:new ie(0)},opacity:{value:1}}]),vertexShader:te.shadow_vert,fragmentShader:te.shadow_frag}};function le(){var n=null,t=!1,e=null;function r(i,o){!1!==t&&(e(i,o),n.requestAnimationFrame(r))}return{start:function(){!0!==t&&null!==e&&(n.requestAnimationFrame(r),t=!0)},stop:function(){t=!1},setAnimationLoop:function(n){e=n},setContext:function(t){n=t}}}function se(n){var t=new WeakMap;return{get:function(n){return n.isInterleavedBufferAttribute&&(n=n.data),t.get(n)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);var r=t.get(e);r&&(n.deleteBuffer(r.buffer),t.delete(e))},update:function(e,r){e.isInterleavedBufferAttribute&&(e=e.data);var i=t.get(e);void 0===i?t.set(e,function(t,e){var r=t.array,i=t.dynamic?n.DYNAMIC_DRAW:n.STATIC_DRAW,o=n.createBuffer();n.bindBuffer(e,o),n.bufferData(e,r,i),t.onUploadCallback();var a=n.FLOAT;return r instanceof Float32Array?a=n.FLOAT:r instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):r instanceof Uint16Array?a=n.UNSIGNED_SHORT:r instanceof Int16Array?a=n.SHORT:r instanceof Uint32Array?a=n.UNSIGNED_INT:r instanceof Int32Array?a=n.INT:r instanceof Int8Array?a=n.BYTE:r instanceof Uint8Array&&(a=n.UNSIGNED_BYTE),{buffer:o,type:a,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version}}(e,r)):i.version<e.version&&(function(t,e,r){var i=e.array,o=e.updateRange;n.bindBuffer(r,t),!1===e.dynamic?n.bufferData(r,i,n.STATIC_DRAW):-1===o.count?n.bufferSubData(r,0,i):0===o.count?console.error("THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually."):(n.bufferSubData(r,o.offset*i.BYTES_PER_ELEMENT,i.subarray(o.offset,o.offset+o.count)),o.count=-1)}(i.buffer,e,r),i.version=e.version)}}}function ce(n,t,e,r){this._x=n||0,this._y=t||0,this._z=e||0,this._order=r||ce.DefaultOrder}function ue(){this.mask=1}ae.physical={uniforms:ee.merge([ae.standard.uniforms,{clearCoat:{value:0},clearCoatRoughness:{value:0}}]),vertexShader:te.meshphysical_vert,fragmentShader:te.meshphysical_frag},ce.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],ce.DefaultOrder="XYZ",Object.defineProperties(ce.prototype,{x:{get:function(){return this._x},set:function(n){this._x=n,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(n){this._y=n,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(n){this._z=n,this.onChangeCallback()}},order:{get:function(){return this._order},set:function(n){this._order=n,this.onChangeCallback()}}}),Object.assign(ce.prototype,{isEuler:!0,set:function(n,t,e,r){return this._x=n,this._y=t,this._z=e,this._order=r||this._order,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(n){return this._x=n._x,this._y=n._y,this._z=n._z,this._order=n._order,this.onChangeCallback(),this},setFromRotationMatrix:function(n,t,e){var r=Ft.clamp,i=n.elements,o=i[0],a=i[4],l=i[8],s=i[1],c=i[5],u=i[9],h=i[2],v=i[6],d=i[10];return"XYZ"===(t=t||this._order)?(this._y=Math.asin(r(l,-1,1)),Math.abs(l)<.99999?(this._x=Math.atan2(-u,d),this._z=Math.atan2(-a,o)):(this._x=Math.atan2(v,c),this._z=0)):"YXZ"===t?(this._x=Math.asin(-r(u,-1,1)),Math.abs(u)<.99999?(this._y=Math.atan2(l,d),this._z=Math.atan2(s,c)):(this._y=Math.atan2(-h,o),this._z=0)):"ZXY"===t?(this._x=Math.asin(r(v,-1,1)),Math.abs(v)<.99999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(s,o))):"ZYX"===t?(this._y=Math.asin(-r(h,-1,1)),Math.abs(h)<.99999?(this._x=Math.atan2(v,d),this._z=Math.atan2(s,o)):(this._x=0,this._z=Math.atan2(-a,c))):"YZX"===t?(this._z=Math.asin(r(s,-1,1)),Math.abs(s)<.99999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-h,o)):(this._x=0,this._y=Math.atan2(l,d))):"XZY"===t?(this._z=Math.asin(-r(a,-1,1)),Math.abs(a)<.99999?(this._x=Math.atan2(v,c),this._y=Math.atan2(l,o)):(this._x=Math.atan2(-u,d),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,!1!==e&&this.onChangeCallback(),this},setFromQuaternion:function(){var n=new Gt;return function(t,e,r){return n.makeRotationFromQuaternion(t),this.setFromRotationMatrix(n,e,r)}}(),setFromVector3:function(n,t){return this.set(n.x,n.y,n.z,t||this._order)},reorder:function(){var n=new kt;return function(t){return n.setFromEuler(this),this.setFromQuaternion(n,t)}}(),equals:function(n){return n._x===this._x&&n._y===this._y&&n._z===this._z&&n._order===this._order},fromArray:function(n){return this._x=n[0],this._y=n[1],this._z=n[2],void 0!==n[3]&&(this._order=n[3]),this.onChangeCallback(),this},toArray:function(n,t){return void 0===n&&(n=[]),void 0===t&&(t=0),n[t]=this._x,n[t+1]=this._y,n[t+2]=this._z,n[t+3]=this._order,n},toVector3:function(n){return n?n.set(this._x,this._y,this._z):new jt(this._x,this._y,this._z)},onChange:function(n){return this.onChangeCallback=n,this},onChangeCallback:function(){}}),Object.assign(ue.prototype,{set:function(n){this.mask=1<<n|0},enable:function(n){this.mask|=1<<n|0},toggle:function(n){this.mask^=1<<n|0},disable:function(n){this.mask&=~(1<<n|0)},test:function(n){return 0!=(this.mask&n.mask)}});var he=0;function ve(){Object.defineProperty(this,"id",{value:he++}),this.uuid=Ft.generateUUID(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=ve.DefaultUp.clone();var n=new jt,t=new ce,e=new kt,r=new jt(1,1,1);t.onChange(function(){e.setFromEuler(t,!1)}),e.onChange(function(){t.setFromQuaternion(e,void 0,!1)}),Object.defineProperties(this,{position:{enumerable:!0,value:n},rotation:{enumerable:!0,value:t},quaternion:{enumerable:!0,value:e},scale:{enumerable:!0,value:r},modelViewMatrix:{value:new Gt},normalMatrix:{value:new Ht}}),this.matrix=new Gt,this.matrixWorld=new Gt,this.matrixAutoUpdate=ve.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.layers=new ue,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.userData={}}function de(){ve.call(this),this.type="Camera",this.matrixWorldInverse=new Gt,this.projectionMatrix=new Gt}function fe(n,t,e,r,i,o){de.call(this),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=n,this.right=t,this.top=e,this.bottom=r,this.near=void 0!==i?i:.1,this.far=void 0!==o?o:2e3,this.updateProjectionMatrix()}function pe(n,t,e,r,i,o){this.a=n,this.b=t,this.c=e,this.normal=r&&r.isVector3?r:new jt,this.vertexNormals=Array.isArray(r)?r:[],this.color=i&&i.isColor?i:new ie,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=void 0!==o?o:0}ve.DefaultUp=new jt(0,1,0),ve.DefaultMatrixAutoUpdate=!0,ve.prototype=Object.assign(Object.create(r.prototype),{constructor:ve,isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix:function(n){this.matrix.multiplyMatrices(n,this.matrix),this.matrix.decompose(this.position,this.quaternion,this.scale)},applyQuaternion:function(n){return this.quaternion.premultiply(n),this},setRotationFromAxisAngle:function(n,t){this.quaternion.setFromAxisAngle(n,t)},setRotationFromEuler:function(n){this.quaternion.setFromEuler(n,!0)},setRotationFromMatrix:function(n){this.quaternion.setFromRotationMatrix(n)},setRotationFromQuaternion:function(n){this.quaternion.copy(n)},rotateOnAxis:function(){var n=new kt;return function(t,e){return n.setFromAxisAngle(t,e),this.quaternion.multiply(n),this}}(),rotateOnWorldAxis:function(){var n=new kt;return function(t,e){return n.setFromAxisAngle(t,e),this.quaternion.premultiply(n),this}}(),rotateX:function(){var n=new jt(1,0,0);return function(t){return this.rotateOnAxis(n,t)}}(),rotateY:function(){var n=new jt(0,1,0);return function(t){return this.rotateOnAxis(n,t)}}(),rotateZ:function(){var n=new jt(0,0,1);return function(t){return this.rotateOnAxis(n,t)}}(),translateOnAxis:function(){var n=new jt;return function(t,e){return n.copy(t).applyQuaternion(this.quaternion),this.position.add(n.multiplyScalar(e)),this}}(),translateX:function(){var n=new jt(1,0,0);return function(t){return this.translateOnAxis(n,t)}}(),translateY:function(){var n=new jt(0,1,0);return function(t){return this.translateOnAxis(n,t)}}(),translateZ:function(){var n=new jt(0,0,1);return function(t){return this.translateOnAxis(n,t)}}(),localToWorld:function(n){return n.applyMatrix4(this.matrixWorld)},worldToLocal:function(){var n=new Gt;return function(t){return t.applyMatrix4(n.getInverse(this.matrixWorld))}}(),lookAt:function(){var n=new Gt,t=new jt;return function(e,r,i){e.isVector3?t.copy(e):t.set(e,r,i),this.isCamera?n.lookAt(this.position,t,this.up):n.lookAt(t,this.position,this.up),this.quaternion.setFromRotationMatrix(n)}}(),add:function(n){if(arguments.length>1){for(var t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return n===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",n),this):(n&&n.isObject3D?(null!==n.parent&&n.parent.remove(n),n.parent=this,n.dispatchEvent({type:"added"}),this.children.push(n)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",n),this)},remove:function(n){if(arguments.length>1){for(var t=0;t<arguments.length;t++)this.remove(arguments[t]);return this}var e=this.children.indexOf(n);return-1!==e&&(n.parent=null,n.dispatchEvent({type:"removed"}),this.children.splice(e,1)),this},getObjectById:function(n){return this.getObjectByProperty("id",n)},getObjectByName:function(n){return this.getObjectByProperty("name",n)},getObjectByProperty:function(n,t){if(this[n]===t)return this;for(var e=0,r=this.children.length;e<r;e++){var i=this.children[e].getObjectByProperty(n,t);if(void 0!==i)return i}},getWorldPosition:function(n){return void 0===n&&(console.warn("THREE.Object3D: .getWorldPosition() target is now required"),n=new jt),this.updateMatrixWorld(!0),n.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(){var n=new jt,t=new jt;return function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldQuaternion() target is now required"),e=new kt),this.updateMatrixWorld(!0),this.matrixWorld.decompose(n,e,t),e}}(),getWorldScale:function(){var n=new jt,t=new kt;return function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldScale() target is now required"),e=new jt),this.updateMatrixWorld(!0),this.matrixWorld.decompose(n,t,e),e}}(),getWorldDirection:function(){var n=new kt;return function(t){return void 0===t&&(console.warn("THREE.Object3D: .getWorldDirection() target is now required"),t=new jt),this.getWorldQuaternion(n),t.set(0,0,1).applyQuaternion(n)}}(),raycast:function(){},traverse:function(n){n(this);for(var t=this.children,e=0,r=t.length;e<r;e++)t[e].traverse(n)},traverseVisible:function(n){if(!1!==this.visible){n(this);for(var t=this.children,e=0,r=t.length;e<r;e++)t[e].traverseVisible(n)}},traverseAncestors:function(n){var t=this.parent;null!==t&&(n(t),t.traverseAncestors(n))},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(n){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||n)&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,n=!0);for(var t=this.children,e=0,r=t.length;e<r;e++)t[e].updateMatrixWorld(n)},toJSON:function(n){var t=void 0===n||"string"==typeof n,e={};t&&(n={geometries:{},materials:{},textures:{},images:{},shapes:{}},e.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});var r={};function i(t,e){return void 0===t[e.uuid]&&(t[e.uuid]=e.toJSON(n)),e.uuid}if(r.uuid=this.uuid,r.type=this.type,""!==this.name&&(r.name=this.name),!0===this.castShadow&&(r.castShadow=!0),!0===this.receiveShadow&&(r.receiveShadow=!0),!1===this.visible&&(r.visible=!1),!1===this.frustumCulled&&(r.frustumCulled=!1),0!==this.renderOrder&&(r.renderOrder=this.renderOrder),"{}"!==JSON.stringify(this.userData)&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(r.matrixAutoUpdate=!1),this.isMesh||this.isLine||this.isPoints){r.geometry=i(n.geometries,this.geometry);var o=this.geometry.parameters;if(void 0!==o&&void 0!==o.shapes){var a=o.shapes;if(Array.isArray(a))for(var l=0,s=a.length;l<s;l++){var c=a[l];i(n.shapes,c)}else i(n.shapes,a)}}if(void 0!==this.material)if(Array.isArray(this.material)){var u=[];for(l=0,s=this.material.length;l<s;l++)u.push(i(n.materials,this.material[l]));r.material=u}else r.material=i(n.materials,this.material);if(this.children.length>0){r.children=[];for(l=0;l<this.children.length;l++)r.children.push(this.children[l].toJSON(n).object)}if(t){var h=p(n.geometries),v=p(n.materials),d=p(n.textures),f=p(n.images);a=p(n.shapes);h.length>0&&(e.geometries=h),v.length>0&&(e.materials=v),d.length>0&&(e.textures=d),f.length>0&&(e.images=f),a.length>0&&(e.shapes=a)}return e.object=r,e;function p(n){var t=[];for(var e in n){var r=n[e];delete r.metadata,t.push(r)}return t}},clone:function(n){return(new this.constructor).copy(this,n)},copy:function(n,t){if(void 0===t&&(t=!0),this.name=n.name,this.up.copy(n.up),this.position.copy(n.position),this.quaternion.copy(n.quaternion),this.scale.copy(n.scale),this.matrix.copy(n.matrix),this.matrixWorld.copy(n.matrixWorld),this.matrixAutoUpdate=n.matrixAutoUpdate,this.matrixWorldNeedsUpdate=n.matrixWorldNeedsUpdate,this.layers.mask=n.layers.mask,this.visible=n.visible,this.castShadow=n.castShadow,this.receiveShadow=n.receiveShadow,this.frustumCulled=n.frustumCulled,this.renderOrder=n.renderOrder,this.userData=JSON.parse(JSON.stringify(n.userData)),!0===t)for(var e=0;e<n.children.length;e++){var r=n.children[e];this.add(r.clone())}return this}}),de.prototype=Object.assign(Object.create(ve.prototype),{constructor:de,isCamera:!0,copy:function(n,t){return ve.prototype.copy.call(this,n,t),this.matrixWorldInverse.copy(n.matrixWorldInverse),this.projectionMatrix.copy(n.projectionMatrix),this},getWorldDirection:function(){var n=new kt;return function(t){return void 0===t&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),t=new jt),this.getWorldQuaternion(n),t.set(0,0,-1).applyQuaternion(n)}}(),updateMatrixWorld:function(n){ve.prototype.updateMatrixWorld.call(this,n),this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return(new this.constructor).copy(this)}}),fe.prototype=Object.assign(Object.create(de.prototype),{constructor:fe,isOrthographicCamera:!0,copy:function(n,t){return de.prototype.copy.call(this,n,t),this.left=n.left,this.right=n.right,this.top=n.top,this.bottom=n.bottom,this.near=n.near,this.far=n.far,this.zoom=n.zoom,this.view=null===n.view?null:Object.assign({},n.view),this},setViewOffset:function(n,t,e,r,i,o){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=n,this.view.fullHeight=t,this.view.offsetX=e,this.view.offsetY=r,this.view.width=i,this.view.height=o,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var n=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),e=(this.right+this.left)/2,r=(this.top+this.bottom)/2,i=e-n,o=e+n,a=r+t,l=r-t;if(null!==this.view&&this.view.enabled){var s=this.zoom/(this.view.width/this.view.fullWidth),c=this.zoom/(this.view.height/this.view.fullHeight),u=(this.right-this.left)/this.view.width,h=(this.top-this.bottom)/this.view.height;o=(i+=u*(this.view.offsetX/s))+u*(this.view.width/s),l=(a-=h*(this.view.offsetY/c))-h*(this.view.height/c)}this.projectionMatrix.makeOrthographic(i,o,a,l,this.near,this.far)},toJSON:function(n){var t=ve.prototype.toJSON.call(this,n);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}}),Object.assign(pe.prototype,{clone:function(){return(new this.constructor).copy(this)},copy:function(n){this.a=n.a,this.b=n.b,this.c=n.c,this.normal.copy(n.normal),this.color.copy(n.color),this.materialIndex=n.materialIndex;for(var t=0,e=n.vertexNormals.length;t<e;t++)this.vertexNormals[t]=n.vertexNormals[t].clone();for(t=0,e=n.vertexColors.length;t<e;t++)this.vertexColors[t]=n.vertexColors[t].clone();return this}});var me=0;function ge(){Object.defineProperty(this,"id",{value:me+=2}),this.uuid=Ft.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}function ye(n,t,e){if(Array.isArray(n))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=n,this.itemSize=t,this.count=void 0!==n?n.length/t:0,this.normalized=!0===e,this.dynamic=!1,this.updateRange={offset:0,count:-1},this.version=0}function xe(n,t,e){ye.call(this,new Int8Array(n),t,e)}function be(n,t,e){ye.call(this,new Uint8Array(n),t,e)}function we(n,t,e){ye.call(this,new Uint8ClampedArray(n),t,e)}function Me(n,t,e){ye.call(this,new Int16Array(n),t,e)}function _e(n,t,e){ye.call(this,new Uint16Array(n),t,e)}function Ee(n,t,e){ye.call(this,new Int32Array(n),t,e)}function Se(n,t,e){ye.call(this,new Uint32Array(n),t,e)}function Te(n,t,e){ye.call(this,new Float32Array(n),t,e)}function Ae(n,t,e){ye.call(this,new Float64Array(n),t,e)}function Le(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}function Pe(n){if(0===n.length)return-1/0;for(var t=n[0],e=1,r=n.length;e<r;++e)n[e]>t&&(t=n[e]);return t}ge.prototype=Object.assign(Object.create(r.prototype),{constructor:ge,isGeometry:!0,applyMatrix:function(n){for(var t=(new Ht).getNormalMatrix(n),e=0,r=this.vertices.length;e<r;e++){this.vertices[e].applyMatrix4(n)}for(e=0,r=this.faces.length;e<r;e++){var i=this.faces[e];i.normal.applyMatrix3(t).normalize();for(var o=0,a=i.vertexNormals.length;o<a;o++)i.vertexNormals[o].applyMatrix3(t).normalize()}return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(){var n=new Gt;return function(t){return n.makeRotationX(t),this.applyMatrix(n),this}}(),rotateY:function(){var n=new Gt;return function(t){return n.makeRotationY(t),this.applyMatrix(n),this}}(),rotateZ:function(){var n=new Gt;return function(t){return n.makeRotationZ(t),this.applyMatrix(n),this}}(),translate:function(){var n=new Gt;return function(t,e,r){return n.makeTranslation(t,e,r),this.applyMatrix(n),this}}(),scale:function(){var n=new Gt;return function(t,e,r){return n.makeScale(t,e,r),this.applyMatrix(n),this}}(),lookAt:function(){var n=new ve;return function(t){n.lookAt(t),n.updateMatrix(),this.applyMatrix(n.matrix)}}(),fromBufferGeometry:function(n){var t=this,e=null!==n.index?n.index.array:void 0,r=n.attributes,i=r.position.array,o=void 0!==r.normal?r.normal.array:void 0,a=void 0!==r.color?r.color.array:void 0,l=void 0!==r.uv?r.uv.array:void 0,s=void 0!==r.uv2?r.uv2.array:void 0;void 0!==s&&(this.faceVertexUvs[1]=[]);for(var c=[],u=[],h=[],v=0,d=0;v<i.length;v+=3,d+=2)t.vertices.push(new jt(i[v],i[v+1],i[v+2])),void 0!==o&&c.push(new jt(o[v],o[v+1],o[v+2])),void 0!==a&&t.colors.push(new ie(a[v],a[v+1],a[v+2])),void 0!==l&&u.push(new zt(l[d],l[d+1])),void 0!==s&&h.push(new zt(s[d],s[d+1]));function f(n,e,r,i){var v=new pe(n,e,r,void 0!==o?[c[n].clone(),c[e].clone(),c[r].clone()]:[],void 0!==a?[t.colors[n].clone(),t.colors[e].clone(),t.colors[r].clone()]:[],i);t.faces.push(v),void 0!==l&&t.faceVertexUvs[0].push([u[n].clone(),u[e].clone(),u[r].clone()]),void 0!==s&&t.faceVertexUvs[1].push([h[n].clone(),h[e].clone(),h[r].clone()])}var p=n.groups;if(p.length>0)for(v=0;v<p.length;v++)for(var m=p[v],g=m.start,y=(d=g,g+m.count);d<y;d+=3)void 0!==e?f(e[d],e[d+1],e[d+2],m.materialIndex):f(d,d+1,d+2,m.materialIndex);else if(void 0!==e)for(v=0;v<e.length;v+=3)f(e[v],e[v+1],e[v+2]);else for(v=0;v<i.length/3;v+=3)f(v,v+1,v+2);return this.computeFaceNormals(),null!==n.boundingBox&&(this.boundingBox=n.boundingBox.clone()),null!==n.boundingSphere&&(this.boundingSphere=n.boundingSphere.clone()),this},center:function(){var n=new jt;return function(){return this.computeBoundingBox(),this.boundingBox.getCenter(n).negate(),this.translate(n.x,n.y,n.z),this}}(),normalize:function(){this.computeBoundingSphere();var n=this.boundingSphere.center,t=this.boundingSphere.radius,e=0===t?1:1/t,r=new Gt;return r.set(e,0,0,-e*n.x,0,e,0,-e*n.y,0,0,e,-e*n.z,0,0,0,1),this.applyMatrix(r),this},computeFaceNormals:function(){for(var n=new jt,t=new jt,e=0,r=this.faces.length;e<r;e++){var i=this.faces[e],o=this.vertices[i.a],a=this.vertices[i.b],l=this.vertices[i.c];n.subVectors(l,a),t.subVectors(o,a),n.cross(t),n.normalize(),i.normal.copy(n)}},computeVertexNormals:function(n){var t,e,r,i,o,a;for(void 0===n&&(n=!0),a=new Array(this.vertices.length),t=0,e=this.vertices.length;t<e;t++)a[t]=new jt;if(n){var l,s,c,u=new jt,h=new jt;for(r=0,i=this.faces.length;r<i;r++)o=this.faces[r],l=this.vertices[o.a],s=this.vertices[o.b],c=this.vertices[o.c],u.subVectors(c,s),h.subVectors(l,s),u.cross(h),a[o.a].add(u),a[o.b].add(u),a[o.c].add(u)}else for(this.computeFaceNormals(),r=0,i=this.faces.length;r<i;r++)a[(o=this.faces[r]).a].add(o.normal),a[o.b].add(o.normal),a[o.c].add(o.normal);for(t=0,e=this.vertices.length;t<e;t++)a[t].normalize();for(r=0,i=this.faces.length;r<i;r++){var v=(o=this.faces[r]).vertexNormals;3===v.length?(v[0].copy(a[o.a]),v[1].copy(a[o.b]),v[2].copy(a[o.c])):(v[0]=a[o.a].clone(),v[1]=a[o.b].clone(),v[2]=a[o.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var n,t,e;for(this.computeFaceNormals(),n=0,t=this.faces.length;n<t;n++){var r=(e=this.faces[n]).vertexNormals;3===r.length?(r[0].copy(e.normal),r[1].copy(e.normal),r[2].copy(e.normal)):(r[0]=e.normal.clone(),r[1]=e.normal.clone(),r[2]=e.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var n,t,e,r,i;for(e=0,r=this.faces.length;e<r;e++)for((i=this.faces[e]).__originalFaceNormal?i.__originalFaceNormal.copy(i.normal):i.__originalFaceNormal=i.normal.clone(),i.__originalVertexNormals||(i.__originalVertexNormals=[]),n=0,t=i.vertexNormals.length;n<t;n++)i.__originalVertexNormals[n]?i.__originalVertexNormals[n].copy(i.vertexNormals[n]):i.__originalVertexNormals[n]=i.vertexNormals[n].clone();var o=new ge;for(o.faces=this.faces,n=0,t=this.morphTargets.length;n<t;n++){if(!this.morphNormals[n]){this.morphNormals[n]={},this.morphNormals[n].faceNormals=[],this.morphNormals[n].vertexNormals=[];var a=this.morphNormals[n].faceNormals,l=this.morphNormals[n].vertexNormals;for(e=0,r=this.faces.length;e<r;e++)s=new jt,c={a:new jt,b:new jt,c:new jt},a.push(s),l.push(c)}var s,c,u=this.morphNormals[n];for(o.vertices=this.morphTargets[n].vertices,o.computeFaceNormals(),o.computeVertexNormals(),e=0,r=this.faces.length;e<r;e++)i=this.faces[e],s=u.faceNormals[e],c=u.vertexNormals[e],s.copy(i.normal),c.a.copy(i.vertexNormals[0]),c.b.copy(i.vertexNormals[1]),c.c.copy(i.vertexNormals[2])}for(e=0,r=this.faces.length;e<r;e++)(i=this.faces[e]).normal=i.__originalFaceNormal,i.vertexNormals=i.__originalVertexNormals},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Kt),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new Qt),this.boundingSphere.setFromPoints(this.vertices)},merge:function(n,t,e){if(n&&n.isGeometry){var r,i=this.vertices.length,o=this.vertices,a=n.vertices,l=this.faces,s=n.faces,c=this.faceVertexUvs[0],u=n.faceVertexUvs[0],h=this.colors,v=n.colors;void 0===e&&(e=0),void 0!==t&&(r=(new Ht).getNormalMatrix(t));for(var d=0,f=a.length;d<f;d++){var p=a[d].clone();void 0!==t&&p.applyMatrix4(t),o.push(p)}for(d=0,f=v.length;d<f;d++)h.push(v[d].clone());for(d=0,f=s.length;d<f;d++){var m,g,y,x=s[d],b=x.vertexNormals,w=x.vertexColors;(m=new pe(x.a+i,x.b+i,x.c+i)).normal.copy(x.normal),void 0!==r&&m.normal.applyMatrix3(r).normalize();for(var M=0,_=b.length;M<_;M++)g=b[M].clone(),void 0!==r&&g.applyMatrix3(r).normalize(),m.vertexNormals.push(g);m.color.copy(x.color);for(M=0,_=w.length;M<_;M++)y=w[M],m.vertexColors.push(y.clone());m.materialIndex=x.materialIndex+e,l.push(m)}for(d=0,f=u.length;d<f;d++){var E=u[d],S=[];if(void 0!==E){for(M=0,_=E.length;M<_;M++)S.push(E[M].clone());c.push(S)}}}else console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",n)},mergeMesh:function(n){n&&n.isMesh?(n.matrixAutoUpdate&&n.updateMatrix(),this.merge(n.geometry,n.matrix)):console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",n)},mergeVertices:function(){var n,t,e,r,i,o,a,l,s={},c=[],u=[],h=Math.pow(10,4);for(e=0,r=this.vertices.length;e<r;e++)n=this.vertices[e],void 0===s[t=Math.round(n.x*h)+"_"+Math.round(n.y*h)+"_"+Math.round(n.z*h)]?(s[t]=e,c.push(this.vertices[e]),u[e]=c.length-1):u[e]=u[s[t]];var v=[];for(e=0,r=this.faces.length;e<r;e++){(i=this.faces[e]).a=u[i.a],i.b=u[i.b],i.c=u[i.c],o=[i.a,i.b,i.c];for(var d=0;d<3;d++)if(o[d]===o[(d+1)%3]){v.push(e);break}}for(e=v.length-1;e>=0;e--){var f=v[e];for(this.faces.splice(f,1),a=0,l=this.faceVertexUvs.length;a<l;a++)this.faceVertexUvs[a].splice(f,1)}var p=this.vertices.length-c.length;return this.vertices=c,p},setFromPoints:function(n){this.vertices=[];for(var t=0,e=n.length;t<e;t++){var r=n[t];this.vertices.push(new jt(r.x,r.y,r.z||0))}return this},sortFacesByMaterialIndex:function(){for(var n=this.faces,t=n.length,e=0;e<t;e++)n[e]._id=e;n.sort(function(n,t){return n.materialIndex-t.materialIndex});var r,i,o=this.faceVertexUvs[0],a=this.faceVertexUvs[1];o&&o.length===t&&(r=[]),a&&a.length===t&&(i=[]);for(e=0;e<t;e++){var l=n[e]._id;r&&r.push(o[l]),i&&i.push(a[l])}r&&(this.faceVertexUvs[0]=r),i&&(this.faceVertexUvs[1]=i)},toJSON:function(){var n={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),void 0!==this.parameters){var t=this.parameters;for(var e in t)void 0!==t[e]&&(n[e]=t[e]);return n}for(var r=[],i=0;i<this.vertices.length;i++){var o=this.vertices[i];r.push(o.x,o.y,o.z)}var a=[],l=[],s={},c=[],u={},h=[],v={};for(i=0;i<this.faces.length;i++){var d=this.faces[i],f=void 0!==this.faceVertexUvs[0][i],p=d.normal.length()>0,m=d.vertexNormals.length>0,g=1!==d.color.r||1!==d.color.g||1!==d.color.b,y=d.vertexColors.length>0,x=0;if(x=_(x=_(x=_(x=_(x=_(x=_(x=_(x=_(x,0,0),1,!0),2,!1),3,f),4,p),5,m),6,g),7,y),a.push(x),a.push(d.a,d.b,d.c),a.push(d.materialIndex),f){var b=this.faceVertexUvs[0][i];a.push(T(b[0]),T(b[1]),T(b[2]))}if(p&&a.push(E(d.normal)),m){var w=d.vertexNormals;a.push(E(w[0]),E(w[1]),E(w[2]))}if(g&&a.push(S(d.color)),y){var M=d.vertexColors;a.push(S(M[0]),S(M[1]),S(M[2]))}}function _(n,t,e){return e?n|1<<t:n&~(1<<t)}function E(n){var t=n.x.toString()+n.y.toString()+n.z.toString();return void 0!==s[t]?s[t]:(s[t]=l.length/3,l.push(n.x,n.y,n.z),s[t])}function S(n){var t=n.r.toString()+n.g.toString()+n.b.toString();return void 0!==u[t]?u[t]:(u[t]=c.length,c.push(n.getHex()),u[t])}function T(n){var t=n.x.toString()+n.y.toString();return void 0!==v[t]?v[t]:(v[t]=h.length/2,h.push(n.x,n.y),v[t])}return n.data={},n.data.vertices=r,n.data.normals=l,c.length>0&&(n.data.colors=c),h.length>0&&(n.data.uvs=[h]),n.data.faces=a,n},clone:function(){return(new ge).copy(this)},copy:function(n){var t,e,r,i,o,a;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=n.name;var l=n.vertices;for(t=0,e=l.length;t<e;t++)this.vertices.push(l[t].clone());var s=n.colors;for(t=0,e=s.length;t<e;t++)this.colors.push(s[t].clone());var c=n.faces;for(t=0,e=c.length;t<e;t++)this.faces.push(c[t].clone());for(t=0,e=n.faceVertexUvs.length;t<e;t++){var u=n.faceVertexUvs[t];for(void 0===this.faceVertexUvs[t]&&(this.faceVertexUvs[t]=[]),r=0,i=u.length;r<i;r++){var h=u[r],v=[];for(o=0,a=h.length;o<a;o++){var d=h[o];v.push(d.clone())}this.faceVertexUvs[t].push(v)}}var f=n.morphTargets;for(t=0,e=f.length;t<e;t++){var p={};if(p.name=f[t].name,void 0!==f[t].vertices)for(p.vertices=[],r=0,i=f[t].vertices.length;r<i;r++)p.vertices.push(f[t].vertices[r].clone());if(void 0!==f[t].normals)for(p.normals=[],r=0,i=f[t].normals.length;r<i;r++)p.normals.push(f[t].normals[r].clone());this.morphTargets.push(p)}var m=n.morphNormals;for(t=0,e=m.length;t<e;t++){var g={};if(void 0!==m[t].vertexNormals)for(g.vertexNormals=[],r=0,i=m[t].vertexNormals.length;r<i;r++){var y=m[t].vertexNormals[r],x={};x.a=y.a.clone(),x.b=y.b.clone(),x.c=y.c.clone(),g.vertexNormals.push(x)}if(void 0!==m[t].faceNormals)for(g.faceNormals=[],r=0,i=m[t].faceNormals.length;r<i;r++)g.faceNormals.push(m[t].faceNormals[r].clone());this.morphNormals.push(g)}var b=n.skinWeights;for(t=0,e=b.length;t<e;t++)this.skinWeights.push(b[t].clone());var w=n.skinIndices;for(t=0,e=w.length;t<e;t++)this.skinIndices.push(w[t].clone());var M=n.lineDistances;for(t=0,e=M.length;t<e;t++)this.lineDistances.push(M[t]);var _=n.boundingBox;null!==_&&(this.boundingBox=_.clone());var E=n.boundingSphere;return null!==E&&(this.boundingSphere=E.clone()),this.elementsNeedUpdate=n.elementsNeedUpdate,this.verticesNeedUpdate=n.verticesNeedUpdate,this.uvsNeedUpdate=n.uvsNeedUpdate,this.normalsNeedUpdate=n.normalsNeedUpdate,this.colorsNeedUpdate=n.colorsNeedUpdate,this.lineDistancesNeedUpdate=n.lineDistancesNeedUpdate,this.groupsNeedUpdate=n.groupsNeedUpdate,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Object.defineProperty(ye.prototype,"needsUpdate",{set:function(n){!0===n&&this.version++}}),Object.assign(ye.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setArray:function(n){if(Array.isArray(n))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");return this.count=void 0!==n?n.length/this.itemSize:0,this.array=n,this},setDynamic:function(n){return this.dynamic=n,this},copy:function(n){return this.name=n.name,this.array=new n.array.constructor(n.array),this.itemSize=n.itemSize,this.count=n.count,this.normalized=n.normalized,this.dynamic=n.dynamic,this},copyAt:function(n,t,e){n*=this.itemSize,e*=t.itemSize;for(var r=0,i=this.itemSize;r<i;r++)this.array[n+r]=t.array[e+r];return this},copyArray:function(n){return this.array.set(n),this},copyColorsArray:function(n){for(var t=this.array,e=0,r=0,i=n.length;r<i;r++){var o=n[r];void 0===o&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),o=new ie),t[e++]=o.r,t[e++]=o.g,t[e++]=o.b}return this},copyVector2sArray:function(n){for(var t=this.array,e=0,r=0,i=n.length;r<i;r++){var o=n[r];void 0===o&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),o=new zt),t[e++]=o.x,t[e++]=o.y}return this},copyVector3sArray:function(n){for(var t=this.array,e=0,r=0,i=n.length;r<i;r++){var o=n[r];void 0===o&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),o=new jt),t[e++]=o.x,t[e++]=o.y,t[e++]=o.z}return this},copyVector4sArray:function(n){for(var t=this.array,e=0,r=0,i=n.length;r<i;r++){var o=n[r];void 0===o&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),o=new qt),t[e++]=o.x,t[e++]=o.y,t[e++]=o.z,t[e++]=o.w}return this},set:function(n,t){return void 0===t&&(t=0),this.array.set(n,t),this},getX:function(n){return this.array[n*this.itemSize]},setX:function(n,t){return this.array[n*this.itemSize]=t,this},getY:function(n){return this.array[n*this.itemSize+1]},setY:function(n,t){return this.array[n*this.itemSize+1]=t,this},getZ:function(n){return this.array[n*this.itemSize+2]},setZ:function(n,t){return this.array[n*this.itemSize+2]=t,this},getW:function(n){return this.array[n*this.itemSize+3]},setW:function(n,t){return this.array[n*this.itemSize+3]=t,this},setXY:function(n,t,e){return n*=this.itemSize,this.array[n+0]=t,this.array[n+1]=e,this},setXYZ:function(n,t,e,r){return n*=this.itemSize,this.array[n+0]=t,this.array[n+1]=e,this.array[n+2]=r,this},setXYZW:function(n,t,e,r,i){return n*=this.itemSize,this.array[n+0]=t,this.array[n+1]=e,this.array[n+2]=r,this.array[n+3]=i,this},onUpload:function(n){return this.onUploadCallback=n,this},clone:function(){return new this.constructor(this.array,this.itemSize).copy(this)}}),xe.prototype=Object.create(ye.prototype),xe.prototype.constructor=xe,be.prototype=Object.create(ye.prototype),be.prototype.constructor=be,we.prototype=Object.create(ye.prototype),we.prototype.constructor=we,Me.prototype=Object.create(ye.prototype),Me.prototype.constructor=Me,_e.prototype=Object.create(ye.prototype),_e.prototype.constructor=_e,Ee.prototype=Object.create(ye.prototype),Ee.prototype.constructor=Ee,Se.prototype=Object.create(ye.prototype),Se.prototype.constructor=Se,Te.prototype=Object.create(ye.prototype),Te.prototype.constructor=Te,Ae.prototype=Object.create(ye.prototype),Ae.prototype.constructor=Ae,Object.assign(Le.prototype,{computeGroups:function(n){for(var t,e=[],r=void 0,i=n.faces,o=0;o<i.length;o++){var a=i[o];a.materialIndex!==r&&(r=a.materialIndex,void 0!==t&&(t.count=3*o-t.start,e.push(t)),t={start:3*o,materialIndex:r})}void 0!==t&&(t.count=3*o-t.start,e.push(t)),this.groups=e},fromGeometry:function(n){var t,e=n.faces,r=n.vertices,i=n.faceVertexUvs,o=i[0]&&i[0].length>0,a=i[1]&&i[1].length>0,l=n.morphTargets,s=l.length;if(s>0){t=[];for(var c=0;c<s;c++)t[c]=[];this.morphTargets.position=t}var u,h=n.morphNormals,v=h.length;if(v>0){u=[];for(c=0;c<v;c++)u[c]=[];this.morphTargets.normal=u}var d=n.skinIndices,f=n.skinWeights,p=d.length===r.length,m=f.length===r.length;r.length>0&&0===e.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(c=0;c<e.length;c++){var g=e[c];this.vertices.push(r[g.a],r[g.b],r[g.c]);var y=g.vertexNormals;if(3===y.length)this.normals.push(y[0],y[1],y[2]);else{var x=g.normal;this.normals.push(x,x,x)}var b,w=g.vertexColors;if(3===w.length)this.colors.push(w[0],w[1],w[2]);else{var M=g.color;this.colors.push(M,M,M)}if(!0===o)void 0!==(b=i[0][c])?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",c),this.uvs.push(new zt,new zt,new zt));if(!0===a)void 0!==(b=i[1][c])?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",c),this.uvs2.push(new zt,new zt,new zt));for(var _=0;_<s;_++){var E=l[_].vertices;t[_].push(E[g.a],E[g.b],E[g.c])}for(_=0;_<v;_++){var S=h[_].vertexNormals[c];u[_].push(S.a,S.b,S.c)}p&&this.skinIndices.push(d[g.a],d[g.b],d[g.c]),m&&this.skinWeights.push(f[g.a],f[g.b],f[g.c])}return this.computeGroups(n),this.verticesNeedUpdate=n.verticesNeedUpdate,this.normalsNeedUpdate=n.normalsNeedUpdate,this.colorsNeedUpdate=n.colorsNeedUpdate,this.uvsNeedUpdate=n.uvsNeedUpdate,this.groupsNeedUpdate=n.groupsNeedUpdate,this}});var Ce=1;function Re(){Object.defineProperty(this,"id",{value:Ce+=2}),this.uuid=Ft.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}function Oe(n,t,e,r,i,o){ge.call(this),this.type="BoxGeometry",this.parameters={width:n,height:t,depth:e,widthSegments:r,heightSegments:i,depthSegments:o},this.fromBufferGeometry(new De(n,t,e,r,i,o)),this.mergeVertices()}function De(n,t,e,r,i,o){Re.call(this),this.type="BoxBufferGeometry",this.parameters={width:n,height:t,depth:e,widthSegments:r,heightSegments:i,depthSegments:o};var a=this;n=n||1,t=t||1,e=e||1,r=Math.floor(r)||1,i=Math.floor(i)||1;var l=[],s=[],c=[],u=[],h=0,v=0;function d(n,t,e,r,i,o,d,f,p,m,g){var y,x,b=o/p,w=d/m,M=o/2,_=d/2,E=f/2,S=p+1,T=m+1,A=0,L=0,P=new jt;for(x=0;x<T;x++){var C=x*w-_;for(y=0;y<S;y++){var R=y*b-M;P[n]=R*r,P[t]=C*i,P[e]=E,s.push(P.x,P.y,P.z),P[n]=0,P[t]=0,P[e]=f>0?1:-1,c.push(P.x,P.y,P.z),u.push(y/p),u.push(1-x/m),A+=1}}for(x=0;x<m;x++)for(y=0;y<p;y++){var O=h+y+S*x,D=h+y+S*(x+1),U=h+(y+1)+S*(x+1),N=h+(y+1)+S*x;l.push(O,D,N),l.push(D,U,N),L+=6}a.addGroup(v,L,g),v+=L,h+=A}d("z","y","x",-1,-1,e,t,n,o=Math.floor(o)||1,i,0),d("z","y","x",1,-1,e,t,-n,o,i,1),d("x","z","y",1,1,n,e,t,r,o,2),d("x","z","y",1,-1,n,e,-t,r,o,3),d("x","y","z",1,-1,n,t,e,r,i,4),d("x","y","z",-1,-1,n,t,-e,r,i,5),this.setIndex(l),this.addAttribute("position",new Te(s,3)),this.addAttribute("normal",new Te(c,3)),this.addAttribute("uv",new Te(u,2))}function Ue(n,t,e,r){ge.call(this),this.type="PlaneGeometry",this.parameters={width:n,height:t,widthSegments:e,heightSegments:r},this.fromBufferGeometry(new Ne(n,t,e,r)),this.mergeVertices()}function Ne(n,t,e,r){Re.call(this),this.type="PlaneBufferGeometry",this.parameters={width:n,height:t,widthSegments:e,heightSegments:r};var i,o,a=(n=n||1)/2,l=(t=t||1)/2,s=Math.floor(e)||1,c=Math.floor(r)||1,u=s+1,h=c+1,v=n/s,d=t/c,f=[],p=[],m=[],g=[];for(o=0;o<h;o++){var y=o*d-l;for(i=0;i<u;i++){var x=i*v-a;p.push(x,-y,0),m.push(0,0,1),g.push(i/s),g.push(1-o/c)}}for(o=0;o<c;o++)for(i=0;i<s;i++){var b=i+u*o,w=i+u*(o+1),M=i+1+u*(o+1),_=i+1+u*o;f.push(b,w,_),f.push(w,M,_)}this.setIndex(f),this.addAttribute("position",new Te(p,3)),this.addAttribute("normal",new Te(m,3)),this.addAttribute("uv",new Te(g,2))}Re.prototype=Object.assign(Object.create(r.prototype),{constructor:Re,isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(n){Array.isArray(n)?this.index=new(Pe(n)>65535?Se:_e)(n,1):this.index=n},addAttribute:function(n,t){return t&&t.isBufferAttribute||t&&t.isInterleavedBufferAttribute?"index"===n?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(t),this):(this.attributes[n]=t,this):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.addAttribute(n,new ye(arguments[1],arguments[2])))},getAttribute:function(n){return this.attributes[n]},removeAttribute:function(n){return delete this.attributes[n],this},addGroup:function(n,t,e){this.groups.push({start:n,count:t,materialIndex:void 0!==e?e:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(n,t){this.drawRange.start=n,this.drawRange.count=t},applyMatrix:function(n){var t=this.attributes.position;void 0!==t&&(n.applyToBufferAttribute(t),t.needsUpdate=!0);var e=this.attributes.normal;void 0!==e&&((new Ht).getNormalMatrix(n).applyToBufferAttribute(e),e.needsUpdate=!0);return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(){var n=new Gt;return function(t){return n.makeRotationX(t),this.applyMatrix(n),this}}(),rotateY:function(){var n=new Gt;return function(t){return n.makeRotationY(t),this.applyMatrix(n),this}}(),rotateZ:function(){var n=new Gt;return function(t){return n.makeRotationZ(t),this.applyMatrix(n),this}}(),translate:function(){var n=new Gt;return function(t,e,r){return n.makeTranslation(t,e,r),this.applyMatrix(n),this}}(),scale:function(){var n=new Gt;return function(t,e,r){return n.makeScale(t,e,r),this.applyMatrix(n),this}}(),lookAt:function(){var n=new ve;return function(t){n.lookAt(t),n.updateMatrix(),this.applyMatrix(n.matrix)}}(),center:function(){var n=new jt;return function(){return this.computeBoundingBox(),this.boundingBox.getCenter(n).negate(),this.translate(n.x,n.y,n.z),this}}(),setFromObject:function(n){var t=n.geometry;if(n.isPoints||n.isLine){var e=new Te(3*t.vertices.length,3),r=new Te(3*t.colors.length,3);if(this.addAttribute("position",e.copyVector3sArray(t.vertices)),this.addAttribute("color",r.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){var i=new Te(t.lineDistances.length,1);this.addAttribute("lineDistance",i.copyArray(t.lineDistances))}null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone())}else n.isMesh&&t&&t.isGeometry&&this.fromGeometry(t);return this},setFromPoints:function(n){for(var t=[],e=0,r=n.length;e<r;e++){var i=n[e];t.push(i.x,i.y,i.z||0)}return this.addAttribute("position",new Te(t,3)),this},updateFromObject:function(n){var t,e=n.geometry;if(n.isMesh){var r=e.__directGeometry;if(!0===e.elementsNeedUpdate&&(r=void 0,e.elementsNeedUpdate=!1),void 0===r)return this.fromGeometry(e);r.verticesNeedUpdate=e.verticesNeedUpdate,r.normalsNeedUpdate=e.normalsNeedUpdate,r.colorsNeedUpdate=e.colorsNeedUpdate,r.uvsNeedUpdate=e.uvsNeedUpdate,r.groupsNeedUpdate=e.groupsNeedUpdate,e.verticesNeedUpdate=!1,e.normalsNeedUpdate=!1,e.colorsNeedUpdate=!1,e.uvsNeedUpdate=!1,e.groupsNeedUpdate=!1,e=r}return!0===e.verticesNeedUpdate&&(void 0!==(t=this.attributes.position)&&(t.copyVector3sArray(e.vertices),t.needsUpdate=!0),e.verticesNeedUpdate=!1),!0===e.normalsNeedUpdate&&(void 0!==(t=this.attributes.normal)&&(t.copyVector3sArray(e.normals),t.needsUpdate=!0),e.normalsNeedUpdate=!1),!0===e.colorsNeedUpdate&&(void 0!==(t=this.attributes.color)&&(t.copyColorsArray(e.colors),t.needsUpdate=!0),e.colorsNeedUpdate=!1),e.uvsNeedUpdate&&(void 0!==(t=this.attributes.uv)&&(t.copyVector2sArray(e.uvs),t.needsUpdate=!0),e.uvsNeedUpdate=!1),e.lineDistancesNeedUpdate&&(void 0!==(t=this.attributes.lineDistance)&&(t.copyArray(e.lineDistances),t.needsUpdate=!0),e.lineDistancesNeedUpdate=!1),e.groupsNeedUpdate&&(e.computeGroups(n.geometry),this.groups=e.groups,e.groupsNeedUpdate=!1),this},fromGeometry:function(n){return n.__directGeometry=(new Le).fromGeometry(n),this.fromDirectGeometry(n.__directGeometry)},fromDirectGeometry:function(n){var t=new Float32Array(3*n.vertices.length);if(this.addAttribute("position",new ye(t,3).copyVector3sArray(n.vertices)),n.normals.length>0){var e=new Float32Array(3*n.normals.length);this.addAttribute("normal",new ye(e,3).copyVector3sArray(n.normals))}if(n.colors.length>0){var r=new Float32Array(3*n.colors.length);this.addAttribute("color",new ye(r,3).copyColorsArray(n.colors))}if(n.uvs.length>0){var i=new Float32Array(2*n.uvs.length);this.addAttribute("uv",new ye(i,2).copyVector2sArray(n.uvs))}if(n.uvs2.length>0){var o=new Float32Array(2*n.uvs2.length);this.addAttribute("uv2",new ye(o,2).copyVector2sArray(n.uvs2))}for(var a in this.groups=n.groups,n.morphTargets){for(var l=[],s=n.morphTargets[a],c=0,u=s.length;c<u;c++){var h=s[c],v=new Te(3*h.length,3);l.push(v.copyVector3sArray(h))}this.morphAttributes[a]=l}if(n.skinIndices.length>0){var d=new Te(4*n.skinIndices.length,4);this.addAttribute("skinIndex",d.copyVector4sArray(n.skinIndices))}if(n.skinWeights.length>0){var f=new Te(4*n.skinWeights.length,4);this.addAttribute("skinWeight",f.copyVector4sArray(n.skinWeights))}return null!==n.boundingSphere&&(this.boundingSphere=n.boundingSphere.clone()),null!==n.boundingBox&&(this.boundingBox=n.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Kt);var n=this.attributes.position;void 0!==n?this.boundingBox.setFromBufferAttribute(n):this.boundingBox.makeEmpty(),(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)},computeBoundingSphere:function(){var n=new Kt,t=new jt;return function(){null===this.boundingSphere&&(this.boundingSphere=new Qt);var e=this.attributes.position;if(e){var r=this.boundingSphere.center;n.setFromBufferAttribute(e),n.getCenter(r);for(var i=0,o=0,a=e.count;o<a;o++)t.x=e.getX(o),t.y=e.getY(o),t.z=e.getZ(o),i=Math.max(i,r.distanceToSquared(t));this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var n=this.index,t=this.attributes,e=this.groups;if(t.position){var r=t.position.array;if(void 0===t.normal)this.addAttribute("normal",new ye(new Float32Array(r.length),3));else for(var i=t.normal.array,o=0,a=i.length;o<a;o++)i[o]=0;var l,s,c,u=t.normal.array,h=new jt,v=new jt,d=new jt,f=new jt,p=new jt;if(n){var m=n.array;0===e.length&&this.addGroup(0,m.length);for(var g=0,y=e.length;g<y;++g){var x=e[g],b=x.start;for(o=b,a=b+x.count;o<a;o+=3)l=3*m[o+0],s=3*m[o+1],c=3*m[o+2],h.fromArray(r,l),v.fromArray(r,s),d.fromArray(r,c),f.subVectors(d,v),p.subVectors(h,v),f.cross(p),u[l]+=f.x,u[l+1]+=f.y,u[l+2]+=f.z,u[s]+=f.x,u[s+1]+=f.y,u[s+2]+=f.z,u[c]+=f.x,u[c+1]+=f.y,u[c+2]+=f.z}}else for(o=0,a=r.length;o<a;o+=9)h.fromArray(r,o),v.fromArray(r,o+3),d.fromArray(r,o+6),f.subVectors(d,v),p.subVectors(h,v),f.cross(p),u[o]=f.x,u[o+1]=f.y,u[o+2]=f.z,u[o+3]=f.x,u[o+4]=f.y,u[o+5]=f.z,u[o+6]=f.x,u[o+7]=f.y,u[o+8]=f.z;this.normalizeNormals(),t.normal.needsUpdate=!0}},merge:function(n,t){if(n&&n.isBufferGeometry){void 0===t&&(t=0,console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));var e=this.attributes;for(var r in e)if(void 0!==n.attributes[r])for(var i=e[r].array,o=n.attributes[r],a=o.array,l=0,s=o.itemSize*t;l<a.length;l++,s++)i[s]=a[l];return this}console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",n)},normalizeNormals:function(){var n=new jt;return function(){for(var t=this.attributes.normal,e=0,r=t.count;e<r;e++)n.x=t.getX(e),n.y=t.getY(e),n.z=t.getZ(e),n.normalize(),t.setXYZ(e,n.x,n.y,n.z)}}(),toNonIndexed:function(){if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."),this;var n=new Re,t=this.index.array,e=this.attributes;for(var r in e){for(var i=e[r],o=i.array,a=i.itemSize,l=new o.constructor(t.length*a),s=0,c=0,u=0,h=t.length;u<h;u++){s=t[u]*a;for(var v=0;v<a;v++)l[c++]=o[s++]}n.addAttribute(r,new ye(l,a))}var d=this.groups;for(u=0,h=d.length;u<h;u++){var f=d[u];n.addGroup(f.start,f.count,f.materialIndex)}return n},toJSON:function(){var n={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),Object.keys(this.userData).length>0&&(n.userData=this.userData),void 0!==this.parameters){var t=this.parameters;for(var e in t)void 0!==t[e]&&(n[e]=t[e]);return n}n.data={attributes:{}};var r=this.index;if(null!==r){var i=Array.prototype.slice.call(r.array);n.data.index={type:r.array.constructor.name,array:i}}var o=this.attributes;for(var e in o){var a=o[e];i=Array.prototype.slice.call(a.array);n.data.attributes[e]={itemSize:a.itemSize,type:a.array.constructor.name,array:i,normalized:a.normalized}}var l=this.groups;l.length>0&&(n.data.groups=JSON.parse(JSON.stringify(l)));var s=this.boundingSphere;return null!==s&&(n.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),n},clone:function(){return(new Re).copy(this)},copy:function(n){var t,e,r;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=n.name;var i=n.index;null!==i&&this.setIndex(i.clone());var o=n.attributes;for(t in o){var a=o[t];this.addAttribute(t,a.clone())}var l=n.morphAttributes;for(t in l){var s=[],c=l[t];for(e=0,r=c.length;e<r;e++)s.push(c[e].clone());this.morphAttributes[t]=s}var u=n.groups;for(e=0,r=u.length;e<r;e++){var h=u[e];this.addGroup(h.start,h.count,h.materialIndex)}var v=n.boundingBox;null!==v&&(this.boundingBox=v.clone());var d=n.boundingSphere;return null!==d&&(this.boundingSphere=d.clone()),this.drawRange.start=n.drawRange.start,this.drawRange.count=n.drawRange.count,this.userData=n.userData,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Oe.prototype=Object.create(ge.prototype),Oe.prototype.constructor=Oe,De.prototype=Object.create(Re.prototype),De.prototype.constructor=De,Ue.prototype=Object.create(ge.prototype),Ue.prototype.constructor=Ue,Ne.prototype=Object.create(Re.prototype),Ne.prototype.constructor=Ne;var Ie=0;function Be(){Object.defineProperty(this,"id",{value:Ie++}),this.uuid=Ft.generateUUID(),this.name="",this.type="Material",this.fog=!0,this.lights=!0,this.blending=E,this.side=p,this.flatShading=!1,this.vertexColors=b,this.opacity=1,this.transparent=!1,this.blendSrc=F,this.blendDst=z,this.blendEquation=P,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Y,this.depthTest=!0,this.depthWrite=!0,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaTest=0,this.premultipliedAlpha=!1,this.overdraw=0,this.visible=!0,this.userData={},this.needsUpdate=!0}function Fe(n){Be.call(this),this.type="MeshBasicMaterial",this.color=new ie(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=$,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.lights=!1,this.setValues(n)}function ze(n){Be.call(this),this.type="ShaderMaterial",this.defines={},this.uniforms={},this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,void 0!==n&&(void 0!==n.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(n))}function Ge(n,t){this.origin=void 0!==n?n:new jt,this.direction=void 0!==t?t:new jt}function ke(n,t,e){this.a=void 0!==n?n:new jt,this.b=void 0!==t?t:new jt,this.c=void 0!==e?e:new jt}function je(n,t){ve.call(this),this.type="Mesh",this.geometry=void 0!==n?n:new Re,this.material=void 0!==t?t:new Fe({color:16777215*Math.random()}),this.drawMode=_t,this.updateMorphTargets()}function He(n,t){return Math.abs(t[1])-Math.abs(n[1])}function Ve(n,t,e,r,i,o,a,l,s,c){n=void 0!==n?n:[],t=void 0!==t?t:cn,Xt.call(this,n,t,e,r,i,o,a,l,s,c),this.flipY=!1}Be.prototype=Object.assign(Object.create(r.prototype),{constructor:Be,isMaterial:!0,onBeforeCompile:function(){},setValues:function(n){if(void 0!==n)for(var t in n){var e=n[t];if(void 0!==e)if("shading"!==t){var r=this[t];void 0!==r?r&&r.isColor?r.set(e):r&&r.isVector3&&e&&e.isVector3?r.copy(e):this[t]="overdraw"===t?Number(e):e:console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.")}else console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=e===y;else console.warn("THREE.Material: '"+t+"' parameter is undefined.")}},toJSON:function(n){var t=void 0===n||"string"==typeof n;t&&(n={textures:{},images:{}});var e={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function r(n){var t=[];for(var e in n){var r=n[e];delete r.metadata,t.push(r)}return t}if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),this.color&&this.color.isColor&&(e.color=this.color.getHex()),void 0!==this.roughness&&(e.roughness=this.roughness),void 0!==this.metalness&&(e.metalness=this.metalness),this.emissive&&this.emissive.isColor&&(e.emissive=this.emissive.getHex()),1!==this.emissiveIntensity&&(e.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(e.specular=this.specular.getHex()),void 0!==this.shininess&&(e.shininess=this.shininess),void 0!==this.clearCoat&&(e.clearCoat=this.clearCoat),void 0!==this.clearCoatRoughness&&(e.clearCoatRoughness=this.clearCoatRoughness),this.map&&this.map.isTexture&&(e.map=this.map.toJSON(n).uuid),this.alphaMap&&this.alphaMap.isTexture&&(e.alphaMap=this.alphaMap.toJSON(n).uuid),this.lightMap&&this.lightMap.isTexture&&(e.lightMap=this.lightMap.toJSON(n).uuid),this.aoMap&&this.aoMap.isTexture&&(e.aoMap=this.aoMap.toJSON(n).uuid,e.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(e.bumpMap=this.bumpMap.toJSON(n).uuid,e.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(e.normalMap=this.normalMap.toJSON(n).uuid,e.normalMapType=this.normalMapType,e.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(e.displacementMap=this.displacementMap.toJSON(n).uuid,e.displacementScale=this.displacementScale,e.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(e.roughnessMap=this.roughnessMap.toJSON(n).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(e.metalnessMap=this.metalnessMap.toJSON(n).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(e.emissiveMap=this.emissiveMap.toJSON(n).uuid),this.specularMap&&this.specularMap.isTexture&&(e.specularMap=this.specularMap.toJSON(n).uuid),this.envMap&&this.envMap.isTexture&&(e.envMap=this.envMap.toJSON(n).uuid,e.reflectivity=this.reflectivity),this.gradientMap&&this.gradientMap.isTexture&&(e.gradientMap=this.gradientMap.toJSON(n).uuid),void 0!==this.size&&(e.size=this.size),void 0!==this.sizeAttenuation&&(e.sizeAttenuation=this.sizeAttenuation),this.blending!==E&&(e.blending=this.blending),!0===this.flatShading&&(e.flatShading=this.flatShading),this.side!==p&&(e.side=this.side),this.vertexColors!==b&&(e.vertexColors=this.vertexColors),this.opacity<1&&(e.opacity=this.opacity),!0===this.transparent&&(e.transparent=this.transparent),e.depthFunc=this.depthFunc,e.depthTest=this.depthTest,e.depthWrite=this.depthWrite,0!==this.rotation&&(e.rotation=this.rotation),1!==this.linewidth&&(e.linewidth=this.linewidth),void 0!==this.dashSize&&(e.dashSize=this.dashSize),void 0!==this.gapSize&&(e.gapSize=this.gapSize),void 0!==this.scale&&(e.scale=this.scale),!0===this.dithering&&(e.dithering=!0),this.alphaTest>0&&(e.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(e.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(e.wireframe=this.wireframe),this.wireframeLinewidth>1&&(e.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(e.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(e.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(e.morphTargets=!0),!0===this.skinning&&(e.skinning=!0),!1===this.visible&&(e.visible=!1),"{}"!==JSON.stringify(this.userData)&&(e.userData=this.userData),t){var i=r(n.textures),o=r(n.images);i.length>0&&(e.textures=i),o.length>0&&(e.images=o)}return e},clone:function(){return(new this.constructor).copy(this)},copy:function(n){this.name=n.name,this.fog=n.fog,this.lights=n.lights,this.blending=n.blending,this.side=n.side,this.flatShading=n.flatShading,this.vertexColors=n.vertexColors,this.opacity=n.opacity,this.transparent=n.transparent,this.blendSrc=n.blendSrc,this.blendDst=n.blendDst,this.blendEquation=n.blendEquation,this.blendSrcAlpha=n.blendSrcAlpha,this.blendDstAlpha=n.blendDstAlpha,this.blendEquationAlpha=n.blendEquationAlpha,this.depthFunc=n.depthFunc,this.depthTest=n.depthTest,this.depthWrite=n.depthWrite,this.colorWrite=n.colorWrite,this.precision=n.precision,this.polygonOffset=n.polygonOffset,this.polygonOffsetFactor=n.polygonOffsetFactor,this.polygonOffsetUnits=n.polygonOffsetUnits,this.dithering=n.dithering,this.alphaTest=n.alphaTest,this.premultipliedAlpha=n.premultipliedAlpha,this.overdraw=n.overdraw,this.visible=n.visible,this.userData=JSON.parse(JSON.stringify(n.userData)),this.clipShadows=n.clipShadows,this.clipIntersection=n.clipIntersection;var t=n.clippingPlanes,e=null;if(null!==t){var r=t.length;e=new Array(r);for(var i=0;i!==r;++i)e[i]=t[i].clone()}return this.clippingPlanes=e,this.shadowSide=n.shadowSide,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Fe.prototype=Object.create(Be.prototype),Fe.prototype.constructor=Fe,Fe.prototype.isMeshBasicMaterial=!0,Fe.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.color.copy(n.color),this.map=n.map,this.lightMap=n.lightMap,this.lightMapIntensity=n.lightMapIntensity,this.aoMap=n.aoMap,this.aoMapIntensity=n.aoMapIntensity,this.specularMap=n.specularMap,this.alphaMap=n.alphaMap,this.envMap=n.envMap,this.combine=n.combine,this.reflectivity=n.reflectivity,this.refractionRatio=n.refractionRatio,this.wireframe=n.wireframe,this.wireframeLinewidth=n.wireframeLinewidth,this.wireframeLinecap=n.wireframeLinecap,this.wireframeLinejoin=n.wireframeLinejoin,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this},ze.prototype=Object.create(Be.prototype),ze.prototype.constructor=ze,ze.prototype.isShaderMaterial=!0,ze.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.fragmentShader=n.fragmentShader,this.vertexShader=n.vertexShader,this.uniforms=ee.clone(n.uniforms),this.defines=Object.assign({},n.defines),this.wireframe=n.wireframe,this.wireframeLinewidth=n.wireframeLinewidth,this.lights=n.lights,this.clipping=n.clipping,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this.morphNormals=n.morphNormals,this.extensions=n.extensions,this},ze.prototype.toJSON=function(n){var t=Be.prototype.toJSON.call(this,n);return t.uniforms=this.uniforms,t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t},Object.assign(Ge.prototype,{set:function(n,t){return this.origin.copy(n),this.direction.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.origin.copy(n.origin),this.direction.copy(n.direction),this},at:function(n,t){return void 0===t&&(console.warn("THREE.Ray: .at() target is now required"),t=new jt),t.copy(this.direction).multiplyScalar(n).add(this.origin)},lookAt:function(n){return this.direction.copy(n).sub(this.origin).normalize(),this},recast:function(){var n=new jt;return function(t){return this.origin.copy(this.at(t,n)),this}}(),closestPointToPoint:function(n,t){void 0===t&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new jt),t.subVectors(n,this.origin);var e=t.dot(this.direction);return e<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(e).add(this.origin)},distanceToPoint:function(n){return Math.sqrt(this.distanceSqToPoint(n))},distanceSqToPoint:function(){var n=new jt;return function(t){var e=n.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(n.copy(this.direction).multiplyScalar(e).add(this.origin),n.distanceToSquared(t))}}(),distanceSqToSegment:function(){var n=new jt,t=new jt,e=new jt;return function(r,i,o,a){n.copy(r).add(i).multiplyScalar(.5),t.copy(i).sub(r).normalize(),e.copy(this.origin).sub(n);var l,s,c,u,h=.5*r.distanceTo(i),v=-this.direction.dot(t),d=e.dot(this.direction),f=-e.dot(t),p=e.lengthSq(),m=Math.abs(1-v*v);if(m>0)if(s=v*d-f,u=h*m,(l=v*f-d)>=0)if(s>=-u)if(s<=u){var g=1/m;c=(l*=g)*(l+v*(s*=g)+2*d)+s*(v*l+s+2*f)+p}else s=h,c=-(l=Math.max(0,-(v*s+d)))*l+s*(s+2*f)+p;else s=-h,c=-(l=Math.max(0,-(v*s+d)))*l+s*(s+2*f)+p;else s<=-u?c=-(l=Math.max(0,-(-v*h+d)))*l+(s=l>0?-h:Math.min(Math.max(-h,-f),h))*(s+2*f)+p:s<=u?(l=0,c=(s=Math.min(Math.max(-h,-f),h))*(s+2*f)+p):c=-(l=Math.max(0,-(v*h+d)))*l+(s=l>0?h:Math.min(Math.max(-h,-f),h))*(s+2*f)+p;else s=v>0?-h:h,c=-(l=Math.max(0,-(v*s+d)))*l+s*(s+2*f)+p;return o&&o.copy(this.direction).multiplyScalar(l).add(this.origin),a&&a.copy(t).multiplyScalar(s).add(n),c}}(),intersectSphere:function(){var n=new jt;return function(t,e){n.subVectors(t.center,this.origin);var r=n.dot(this.direction),i=n.dot(n)-r*r,o=t.radius*t.radius;if(i>o)return null;var a=Math.sqrt(o-i),l=r-a,s=r+a;return l<0&&s<0?null:l<0?this.at(s,e):this.at(l,e)}}(),intersectsSphere:function(n){return this.distanceToPoint(n.center)<=n.radius},distanceToPlane:function(n){var t=n.normal.dot(this.direction);if(0===t)return 0===n.distanceToPoint(this.origin)?0:null;var e=-(this.origin.dot(n.normal)+n.constant)/t;return e>=0?e:null},intersectPlane:function(n,t){var e=this.distanceToPlane(n);return null===e?null:this.at(e,t)},intersectsPlane:function(n){var t=n.distanceToPoint(this.origin);return 0===t||n.normal.dot(this.direction)*t<0},intersectBox:function(n,t){var e,r,i,o,a,l,s=1/this.direction.x,c=1/this.direction.y,u=1/this.direction.z,h=this.origin;return s>=0?(e=(n.min.x-h.x)*s,r=(n.max.x-h.x)*s):(e=(n.max.x-h.x)*s,r=(n.min.x-h.x)*s),c>=0?(i=(n.min.y-h.y)*c,o=(n.max.y-h.y)*c):(i=(n.max.y-h.y)*c,o=(n.min.y-h.y)*c),e>o||i>r?null:((i>e||e!=e)&&(e=i),(o<r||r!=r)&&(r=o),u>=0?(a=(n.min.z-h.z)*u,l=(n.max.z-h.z)*u):(a=(n.max.z-h.z)*u,l=(n.min.z-h.z)*u),e>l||a>r?null:((a>e||e!=e)&&(e=a),(l<r||r!=r)&&(r=l),r<0?null:this.at(e>=0?e:r,t)))},intersectsBox:function(){var n=new jt;return function(t){return null!==this.intersectBox(t,n)}}(),intersectTriangle:function(){var n=new jt,t=new jt,e=new jt,r=new jt;return function(i,o,a,l,s){t.subVectors(o,i),e.subVectors(a,i),r.crossVectors(t,e);var c,u=this.direction.dot(r);if(u>0){if(l)return null;c=1}else{if(!(u<0))return null;c=-1,u=-u}n.subVectors(this.origin,i);var h=c*this.direction.dot(e.crossVectors(n,e));if(h<0)return null;var v=c*this.direction.dot(t.cross(n));if(v<0)return null;if(h+v>u)return null;var d=-c*n.dot(r);return d<0?null:this.at(d/u,s)}}(),applyMatrix4:function(n){return this.origin.applyMatrix4(n),this.direction.transformDirection(n),this},equals:function(n){return n.origin.equals(this.origin)&&n.direction.equals(this.direction)}}),Object.assign(ke,{getNormal:function(){var n=new jt;return function(t,e,r,i){void 0===i&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new jt),i.subVectors(r,e),n.subVectors(t,e),i.cross(n);var o=i.lengthSq();return o>0?i.multiplyScalar(1/Math.sqrt(o)):i.set(0,0,0)}}(),getBarycoord:function(){var n=new jt,t=new jt,e=new jt;return function(r,i,o,a,l){n.subVectors(a,i),t.subVectors(o,i),e.subVectors(r,i);var s=n.dot(n),c=n.dot(t),u=n.dot(e),h=t.dot(t),v=t.dot(e),d=s*h-c*c;if(void 0===l&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),l=new jt),0===d)return l.set(-2,-1,-1);var f=1/d,p=(h*u-c*v)*f,m=(s*v-c*u)*f;return l.set(1-p-m,m,p)}}(),containsPoint:function(){var n=new jt;return function(t,e,r,i){return ke.getBarycoord(t,e,r,i,n),n.x>=0&&n.y>=0&&n.x+n.y<=1}}()}),Object.assign(ke.prototype,{set:function(n,t,e){return this.a.copy(n),this.b.copy(t),this.c.copy(e),this},setFromPointsAndIndices:function(n,t,e,r){return this.a.copy(n[t]),this.b.copy(n[e]),this.c.copy(n[r]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.a.copy(n.a),this.b.copy(n.b),this.c.copy(n.c),this},getArea:function(){var n=new jt,t=new jt;return function(){return n.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*n.cross(t).length()}}(),getMidpoint:function(n){return void 0===n&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),n=new jt),n.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(n){return ke.getNormal(this.a,this.b,this.c,n)},getPlane:function(n){return void 0===n&&(console.warn("THREE.Triangle: .getPlane() target is now required"),n=new jt),n.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(n,t){return ke.getBarycoord(n,this.a,this.b,this.c,t)},containsPoint:function(n){return ke.containsPoint(n,this.a,this.b,this.c)},intersectsBox:function(n){return n.intersectsTriangle(this)},closestPointToPoint:function(){var n=new jt,t=new jt,e=new jt,r=new jt,i=new jt,o=new jt;return function(a,l){void 0===l&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),l=new jt);var s,c,u=this.a,h=this.b,v=this.c;n.subVectors(h,u),t.subVectors(v,u),r.subVectors(a,u);var d=n.dot(r),f=t.dot(r);if(d<=0&&f<=0)return l.copy(u);i.subVectors(a,h);var p=n.dot(i),m=t.dot(i);if(p>=0&&m<=p)return l.copy(h);var g=d*m-p*f;if(g<=0&&d>=0&&p<=0)return s=d/(d-p),l.copy(u).addScaledVector(n,s);o.subVectors(a,v);var y=n.dot(o),x=t.dot(o);if(x>=0&&y<=x)return l.copy(v);var b=y*f-d*x;if(b<=0&&f>=0&&x<=0)return c=f/(f-x),l.copy(u).addScaledVector(t,c);var w=p*x-y*m;if(w<=0&&m-p>=0&&y-x>=0)return e.subVectors(v,h),c=(m-p)/(m-p+(y-x)),l.copy(h).addScaledVector(e,c);var M=1/(w+b+g);return s=b*M,c=g*M,l.copy(u).addScaledVector(n,s).addScaledVector(t,c)}}(),equals:function(n){return n.a.equals(this.a)&&n.b.equals(this.b)&&n.c.equals(this.c)}}),je.prototype=Object.assign(Object.create(ve.prototype),{constructor:je,isMesh:!0,setDrawMode:function(n){this.drawMode=n},copy:function(n){return ve.prototype.copy.call(this,n),this.drawMode=n.drawMode,void 0!==n.morphTargetInfluences&&(this.morphTargetInfluences=n.morphTargetInfluences.slice()),void 0!==n.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},n.morphTargetDictionary)),this},updateMorphTargets:function(){var n,t,e,r=this.geometry;if(r.isBufferGeometry){var i=r.morphAttributes,o=Object.keys(i);if(o.length>0){var a=i[o[0]];if(void 0!==a)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},n=0,t=a.length;n<t;n++)e=a[n].name||String(n),this.morphTargetInfluences.push(0),this.morphTargetDictionary[e]=n}}else{var l=r.morphTargets;if(void 0!==l&&l.length>0)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},n=0,t=l.length;n<t;n++)e=l[n].name||String(n),this.morphTargetInfluences.push(0),this.morphTargetDictionary[e]=n}},raycast:function(){var n=new Gt,t=new Ge,e=new Qt,r=new jt,i=new jt,o=new jt,a=new jt,l=new jt,s=new jt,c=new zt,u=new zt,h=new zt,v=new jt,d=new jt,f=new jt;function p(n,t,e,r,i,o,a){return ke.getBarycoord(n,t,e,r,v),i.multiplyScalar(v.x),o.multiplyScalar(v.y),a.multiplyScalar(v.z),i.add(o).add(a),i.clone()}function y(n,t,e,r,i,o,a,l){if(null===(t.side===m?r.intersectTriangle(a,o,i,!0,l):r.intersectTriangle(i,o,a,t.side!==g,l)))return null;f.copy(l),f.applyMatrix4(n.matrixWorld);var s=e.ray.origin.distanceTo(f);return s<e.near||s>e.far?null:{distance:s,point:f.clone(),object:n}}function x(n,t,e,a,l,s,v,f,m){r.fromBufferAttribute(l,v),i.fromBufferAttribute(l,f),o.fromBufferAttribute(l,m);var g=y(n,t,e,a,r,i,o,d);if(g){s&&(c.fromBufferAttribute(s,v),u.fromBufferAttribute(s,f),h.fromBufferAttribute(s,m),g.uv=p(d,r,i,o,c,u,h));var x=new pe(v,f,m);ke.getNormal(r,i,o,x.normal),g.face=x}return g}return function(v,f){var m,g=this.geometry,b=this.material,w=this.matrixWorld;if(void 0!==b&&(null===g.boundingSphere&&g.computeBoundingSphere(),e.copy(g.boundingSphere),e.applyMatrix4(w),!1!==v.ray.intersectsSphere(e)&&(n.getInverse(w),t.copy(v.ray).applyMatrix4(n),null===g.boundingBox||!1!==t.intersectsBox(g.boundingBox))))if(g.isBufferGeometry){var M,_,E,S,T,A,L,P,C,R=g.index,O=g.attributes.position,D=g.attributes.uv,U=g.groups,N=g.drawRange;if(null!==R)if(Array.isArray(b))for(S=0,A=U.length;S<A;S++)for(C=b[(P=U[S]).materialIndex],T=Math.max(P.start,N.start),L=Math.min(P.start+P.count,N.start+N.count);T<L;T+=3)M=R.getX(T),_=R.getX(T+1),E=R.getX(T+2),(m=x(this,C,v,t,O,D,M,_,E))&&(m.faceIndex=Math.floor(T/3),f.push(m));else for(S=Math.max(0,N.start),A=Math.min(R.count,N.start+N.count);S<A;S+=3)M=R.getX(S),_=R.getX(S+1),E=R.getX(S+2),(m=x(this,b,v,t,O,D,M,_,E))&&(m.faceIndex=Math.floor(S/3),f.push(m));else if(void 0!==O)if(Array.isArray(b))for(S=0,A=U.length;S<A;S++)for(C=b[(P=U[S]).materialIndex],T=Math.max(P.start,N.start),L=Math.min(P.start+P.count,N.start+N.count);T<L;T+=3)(m=x(this,C,v,t,O,D,M=T,_=T+1,E=T+2))&&(m.faceIndex=Math.floor(T/3),f.push(m));else for(S=Math.max(0,N.start),A=Math.min(O.count,N.start+N.count);S<A;S+=3)(m=x(this,b,v,t,O,D,M=S,_=S+1,E=S+2))&&(m.faceIndex=Math.floor(S/3),f.push(m))}else if(g.isGeometry){var I,B,F,z,G=Array.isArray(b),k=g.vertices,j=g.faces,H=g.faceVertexUvs[0];H.length>0&&(z=H);for(var V=0,W=j.length;V<W;V++){var X=j[V],q=G?b[X.materialIndex]:b;if(void 0!==q){if(I=k[X.a],B=k[X.b],F=k[X.c],!0===q.morphTargets){var Y=g.morphTargets,Z=this.morphTargetInfluences;r.set(0,0,0),i.set(0,0,0),o.set(0,0,0);for(var J=0,K=Y.length;J<K;J++){var Q=Z[J];if(0!==Q){var $=Y[J].vertices;r.addScaledVector(a.subVectors($[X.a],I),Q),i.addScaledVector(l.subVectors($[X.b],B),Q),o.addScaledVector(s.subVectors($[X.c],F),Q)}}r.add(I),i.add(B),o.add(F),I=r,B=i,F=o}if(m=y(this,q,v,t,I,B,F,d)){if(z&&z[V]){var nn=z[V];c.copy(nn[0]),u.copy(nn[1]),h.copy(nn[2]),m.uv=p(d,I,B,F,c,u,h)}m.face=X,m.faceIndex=V,f.push(m)}}}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Ve.prototype=Object.create(Xt.prototype),Ve.prototype.constructor=Ve,Ve.prototype.isCubeTexture=!0,Object.defineProperty(Ve.prototype,"images",{get:function(){return this.image},set:function(n){this.image=n}});var We=new Xt,Xe=new Ve;function qe(){this.seq=[],this.map={}}var Ye=[],Ze=[],Je=new Float32Array(16),Ke=new Float32Array(9),Qe=new Float32Array(4);function $e(n,t,e){var r=n[0];if(r<=0||r>0)return n;var i=t*e,o=Ye[i];if(void 0===o&&(o=new Float32Array(i),Ye[i]=o),0!==t){r.toArray(o,0);for(var a=1,l=0;a!==t;++a)l+=e,n[a].toArray(o,l)}return o}function nr(n,t){if(n.length!==t.length)return!1;for(var e=0,r=n.length;e<r;e++)if(n[e]!==t[e])return!1;return!0}function tr(n,t){for(var e=0,r=t.length;e<r;e++)n[e]=t[e]}function er(n,t){var e=Ze[t];void 0===e&&(e=new Int32Array(t),Ze[t]=e);for(var r=0;r!==t;++r)e[r]=n.allocTextureUnit();return e}function rr(n,t){var e=this.cache;e[0]!==t&&(n.uniform1f(this.addr,t),e[0]=t)}function ir(n,t){var e=this.cache;e[0]!==t&&(n.uniform1i(this.addr,t),e[0]=t)}function or(n,t){var e=this.cache;if(void 0!==t.x)e[0]===t.x&&e[1]===t.y||(n.uniform2f(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(nr(e,t))return;n.uniform2fv(this.addr,t),tr(e,t)}}function ar(n,t){var e=this.cache;if(void 0!==t.x)e[0]===t.x&&e[1]===t.y&&e[2]===t.z||(n.uniform3f(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else if(void 0!==t.r)e[0]===t.r&&e[1]===t.g&&e[2]===t.b||(n.uniform3f(this.addr,t.r,t.g,t.b),e[0]=t.r,e[1]=t.g,e[2]=t.b);else{if(nr(e,t))return;n.uniform3fv(this.addr,t),tr(e,t)}}function lr(n,t){var e=this.cache;if(void 0!==t.x)e[0]===t.x&&e[1]===t.y&&e[2]===t.z&&e[3]===t.w||(n.uniform4f(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(nr(e,t))return;n.uniform4fv(this.addr,t),tr(e,t)}}function sr(n,t){var e=this.cache,r=t.elements;if(void 0===r){if(nr(e,t))return;n.uniformMatrix2fv(this.addr,!1,t),tr(e,t)}else{if(nr(e,r))return;Qe.set(r),n.uniformMatrix2fv(this.addr,!1,Qe),tr(e,r)}}function cr(n,t){var e=this.cache,r=t.elements;if(void 0===r){if(nr(e,t))return;n.uniformMatrix3fv(this.addr,!1,t),tr(e,t)}else{if(nr(e,r))return;Ke.set(r),n.uniformMatrix3fv(this.addr,!1,Ke),tr(e,r)}}function ur(n,t){var e=this.cache,r=t.elements;if(void 0===r){if(nr(e,t))return;n.uniformMatrix4fv(this.addr,!1,t),tr(e,t)}else{if(nr(e,r))return;Je.set(r),n.uniformMatrix4fv(this.addr,!1,Je),tr(e,r)}}function hr(n,t,e){var r=this.cache,i=e.allocTextureUnit();r[0]!==i&&(n.uniform1i(this.addr,i),r[0]=i),e.setTexture2D(t||We,i)}function vr(n,t,e){var r=this.cache,i=e.allocTextureUnit();r[0]!==i&&(n.uniform1i(this.addr,i),r[0]=i),e.setTextureCube(t||Xe,i)}function dr(n,t){var e=this.cache;nr(e,t)||(n.uniform2iv(this.addr,t),tr(e,t))}function fr(n,t){var e=this.cache;nr(e,t)||(n.uniform3iv(this.addr,t),tr(e,t))}function pr(n,t){var e=this.cache;nr(e,t)||(n.uniform4iv(this.addr,t),tr(e,t))}function mr(n,t){var e=this.cache;nr(e,t)||(n.uniform1fv(this.addr,t),tr(e,t))}function gr(n,t){var e=this.cache;nr(e,t)||(n.uniform1iv(this.addr,t),tr(e,t))}function yr(n,t){var e=this.cache,r=$e(t,this.size,2);nr(e,r)||(n.uniform2fv(this.addr,r),this.updateCache(r))}function xr(n,t){var e=this.cache,r=$e(t,this.size,3);nr(e,r)||(n.uniform3fv(this.addr,r),this.updateCache(r))}function br(n,t){var e=this.cache,r=$e(t,this.size,4);nr(e,r)||(n.uniform4fv(this.addr,r),this.updateCache(r))}function wr(n,t){var e=this.cache,r=$e(t,this.size,4);nr(e,r)||(n.uniformMatrix2fv(this.addr,!1,r),this.updateCache(r))}function Mr(n,t){var e=this.cache,r=$e(t,this.size,9);nr(e,r)||(n.uniformMatrix3fv(this.addr,!1,r),this.updateCache(r))}function _r(n,t){var e=this.cache,r=$e(t,this.size,16);nr(e,r)||(n.uniformMatrix4fv(this.addr,!1,r),this.updateCache(r))}function Er(n,t,e){var r=this.cache,i=t.length,o=er(e,i);!1===nr(r,o)&&(n.uniform1iv(this.addr,o),tr(r,o));for(var a=0;a!==i;++a)e.setTexture2D(t[a]||We,o[a])}function Sr(n,t,e){var r=this.cache,i=t.length,o=er(e,i);!1===nr(r,o)&&(n.uniform1iv(this.addr,o),tr(r,o));for(var a=0;a!==i;++a)e.setTextureCube(t[a]||Xe,o[a])}function Tr(n,t,e){this.id=n,this.addr=e,this.cache=[],this.setValue=function(n){switch(n){case 5126:return rr;case 35664:return or;case 35665:return ar;case 35666:return lr;case 35674:return sr;case 35675:return cr;case 35676:return ur;case 35678:case 36198:return hr;case 35680:return vr;case 5124:case 35670:return ir;case 35667:case 35671:return dr;case 35668:case 35672:return fr;case 35669:case 35673:return pr}}(t.type)}function Ar(n,t,e){this.id=n,this.addr=e,this.cache=[],this.size=t.size,this.setValue=function(n){switch(n){case 5126:return mr;case 35664:return yr;case 35665:return xr;case 35666:return br;case 35674:return wr;case 35675:return Mr;case 35676:return _r;case 35678:return Er;case 35680:return Sr;case 5124:case 35670:return gr;case 35667:case 35671:return dr;case 35668:case 35672:return fr;case 35669:case 35673:return pr}}(t.type)}function Lr(n){this.id=n,qe.call(this)}Ar.prototype.updateCache=function(n){var t=this.cache;n instanceof Float32Array&&t.length!==n.length&&(this.cache=new Float32Array(n.length)),tr(t,n)},Lr.prototype.setValue=function(n,t,e){for(var r=this.seq,i=0,o=r.length;i!==o;++i){var a=r[i];a.setValue(n,t[a.id],e)}};var Pr=/([\w\d_]+)(\])?(\[|\.)?/g;function Cr(n,t){n.seq.push(t),n.map[t.id]=t}function Rr(n,t,e){var r=n.name,i=r.length;for(Pr.lastIndex=0;;){var o=Pr.exec(r),a=Pr.lastIndex,l=o[1],s="]"===o[2],c=o[3];if(s&&(l|=0),void 0===c||"["===c&&a+2===i){Cr(e,void 0===c?new Tr(l,n,t):new Ar(l,n,t));break}var u=e.map[l];void 0===u&&Cr(e,u=new Lr(l)),e=u}}function Or(n,t,e){qe.call(this),this.renderer=e;for(var r=n.getProgramParameter(t,n.ACTIVE_UNIFORMS),i=0;i<r;++i){var o=n.getActiveUniform(t,i);Rr(o,n.getUniformLocation(t,o.name),this)}}function Dr(n,t,e){var r=n.createShader(t);return n.shaderSource(r,e),n.compileShader(r),!1===n.getShaderParameter(r,n.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile."),""!==n.getShaderInfoLog(r)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",t===n.VERTEX_SHADER?"vertex":"fragment",n.getShaderInfoLog(r),function(n){for(var t=n.split("\n"),e=0;e<t.length;e++)t[e]=e+1+": "+t[e];return t.join("\n")}(e)),r}Or.prototype.setValue=function(n,t,e){var r=this.map[t];void 0!==r&&r.setValue(n,e,this.renderer)},Or.prototype.setOptional=function(n,t,e){var r=t[e];void 0!==r&&this.setValue(n,e,r)},Or.upload=function(n,t,e,r){for(var i=0,o=t.length;i!==o;++i){var a=t[i],l=e[a.id];!1!==l.needsUpdate&&a.setValue(n,l.value,r)}},Or.seqWithValue=function(n,t){for(var e=[],r=0,i=n.length;r!==i;++r){var o=n[r];o.id in t&&e.push(o)}return e};var Ur=0;function Nr(n){switch(n){case Tt:return["Linear","( value )"];case At:return["sRGB","( value )"];case Pt:return["RGBE","( value )"];case Rt:return["RGBM","( value, 7.0 )"];case Ot:return["RGBM","( value, 16.0 )"];case Dt:return["RGBD","( value, 256.0 )"];case Lt:return["Gamma","( value, float( GAMMA_FACTOR ) )"];default:throw new Error("unsupported encoding: "+n)}}function Ir(n,t){var e=Nr(t);return"vec4 "+n+"( vec4 value ) { return "+e[0]+"ToLinear"+e[1]+"; }"}function Br(n){return""!==n}function Fr(n,t){return n.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights)}function zr(n,t){return n.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}function Gr(n){return n.replace(/^[ \t]*#include +<([\w\d./]+)>/gm,function(n,t){var e=te[t];if(void 0===e)throw new Error("Can not resolve #include <"+t+">");return Gr(e)})}function kr(n){return n.replace(/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(n,t,e,r){for(var i="",o=parseInt(t);o<parseInt(e);o++)i+=r.replace(/\[ i \]/g,"[ "+o+" ]");return i})}function jr(n,t,e,r,i,o,a){var l=n.context,s=r.defines,c=i.vertexShader,u=i.fragmentShader,h="SHADOWMAP_TYPE_BASIC";o.shadowMapType===d?h="SHADOWMAP_TYPE_PCF":o.shadowMapType===f&&(h="SHADOWMAP_TYPE_PCF_SOFT");var v="ENVMAP_TYPE_CUBE",p="ENVMAP_MODE_REFLECTION",m="ENVMAP_BLENDING_MULTIPLY";if(o.envMap){switch(r.envMap.mapping){case cn:case un:v="ENVMAP_TYPE_CUBE";break;case fn:case pn:v="ENVMAP_TYPE_CUBE_UV";break;case hn:case vn:v="ENVMAP_TYPE_EQUIREC";break;case dn:v="ENVMAP_TYPE_SPHERE"}switch(r.envMap.mapping){case un:case vn:p="ENVMAP_MODE_REFRACTION"}switch(r.combine){case $:m="ENVMAP_BLENDING_MULTIPLY";break;case nn:m="ENVMAP_BLENDING_MIX";break;case tn:m="ENVMAP_BLENDING_ADD"}}var g,y,x=n.gammaFactor>0?n.gammaFactor:1,b=a.isWebGL2?"":function(n,t,e){return[(n=n||{}).derivatives||t.envMapCubeUV||t.bumpMap||t.normalMap&&!t.objectSpaceNormalMap||t.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(n.fragDepth||t.logarithmicDepthBuffer)&&e.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",n.drawBuffers&&e.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(n.shaderTextureLOD||t.envMap)&&e.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Br).join("\n")}(r.extensions,o,t),w=function(n){var t=[];for(var e in n){var r=n[e];!1!==r&&t.push("#define "+e+" "+r)}return t.join("\n")}(s),M=l.createProgram();if(r.isRawShaderMaterial?((g=[w].filter(Br).join("\n")).length>0&&(g+="\n"),(y=[b,w].filter(Br).join("\n")).length>0&&(y+="\n")):(g=["precision "+o.precision+" float;","precision "+o.precision+" int;","#define SHADER_NAME "+i.name,w,o.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+x,"#define MAX_BONES "+o.maxBones,o.useFog&&o.fog?"#define USE_FOG":"",o.useFog&&o.fogExp?"#define FOG_EXP2":"",o.map?"#define USE_MAP":"",o.envMap?"#define USE_ENVMAP":"",o.envMap?"#define "+p:"",o.lightMap?"#define USE_LIGHTMAP":"",o.aoMap?"#define USE_AOMAP":"",o.emissiveMap?"#define USE_EMISSIVEMAP":"",o.bumpMap?"#define USE_BUMPMAP":"",o.normalMap?"#define USE_NORMALMAP":"",o.normalMap&&o.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",o.displacementMap&&o.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",o.specularMap?"#define USE_SPECULARMAP":"",o.roughnessMap?"#define USE_ROUGHNESSMAP":"",o.metalnessMap?"#define USE_METALNESSMAP":"",o.alphaMap?"#define USE_ALPHAMAP":"",o.vertexColors?"#define USE_COLOR":"",o.flatShading?"#define FLAT_SHADED":"",o.skinning?"#define USE_SKINNING":"",o.useVertexTexture?"#define BONE_TEXTURE":"",o.morphTargets?"#define USE_MORPHTARGETS":"",o.morphNormals&&!1===o.flatShading?"#define USE_MORPHNORMALS":"",o.doubleSided?"#define DOUBLE_SIDED":"",o.flipSided?"#define FLIP_SIDED":"",o.shadowMapEnabled?"#define USE_SHADOWMAP":"",o.shadowMapEnabled?"#define "+h:"",o.sizeAttenuation?"#define USE_SIZEATTENUATION":"",o.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",o.logarithmicDepthBuffer&&(a.isWebGL2||t.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Br).join("\n"),y=[b,"precision "+o.precision+" float;","precision "+o.precision+" int;","#define SHADER_NAME "+i.name,w,o.alphaTest?"#define ALPHATEST "+o.alphaTest+(o.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+x,o.useFog&&o.fog?"#define USE_FOG":"",o.useFog&&o.fogExp?"#define FOG_EXP2":"",o.map?"#define USE_MAP":"",o.envMap?"#define USE_ENVMAP":"",o.envMap?"#define "+v:"",o.envMap?"#define "+p:"",o.envMap?"#define "+m:"",o.lightMap?"#define USE_LIGHTMAP":"",o.aoMap?"#define USE_AOMAP":"",o.emissiveMap?"#define USE_EMISSIVEMAP":"",o.bumpMap?"#define USE_BUMPMAP":"",o.normalMap?"#define USE_NORMALMAP":"",o.normalMap&&o.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",o.specularMap?"#define USE_SPECULARMAP":"",o.roughnessMap?"#define USE_ROUGHNESSMAP":"",o.metalnessMap?"#define USE_METALNESSMAP":"",o.alphaMap?"#define USE_ALPHAMAP":"",o.vertexColors?"#define USE_COLOR":"",o.gradientMap?"#define USE_GRADIENTMAP":"",o.flatShading?"#define FLAT_SHADED":"",o.doubleSided?"#define DOUBLE_SIDED":"",o.flipSided?"#define FLIP_SIDED":"",o.shadowMapEnabled?"#define USE_SHADOWMAP":"",o.shadowMapEnabled?"#define "+h:"",o.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",o.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",o.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",o.logarithmicDepthBuffer&&(a.isWebGL2||t.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"",o.envMap&&(a.isWebGL2||t.get("EXT_shader_texture_lod"))?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",o.toneMapping!==en?"#define TONE_MAPPING":"",o.toneMapping!==en?te.tonemapping_pars_fragment:"",o.toneMapping!==en?function(n,t){var e;switch(t){case rn:e="Linear";break;case on:e="Reinhard";break;case an:e="Uncharted2";break;case ln:e="OptimizedCineon";break;default:throw new Error("unsupported toneMapping: "+t)}return"vec3 "+n+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}("toneMapping",o.toneMapping):"",o.dithering?"#define DITHERING":"",o.outputEncoding||o.mapEncoding||o.envMapEncoding||o.emissiveMapEncoding?te.encodings_pars_fragment:"",o.mapEncoding?Ir("mapTexelToLinear",o.mapEncoding):"",o.envMapEncoding?Ir("envMapTexelToLinear",o.envMapEncoding):"",o.emissiveMapEncoding?Ir("emissiveMapTexelToLinear",o.emissiveMapEncoding):"",o.outputEncoding?function(n,t){var e=Nr(t);return"vec4 "+n+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}("linearToOutputTexel",o.outputEncoding):"",o.depthPacking?"#define DEPTH_PACKING "+r.depthPacking:"","\n"].filter(Br).join("\n")),c=zr(c=Fr(c=Gr(c),o),o),u=zr(u=Fr(u=Gr(u),o),o),c=kr(c),u=kr(u),a.isWebGL2&&!r.isRawShaderMaterial){var _=!1,E=/^\s*#version\s+300\s+es\s*\n/;r.isShaderMaterial&&null!==c.match(E)&&null!==u.match(E)&&(_=!0,c=c.replace(E,""),u=u.replace(E,"")),g=["#version 300 es\n","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+g,y=["#version 300 es\n","#define varying in",_?"":"out highp vec4 pc_fragColor;",_?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+y}var S=g+c,T=y+u,A=Dr(l,l.VERTEX_SHADER,S),L=Dr(l,l.FRAGMENT_SHADER,T);l.attachShader(M,A),l.attachShader(M,L),void 0!==r.index0AttributeName?l.bindAttribLocation(M,0,r.index0AttributeName):!0===o.morphTargets&&l.bindAttribLocation(M,0,"position"),l.linkProgram(M);var P,C,R=l.getProgramInfoLog(M).trim(),O=l.getShaderInfoLog(A).trim(),D=l.getShaderInfoLog(L).trim(),U=!0,N=!0;return!1===l.getProgramParameter(M,l.LINK_STATUS)?(U=!1,console.error("THREE.WebGLProgram: shader error: ",l.getError(),"gl.VALIDATE_STATUS",l.getProgramParameter(M,l.VALIDATE_STATUS),"gl.getProgramInfoLog",R,O,D)):""!==R?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",R):""!==O&&""!==D||(N=!1),N&&(this.diagnostics={runnable:U,material:r,programLog:R,vertexShader:{log:O,prefix:g},fragmentShader:{log:D,prefix:y}}),l.deleteShader(A),l.deleteShader(L),this.getUniforms=function(){return void 0===P&&(P=new Or(l,M,n)),P},this.getAttributes=function(){return void 0===C&&(C=function(n,t){for(var e={},r=n.getProgramParameter(t,n.ACTIVE_ATTRIBUTES),i=0;i<r;i++){var o=n.getActiveAttrib(t,i).name;e[o]=n.getAttribLocation(t,o)}return e}(l,M)),C},this.destroy=function(){l.deleteProgram(M),this.program=void 0},Object.defineProperties(this,{uniforms:{get:function(){return console.warn("THREE.WebGLProgram: .uniforms is now .getUniforms()."),this.getUniforms()}},attributes:{get:function(){return console.warn("THREE.WebGLProgram: .attributes is now .getAttributes()."),this.getAttributes()}}}),this.name=i.name,this.id=Ur++,this.code=e,this.usedTimes=1,this.program=M,this.vertexShader=A,this.fragmentShader=L,this}function Hr(n,t,e){var r=[],i={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"phong",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},o=["precision","supportsVertexTextures","map","mapEncoding","envMap","envMapMode","envMapEncoding","lightMap","aoMap","emissiveMap","emissiveMapEncoding","bumpMap","normalMap","objectSpaceNormalMap","displacementMap","specularMap","roughnessMap","metalnessMap","gradientMap","alphaMap","combine","vertexColors","fog","useFog","fogExp","flatShading","sizeAttenuation","logarithmicDepthBuffer","skinning","maxBones","useVertexTexture","morphTargets","morphNormals","maxMorphTargets","maxMorphNormals","premultipliedAlpha","numDirLights","numPointLights","numSpotLights","numHemiLights","numRectAreaLights","shadowMapEnabled","shadowMapType","toneMapping","physicallyCorrectLights","alphaTest","doubleSided","flipSided","numClippingPlanes","numClipIntersection","depthPacking","dithering"];function a(n,t){var e;return n?n.isTexture?e=n.encoding:n.isWebGLRenderTarget&&(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),e=n.texture.encoding):e=Tt,e===Tt&&t&&(e=Lt),e}this.getParameters=function(t,r,o,l,s,c,u){var h=i[t.type],v=u.isSkinnedMesh?function(n){var t=n.skeleton.bones;if(e.floatVertexTextures)return 1024;var r=e.maxVertexUniforms,i=Math.floor((r-20)/4),o=Math.min(i,t.length);return o<t.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+t.length+" bones. This GPU supports "+o+"."),0):o}(u):0,d=e.precision;null!==t.precision&&(d=e.getMaxPrecision(t.precision))!==t.precision&&console.warn("THREE.WebGLProgram.getParameters:",t.precision,"not supported, using",d,"instead.");var f=n.getRenderTarget();return{shaderID:h,precision:d,supportsVertexTextures:e.vertexTextures,outputEncoding:a(f?f.texture:null,n.gammaOutput),map:!!t.map,mapEncoding:a(t.map,n.gammaInput),envMap:!!t.envMap,envMapMode:t.envMap&&t.envMap.mapping,envMapEncoding:a(t.envMap,n.gammaInput),envMapCubeUV:!!t.envMap&&(t.envMap.mapping===fn||t.envMap.mapping===pn),lightMap:!!t.lightMap,aoMap:!!t.aoMap,emissiveMap:!!t.emissiveMap,emissiveMapEncoding:a(t.emissiveMap,n.gammaInput),bumpMap:!!t.bumpMap,normalMap:!!t.normalMap,objectSpaceNormalMap:t.normalMapType===Bt,displacementMap:!!t.displacementMap,roughnessMap:!!t.roughnessMap,metalnessMap:!!t.metalnessMap,specularMap:!!t.specularMap,alphaMap:!!t.alphaMap,gradientMap:!!t.gradientMap,combine:t.combine,vertexColors:t.vertexColors,fog:!!l,useFog:t.fog,fogExp:l&&l.isFogExp2,flatShading:t.flatShading,sizeAttenuation:t.sizeAttenuation,logarithmicDepthBuffer:e.logarithmicDepthBuffer,skinning:t.skinning&&v>0,maxBones:v,useVertexTexture:e.floatVertexTextures,morphTargets:t.morphTargets,morphNormals:t.morphNormals,maxMorphTargets:n.maxMorphTargets,maxMorphNormals:n.maxMorphNormals,numDirLights:r.directional.length,numPointLights:r.point.length,numSpotLights:r.spot.length,numRectAreaLights:r.rectArea.length,numHemiLights:r.hemi.length,numClippingPlanes:s,numClipIntersection:c,dithering:t.dithering,shadowMapEnabled:n.shadowMap.enabled&&u.receiveShadow&&o.length>0,shadowMapType:n.shadowMap.type,toneMapping:n.toneMapping,physicallyCorrectLights:n.physicallyCorrectLights,premultipliedAlpha:t.premultipliedAlpha,alphaTest:t.alphaTest,doubleSided:t.side===g,flipSided:t.side===m,depthPacking:void 0!==t.depthPacking&&t.depthPacking}},this.getProgramCode=function(t,e){var r=[];if(e.shaderID?r.push(e.shaderID):(r.push(t.fragmentShader),r.push(t.vertexShader)),void 0!==t.defines)for(var i in t.defines)r.push(i),r.push(t.defines[i]);for(var a=0;a<o.length;a++)r.push(e[o[a]]);return r.push(t.onBeforeCompile.toString()),r.push(n.gammaOutput),r.join()},this.acquireProgram=function(i,o,a,l){for(var s,c=0,u=r.length;c<u;c++){var h=r[c];if(h.code===l){++(s=h).usedTimes;break}}return void 0===s&&(s=new jr(n,t,l,i,o,a,e),r.push(s)),s},this.releaseProgram=function(n){if(0==--n.usedTimes){var t=r.indexOf(n);r[t]=r[r.length-1],r.pop(),n.destroy()}},this.programs=r}function Vr(n,t){return n.renderOrder!==t.renderOrder?n.renderOrder-t.renderOrder:n.program&&t.program&&n.program!==t.program?n.program.id-t.program.id:n.material.id!==t.material.id?n.material.id-t.material.id:n.z!==t.z?n.z-t.z:n.id-t.id}function Wr(n,t){return n.renderOrder!==t.renderOrder?n.renderOrder-t.renderOrder:n.z!==t.z?t.z-n.z:n.id-t.id}function Xr(){var n={};return{get:function(t,e){var r=t.id+","+e.id,i=n[r];return void 0===i&&(i=new function(){var n=[],t=0,e=[],r=[];return{opaque:e,transparent:r,init:function(){t=0,e.length=0,r.length=0},push:function(i,o,a,l,s){var c=n[t];void 0===c?(c={id:i.id,object:i,geometry:o,material:a,program:a.program,renderOrder:i.renderOrder,z:l,group:s},n[t]=c):(c.id=i.id,c.object=i,c.geometry=o,c.material=a,c.program=a.program,c.renderOrder=i.renderOrder,c.z=l,c.group=s),(!0===a.transparent?r:e).push(c),t++},sort:function(){e.length>1&&e.sort(Vr),r.length>1&&r.sort(Wr)}}},n[r]=i),i},dispose:function(){n={}}}}var qr,Yr=0;function Zr(){var n=new function(){var n={};return{get:function(t){if(void 0!==n[t.id])return n[t.id];var e;switch(t.type){case"DirectionalLight":e={direction:new jt,color:new ie,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new zt};break;case"SpotLight":e={position:new jt,direction:new jt,color:new ie,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new zt};break;case"PointLight":e={position:new jt,color:new ie,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new zt,shadowCameraNear:1,shadowCameraFar:1e3};break;case"HemisphereLight":e={direction:new jt,skyColor:new ie,groundColor:new ie};break;case"RectAreaLight":e={color:new ie,position:new jt,halfWidth:new jt,halfHeight:new jt}}return n[t.id]=e,e}}},t={id:Yr++,hash:{stateID:-1,directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,shadowsLength:-1},ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]},e=new jt,r=new Gt,i=new Gt;return{setup:function(o,a,l){for(var s=0,c=0,u=0,h=0,v=0,d=0,f=0,p=0,m=l.matrixWorldInverse,g=0,y=o.length;g<y;g++){var x=o[g],b=x.color,w=x.intensity,M=x.distance,_=x.shadow&&x.shadow.map?x.shadow.map.texture:null;if(x.isAmbientLight)s+=b.r*w,c+=b.g*w,u+=b.b*w;else if(x.isDirectionalLight){if((S=n.get(x)).color.copy(x.color).multiplyScalar(x.intensity),S.direction.setFromMatrixPosition(x.matrixWorld),e.setFromMatrixPosition(x.target.matrixWorld),S.direction.sub(e),S.direction.transformDirection(m),S.shadow=x.castShadow,x.castShadow){var E=x.shadow;S.shadowBias=E.bias,S.shadowRadius=E.radius,S.shadowMapSize=E.mapSize}t.directionalShadowMap[h]=_,t.directionalShadowMatrix[h]=x.shadow.matrix,t.directional[h]=S,h++}else if(x.isSpotLight)(S=n.get(x)).position.setFromMatrixPosition(x.matrixWorld),S.position.applyMatrix4(m),S.color.copy(b).multiplyScalar(w),S.distance=M,S.direction.setFromMatrixPosition(x.matrixWorld),e.setFromMatrixPosition(x.target.matrixWorld),S.direction.sub(e),S.direction.transformDirection(m),S.coneCos=Math.cos(x.angle),S.penumbraCos=Math.cos(x.angle*(1-x.penumbra)),S.decay=0===x.distance?0:x.decay,S.shadow=x.castShadow,x.castShadow&&(E=x.shadow,S.shadowBias=E.bias,S.shadowRadius=E.radius,S.shadowMapSize=E.mapSize),t.spotShadowMap[d]=_,t.spotShadowMatrix[d]=x.shadow.matrix,t.spot[d]=S,d++;else if(x.isRectAreaLight)(S=n.get(x)).color.copy(b).multiplyScalar(w),S.position.setFromMatrixPosition(x.matrixWorld),S.position.applyMatrix4(m),i.identity(),r.copy(x.matrixWorld),r.premultiply(m),i.extractRotation(r),S.halfWidth.set(.5*x.width,0,0),S.halfHeight.set(0,.5*x.height,0),S.halfWidth.applyMatrix4(i),S.halfHeight.applyMatrix4(i),t.rectArea[f]=S,f++;else if(x.isPointLight)(S=n.get(x)).position.setFromMatrixPosition(x.matrixWorld),S.position.applyMatrix4(m),S.color.copy(x.color).multiplyScalar(x.intensity),S.distance=x.distance,S.decay=0===x.distance?0:x.decay,S.shadow=x.castShadow,x.castShadow&&(E=x.shadow,S.shadowBias=E.bias,S.shadowRadius=E.radius,S.shadowMapSize=E.mapSize,S.shadowCameraNear=E.camera.near,S.shadowCameraFar=E.camera.far),t.pointShadowMap[v]=_,t.pointShadowMatrix[v]=x.shadow.matrix,t.point[v]=S,v++;else if(x.isHemisphereLight){var S;(S=n.get(x)).direction.setFromMatrixPosition(x.matrixWorld),S.direction.transformDirection(m),S.direction.normalize(),S.skyColor.copy(x.color).multiplyScalar(w),S.groundColor.copy(x.groundColor).multiplyScalar(w),t.hemi[p]=S,p++}}t.ambient[0]=s,t.ambient[1]=c,t.ambient[2]=u,t.directional.length=h,t.spot.length=d,t.rectArea.length=f,t.point.length=v,t.hemi.length=p,t.hash.stateID=t.id,t.hash.directionalLength=h,t.hash.pointLength=v,t.hash.spotLength=d,t.hash.rectAreaLength=f,t.hash.hemiLength=p,t.hash.shadowsLength=a.length},state:t}}function Jr(){var n=new Zr,t=[],e=[];return{init:function(){t.length=0,e.length=0},state:{lightsArray:t,shadowsArray:e,lights:n},setupLights:function(r){n.setup(t,e,r)},pushLight:function(n){t.push(n)},pushShadow:function(n){e.push(n)}}}function Kr(n){Be.call(this),this.type="MeshDepthMaterial",this.depthPacking=Ut,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.setValues(n)}function Qr(n){Be.call(this),this.type="MeshDistanceMaterial",this.referencePosition=new jt,this.nearDistance=1,this.farDistance=1e3,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.lights=!1,this.setValues(n)}function $r(n,t,e){for(var r=new ne,i=new Gt,o=new zt,a=new zt(e,e),l=new jt,s=new jt,c=1,u=2,h=1+(c|u),v=new Array(h),f=new Array(h),y={},x={0:m,1:p,2:g},b=[new jt(1,0,0),new jt(-1,0,0),new jt(0,0,1),new jt(0,0,-1),new jt(0,1,0),new jt(0,-1,0)],w=[new jt(0,1,0),new jt(0,1,0),new jt(0,1,0),new jt(0,1,0),new jt(0,0,1),new jt(0,0,-1)],M=[new qt,new qt,new qt,new qt,new qt,new qt],_=0;_!==h;++_){var E=0!=(_&c),S=0!=(_&u),T=new Kr({depthPacking:Nt,morphTargets:E,skinning:S});v[_]=T;var A=new Qr({morphTargets:E,skinning:S});f[_]=A}var L=this;function P(t,e,r,i,o,a){var l=t.geometry,s=null,h=v,d=t.customDepthMaterial;if(r&&(h=f,d=t.customDistanceMaterial),d)s=d;else{var p=!1;e.morphTargets&&(l&&l.isBufferGeometry?p=l.morphAttributes&&l.morphAttributes.position&&l.morphAttributes.position.length>0:l&&l.isGeometry&&(p=l.morphTargets&&l.morphTargets.length>0)),t.isSkinnedMesh&&!1===e.skinning&&console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",t);var m=t.isSkinnedMesh&&e.skinning,g=0;p&&(g|=c),m&&(g|=u),s=h[g]}if(n.localClippingEnabled&&!0===e.clipShadows&&0!==e.clippingPlanes.length){var b=s.uuid,w=e.uuid,M=y[b];void 0===M&&(M={},y[b]=M);var _=M[w];void 0===_&&(_=s.clone(),M[w]=_),s=_}return s.visible=e.visible,s.wireframe=e.wireframe,s.side=null!=e.shadowSide?e.shadowSide:x[e.side],s.clipShadows=e.clipShadows,s.clippingPlanes=e.clippingPlanes,s.clipIntersection=e.clipIntersection,s.wireframeLinewidth=e.wireframeLinewidth,s.linewidth=e.linewidth,r&&s.isMeshDistanceMaterial&&(s.referencePosition.copy(i),s.nearDistance=o,s.farDistance=a),s}function C(e,i,o,a){if(!1!==e.visible){if(e.layers.test(i.layers)&&(e.isMesh||e.isLine||e.isPoints)&&e.castShadow&&(!e.frustumCulled||r.intersectsObject(e))){e.modelViewMatrix.multiplyMatrices(o.matrixWorldInverse,e.matrixWorld);var l=t.update(e),c=e.material;if(Array.isArray(c))for(var u=l.groups,h=0,v=u.length;h<v;h++){var d=u[h],f=c[d.materialIndex];if(f&&f.visible){var p=P(e,f,a,s,o.near,o.far);n.renderBufferDirect(o,null,l,p,e,d)}}else if(c.visible){p=P(e,c,a,s,o.near,o.far);n.renderBufferDirect(o,null,l,p,e,null)}}for(var m=e.children,g=0,y=m.length;g<y;g++)C(m[g],i,o,a)}}this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=d,this.render=function(t,e,c){if(!1!==L.enabled&&(!1!==L.autoUpdate||!1!==L.needsUpdate)&&0!==t.length){var u,h=n.context,v=n.state;v.disable(h.BLEND),v.buffers.color.setClear(1,1,1,1),v.buffers.depth.setTest(!0),v.setScissorTest(!1);for(var d=0,f=t.length;d<f;d++){var p=t[d],m=p.shadow,g=p&&p.isPointLight;if(void 0!==m){var y=m.camera;if(o.copy(m.mapSize),o.min(a),g){var x=o.x,_=o.y;M[0].set(2*x,_,x,_),M[1].set(0,_,x,_),M[2].set(3*x,_,x,_),M[3].set(x,_,x,_),M[4].set(3*x,0,x,_),M[5].set(x,0,x,_),o.x*=4,o.y*=2}if(null===m.map){var E={minFilter:xn,magFilter:xn,format:zn};m.map=new Yt(o.x,o.y,E),m.map.texture.name=p.name+".shadowMap",y.updateProjectionMatrix()}m.isSpotLightShadow&&m.update(p);var S=m.map,T=m.matrix;s.setFromMatrixPosition(p.matrixWorld),y.position.copy(s),g?(u=6,T.makeTranslation(-s.x,-s.y,-s.z)):(u=1,l.setFromMatrixPosition(p.target.matrixWorld),y.lookAt(l),y.updateMatrixWorld(),T.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),T.multiply(y.projectionMatrix),T.multiply(y.matrixWorldInverse)),n.setRenderTarget(S),n.clear();for(var A=0;A<u;A++){if(g){l.copy(y.position),l.add(b[A]),y.up.copy(w[A]),y.lookAt(l),y.updateMatrixWorld();var P=M[A];v.viewport(P)}i.multiplyMatrices(y.projectionMatrix,y.matrixWorldInverse),r.setFromMatrix(i),C(e,c,y,g)}}else console.warn("THREE.WebGLShadowMap:",p,"has no shadow.")}L.needsUpdate=!1}}}function ni(n,t,e,r,i,o,a){var l,s={};function c(n,t){if(n.width>t||n.height>t){if("data"in n)return void console.warn("THREE.WebGLRenderer: image in DataTexture is too big ("+n.width+"x"+n.height+").");var e=t/Math.max(n.width,n.height),r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");return r.width=Math.floor(n.width*e),r.height=Math.floor(n.height*e),r.getContext("2d").drawImage(n,0,0,n.width,n.height,0,0,r.width,r.height),console.warn("THREE.WebGLRenderer: image is too big ("+n.width+"x"+n.height+"). Resized to "+r.width+"x"+r.height),r}return n}function u(n){return Ft.isPowerOfTwo(n.width)&&Ft.isPowerOfTwo(n.height)}function h(n,t){return n.generateMipmaps&&t&&n.minFilter!==xn&&n.minFilter!==Mn}function v(t,e,i,o){n.generateMipmap(t),r.get(e).__maxMipLevel=Math.log(Math.max(i,o))*Math.LOG2E}function d(t,e){if(!i.isWebGL2)return t;if(t===n.RGB){if(e===n.FLOAT)return n.RGB32F;if(e===n.HALF_FLOAT)return n.RGB16F;if(e===n.UNSIGNED_BYTE)return n.RGB8}if(t===n.RGBA){if(e===n.FLOAT)return n.RGBA32F;if(e===n.HALF_FLOAT)return n.RGBA16F;if(e===n.UNSIGNED_BYTE)return n.RGBA8}return t}function f(t){return t===xn||t===bn||t===wn?n.NEAREST:n.LINEAR}function p(t){var e=t.target;e.removeEventListener("dispose",p),function(t){var e=r.get(t);if(t.image&&e.__image__webglTextureCube)n.deleteTexture(e.__image__webglTextureCube);else{if(void 0===e.__webglInit)return;n.deleteTexture(e.__webglTexture)}r.remove(t)}(e),e.isVideoTexture&&delete s[e.id],a.memory.textures--}function m(t){var e=t.target;e.removeEventListener("dispose",m),function(t){var e=r.get(t),i=r.get(t.texture);if(!t)return;void 0!==i.__webglTexture&&n.deleteTexture(i.__webglTexture);t.depthTexture&&t.depthTexture.dispose();if(t.isWebGLRenderTargetCube)for(var o=0;o<6;o++)n.deleteFramebuffer(e.__webglFramebuffer[o]),e.__webglDepthbuffer&&n.deleteRenderbuffer(e.__webglDepthbuffer[o]);else n.deleteFramebuffer(e.__webglFramebuffer),e.__webglDepthbuffer&&n.deleteRenderbuffer(e.__webglDepthbuffer);r.remove(t.texture),r.remove(t)}(e),a.memory.textures--}function g(t,f){var m=r.get(t);if(t.isVideoTexture&&function(n){var t=n.id,e=a.render.frame;s[t]!==e&&(s[t]=e,n.update())}(t),t.version>0&&m.__version!==t.version){var g=t.image;if(void 0===g)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==g.complete)return void function(t,r,s){void 0===t.__webglInit&&(t.__webglInit=!0,r.addEventListener("dispose",p),t.__webglTexture=n.createTexture(),a.memory.textures++);e.activeTexture(n.TEXTURE0+s),e.bindTexture(n.TEXTURE_2D,t.__webglTexture),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,r.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,r.unpackAlignment);var f=c(r.image,i.maxTextureSize);(function(n){return!i.isWebGL2&&(n.wrapS!==gn||n.wrapT!==gn||n.minFilter!==xn&&n.minFilter!==Mn)})(r)&&!1===u(f)&&(f=function(n){return n instanceof HTMLImageElement||n instanceof HTMLCanvasElement||n instanceof ImageBitmap?(void 0===l&&(l=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),l.width=Ft.floorPowerOfTwo(n.width),l.height=Ft.floorPowerOfTwo(n.height),l.getContext("2d").drawImage(n,0,0,l.width,l.height),console.warn("THREE.WebGLRenderer: image is not power of two ("+n.width+"x"+n.height+"). Resized to "+l.width+"x"+l.height),l):n}(f));var m=u(f),g=o.convert(r.format),x=o.convert(r.type),b=d(g,x);y(n.TEXTURE_2D,r,m);var w,M=r.mipmaps;if(r.isDepthTexture){if(b=n.DEPTH_COMPONENT,r.type===Rn){if(!i.isWebGL2)throw new Error("Float Depth Texture only supported in WebGL2.0");b=n.DEPTH_COMPONENT32F}else i.isWebGL2&&(b=n.DEPTH_COMPONENT16);r.format===Hn&&b===n.DEPTH_COMPONENT&&r.type!==Ln&&r.type!==Cn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=Ln,x=o.convert(r.type)),r.format===Vn&&(b=n.DEPTH_STENCIL,r.type!==In&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=In,x=o.convert(r.type))),e.texImage2D(n.TEXTURE_2D,0,b,f.width,f.height,0,g,x,null)}else if(r.isDataTexture)if(M.length>0&&m){for(var _=0,E=M.length;_<E;_++)w=M[_],e.texImage2D(n.TEXTURE_2D,_,b,w.width,w.height,0,g,x,w.data);r.generateMipmaps=!1,t.__maxMipLevel=M.length-1}else e.texImage2D(n.TEXTURE_2D,0,b,f.width,f.height,0,g,x,f.data),t.__maxMipLevel=0;else if(r.isCompressedTexture){for(var _=0,E=M.length;_<E;_++)w=M[_],r.format!==zn&&r.format!==Fn?e.getCompressedTextureFormats().indexOf(g)>-1?e.compressedTexImage2D(n.TEXTURE_2D,_,b,w.width,w.height,0,w.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):e.texImage2D(n.TEXTURE_2D,_,b,w.width,w.height,0,g,x,w.data);t.__maxMipLevel=M.length-1}else if(M.length>0&&m){for(var _=0,E=M.length;_<E;_++)w=M[_],e.texImage2D(n.TEXTURE_2D,_,b,g,x,w);r.generateMipmaps=!1,t.__maxMipLevel=M.length-1}else e.texImage2D(n.TEXTURE_2D,0,b,g,x,f),t.__maxMipLevel=0;h(r,m)&&v(n.TEXTURE_2D,r,f.width,f.height);t.__version=r.version,r.onUpdate&&r.onUpdate(r)}(m,t,f);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}e.activeTexture(n.TEXTURE0+f),e.bindTexture(n.TEXTURE_2D,m.__webglTexture)}function y(e,a,l){var s;if(l?(n.texParameteri(e,n.TEXTURE_WRAP_S,o.convert(a.wrapS)),n.texParameteri(e,n.TEXTURE_WRAP_T,o.convert(a.wrapT)),n.texParameteri(e,n.TEXTURE_MAG_FILTER,o.convert(a.magFilter)),n.texParameteri(e,n.TEXTURE_MIN_FILTER,o.convert(a.minFilter))):(n.texParameteri(e,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(e,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),a.wrapS===gn&&a.wrapT===gn||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),n.texParameteri(e,n.TEXTURE_MAG_FILTER,f(a.magFilter)),n.texParameteri(e,n.TEXTURE_MIN_FILTER,f(a.minFilter)),a.minFilter!==xn&&a.minFilter!==Mn&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),s=t.get("EXT_texture_filter_anisotropic")){if(a.type===Rn&&null===t.get("OES_texture_float_linear"))return;if(a.type===On&&null===(i.isWebGL2||t.get("OES_texture_half_float_linear")))return;(a.anisotropy>1||r.get(a).__currentAnisotropy)&&(n.texParameterf(e,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,i.getMaxAnisotropy())),r.get(a).__currentAnisotropy=a.anisotropy)}}function x(t,i,a,l){var s=o.convert(i.texture.format),c=o.convert(i.texture.type),u=d(s,c);e.texImage2D(l,0,u,i.width,i.height,0,s,c,null),n.bindFramebuffer(n.FRAMEBUFFER,t),n.framebufferTexture2D(n.FRAMEBUFFER,a,l,r.get(i.texture).__webglTexture,0),n.bindFramebuffer(n.FRAMEBUFFER,null)}function b(t,e){n.bindRenderbuffer(n.RENDERBUFFER,t),e.depthBuffer&&!e.stencilBuffer?(n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_COMPONENT16,e.width,e.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,t)):e.depthBuffer&&e.stencilBuffer?(n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,e.width,e.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,t)):n.renderbufferStorage(n.RENDERBUFFER,n.RGBA4,e.width,e.height),n.bindRenderbuffer(n.RENDERBUFFER,null)}function w(t){var e=r.get(t),i=!0===t.isWebGLRenderTargetCube;if(t.depthTexture){if(i)throw new Error("target.depthTexture not supported in Cube render targets");!function(t,e){if(e&&e.isWebGLRenderTargetCube)throw new Error("Depth Texture with cube render targets is not supported");if(n.bindFramebuffer(n.FRAMEBUFFER,t),!e.depthTexture||!e.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");r.get(e.depthTexture).__webglTexture&&e.depthTexture.image.width===e.width&&e.depthTexture.image.height===e.height||(e.depthTexture.image.width=e.width,e.depthTexture.image.height=e.height,e.depthTexture.needsUpdate=!0),g(e.depthTexture,0);var i=r.get(e.depthTexture).__webglTexture;if(e.depthTexture.format===Hn)n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,i,0);else{if(e.depthTexture.format!==Vn)throw new Error("Unknown depthTexture format");n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,i,0)}}(e.__webglFramebuffer,t)}else if(i){e.__webglDepthbuffer=[];for(var o=0;o<6;o++)n.bindFramebuffer(n.FRAMEBUFFER,e.__webglFramebuffer[o]),e.__webglDepthbuffer[o]=n.createRenderbuffer(),b(e.__webglDepthbuffer[o],t)}else n.bindFramebuffer(n.FRAMEBUFFER,e.__webglFramebuffer),e.__webglDepthbuffer=n.createRenderbuffer(),b(e.__webglDepthbuffer,t);n.bindFramebuffer(n.FRAMEBUFFER,null)}this.setTexture2D=g,this.setTextureCube=function(t,l){var s=r.get(t);if(6===t.image.length)if(t.version>0&&s.__version!==t.version){s.__image__webglTextureCube||(t.addEventListener("dispose",p),s.__image__webglTextureCube=n.createTexture(),a.memory.textures++),e.activeTexture(n.TEXTURE0+l),e.bindTexture(n.TEXTURE_CUBE_MAP,s.__image__webglTextureCube),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,t.flipY);for(var f=t&&t.isCompressedTexture,m=t.image[0]&&t.image[0].isDataTexture,g=[],x=0;x<6;x++)g[x]=f||m?m?t.image[x].image:t.image[x]:c(t.image[x],i.maxCubemapSize);var b=g[0],w=u(b),M=o.convert(t.format),_=o.convert(t.type),E=d(M,_);for(y(n.TEXTURE_CUBE_MAP,t,w),x=0;x<6;x++)if(f)for(var S,T=g[x].mipmaps,A=0,L=T.length;A<L;A++)S=T[A],t.format!==zn&&t.format!==Fn?e.getCompressedTextureFormats().indexOf(M)>-1?e.compressedTexImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+x,A,E,S.width,S.height,0,S.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+x,A,E,S.width,S.height,0,M,_,S.data);else m?e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+x,0,E,g[x].width,g[x].height,0,M,_,g[x].data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+x,0,E,M,_,g[x]);s.__maxMipLevel=f?T.length-1:0,h(t,w)&&v(n.TEXTURE_CUBE_MAP,t,b.width,b.height),s.__version=t.version,t.onUpdate&&t.onUpdate(t)}else e.activeTexture(n.TEXTURE0+l),e.bindTexture(n.TEXTURE_CUBE_MAP,s.__image__webglTextureCube)},this.setTextureCubeDynamic=function(t,i){e.activeTexture(n.TEXTURE0+i),e.bindTexture(n.TEXTURE_CUBE_MAP,r.get(t).__webglTexture)},this.setupRenderTarget=function(t){var i=r.get(t),o=r.get(t.texture);t.addEventListener("dispose",m),o.__webglTexture=n.createTexture(),a.memory.textures++;var l=!0===t.isWebGLRenderTargetCube,s=u(t);if(l){i.__webglFramebuffer=[];for(var c=0;c<6;c++)i.__webglFramebuffer[c]=n.createFramebuffer()}else i.__webglFramebuffer=n.createFramebuffer();if(l){for(e.bindTexture(n.TEXTURE_CUBE_MAP,o.__webglTexture),y(n.TEXTURE_CUBE_MAP,t.texture,s),c=0;c<6;c++)x(i.__webglFramebuffer[c],t,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+c);h(t.texture,s)&&v(n.TEXTURE_CUBE_MAP,t.texture,t.width,t.height),e.bindTexture(n.TEXTURE_CUBE_MAP,null)}else e.bindTexture(n.TEXTURE_2D,o.__webglTexture),y(n.TEXTURE_2D,t.texture,s),x(i.__webglFramebuffer,t,n.COLOR_ATTACHMENT0,n.TEXTURE_2D),h(t.texture,s)&&v(n.TEXTURE_2D,t.texture,t.width,t.height),e.bindTexture(n.TEXTURE_2D,null);t.depthBuffer&&w(t)},this.updateRenderTargetMipmap=function(t){var i=t.texture;if(h(i,u(t))){var o=t.isWebGLRenderTargetCube?n.TEXTURE_CUBE_MAP:n.TEXTURE_2D,a=r.get(i).__webglTexture;e.bindTexture(o,a),v(o,i,t.width,t.height),e.bindTexture(o,null)}}}function ti(n,t,e){return{convert:function(r){var i;if(r===mn)return n.REPEAT;if(r===gn)return n.CLAMP_TO_EDGE;if(r===yn)return n.MIRRORED_REPEAT;if(r===xn)return n.NEAREST;if(r===bn)return n.NEAREST_MIPMAP_NEAREST;if(r===wn)return n.NEAREST_MIPMAP_LINEAR;if(r===Mn)return n.LINEAR;if(r===_n)return n.LINEAR_MIPMAP_NEAREST;if(r===En)return n.LINEAR_MIPMAP_LINEAR;if(r===Sn)return n.UNSIGNED_BYTE;if(r===Dn)return n.UNSIGNED_SHORT_4_4_4_4;if(r===Un)return n.UNSIGNED_SHORT_5_5_5_1;if(r===Nn)return n.UNSIGNED_SHORT_5_6_5;if(r===Tn)return n.BYTE;if(r===An)return n.SHORT;if(r===Ln)return n.UNSIGNED_SHORT;if(r===Pn)return n.INT;if(r===Cn)return n.UNSIGNED_INT;if(r===Rn)return n.FLOAT;if(r===On){if(e.isWebGL2)return n.HALF_FLOAT;if(null!==(i=t.get("OES_texture_half_float")))return i.HALF_FLOAT_OES}if(r===Bn)return n.ALPHA;if(r===Fn)return n.RGB;if(r===zn)return n.RGBA;if(r===Gn)return n.LUMINANCE;if(r===kn)return n.LUMINANCE_ALPHA;if(r===Hn)return n.DEPTH_COMPONENT;if(r===Vn)return n.DEPTH_STENCIL;if(r===P)return n.FUNC_ADD;if(r===C)return n.FUNC_SUBTRACT;if(r===R)return n.FUNC_REVERSE_SUBTRACT;if(r===U)return n.ZERO;if(r===N)return n.ONE;if(r===I)return n.SRC_COLOR;if(r===B)return n.ONE_MINUS_SRC_COLOR;if(r===F)return n.SRC_ALPHA;if(r===z)return n.ONE_MINUS_SRC_ALPHA;if(r===G)return n.DST_ALPHA;if(r===k)return n.ONE_MINUS_DST_ALPHA;if(r===j)return n.DST_COLOR;if(r===H)return n.ONE_MINUS_DST_COLOR;if(r===V)return n.SRC_ALPHA_SATURATE;if((r===Wn||r===Xn||r===qn||r===Yn)&&null!==(i=t.get("WEBGL_compressed_texture_s3tc"))){if(r===Wn)return i.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===Xn)return i.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===qn)return i.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===Yn)return i.COMPRESSED_RGBA_S3TC_DXT5_EXT}if((r===Zn||r===Jn||r===Kn||r===Qn)&&null!==(i=t.get("WEBGL_compressed_texture_pvrtc"))){if(r===Zn)return i.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===Jn)return i.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===Kn)return i.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===Qn)return i.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(r===$n&&null!==(i=t.get("WEBGL_compressed_texture_etc1")))return i.COMPRESSED_RGB_ETC1_WEBGL;if((r===nt||r===tt||r===et||r===rt||r===it||r===ot||r===at||r===lt||r===st||r===ct||r===ut||r===ht||r===vt||r===dt)&&null!==(i=t.get("WEBGL_compressed_texture_astc")))return r;if(r===O||r===D){if(e.isWebGL2){if(r===O)return n.MIN;if(r===D)return n.MAX}if(null!==(i=t.get("EXT_blend_minmax"))){if(r===O)return i.MIN_EXT;if(r===D)return i.MAX_EXT}}if(r===In){if(e.isWebGL2)return n.UNSIGNED_INT_24_8;if(null!==(i=t.get("WEBGL_depth_texture")))return i.UNSIGNED_INT_24_8_WEBGL}return 0}}}function ei(){ve.call(this),this.type="Group"}function ri(n,t,e,r){de.call(this),this.type="PerspectiveCamera",this.fov=void 0!==n?n:50,this.zoom=1,this.near=void 0!==e?e:.1,this.far=void 0!==r?r:2e3,this.focus=10,this.aspect=void 0!==t?t:1,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}function ii(n){ri.call(this),this.cameras=n||[]}function oi(n){var t=this,e=null,r=null,i=null,o=[],a=new Gt,l=new Gt;"undefined"!=typeof window&&"VRFrameData"in window&&(r=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",g,!1));var s=new Gt,c=new kt,u=new jt,h=new ri;h.bounds=new qt(0,0,.5,1),h.layers.enable(1);var v=new ri;v.bounds=new qt(.5,0,.5,1),v.layers.enable(2);var d,f,p=new ii([h,v]);function m(){return null!==e&&!0===e.isPresenting}function g(){if(m()){var r=e.getEyeParameters("left"),i=r.renderWidth,o=r.renderHeight;f=n.getPixelRatio(),d=n.getSize(),n.setDrawingBufferSize(2*i,o,1),b.start()}else t.enabled&&(n.setDrawingBufferSize(d.width,d.height,f),b.stop())}p.layers.enable(1),p.layers.enable(2);var y=[];function x(n){for(var t=navigator.getGamepads&&navigator.getGamepads(),e=0,r=0,i=t.length;e<i;e++){var o=t[e];if(o&&("Daydream Controller"===o.id||"Gear VR Controller"===o.id||"Oculus Go Controller"===o.id||"OpenVR Gamepad"===o.id||o.id.startsWith("Oculus Touch")||o.id.startsWith("Spatial Controller"))){if(r===n)return o;r++}}}this.enabled=!1,this.userHeight=1.6,this.getController=function(n){var t=o[n];return void 0===t&&((t=new ei).matrixAutoUpdate=!1,t.visible=!1,o[n]=t),t},this.getDevice=function(){return e},this.setDevice=function(n){void 0!==n&&(e=n),b.setContext(n)},this.setPoseTarget=function(n){void 0!==n&&(i=n)},this.getCamera=function(n){if(null===e)return n.position.set(0,t.userHeight,0),n;e.depthNear=n.near,e.depthFar=n.far,e.getFrameData(r);var d=e.stageParameters;d?a.fromArray(d.sittingToStandingTransform):a.makeTranslation(0,t.userHeight,0);var f=r.pose,m=null!==i?i:n;if(m.matrix.copy(a),m.matrix.decompose(m.position,m.quaternion,m.scale),null!==f.orientation&&(c.fromArray(f.orientation),m.quaternion.multiply(c)),null!==f.position&&(c.setFromRotationMatrix(a),u.fromArray(f.position),u.applyQuaternion(c),m.position.add(u)),m.updateMatrixWorld(),!1===e.isPresenting)return n;h.near=n.near,v.near=n.near,h.far=n.far,v.far=n.far,p.matrixWorld.copy(n.matrixWorld),p.matrixWorldInverse.copy(n.matrixWorldInverse),h.matrixWorldInverse.fromArray(r.leftViewMatrix),v.matrixWorldInverse.fromArray(r.rightViewMatrix),l.getInverse(a),h.matrixWorldInverse.multiply(l),v.matrixWorldInverse.multiply(l);var g=m.parent;null!==g&&(s.getInverse(g.matrixWorld),h.matrixWorldInverse.multiply(s),v.matrixWorldInverse.multiply(s)),h.matrixWorld.getInverse(h.matrixWorldInverse),v.matrixWorld.getInverse(v.matrixWorldInverse),h.projectionMatrix.fromArray(r.leftProjectionMatrix),v.projectionMatrix.fromArray(r.rightProjectionMatrix),p.projectionMatrix.copy(h.projectionMatrix);var b=e.getLayers();if(b.length){var w=b[0];null!==w.leftBounds&&4===w.leftBounds.length&&h.bounds.fromArray(w.leftBounds),null!==w.rightBounds&&4===w.rightBounds.length&&v.bounds.fromArray(w.rightBounds)}return function(){for(var n=0;n<o.length;n++){var t=o[n],e=x(n);if(void 0!==e&&void 0!==e.pose){if(null===e.pose)return;var r=e.pose;!1===r.hasPosition&&t.position.set(.2,-.6,-.05),null!==r.position&&t.position.fromArray(r.position),null!==r.orientation&&t.quaternion.fromArray(r.orientation),t.matrix.compose(t.position,t.quaternion,t.scale),t.matrix.premultiply(a),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixWorldNeedsUpdate=!0,t.visible=!0;var i="Daydream Controller"===e.id?0:1;y[n]!==e.buttons[i].pressed&&(y[n]=e.buttons[i].pressed,!0===y[n]?t.dispatchEvent({type:"selectstart"}):(t.dispatchEvent({type:"selectend"}),t.dispatchEvent({type:"select"})))}else t.visible=!1}}(),p},this.getStandingMatrix=function(){return a},this.isPresenting=m;var b=new le;this.setAnimationLoop=function(n){b.setAnimationLoop(n)},this.submitFrame=function(){m()&&e.submitFrame()},this.dispose=function(){"undefined"!=typeof window&&window.removeEventListener("vrdisplaypresentchange",g)}}function ai(t){console.log("THREE.WebGLRenderer",i);var e=void 0!==(t=t||{}).canvas?t.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),r=void 0!==t.context?t.context:null,o=void 0!==t.alpha&&t.alpha,c=void 0===t.depth||t.depth,u=void 0===t.stencil||t.stencil,h=void 0!==t.antialias&&t.antialias,v=void 0===t.premultipliedAlpha||t.premultipliedAlpha,d=void 0!==t.preserveDrawingBuffer&&t.preserveDrawingBuffer,f=void 0!==t.powerPreference?t.powerPreference:"default",p=null,y=null;this.domElement=e,this.context=null,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.gammaFactor=2,this.gammaInput=!1,this.gammaOutput=!1,this.physicallyCorrectLights=!1,this.toneMapping=rn,this.toneMappingExposure=1,this.toneMappingWhitePoint=1,this.maxMorphTargets=8,this.maxMorphNormals=4;var x,b,w,M,P,C,R,O,D,U,N,I,B,F,z,G,k,j,H=this,V=!1,$=null,nn=null,tn=null,en=-1,on={geometry:null,program:null,wireframe:!1},an=null,ln=null,sn=new qt,cn=new qt,un=null,hn=0,vn=e.width,dn=e.height,fn=1,pn=new qt(0,0,vn,dn),mn=new qt(0,0,vn,dn),gn=!1,yn=new ne,xn=new function(){var n=this,t=null,e=0,r=!1,i=!1,o=new $t,a=new Ht,l={value:null,needsUpdate:!1};function s(){l.value!==t&&(l.value=t,l.needsUpdate=e>0),n.numPlanes=e,n.numIntersection=0}function c(t,e,r,i){var s=null!==t?t.length:0,c=null;if(0!==s){if(c=l.value,!0!==i||null===c){var u=r+4*s,h=e.matrixWorldInverse;a.getNormalMatrix(h),(null===c||c.length<u)&&(c=new Float32Array(u));for(var v=0,d=r;v!==s;++v,d+=4)o.copy(t[v]).applyMatrix4(h,a),o.normal.toArray(c,d),c[d+3]=o.constant}l.value=c,l.needsUpdate=!0}return n.numPlanes=s,c}this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(n,i,o){var a=0!==n.length||i||0!==e||r;return r=i,t=c(n,o,0),e=n.length,a},this.beginShadows=function(){i=!0,c(null)},this.endShadows=function(){i=!1,s()},this.setState=function(n,o,a,u,h,v){if(!r||null===n||0===n.length||i&&!a)i?c(null):s();else{var d=i?0:e,f=4*d,p=h.clippingState||null;l.value=p,p=c(n,u,f,v);for(var m=0;m!==f;++m)p[m]=t[m];h.clippingState=p,this.numIntersection=o?this.numPlanes:0,this.numPlanes+=d}}},bn=!1,wn=!1,Mn=new Gt,_n=new jt;function En(){return null===nn?fn:1}try{var Tn={alpha:o,depth:c,stencil:u,antialias:h,premultipliedAlpha:v,preserveDrawingBuffer:d,powerPreference:f};if(e.addEventListener("webglcontextlost",Cn,!1),e.addEventListener("webglcontextrestored",Dn,!1),null===(x=r||e.getContext("webgl",Tn)||e.getContext("experimental-webgl",Tn)))throw null!==e.getContext("webgl")?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.");void 0===x.getShaderPrecisionFormat&&(x.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(n){console.error("THREE.WebGLRenderer: "+n.message)}function An(){b=new function(n){var t={};return{get:function(e){if(void 0!==t[e])return t[e];var r;switch(e){case"WEBGL_depth_texture":r=n.getExtension("WEBGL_depth_texture")||n.getExtension("MOZ_WEBGL_depth_texture")||n.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=n.getExtension("EXT_texture_filter_anisotropic")||n.getExtension("MOZ_EXT_texture_filter_anisotropic")||n.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=n.getExtension("WEBGL_compressed_texture_s3tc")||n.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=n.getExtension("WEBGL_compressed_texture_pvrtc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:r=n.getExtension(e)}return null===r&&console.warn("THREE.WebGLRenderer: "+e+" extension not supported."),t[e]=r,r}}}(x),(w=new function(n,t,e){var r;function i(t){if("highp"===t){if(n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.HIGH_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";t="mediump"}return"mediump"===t&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}var o="undefined"!=typeof WebGL2RenderingContext&&n instanceof WebGL2RenderingContext,a=void 0!==e.precision?e.precision:"highp",l=i(a);l!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",l,"instead."),a=l);var s=!0===e.logarithmicDepthBuffer,c=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),u=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),h=n.getParameter(n.MAX_TEXTURE_SIZE),v=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),d=n.getParameter(n.MAX_VERTEX_ATTRIBS),f=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),p=n.getParameter(n.MAX_VARYING_VECTORS),m=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),g=u>0,y=o||!!t.get("OES_texture_float");return{isWebGL2:o,getMaxAnisotropy:function(){if(void 0!==r)return r;var e=t.get("EXT_texture_filter_anisotropic");return r=null!==e?n.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:i,precision:a,logarithmicDepthBuffer:s,maxTextures:c,maxVertexTextures:u,maxTextureSize:h,maxCubemapSize:v,maxAttributes:d,maxVertexUniforms:f,maxVaryings:p,maxFragmentUniforms:m,vertexTextures:g,floatFragmentTextures:y,floatVertexTextures:g&&y}}(x,b,t)).isWebGL2||(b.get("WEBGL_depth_texture"),b.get("OES_texture_float"),b.get("OES_texture_half_float"),b.get("OES_texture_half_float_linear"),b.get("OES_standard_derivatives"),b.get("OES_element_index_uint"),b.get("ANGLE_instanced_arrays")),b.get("OES_texture_float_linear"),j=new ti(x,b,w),(M=new function(n,t,e,r){var i=new function(){var t=!1,e=new qt,r=null,i=new qt(0,0,0,0);return{setMask:function(e){r===e||t||(n.colorMask(e,e,e,e),r=e)},setLocked:function(n){t=n},setClear:function(t,r,o,a,l){!0===l&&(t*=a,r*=a,o*=a),e.set(t,r,o,a),!1===i.equals(e)&&(n.clearColor(t,r,o,a),i.copy(e))},reset:function(){t=!1,r=null,i.set(-1,0,0,0)}}},o=new function(){var t=!1,e=null,r=null,i=null;return{setTest:function(t){t?rn(n.DEPTH_TEST):on(n.DEPTH_TEST)},setMask:function(r){e===r||t||(n.depthMask(r),e=r)},setFunc:function(t){if(r!==t){if(t)switch(t){case W:n.depthFunc(n.NEVER);break;case X:n.depthFunc(n.ALWAYS);break;case q:n.depthFunc(n.LESS);break;case Y:n.depthFunc(n.LEQUAL);break;case Z:n.depthFunc(n.EQUAL);break;case J:n.depthFunc(n.GEQUAL);break;case K:n.depthFunc(n.GREATER);break;case Q:n.depthFunc(n.NOTEQUAL);break;default:n.depthFunc(n.LEQUAL)}else n.depthFunc(n.LEQUAL);r=t}},setLocked:function(n){t=n},setClear:function(t){i!==t&&(n.clearDepth(t),i=t)},reset:function(){t=!1,e=null,r=null,i=null}}},c=new function(){var t=!1,e=null,r=null,i=null,o=null,a=null,l=null,s=null,c=null;return{setTest:function(t){t?rn(n.STENCIL_TEST):on(n.STENCIL_TEST)},setMask:function(r){e===r||t||(n.stencilMask(r),e=r)},setFunc:function(t,e,a){r===t&&i===e&&o===a||(n.stencilFunc(t,e,a),r=t,i=e,o=a)},setOp:function(t,e,r){a===t&&l===e&&s===r||(n.stencilOp(t,e,r),a=t,l=e,s=r)},setLocked:function(n){t=n},setClear:function(t){c!==t&&(n.clearStencil(t),c=t)},reset:function(){t=!1,e=null,r=null,i=null,o=null,a=null,l=null,s=null,c=null}}},u=n.getParameter(n.MAX_VERTEX_ATTRIBS),h=new Uint8Array(u),v=new Uint8Array(u),d=new Uint8Array(u),f={},p=null,y=null,x=null,b=null,w=null,M=null,P=null,C=null,R=null,O=!1,D=null,U=null,N=null,I=null,B=null,F=n.getParameter(n.MAX_COMBINED_TEXTURE_IMAGE_UNITS),z=!1,G=0,k=n.getParameter(n.VERSION);-1!==k.indexOf("WebGL")?(G=parseFloat(/^WebGL\ ([0-9])/.exec(k)[1]),z=G>=1):-1!==k.indexOf("OpenGL ES")&&(G=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(k)[1]),z=G>=2);var j=null,H={},V=new qt,$=new qt;function nn(t,e,r){var i=new Uint8Array(4),o=n.createTexture();n.bindTexture(t,o),n.texParameteri(t,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(t,n.TEXTURE_MAG_FILTER,n.NEAREST);for(var a=0;a<r;a++)n.texImage2D(e+a,0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,i);return o}var tn={};function en(e,i){h[e]=1,0===v[e]&&(n.enableVertexAttribArray(e),v[e]=1),d[e]!==i&&((r.isWebGL2?n:t.get("ANGLE_instanced_arrays"))[r.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](e,i),d[e]=i)}function rn(t){!0!==f[t]&&(n.enable(t),f[t]=!0)}function on(t){!1!==f[t]&&(n.disable(t),f[t]=!1)}function an(t,r,i,o,a,l,s,c){if(t!==_?rn(n.BLEND):on(n.BLEND),t!==L){if(t!==x||c!==O)switch(t){case S:c?(n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD),n.blendFuncSeparate(n.ONE,n.ONE,n.ONE,n.ONE)):(n.blendEquation(n.FUNC_ADD),n.blendFunc(n.SRC_ALPHA,n.ONE));break;case T:c?(n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD),n.blendFuncSeparate(n.ZERO,n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ONE_MINUS_SRC_ALPHA)):(n.blendEquation(n.FUNC_ADD),n.blendFunc(n.ZERO,n.ONE_MINUS_SRC_COLOR));break;case A:c?(n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD),n.blendFuncSeparate(n.ZERO,n.SRC_COLOR,n.ZERO,n.SRC_ALPHA)):(n.blendEquation(n.FUNC_ADD),n.blendFunc(n.ZERO,n.SRC_COLOR));break;default:c?(n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD),n.blendFuncSeparate(n.ONE,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA)):(n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD),n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA))}b=null,w=null,M=null,P=null,C=null,R=null}else a=a||r,l=l||i,s=s||o,r===b&&a===P||(n.blendEquationSeparate(e.convert(r),e.convert(a)),b=r,P=a),i===w&&o===M&&l===C&&s===R||(n.blendFuncSeparate(e.convert(i),e.convert(o),e.convert(l),e.convert(s)),w=i,M=o,C=l,R=s);x=t,O=c}function ln(t){D!==t&&(t?n.frontFace(n.CW):n.frontFace(n.CCW),D=t)}function sn(t){t!==a?(rn(n.CULL_FACE),t!==U&&(t===l?n.cullFace(n.BACK):t===s?n.cullFace(n.FRONT):n.cullFace(n.FRONT_AND_BACK))):on(n.CULL_FACE),U=t}function cn(t,e,r){t?(rn(n.POLYGON_OFFSET_FILL),I===e&&B===r||(n.polygonOffset(e,r),I=e,B=r)):on(n.POLYGON_OFFSET_FILL)}function un(t){void 0===t&&(t=n.TEXTURE0+F-1),j!==t&&(n.activeTexture(t),j=t)}return tn[n.TEXTURE_2D]=nn(n.TEXTURE_2D,n.TEXTURE_2D,1),tn[n.TEXTURE_CUBE_MAP]=nn(n.TEXTURE_CUBE_MAP,n.TEXTURE_CUBE_MAP_POSITIVE_X,6),i.setClear(0,0,0,1),o.setClear(1),c.setClear(0),rn(n.DEPTH_TEST),o.setFunc(Y),ln(!1),sn(l),rn(n.CULL_FACE),rn(n.BLEND),an(E),{buffers:{color:i,depth:o,stencil:c},initAttributes:function(){for(var n=0,t=h.length;n<t;n++)h[n]=0},enableAttribute:function(n){en(n,0)},enableAttributeAndDivisor:en,disableUnusedAttributes:function(){for(var t=0,e=v.length;t!==e;++t)v[t]!==h[t]&&(n.disableVertexAttribArray(t),v[t]=0)},enable:rn,disable:on,getCompressedTextureFormats:function(){if(null===p&&(p=[],t.get("WEBGL_compressed_texture_pvrtc")||t.get("WEBGL_compressed_texture_s3tc")||t.get("WEBGL_compressed_texture_etc1")||t.get("WEBGL_compressed_texture_astc")))for(var e=n.getParameter(n.COMPRESSED_TEXTURE_FORMATS),r=0;r<e.length;r++)p.push(e[r]);return p},useProgram:function(t){return y!==t&&(n.useProgram(t),y=t,!0)},setBlending:an,setMaterial:function(t,e){t.side===g?on(n.CULL_FACE):rn(n.CULL_FACE);var r=t.side===m;e&&(r=!r),ln(r),t.blending===E&&!1===t.transparent?an(_):an(t.blending,t.blendEquation,t.blendSrc,t.blendDst,t.blendEquationAlpha,t.blendSrcAlpha,t.blendDstAlpha,t.premultipliedAlpha),o.setFunc(t.depthFunc),o.setTest(t.depthTest),o.setMask(t.depthWrite),i.setMask(t.colorWrite),cn(t.polygonOffset,t.polygonOffsetFactor,t.polygonOffsetUnits)},setFlipSided:ln,setCullFace:sn,setLineWidth:function(t){t!==N&&(z&&n.lineWidth(t),N=t)},setPolygonOffset:cn,setScissorTest:function(t){t?rn(n.SCISSOR_TEST):on(n.SCISSOR_TEST)},activeTexture:un,bindTexture:function(t,e){null===j&&un();var r=H[j];void 0===r&&(r={type:void 0,texture:void 0},H[j]=r),r.type===t&&r.texture===e||(n.bindTexture(t,e||tn[t]),r.type=t,r.texture=e)},compressedTexImage2D:function(){try{n.compressedTexImage2D.apply(n,arguments)}catch(n){console.error("THREE.WebGLState:",n)}},texImage2D:function(){try{n.texImage2D.apply(n,arguments)}catch(n){console.error("THREE.WebGLState:",n)}},scissor:function(t){!1===V.equals(t)&&(n.scissor(t.x,t.y,t.z,t.w),V.copy(t))},viewport:function(t){!1===$.equals(t)&&(n.viewport(t.x,t.y,t.z,t.w),$.copy(t))},reset:function(){for(var t=0;t<v.length;t++)1===v[t]&&(n.disableVertexAttribArray(t),v[t]=0);f={},p=null,j=null,H={},y=null,x=null,D=null,U=null,i.reset(),o.reset(),c.reset()}}}(x,b,j,w)).scissor(cn.copy(mn).multiplyScalar(fn)),M.viewport(sn.copy(pn).multiplyScalar(fn)),P=new function(n){var t={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:t,programs:null,autoReset:!0,reset:function(){t.frame++,t.calls=0,t.triangles=0,t.points=0,t.lines=0},update:function(e,r,i){switch(i=i||1,t.calls++,r){case n.TRIANGLES:t.triangles+=i*(e/3);break;case n.TRIANGLE_STRIP:case n.TRIANGLE_FAN:t.triangles+=i*(e-2);break;case n.LINES:t.lines+=i*(e/2);break;case n.LINE_STRIP:t.lines+=i*(e-1);break;case n.LINE_LOOP:t.lines+=i*e;break;case n.POINTS:t.points+=i*e;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",r)}}}}(x),C=new function(){var n=new WeakMap;return{get:function(t){var e=n.get(t);return void 0===e&&(e={},n.set(t,e)),e},remove:function(t){n.delete(t)},update:function(t,e,r){n.get(t)[e]=r},dispose:function(){n=new WeakMap}}},R=new ni(x,b,M,C,w,j,P),O=new se(x),D=new function(n,t,e){var r={},i={};function o(n){var a=n.target,l=r[a.id];for(var s in null!==l.index&&t.remove(l.index),l.attributes)t.remove(l.attributes[s]);a.removeEventListener("dispose",o),delete r[a.id];var c=i[l.id];c&&(t.remove(c),delete i[l.id]),e.memory.geometries--}return{get:function(n,t){var i=r[t.id];return i||(t.addEventListener("dispose",o),t.isBufferGeometry?i=t:t.isGeometry&&(void 0===t._bufferGeometry&&(t._bufferGeometry=(new Re).setFromObject(n)),i=t._bufferGeometry),r[t.id]=i,e.memory.geometries++,i)},update:function(e){var r=e.index,i=e.attributes;for(var o in null!==r&&t.update(r,n.ELEMENT_ARRAY_BUFFER),i)t.update(i[o],n.ARRAY_BUFFER);var a=e.morphAttributes;for(var o in a)for(var l=a[o],s=0,c=l.length;s<c;s++)t.update(l[s],n.ARRAY_BUFFER)},getWireframeAttribute:function(e){var r=i[e.id];if(r)return r;var o,a=[],l=e.index,s=e.attributes;if(null!==l)for(var c=0,u=(o=l.array).length;c<u;c+=3){var h=o[c+0],v=o[c+1],d=o[c+2];a.push(h,v,v,d,d,h)}else for(c=0,u=(o=s.position.array).length/3-1;c<u;c+=3)h=c+0,v=c+1,d=c+2,a.push(h,v,v,d,d,h);return r=new(Pe(a)>65535?Se:_e)(a,1),t.update(r,n.ELEMENT_ARRAY_BUFFER),i[e.id]=r,r}}}(x,O,P),U=new function(n,t){var e={};return{update:function(r){var i=t.render.frame,o=r.geometry,a=n.get(r,o);return e[a.id]!==i&&(o.isGeometry&&a.updateFromObject(r),n.update(a),e[a.id]=i),a},dispose:function(){e={}}}}(D,P),z=new function(n){var t={},e=new Float32Array(8);return{update:function(r,i,o,a){var l=r.morphTargetInfluences,s=l.length,c=t[i.id];if(void 0===c){c=[];for(var u=0;u<s;u++)c[u]=[u,0];t[i.id]=c}var h=o.morphTargets&&i.morphAttributes.position,v=o.morphNormals&&i.morphAttributes.normal;for(u=0;u<s;u++)0!==(d=c[u])[1]&&(h&&i.removeAttribute("morphTarget"+u),v&&i.removeAttribute("morphNormal"+u));for(u=0;u<s;u++)(d=c[u])[0]=u,d[1]=l[u];for(c.sort(He),u=0;u<8;u++){var d;if(d=c[u]){var f=d[0],p=d[1];if(p){h&&i.addAttribute("morphTarget"+u,h[f]),v&&i.addAttribute("morphNormal"+u,v[f]),e[u]=p;continue}}e[u]=0}a.getUniforms().setValue(n,"morphTargetInfluences",e)}}}(x),N=new Hr(H,b,w),I=new Xr,B=new function(){var n={};return{get:function(t,e){var r;return void 0===n[t.id]?(r=new Jr,n[t.id]={},n[t.id][e.id]=r):void 0===n[t.id][e.id]?(r=new Jr,n[t.id][e.id]=r):r=n[t.id][e.id],r},dispose:function(){n={}}}},F=new function(n,t,e,r){var i,o,a,l=new ie(0),s=0;function c(n,e){t.buffers.color.setClear(n.r,n.g,n.b,e,r)}return{getClearColor:function(){return l},setClearColor:function(n,t){l.set(n),c(l,s=void 0!==t?t:1)},getClearAlpha:function(){return s},setClearAlpha:function(n){c(l,s=n)},render:function(t,r,u,h){var v=r.background;null===v?c(l,s):v&&v.isColor&&(c(v,1),h=!0),(n.autoClear||h)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil),v&&v.isCubeTexture?(void 0===a&&((a=new je(new De(1,1,1),new ze({uniforms:ae.cube.uniforms,vertexShader:ae.cube.vertexShader,fragmentShader:ae.cube.fragmentShader,side:m,depthTest:!0,depthWrite:!1,fog:!1}))).geometry.removeAttribute("normal"),a.geometry.removeAttribute("uv"),a.onBeforeRender=function(n,t,e){this.matrixWorld.copyPosition(e.matrixWorld)},e.update(a)),a.material.uniforms.tCube.value=v,t.push(a,a.geometry,a.material,0,null)):v&&v.isTexture&&(void 0===i&&(i=new fe(-1,1,1,-1,0,1),o=new je(new Ne(2,2),new Fe({depthTest:!1,depthWrite:!1,fog:!1})),e.update(o)),o.material.map=v,n.renderBufferDirect(i,null,o.geometry,o.material,o,null))}}}(H,M,U,v),G=new function(n,t,e,r){var i;this.setMode=function(n){i=n},this.render=function(t,r){n.drawArrays(i,t,r),e.update(r,i)},this.renderInstances=function(o,a,l){var s;if(r.isWebGL2)s=n;else if(null===(s=t.get("ANGLE_instanced_arrays")))return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");s[r.isWebGL2?"drawArraysInstanced":"drawArraysInstancedANGLE"](i,a,l,o.maxInstancedCount),e.update(l,i,o.maxInstancedCount)}}(x,b,P,w),k=new function(n,t,e,r){var i,o,a;this.setMode=function(n){i=n},this.setIndex=function(n){o=n.type,a=n.bytesPerElement},this.render=function(t,r){n.drawElements(i,r,o,t*a),e.update(r,i)},this.renderInstances=function(l,s,c){var u;if(r.isWebGL2)u=n;else if(null===(u=t.get("ANGLE_instanced_arrays")))return void console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");u[r.isWebGL2?"drawElementsInstanced":"drawElementsInstancedANGLE"](i,c,o,s*a,l.maxInstancedCount),e.update(c,i,l.maxInstancedCount)}}(x,b,P,w),P.programs=N.programs,H.context=x,H.capabilities=w,H.extensions=b,H.properties=C,H.renderLists=I,H.state=M,H.info=P}An();var Ln="xr"in navigator?new function(t){var e=t.context,r=null,i=null,o=null,a=null,l=[],s=[];function c(){return null!==i&&null!==o}var u=new ri;u.layers.enable(1),u.viewport=new qt;var h=new ri;h.layers.enable(2),h.viewport=new qt;var v=new ii([u,h]);function d(n){var t=l[s.indexOf(n.inputSource)];t&&t.dispatchEvent({type:n.type})}function f(){t.setFramebuffer(null),g.stop()}function p(n,t){null===t?n.matrixWorld.copy(n.matrix):n.matrixWorld.multiplyMatrices(t.matrixWorld,n.matrix),n.matrixWorldInverse.getInverse(n.matrixWorld)}v.layers.enable(1),v.layers.enable(2),this.enabled=!1,this.getController=function(n){var t=l[n];return void 0===t&&((t=new ei).matrixAutoUpdate=!1,t.visible=!1,l[n]=t),t},this.getDevice=function(){return r},this.setDevice=function(n){void 0!==n&&(r=n),n instanceof XRDevice&&e.setCompatibleXRDevice(n)},this.setSession=function(n,r){null!==(i=n)&&(i.addEventListener("select",d),i.addEventListener("selectstart",d),i.addEventListener("selectend",d),i.addEventListener("end",f),i.baseLayer=new XRWebGLLayer(i,e),i.requestFrameOfReference(r.frameOfReferenceType).then(function(n){o=n,t.setFramebuffer(i.baseLayer.framebuffer),g.setContext(i),g.start()}),s=i.getInputSources(),i.addEventListener("inputsourceschange",function(){s=i.getInputSources(),console.log(s)}))},this.getCamera=function(n){if(c()){var t=n.parent,e=v.cameras;p(v,t);for(var r=0;r<e.length;r++)p(e[r],t);n.matrixWorld.copy(v.matrixWorld);for(var i=n.children,o=(r=0,i.length);r<o;r++)i[r].updateMatrixWorld(!0);return v}return n},this.isPresenting=c;var m=null,g=new le;g.setAnimationLoop(function(n,t){if(null!==(a=t.getDevicePose(o)))for(var e=i.baseLayer,r=t.views,c=0;c<r.length;c++){var u=r[c],h=e.getViewport(u),d=a.getViewMatrix(u),f=v.cameras[c];f.matrix.fromArray(d).getInverse(f.matrix),f.projectionMatrix.fromArray(u.projectionMatrix),f.viewport.set(h.x,h.y,h.width,h.height),0===c&&(v.matrix.copy(f.matrix),v.projectionMatrix.copy(f.projectionMatrix))}for(c=0;c<l.length;c++){var p=l[c],g=s[c];if(g){var y=t.getInputPose(g,o);if(null!==y){p.matrix.elements=y.pointerMatrix,p.matrix.decompose(p.position,p.rotation,p.scale),p.visible=!0;continue}}p.visible=!1}m&&m(n)}),this.setAnimationLoop=function(n){m=n},this.dispose=function(){},this.getStandingMatrix=function(){return console.warn("THREE.WebXRManager: getStandingMatrix() is no longer needed."),new n.Matrix4},this.submitFrame=function(){}}(H):new oi(H);this.vr=Ln;var Pn=new $r(H,U,w.maxTextureSize);function Cn(n){n.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),V=!0}function Dn(){console.log("THREE.WebGLRenderer: Context Restored."),V=!1,An()}function Un(n){var t=n.target;t.removeEventListener("dispose",Un),function(n){Nn(n),C.remove(n)}(t)}function Nn(n){var t=C.get(n).program;n.program=void 0,void 0!==t&&N.releaseProgram(t)}this.shadowMap=Pn,this.getContext=function(){return x},this.getContextAttributes=function(){return x.getContextAttributes()},this.forceContextLoss=function(){var n=b.get("WEBGL_lose_context");n&&n.loseContext()},this.forceContextRestore=function(){var n=b.get("WEBGL_lose_context");n&&n.restoreContext()},this.getPixelRatio=function(){return fn},this.setPixelRatio=function(n){void 0!==n&&(fn=n,this.setSize(vn,dn,!1))},this.getSize=function(){return{width:vn,height:dn}},this.setSize=function(n,t,r){Ln.isPresenting()?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(vn=n,dn=t,e.width=n*fn,e.height=t*fn,!1!==r&&(e.style.width=n+"px",e.style.height=t+"px"),this.setViewport(0,0,n,t))},this.getDrawingBufferSize=function(){return{width:vn*fn,height:dn*fn}},this.setDrawingBufferSize=function(n,t,r){vn=n,dn=t,fn=r,e.width=n*r,e.height=t*r,this.setViewport(0,0,n,t)},this.getCurrentViewport=function(){return sn},this.setViewport=function(n,t,e,r){pn.set(n,dn-t-r,e,r),M.viewport(sn.copy(pn).multiplyScalar(fn))},this.setScissor=function(n,t,e,r){mn.set(n,dn-t-r,e,r),M.scissor(cn.copy(mn).multiplyScalar(fn))},this.setScissorTest=function(n){M.setScissorTest(gn=n)},this.getClearColor=function(){return F.getClearColor()},this.setClearColor=function(){F.setClearColor.apply(F,arguments)},this.getClearAlpha=function(){return F.getClearAlpha()},this.setClearAlpha=function(){F.setClearAlpha.apply(F,arguments)},this.clear=function(n,t,e){var r=0;(void 0===n||n)&&(r|=x.COLOR_BUFFER_BIT),(void 0===t||t)&&(r|=x.DEPTH_BUFFER_BIT),(void 0===e||e)&&(r|=x.STENCIL_BUFFER_BIT),x.clear(r)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.clearTarget=function(n,t,e,r){this.setRenderTarget(n),this.clear(t,e,r)},this.dispose=function(){e.removeEventListener("webglcontextlost",Cn,!1),e.removeEventListener("webglcontextrestored",Dn,!1),I.dispose(),B.dispose(),C.dispose(),U.dispose(),Ln.dispose(),Bn.stop()},this.renderBufferImmediate=function(n,t){M.initAttributes();var e=C.get(n);n.hasPositions&&!e.position&&(e.position=x.createBuffer()),n.hasNormals&&!e.normal&&(e.normal=x.createBuffer()),n.hasUvs&&!e.uv&&(e.uv=x.createBuffer()),n.hasColors&&!e.color&&(e.color=x.createBuffer());var r=t.getAttributes();n.hasPositions&&(x.bindBuffer(x.ARRAY_BUFFER,e.position),x.bufferData(x.ARRAY_BUFFER,n.positionArray,x.DYNAMIC_DRAW),M.enableAttribute(r.position),x.vertexAttribPointer(r.position,3,x.FLOAT,!1,0,0)),n.hasNormals&&(x.bindBuffer(x.ARRAY_BUFFER,e.normal),x.bufferData(x.ARRAY_BUFFER,n.normalArray,x.DYNAMIC_DRAW),M.enableAttribute(r.normal),x.vertexAttribPointer(r.normal,3,x.FLOAT,!1,0,0)),n.hasUvs&&(x.bindBuffer(x.ARRAY_BUFFER,e.uv),x.bufferData(x.ARRAY_BUFFER,n.uvArray,x.DYNAMIC_DRAW),M.enableAttribute(r.uv),x.vertexAttribPointer(r.uv,2,x.FLOAT,!1,0,0)),n.hasColors&&(x.bindBuffer(x.ARRAY_BUFFER,e.color),x.bufferData(x.ARRAY_BUFFER,n.colorArray,x.DYNAMIC_DRAW),M.enableAttribute(r.color),x.vertexAttribPointer(r.color,3,x.FLOAT,!1,0,0)),M.disableUnusedAttributes(),x.drawArrays(x.TRIANGLES,0,n.count),n.count=0},this.renderBufferDirect=function(n,t,e,r,i,o){var a=i.isMesh&&i.normalMatrix.determinant()<0;M.setMaterial(r,a);var l=jn(n,t,r,i),s=!1;on.geometry===e.id&&on.program===l.id&&on.wireframe===(!0===r.wireframe)||(on.geometry=e.id,on.program=l.id,on.wireframe=!0===r.wireframe,s=!0),i.morphTargetInfluences&&(z.update(i,e,r,l),s=!0);var c,u=e.index,h=e.attributes.position,v=1;!0===r.wireframe&&(u=D.getWireframeAttribute(e),v=2);var d=G;null!==u&&(c=O.get(u),(d=k).setIndex(c)),s&&(!function(n,t,e){if(e&&e.isInstancedBufferGeometry&!w.isWebGL2&&null===b.get("ANGLE_instanced_arrays"))return void console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");M.initAttributes();var r=e.attributes,i=t.getAttributes(),o=n.defaultAttributeValues;for(var a in i){var l=i[a];if(l>=0){var s=r[a];if(void 0!==s){var c=s.normalized,u=s.itemSize,h=O.get(s);if(void 0===h)continue;var v=h.buffer,d=h.type,f=h.bytesPerElement;if(s.isInterleavedBufferAttribute){var p=s.data,m=p.stride,g=s.offset;p&&p.isInstancedInterleavedBuffer?(M.enableAttributeAndDivisor(l,p.meshPerAttribute),void 0===e.maxInstancedCount&&(e.maxInstancedCount=p.meshPerAttribute*p.count)):M.enableAttribute(l),x.bindBuffer(x.ARRAY_BUFFER,v),x.vertexAttribPointer(l,u,d,c,m*f,g*f)}else s.isInstancedBufferAttribute?(M.enableAttributeAndDivisor(l,s.meshPerAttribute),void 0===e.maxInstancedCount&&(e.maxInstancedCount=s.meshPerAttribute*s.count)):M.enableAttribute(l),x.bindBuffer(x.ARRAY_BUFFER,v),x.vertexAttribPointer(l,u,d,c,0,0)}else if(void 0!==o){var y=o[a];if(void 0!==y)switch(y.length){case 2:x.vertexAttrib2fv(l,y);break;case 3:x.vertexAttrib3fv(l,y);break;case 4:x.vertexAttrib4fv(l,y);break;default:x.vertexAttrib1fv(l,y)}}}}M.disableUnusedAttributes()}(r,l,e),null!==u&&x.bindBuffer(x.ELEMENT_ARRAY_BUFFER,c.buffer));var f=1/0;null!==u?f=u.count:void 0!==h&&(f=h.count);var p=e.drawRange.start*v,m=e.drawRange.count*v,g=null!==o?o.start*v:0,y=null!==o?o.count*v:1/0,_=Math.max(p,g),E=Math.min(f,p+m,g+y)-1,S=Math.max(0,E-_+1);if(0!==S){if(i.isMesh)if(!0===r.wireframe)M.setLineWidth(r.wireframeLinewidth*En()),d.setMode(x.LINES);else switch(i.drawMode){case _t:d.setMode(x.TRIANGLES);break;case Et:d.setMode(x.TRIANGLE_STRIP);break;case St:d.setMode(x.TRIANGLE_FAN)}else if(i.isLine){var T=r.linewidth;void 0===T&&(T=1),M.setLineWidth(T*En()),i.isLineSegments?d.setMode(x.LINES):i.isLineLoop?d.setMode(x.LINE_LOOP):d.setMode(x.LINE_STRIP)}else i.isPoints?d.setMode(x.POINTS):i.isSprite&&d.setMode(x.TRIANGLES);e&&e.isInstancedBufferGeometry?e.maxInstancedCount>0&&d.renderInstances(e,_,S):d.render(_,S)}},this.compile=function(n,t){(y=B.get(n,t)).init(),n.traverse(function(n){n.isLight&&(y.pushLight(n),n.castShadow&&y.pushShadow(n))}),y.setupLights(t),n.traverse(function(t){if(t.material)if(Array.isArray(t.material))for(var e=0;e<t.material.length;e++)kn(t.material[e],n.fog,t);else kn(t.material,n.fog,t)})};var In=null;var Bn=new le;function Fn(n,t,e,r){for(var i=0,o=n.length;i<o;i++){var a=n[i],l=a.object,s=a.geometry,c=void 0===r?a.material:r,u=a.group;if(e.isArrayCamera){ln=e;for(var h=e.cameras,v=0,d=h.length;v<d;v++){var f=h[v];if(l.layers.test(f.layers)){if("viewport"in f)M.viewport(sn.copy(f.viewport));else{var p=f.bounds,m=p.x*vn,g=p.y*dn,y=p.z*vn,x=p.w*dn;M.viewport(sn.set(m,g,y,x).multiplyScalar(fn))}Gn(l,t,f,s,c,u)}}}else ln=null,Gn(l,t,e,s,c,u)}}function Gn(n,t,e,r,i,o){if(n.onBeforeRender(H,t,e,r,i,o),y=B.get(t,ln||e),n.modelViewMatrix.multiplyMatrices(e.matrixWorldInverse,n.matrixWorld),n.normalMatrix.getNormalMatrix(n.modelViewMatrix),n.isImmediateRenderObject){M.setMaterial(i);var a=jn(e,t.fog,i,n);on.geometry=null,on.program=null,on.wireframe=!1,function(n,t){n.render(function(n){H.renderBufferImmediate(n,t)})}(n,a)}else H.renderBufferDirect(e,t.fog,r,i,n,o);n.onAfterRender(H,t,e,r,i,o),y=B.get(t,ln||e)}function kn(n,t,e){var r=C.get(n),i=y.state.lights,o=y.state.shadowsArray,a=r.lightsHash,l=i.state.hash,s=N.getParameters(n,i.state,o,t,xn.numPlanes,xn.numIntersection,e),c=N.getProgramCode(n,s),u=r.program,h=!0;if(void 0===u)n.addEventListener("dispose",Un);else if(u.code!==c)Nn(n);else if(a.stateID!==l.stateID||a.directionalLength!==l.directionalLength||a.pointLength!==l.pointLength||a.spotLength!==l.spotLength||a.rectAreaLength!==l.rectAreaLength||a.hemiLength!==l.hemiLength||a.shadowsLength!==l.shadowsLength)a.stateID=l.stateID,a.directionalLength=l.directionalLength,a.pointLength=l.pointLength,a.spotLength=l.spotLength,a.rectAreaLength=l.rectAreaLength,a.hemiLength=l.hemiLength,a.shadowsLength=l.shadowsLength,h=!1;else{if(void 0!==s.shaderID)return;h=!1}if(h){if(s.shaderID){var v=ae[s.shaderID];r.shader={name:n.type,uniforms:ee.clone(v.uniforms),vertexShader:v.vertexShader,fragmentShader:v.fragmentShader}}else r.shader={name:n.type,uniforms:n.uniforms,vertexShader:n.vertexShader,fragmentShader:n.fragmentShader};n.onBeforeCompile(r.shader,H),c=N.getProgramCode(n,s),u=N.acquireProgram(n,r.shader,s,c),r.program=u,n.program=u}var d=u.getAttributes();if(n.morphTargets){n.numSupportedMorphTargets=0;for(var f=0;f<H.maxMorphTargets;f++)d["morphTarget"+f]>=0&&n.numSupportedMorphTargets++}if(n.morphNormals){n.numSupportedMorphNormals=0;for(f=0;f<H.maxMorphNormals;f++)d["morphNormal"+f]>=0&&n.numSupportedMorphNormals++}var p=r.shader.uniforms;(n.isShaderMaterial||n.isRawShaderMaterial)&&!0!==n.clipping||(r.numClippingPlanes=xn.numPlanes,r.numIntersection=xn.numIntersection,p.clippingPlanes=xn.uniform),r.fog=t,void 0===a&&(r.lightsHash=a={}),a.stateID=l.stateID,a.directionalLength=l.directionalLength,a.pointLength=l.pointLength,a.spotLength=l.spotLength,a.rectAreaLength=l.rectAreaLength,a.hemiLength=l.hemiLength,a.shadowsLength=l.shadowsLength,n.lights&&(p.ambientLightColor.value=i.state.ambient,p.directionalLights.value=i.state.directional,p.spotLights.value=i.state.spot,p.rectAreaLights.value=i.state.rectArea,p.pointLights.value=i.state.point,p.hemisphereLights.value=i.state.hemi,p.directionalShadowMap.value=i.state.directionalShadowMap,p.directionalShadowMatrix.value=i.state.directionalShadowMatrix,p.spotShadowMap.value=i.state.spotShadowMap,p.spotShadowMatrix.value=i.state.spotShadowMatrix,p.pointShadowMap.value=i.state.pointShadowMap,p.pointShadowMatrix.value=i.state.pointShadowMatrix);var m=r.program.getUniforms(),g=Or.seqWithValue(m.seq,p);r.uniformsList=g}function jn(n,t,e,r){hn=0;var i=C.get(e),o=y.state.lights,a=i.lightsHash,l=o.state.hash;if(bn&&(wn||n!==an)){var s=n===an&&e.id===en;xn.setState(e.clippingPlanes,e.clipIntersection,e.clipShadows,n,i,s)}!1===e.needsUpdate&&(void 0===i.program?e.needsUpdate=!0:e.fog&&i.fog!==t?e.needsUpdate=!0:(!e.lights||a.stateID===l.stateID&&a.directionalLength===l.directionalLength&&a.pointLength===l.pointLength&&a.spotLength===l.spotLength&&a.rectAreaLength===l.rectAreaLength&&a.hemiLength===l.hemiLength&&a.shadowsLength===l.shadowsLength)&&(void 0===i.numClippingPlanes||i.numClippingPlanes===xn.numPlanes&&i.numIntersection===xn.numIntersection)||(e.needsUpdate=!0)),e.needsUpdate&&(kn(e,t,r),e.needsUpdate=!1);var c=!1,u=!1,h=!1,v=i.program,d=v.getUniforms(),f=i.shader.uniforms;if(M.useProgram(v.program)&&(c=!0,u=!0,h=!0),e.id!==en&&(en=e.id,u=!0),c||n!==an){if(d.setValue(x,"projectionMatrix",n.projectionMatrix),w.logarithmicDepthBuffer&&d.setValue(x,"logDepthBufFC",2/(Math.log(n.far+1)/Math.LN2)),an!==(ln||n)&&(an=ln||n,u=!0,h=!0),e.isShaderMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.envMap){var p=d.map.cameraPosition;void 0!==p&&p.setValue(x,_n.setFromMatrixPosition(n.matrixWorld))}(e.isMeshPhongMaterial||e.isMeshLambertMaterial||e.isMeshBasicMaterial||e.isMeshStandardMaterial||e.isShaderMaterial||e.skinning)&&d.setValue(x,"viewMatrix",n.matrixWorldInverse)}if(e.skinning){d.setOptional(x,r,"bindMatrix"),d.setOptional(x,r,"bindMatrixInverse");var g=r.skeleton;if(g){var b=g.bones;if(w.floatVertexTextures){if(void 0===g.boneTexture){var _=Math.sqrt(4*b.length);_=Ft.ceilPowerOfTwo(_),_=Math.max(_,4);var E=new Float32Array(_*_*4);E.set(g.boneMatrices);var S=new Jt(E,_,_,zn,Rn);S.needsUpdate=!0,g.boneMatrices=E,g.boneTexture=S,g.boneTextureSize=_}d.setValue(x,"boneTexture",g.boneTexture),d.setValue(x,"boneTextureSize",g.boneTextureSize)}else d.setOptional(x,g,"boneMatrices")}}return u&&(d.setValue(x,"toneMappingExposure",H.toneMappingExposure),d.setValue(x,"toneMappingWhitePoint",H.toneMappingWhitePoint),e.lights&&function(n,t){n.ambientLightColor.needsUpdate=t,n.directionalLights.needsUpdate=t,n.pointLights.needsUpdate=t,n.spotLights.needsUpdate=t,n.rectAreaLights.needsUpdate=t,n.hemisphereLights.needsUpdate=t}(f,h),t&&e.fog&&function(n,t){n.fogColor.value=t.color,t.isFog?(n.fogNear.value=t.near,n.fogFar.value=t.far):t.isFogExp2&&(n.fogDensity.value=t.density)}(f,t),e.isMeshBasicMaterial?Hn(f,e):e.isMeshLambertMaterial?(Hn(f,e),function(n,t){t.emissiveMap&&(n.emissiveMap.value=t.emissiveMap)}(f,e)):e.isMeshPhongMaterial?(Hn(f,e),e.isMeshToonMaterial?function(n,t){Vn(n,t),t.gradientMap&&(n.gradientMap.value=t.gradientMap)}(f,e):Vn(f,e)):e.isMeshStandardMaterial?(Hn(f,e),e.isMeshPhysicalMaterial?function(n,t){Wn(n,t),n.reflectivity.value=t.reflectivity,n.clearCoat.value=t.clearCoat,n.clearCoatRoughness.value=t.clearCoatRoughness}(f,e):Wn(f,e)):e.isMeshDepthMaterial?(Hn(f,e),function(n,t){t.displacementMap&&(n.displacementMap.value=t.displacementMap,n.displacementScale.value=t.displacementScale,n.displacementBias.value=t.displacementBias)}(f,e)):e.isMeshDistanceMaterial?(Hn(f,e),function(n,t){t.displacementMap&&(n.displacementMap.value=t.displacementMap,n.displacementScale.value=t.displacementScale,n.displacementBias.value=t.displacementBias);n.referencePosition.value.copy(t.referencePosition),n.nearDistance.value=t.nearDistance,n.farDistance.value=t.farDistance}(f,e)):e.isMeshNormalMaterial?(Hn(f,e),function(n,t){t.bumpMap&&(n.bumpMap.value=t.bumpMap,n.bumpScale.value=t.bumpScale,t.side===m&&(n.bumpScale.value*=-1));t.normalMap&&(n.normalMap.value=t.normalMap,n.normalScale.value.copy(t.normalScale),t.side===m&&n.normalScale.value.negate());t.displacementMap&&(n.displacementMap.value=t.displacementMap,n.displacementScale.value=t.displacementScale,n.displacementBias.value=t.displacementBias)}(f,e)):e.isLineBasicMaterial?(function(n,t){n.diffuse.value=t.color,n.opacity.value=t.opacity}(f,e),e.isLineDashedMaterial&&function(n,t){n.dashSize.value=t.dashSize,n.totalSize.value=t.dashSize+t.gapSize,n.scale.value=t.scale}(f,e)):e.isPointsMaterial?function(n,t){n.diffuse.value=t.color,n.opacity.value=t.opacity,n.size.value=t.size*fn,n.scale.value=.5*dn,n.map.value=t.map,null!==t.map&&(!0===t.map.matrixAutoUpdate&&t.map.updateMatrix(),n.uvTransform.value.copy(t.map.matrix))}(f,e):e.isSpriteMaterial?function(n,t){n.diffuse.value=t.color,n.opacity.value=t.opacity,n.rotation.value=t.rotation,n.map.value=t.map,null!==t.map&&(!0===t.map.matrixAutoUpdate&&t.map.updateMatrix(),n.uvTransform.value.copy(t.map.matrix))}(f,e):e.isShadowMaterial&&(f.color.value=e.color,f.opacity.value=e.opacity),void 0!==f.ltc_1&&(f.ltc_1.value=oe.LTC_1),void 0!==f.ltc_2&&(f.ltc_2.value=oe.LTC_2),Or.upload(x,i.uniformsList,f,H)),e.isShaderMaterial&&!0===e.uniformsNeedUpdate&&(Or.upload(x,i.uniformsList,f,H),e.uniformsNeedUpdate=!1),e.isSpriteMaterial&&d.setValue(x,"center",r.center),d.setValue(x,"modelViewMatrix",r.modelViewMatrix),d.setValue(x,"normalMatrix",r.normalMatrix),d.setValue(x,"modelMatrix",r.matrixWorld),v}function Hn(n,t){var e;n.opacity.value=t.opacity,t.color&&(n.diffuse.value=t.color),t.emissive&&n.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(n.map.value=t.map),t.alphaMap&&(n.alphaMap.value=t.alphaMap),t.specularMap&&(n.specularMap.value=t.specularMap),t.envMap&&(n.envMap.value=t.envMap,n.flipEnvMap.value=t.envMap&&t.envMap.isCubeTexture?-1:1,n.reflectivity.value=t.reflectivity,n.refractionRatio.value=t.refractionRatio,n.maxMipLevel.value=C.get(t.envMap).__maxMipLevel),t.lightMap&&(n.lightMap.value=t.lightMap,n.lightMapIntensity.value=t.lightMapIntensity),t.aoMap&&(n.aoMap.value=t.aoMap,n.aoMapIntensity.value=t.aoMapIntensity),t.map?e=t.map:t.specularMap?e=t.specularMap:t.displacementMap?e=t.displacementMap:t.normalMap?e=t.normalMap:t.bumpMap?e=t.bumpMap:t.roughnessMap?e=t.roughnessMap:t.metalnessMap?e=t.metalnessMap:t.alphaMap?e=t.alphaMap:t.emissiveMap&&(e=t.emissiveMap),void 0!==e&&(e.isWebGLRenderTarget&&(e=e.texture),!0===e.matrixAutoUpdate&&e.updateMatrix(),n.uvTransform.value.copy(e.matrix))}function Vn(n,t){n.specular.value=t.specular,n.shininess.value=Math.max(t.shininess,1e-4),t.emissiveMap&&(n.emissiveMap.value=t.emissiveMap),t.bumpMap&&(n.bumpMap.value=t.bumpMap,n.bumpScale.value=t.bumpScale,t.side===m&&(n.bumpScale.value*=-1)),t.normalMap&&(n.normalMap.value=t.normalMap,n.normalScale.value.copy(t.normalScale),t.side===m&&n.normalScale.value.negate()),t.displacementMap&&(n.displacementMap.value=t.displacementMap,n.displacementScale.value=t.displacementScale,n.displacementBias.value=t.displacementBias)}function Wn(n,t){n.roughness.value=t.roughness,n.metalness.value=t.metalness,t.roughnessMap&&(n.roughnessMap.value=t.roughnessMap),t.metalnessMap&&(n.metalnessMap.value=t.metalnessMap),t.emissiveMap&&(n.emissiveMap.value=t.emissiveMap),t.bumpMap&&(n.bumpMap.value=t.bumpMap,n.bumpScale.value=t.bumpScale,t.side===m&&(n.bumpScale.value*=-1)),t.normalMap&&(n.normalMap.value=t.normalMap,n.normalScale.value.copy(t.normalScale),t.side===m&&n.normalScale.value.negate()),t.displacementMap&&(n.displacementMap.value=t.displacementMap,n.displacementScale.value=t.displacementScale,n.displacementBias.value=t.displacementBias),t.envMap&&(n.envMapIntensity.value=t.envMapIntensity)}Bn.setAnimationLoop(function(n){Ln.isPresenting()||In&&In(n)}),"undefined"!=typeof window&&Bn.setContext(window),this.setAnimationLoop=function(n){In=n,Ln.setAnimationLoop(n),Bn.start()},this.render=function(n,t,e,r){if(t&&t.isCamera){if(!V){on.geometry=null,on.program=null,on.wireframe=!1,en=-1,an=null,!0===n.autoUpdate&&n.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),Ln.enabled&&(t=Ln.getCamera(t)),(y=B.get(n,t)).init(),n.onBeforeRender(H,n,t,e),Mn.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),yn.setFromMatrix(Mn),wn=this.localClippingEnabled,bn=xn.init(this.clippingPlanes,wn,t),(p=I.get(n,t)).init(),function n(t,e,r){if(!1===t.visible)return;var i=t.layers.test(e.layers);if(i)if(t.isLight)y.pushLight(t),t.castShadow&&y.pushShadow(t);else if(t.isSprite){if(!t.frustumCulled||yn.intersectsSprite(t)){r&&_n.setFromMatrixPosition(t.matrixWorld).applyMatrix4(Mn);var o=U.update(t),a=t.material;p.push(t,o,a,_n.z,null)}}else if(t.isImmediateRenderObject)r&&_n.setFromMatrixPosition(t.matrixWorld).applyMatrix4(Mn),p.push(t,null,t.material,_n.z,null);else if((t.isMesh||t.isLine||t.isPoints)&&(t.isSkinnedMesh&&t.skeleton.update(),!t.frustumCulled||yn.intersectsObject(t))){r&&_n.setFromMatrixPosition(t.matrixWorld).applyMatrix4(Mn);var o=U.update(t),a=t.material;if(Array.isArray(a))for(var l=o.groups,s=0,c=l.length;s<c;s++){var u=l[s],h=a[u.materialIndex];h&&h.visible&&p.push(t,o,h,_n.z,u)}else a.visible&&p.push(t,o,a,_n.z,null)}var v=t.children;for(var s=0,c=v.length;s<c;s++)n(v[s],e,r)}(n,t,H.sortObjects),!0===H.sortObjects&&p.sort(),bn&&xn.beginShadows();var i=y.state.shadowsArray;Pn.render(i,n,t),y.setupLights(t),bn&&xn.endShadows(),this.info.autoReset&&this.info.reset(),void 0===e&&(e=null),this.setRenderTarget(e),F.render(p,n,t,r);var o=p.opaque,a=p.transparent;if(n.overrideMaterial){var l=n.overrideMaterial;o.length&&Fn(o,n,t,l),a.length&&Fn(a,n,t,l)}else o.length&&Fn(o,n,t),a.length&&Fn(a,n,t);e&&R.updateRenderTargetMipmap(e),M.buffers.depth.setTest(!0),M.buffers.depth.setMask(!0),M.buffers.color.setMask(!0),M.setPolygonOffset(!1),n.onAfterRender(H,n,t),Ln.enabled&&Ln.submitFrame(),p=null,y=null}}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")},this.allocTextureUnit=function(){var n=hn;return n>=w.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+n+" texture units while this GPU supports only "+w.maxTextures),hn+=1,n},this.setTexture2D=function(){var n=!1;return function(t,e){t&&t.isWebGLRenderTarget&&(n||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),n=!0),t=t.texture),R.setTexture2D(t,e)}}(),this.setTexture=function(){var n=!1;return function(t,e){n||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),n=!0),R.setTexture2D(t,e)}}(),this.setTextureCube=function(){var n=!1;return function(t,e){t&&t.isWebGLRenderTargetCube&&(n||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),n=!0),t=t.texture),t&&t.isCubeTexture||Array.isArray(t.image)&&6===t.image.length?R.setTextureCube(t,e):R.setTextureCubeDynamic(t,e)}}(),this.setFramebuffer=function(n){$=n},this.getRenderTarget=function(){return nn},this.setRenderTarget=function(n){nn=n,n&&void 0===C.get(n).__webglFramebuffer&&R.setupRenderTarget(n);var t=$,e=!1;if(n){var r=C.get(n).__webglFramebuffer;n.isWebGLRenderTargetCube?(t=r[n.activeCubeFace],e=!0):t=r,sn.copy(n.viewport),cn.copy(n.scissor),un=n.scissorTest}else sn.copy(pn).multiplyScalar(fn),cn.copy(mn).multiplyScalar(fn),un=gn;if(tn!==t&&(x.bindFramebuffer(x.FRAMEBUFFER,t),tn=t),M.viewport(sn),M.scissor(cn),M.setScissorTest(un),e){var i=C.get(n.texture);x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_CUBE_MAP_POSITIVE_X+n.activeCubeFace,i.__webglTexture,n.activeMipMapLevel)}},this.readRenderTargetPixels=function(n,t,e,r,i,o){if(n&&n.isWebGLRenderTarget){var a=C.get(n).__webglFramebuffer;if(a){var l=!1;a!==tn&&(x.bindFramebuffer(x.FRAMEBUFFER,a),l=!0);try{var s=n.texture,c=s.format,u=s.type;if(c!==zn&&j.convert(c)!==x.getParameter(x.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(u===Sn||j.convert(u)===x.getParameter(x.IMPLEMENTATION_COLOR_READ_TYPE)||u===Rn&&(w.isWebGL2||b.get("OES_texture_float")||b.get("WEBGL_color_buffer_float"))||u===On&&(w.isWebGL2?b.get("EXT_color_buffer_float"):b.get("EXT_color_buffer_half_float"))))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");x.checkFramebufferStatus(x.FRAMEBUFFER)===x.FRAMEBUFFER_COMPLETE?t>=0&&t<=n.width-r&&e>=0&&e<=n.height-i&&x.readPixels(t,e,r,i,j.convert(c),j.convert(u),o):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{l&&x.bindFramebuffer(x.FRAMEBUFFER,tn)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(n,t,e){var r=t.image.width,i=t.image.height,o=j.convert(t.format);this.setTexture2D(t,0),x.copyTexImage2D(x.TEXTURE_2D,e||0,o,n.x,n.y,r,i,0)},this.copyTextureToTexture=function(n,t,e,r){var i=t.image.width,o=t.image.height,a=j.convert(e.format),l=j.convert(e.type);this.setTexture2D(e,0),t.isDataTexture?x.texSubImage2D(x.TEXTURE_2D,r||0,n.x,n.y,i,o,a,l,t.image.data):x.texSubImage2D(x.TEXTURE_2D,r||0,n.x,n.y,a,l,t.image)}}function li(n,t){this.name="",this.color=new ie(n),this.density=void 0!==t?t:25e-5}function si(n,t,e){this.name="",this.color=new ie(n),this.near=void 0!==t?t:1,this.far=void 0!==e?e:1e3}function ci(){ve.call(this),this.type="Scene",this.background=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0}function ui(n,t){this.array=n,this.stride=t,this.count=void 0!==n?n.length/t:0,this.dynamic=!1,this.updateRange={offset:0,count:-1},this.version=0}function hi(n,t,e,r){this.data=n,this.itemSize=t,this.offset=e,this.normalized=!0===r}function vi(n){Be.call(this),this.type="SpriteMaterial",this.color=new ie(16777215),this.map=null,this.rotation=0,this.lights=!1,this.transparent=!0,this.setValues(n)}function di(n){if(ve.call(this),this.type="Sprite",void 0===qr){qr=new Re;var t=new ui(new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),5);qr.setIndex([0,1,2,0,2,3]),qr.addAttribute("position",new hi(t,3,0,!1)),qr.addAttribute("uv",new hi(t,2,3,!1))}this.geometry=qr,this.material=void 0!==n?n:new vi,this.center=new zt(.5,.5)}function fi(){ve.call(this),this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function pi(n,t){if(n=n||[],this.bones=n.slice(0),this.boneMatrices=new Float32Array(16*this.bones.length),void 0===t)this.calculateInverses();else if(this.bones.length===t.length)this.boneInverses=t.slice(0);else{console.warn("THREE.Skeleton boneInverses is the wrong length."),this.boneInverses=[];for(var e=0,r=this.bones.length;e<r;e++)this.boneInverses.push(new Gt)}}function mi(){ve.call(this),this.type="Bone"}function gi(n,t){je.call(this,n,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Gt,this.bindMatrixInverse=new Gt;var e=new pi(this.initBones());this.bind(e,this.matrixWorld),this.normalizeSkinWeights()}function yi(n){Be.call(this),this.type="LineBasicMaterial",this.color=new ie(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.lights=!1,this.setValues(n)}function xi(n,t,e){1===e&&console.error("THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead."),ve.call(this),this.type="Line",this.geometry=void 0!==n?n:new Re,this.material=void 0!==t?t:new yi({color:16777215*Math.random()})}function bi(n,t){xi.call(this,n,t),this.type="LineSegments"}function wi(n,t){xi.call(this,n,t),this.type="LineLoop"}function Mi(n){Be.call(this),this.type="PointsMaterial",this.color=new ie(16777215),this.map=null,this.size=1,this.sizeAttenuation=!0,this.morphTargets=!1,this.lights=!1,this.setValues(n)}function _i(n,t){ve.call(this),this.type="Points",this.geometry=void 0!==n?n:new Re,this.material=void 0!==t?t:new Mi({color:16777215*Math.random()})}function Ei(n,t,e,r,i,o,a,l,s){Xt.call(this,n,t,e,r,i,o,a,l,s),this.generateMipmaps=!1}function Si(n,t,e,r,i,o,a,l,s,c,u,h){Xt.call(this,null,o,a,l,s,c,r,i,u,h),this.image={width:t,height:e},this.mipmaps=n,this.flipY=!1,this.generateMipmaps=!1}function Ti(n,t,e,r,i,o,a,l,s){Xt.call(this,n,t,e,r,i,o,a,l,s),this.needsUpdate=!0}function Ai(n,t,e,r,i,o,a,l,s,c){if((c=void 0!==c?c:Hn)!==Hn&&c!==Vn)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===e&&c===Hn&&(e=Ln),void 0===e&&c===Vn&&(e=In),Xt.call(this,null,r,i,o,a,l,c,e,s),this.image={width:n,height:t},this.magFilter=void 0!==a?a:xn,this.minFilter=void 0!==l?l:xn,this.flipY=!1,this.generateMipmaps=!1}function Li(n){Re.call(this),this.type="WireframeGeometry";var t,e,r,i,o,a,l,s,c,u,h=[],v=[0,0],d={},f=["a","b","c"];if(n&&n.isGeometry){var p=n.faces;for(t=0,r=p.length;t<r;t++){var m=p[t];for(e=0;e<3;e++)l=m[f[e]],s=m[f[(e+1)%3]],v[0]=Math.min(l,s),v[1]=Math.max(l,s),void 0===d[c=v[0]+","+v[1]]&&(d[c]={index1:v[0],index2:v[1]})}for(c in d)a=d[c],u=n.vertices[a.index1],h.push(u.x,u.y,u.z),u=n.vertices[a.index2],h.push(u.x,u.y,u.z)}else if(n&&n.isBufferGeometry){var g,y,x,b,w,M,_;if(u=new jt,null!==n.index){for(g=n.attributes.position,y=n.index,0===(x=n.groups).length&&(x=[{start:0,count:y.count,materialIndex:0}]),i=0,o=x.length;i<o;++i)for(t=w=(b=x[i]).start,r=w+b.count;t<r;t+=3)for(e=0;e<3;e++)l=y.getX(t+e),s=y.getX(t+(e+1)%3),v[0]=Math.min(l,s),v[1]=Math.max(l,s),void 0===d[c=v[0]+","+v[1]]&&(d[c]={index1:v[0],index2:v[1]});for(c in d)a=d[c],u.fromBufferAttribute(g,a.index1),h.push(u.x,u.y,u.z),u.fromBufferAttribute(g,a.index2),h.push(u.x,u.y,u.z)}else for(t=0,r=(g=n.attributes.position).count/3;t<r;t++)for(e=0;e<3;e++)M=3*t+e,u.fromBufferAttribute(g,M),h.push(u.x,u.y,u.z),_=3*t+(e+1)%3,u.fromBufferAttribute(g,_),h.push(u.x,u.y,u.z)}this.addAttribute("position",new Te(h,3))}function Pi(n,t,e){ge.call(this),this.type="ParametricGeometry",this.parameters={func:n,slices:t,stacks:e},this.fromBufferGeometry(new Ci(n,t,e)),this.mergeVertices()}function Ci(n,t,e){Re.call(this),this.type="ParametricBufferGeometry",this.parameters={func:n,slices:t,stacks:e};var r,i,o=[],a=[],l=[],s=[],c=new jt,u=new jt,h=new jt,v=new jt,d=new jt;n.length<3&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.");var f=t+1;for(r=0;r<=e;r++){var p=r/e;for(i=0;i<=t;i++){var m=i/t;n(m,p,u),a.push(u.x,u.y,u.z),m-1e-5>=0?(n(m-1e-5,p,h),v.subVectors(u,h)):(n(m+1e-5,p,h),v.subVectors(h,u)),p-1e-5>=0?(n(m,p-1e-5,h),d.subVectors(u,h)):(n(m,p+1e-5,h),d.subVectors(h,u)),c.crossVectors(v,d).normalize(),l.push(c.x,c.y,c.z),s.push(m,p)}}for(r=0;r<e;r++)for(i=0;i<t;i++){var g=r*f+i,y=r*f+i+1,x=(r+1)*f+i+1,b=(r+1)*f+i;o.push(g,y,b),o.push(y,x,b)}this.setIndex(o),this.addAttribute("position",new Te(a,3)),this.addAttribute("normal",new Te(l,3)),this.addAttribute("uv",new Te(s,2))}function Ri(n,t,e,r){ge.call(this),this.type="PolyhedronGeometry",this.parameters={vertices:n,indices:t,radius:e,detail:r},this.fromBufferGeometry(new Oi(n,t,e,r)),this.mergeVertices()}function Oi(n,t,e,r){Re.call(this),this.type="PolyhedronBufferGeometry",this.parameters={vertices:n,indices:t,radius:e,detail:r},e=e||1;var i=[],o=[];function a(n,t,e,r){var i,o,a=Math.pow(2,r),s=[];for(i=0;i<=a;i++){s[i]=[];var c=n.clone().lerp(e,i/a),u=t.clone().lerp(e,i/a),h=a-i;for(o=0;o<=h;o++)s[i][o]=0===o&&i===a?c:c.clone().lerp(u,o/h)}for(i=0;i<a;i++)for(o=0;o<2*(a-i)-1;o++){var v=Math.floor(o/2);o%2==0?(l(s[i][v+1]),l(s[i+1][v]),l(s[i][v])):(l(s[i][v+1]),l(s[i+1][v+1]),l(s[i+1][v]))}}function l(n){i.push(n.x,n.y,n.z)}function s(t,e){var r=3*t;e.x=n[r+0],e.y=n[r+1],e.z=n[r+2]}function c(n,t,e,r){r<0&&1===n.x&&(o[t]=n.x-1),0===e.x&&0===e.z&&(o[t]=r/2/Math.PI+.5)}function u(n){return Math.atan2(n.z,-n.x)}function h(n){return Math.atan2(-n.y,Math.sqrt(n.x*n.x+n.z*n.z))}!function(n){for(var e=new jt,r=new jt,i=new jt,o=0;o<t.length;o+=3)s(t[o+0],e),s(t[o+1],r),s(t[o+2],i),a(e,r,i,n)}(r=r||0),function(n){for(var t=new jt,e=0;e<i.length;e+=3)t.x=i[e+0],t.y=i[e+1],t.z=i[e+2],t.normalize().multiplyScalar(n),i[e+0]=t.x,i[e+1]=t.y,i[e+2]=t.z}(e),function(){for(var n=new jt,t=0;t<i.length;t+=3){n.x=i[t+0],n.y=i[t+1],n.z=i[t+2];var e=u(n)/2/Math.PI+.5,r=h(n)/Math.PI+.5;o.push(e,1-r)}(function(){for(var n=new jt,t=new jt,e=new jt,r=new jt,a=new zt,l=new zt,s=new zt,h=0,v=0;h<i.length;h+=9,v+=6){n.set(i[h+0],i[h+1],i[h+2]),t.set(i[h+3],i[h+4],i[h+5]),e.set(i[h+6],i[h+7],i[h+8]),a.set(o[v+0],o[v+1]),l.set(o[v+2],o[v+3]),s.set(o[v+4],o[v+5]),r.copy(n).add(t).add(e).divideScalar(3);var d=u(r);c(a,v+0,n,d),c(l,v+2,t,d),c(s,v+4,e,d)}})(),function(){for(var n=0;n<o.length;n+=6){var t=o[n+0],e=o[n+2],r=o[n+4],i=Math.max(t,e,r),a=Math.min(t,e,r);i>.9&&a<.1&&(t<.2&&(o[n+0]+=1),e<.2&&(o[n+2]+=1),r<.2&&(o[n+4]+=1))}}()}(),this.addAttribute("position",new Te(i,3)),this.addAttribute("normal",new Te(i.slice(),3)),this.addAttribute("uv",new Te(o,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}function Di(n,t){ge.call(this),this.type="TetrahedronGeometry",this.parameters={radius:n,detail:t},this.fromBufferGeometry(new Ui(n,t)),this.mergeVertices()}function Ui(n,t){Oi.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],n,t),this.type="TetrahedronBufferGeometry",this.parameters={radius:n,detail:t}}function Ni(n,t){ge.call(this),this.type="OctahedronGeometry",this.parameters={radius:n,detail:t},this.fromBufferGeometry(new Ii(n,t)),this.mergeVertices()}function Ii(n,t){Oi.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],n,t),this.type="OctahedronBufferGeometry",this.parameters={radius:n,detail:t}}function Bi(n,t){ge.call(this),this.type="IcosahedronGeometry",this.parameters={radius:n,detail:t},this.fromBufferGeometry(new Fi(n,t)),this.mergeVertices()}function Fi(n,t){var e=(1+Math.sqrt(5))/2,r=[-1,e,0,1,e,0,-1,-e,0,1,-e,0,0,-1,e,0,1,e,0,-1,-e,0,1,-e,e,0,-1,e,0,1,-e,0,-1,-e,0,1];Oi.call(this,r,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],n,t),this.type="IcosahedronBufferGeometry",this.parameters={radius:n,detail:t}}function zi(n,t){ge.call(this),this.type="DodecahedronGeometry",this.parameters={radius:n,detail:t},this.fromBufferGeometry(new Gi(n,t)),this.mergeVertices()}function Gi(n,t){var e=(1+Math.sqrt(5))/2,r=1/e,i=[-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,-r,-e,0,-r,e,0,r,-e,0,r,e,-r,-e,0,-r,e,0,r,-e,0,r,e,0,-e,0,-r,e,0,-r,-e,0,r,e,0,r];Oi.call(this,i,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],n,t),this.type="DodecahedronBufferGeometry",this.parameters={radius:n,detail:t}}function ki(n,t,e,r,i,o){ge.call(this),this.type="TubeGeometry",this.parameters={path:n,tubularSegments:t,radius:e,radialSegments:r,closed:i},void 0!==o&&console.warn("THREE.TubeGeometry: taper has been removed.");var a=new ji(n,t,e,r,i);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals,this.fromBufferGeometry(a),this.mergeVertices()}function ji(n,t,e,r,i){Re.call(this),this.type="TubeBufferGeometry",this.parameters={path:n,tubularSegments:t,radius:e,radialSegments:r,closed:i},t=t||64,e=e||1,r=r||8,i=i||!1;var o=n.computeFrenetFrames(t,i);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals;var a,l,s=new jt,c=new jt,u=new zt,h=new jt,v=[],d=[],f=[],p=[];function m(i){h=n.getPointAt(i/t,h);var a=o.normals[i],u=o.binormals[i];for(l=0;l<=r;l++){var f=l/r*Math.PI*2,p=Math.sin(f),m=-Math.cos(f);c.x=m*a.x+p*u.x,c.y=m*a.y+p*u.y,c.z=m*a.z+p*u.z,c.normalize(),d.push(c.x,c.y,c.z),s.x=h.x+e*c.x,s.y=h.y+e*c.y,s.z=h.z+e*c.z,v.push(s.x,s.y,s.z)}}!function(){for(a=0;a<t;a++)m(a);m(!1===i?t:0),function(){for(a=0;a<=t;a++)for(l=0;l<=r;l++)u.x=a/t,u.y=l/r,f.push(u.x,u.y)}(),function(){for(l=1;l<=t;l++)for(a=1;a<=r;a++){var n=(r+1)*(l-1)+(a-1),e=(r+1)*l+(a-1),i=(r+1)*l+a,o=(r+1)*(l-1)+a;p.push(n,e,o),p.push(e,i,o)}}()}(),this.setIndex(p),this.addAttribute("position",new Te(v,3)),this.addAttribute("normal",new Te(d,3)),this.addAttribute("uv",new Te(f,2))}function Hi(n,t,e,r,i,o,a){ge.call(this),this.type="TorusKnotGeometry",this.parameters={radius:n,tube:t,tubularSegments:e,radialSegments:r,p:i,q:o},void 0!==a&&console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead."),this.fromBufferGeometry(new Vi(n,t,e,r,i,o)),this.mergeVertices()}function Vi(n,t,e,r,i,o){Re.call(this),this.type="TorusKnotBufferGeometry",this.parameters={radius:n,tube:t,tubularSegments:e,radialSegments:r,p:i,q:o},n=n||1,t=t||.4,e=Math.floor(e)||64,r=Math.floor(r)||8,i=i||2,o=o||3;var a,l,s=[],c=[],u=[],h=[],v=new jt,d=new jt,f=new jt,p=new jt,m=new jt,g=new jt,y=new jt;for(a=0;a<=e;++a){var x=a/e*i*Math.PI*2;for(A(x,i,o,n,f),A(x+.01,i,o,n,p),g.subVectors(p,f),y.addVectors(p,f),m.crossVectors(g,y),y.crossVectors(m,g),m.normalize(),y.normalize(),l=0;l<=r;++l){var b=l/r*Math.PI*2,w=-t*Math.cos(b),M=t*Math.sin(b);v.x=f.x+(w*y.x+M*m.x),v.y=f.y+(w*y.y+M*m.y),v.z=f.z+(w*y.z+M*m.z),c.push(v.x,v.y,v.z),d.subVectors(v,f).normalize(),u.push(d.x,d.y,d.z),h.push(a/e),h.push(l/r)}}for(l=1;l<=e;l++)for(a=1;a<=r;a++){var _=(r+1)*(l-1)+(a-1),E=(r+1)*l+(a-1),S=(r+1)*l+a,T=(r+1)*(l-1)+a;s.push(_,E,T),s.push(E,S,T)}function A(n,t,e,r,i){var o=Math.cos(n),a=Math.sin(n),l=e/t*n,s=Math.cos(l);i.x=r*(2+s)*.5*o,i.y=r*(2+s)*a*.5,i.z=r*Math.sin(l)*.5}this.setIndex(s),this.addAttribute("position",new Te(c,3)),this.addAttribute("normal",new Te(u,3)),this.addAttribute("uv",new Te(h,2))}function Wi(n,t,e,r,i){ge.call(this),this.type="TorusGeometry",this.parameters={radius:n,tube:t,radialSegments:e,tubularSegments:r,arc:i},this.fromBufferGeometry(new Xi(n,t,e,r,i)),this.mergeVertices()}function Xi(n,t,e,r,i){Re.call(this),this.type="TorusBufferGeometry",this.parameters={radius:n,tube:t,radialSegments:e,tubularSegments:r,arc:i},n=n||1,t=t||.4,e=Math.floor(e)||8,r=Math.floor(r)||6,i=i||2*Math.PI;var o,a,l=[],s=[],c=[],u=[],h=new jt,v=new jt,d=new jt;for(o=0;o<=e;o++)for(a=0;a<=r;a++){var f=a/r*i,p=o/e*Math.PI*2;v.x=(n+t*Math.cos(p))*Math.cos(f),v.y=(n+t*Math.cos(p))*Math.sin(f),v.z=t*Math.sin(p),s.push(v.x,v.y,v.z),h.x=n*Math.cos(f),h.y=n*Math.sin(f),d.subVectors(v,h).normalize(),c.push(d.x,d.y,d.z),u.push(a/r),u.push(o/e)}for(o=1;o<=e;o++)for(a=1;a<=r;a++){var m=(r+1)*o+a-1,g=(r+1)*(o-1)+a-1,y=(r+1)*(o-1)+a,x=(r+1)*o+a;l.push(m,g,x),l.push(g,y,x)}this.setIndex(l),this.addAttribute("position",new Te(s,3)),this.addAttribute("normal",new Te(c,3)),this.addAttribute("uv",new Te(u,2))}Kr.prototype=Object.create(Be.prototype),Kr.prototype.constructor=Kr,Kr.prototype.isMeshDepthMaterial=!0,Kr.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.depthPacking=n.depthPacking,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this.map=n.map,this.alphaMap=n.alphaMap,this.displacementMap=n.displacementMap,this.displacementScale=n.displacementScale,this.displacementBias=n.displacementBias,this.wireframe=n.wireframe,this.wireframeLinewidth=n.wireframeLinewidth,this},Qr.prototype=Object.create(Be.prototype),Qr.prototype.constructor=Qr,Qr.prototype.isMeshDistanceMaterial=!0,Qr.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.referencePosition.copy(n.referencePosition),this.nearDistance=n.nearDistance,this.farDistance=n.farDistance,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this.map=n.map,this.alphaMap=n.alphaMap,this.displacementMap=n.displacementMap,this.displacementScale=n.displacementScale,this.displacementBias=n.displacementBias,this},ei.prototype=Object.assign(Object.create(ve.prototype),{constructor:ei,isGroup:!0}),ri.prototype=Object.assign(Object.create(de.prototype),{constructor:ri,isPerspectiveCamera:!0,copy:function(n,t){return de.prototype.copy.call(this,n,t),this.fov=n.fov,this.zoom=n.zoom,this.near=n.near,this.far=n.far,this.focus=n.focus,this.aspect=n.aspect,this.view=null===n.view?null:Object.assign({},n.view),this.filmGauge=n.filmGauge,this.filmOffset=n.filmOffset,this},setFocalLength:function(n){var t=.5*this.getFilmHeight()/n;this.fov=2*Ft.RAD2DEG*Math.atan(t),this.updateProjectionMatrix()},getFocalLength:function(){var n=Math.tan(.5*Ft.DEG2RAD*this.fov);return.5*this.getFilmHeight()/n},getEffectiveFOV:function(){return 2*Ft.RAD2DEG*Math.atan(Math.tan(.5*Ft.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(n,t,e,r,i,o){this.aspect=n/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=n,this.view.fullHeight=t,this.view.offsetX=e,this.view.offsetY=r,this.view.width=i,this.view.height=o,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var n=this.near,t=n*Math.tan(.5*Ft.DEG2RAD*this.fov)/this.zoom,e=2*t,r=this.aspect*e,i=-.5*r,o=this.view;if(null!==this.view&&this.view.enabled){var a=o.fullWidth,l=o.fullHeight;i+=o.offsetX*r/a,t-=o.offsetY*e/l,r*=o.width/a,e*=o.height/l}var s=this.filmOffset;0!==s&&(i+=n*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(i,i+r,t,t-e,n,this.far)},toJSON:function(n){var t=ve.prototype.toJSON.call(this,n);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}),ii.prototype=Object.assign(Object.create(ri.prototype),{constructor:ii,isArrayCamera:!0}),li.prototype.isFogExp2=!0,li.prototype.clone=function(){return new li(this.color,this.density)},li.prototype.toJSON=function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}},si.prototype.isFog=!0,si.prototype.clone=function(){return new si(this.color,this.near,this.far)},si.prototype.toJSON=function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}},ci.prototype=Object.assign(Object.create(ve.prototype),{constructor:ci,copy:function(n,t){return ve.prototype.copy.call(this,n,t),null!==n.background&&(this.background=n.background.clone()),null!==n.fog&&(this.fog=n.fog.clone()),null!==n.overrideMaterial&&(this.overrideMaterial=n.overrideMaterial.clone()),this.autoUpdate=n.autoUpdate,this.matrixAutoUpdate=n.matrixAutoUpdate,this},toJSON:function(n){var t=ve.prototype.toJSON.call(this,n);return null!==this.background&&(t.object.background=this.background.toJSON(n)),null!==this.fog&&(t.object.fog=this.fog.toJSON()),t}}),Object.defineProperty(ui.prototype,"needsUpdate",{set:function(n){!0===n&&this.version++}}),Object.assign(ui.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setArray:function(n){if(Array.isArray(n))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");return this.count=void 0!==n?n.length/this.stride:0,this.array=n,this},setDynamic:function(n){return this.dynamic=n,this},copy:function(n){return this.array=new n.array.constructor(n.array),this.count=n.count,this.stride=n.stride,this.dynamic=n.dynamic,this},copyAt:function(n,t,e){n*=this.stride,e*=t.stride;for(var r=0,i=this.stride;r<i;r++)this.array[n+r]=t.array[e+r];return this},set:function(n,t){return void 0===t&&(t=0),this.array.set(n,t),this},clone:function(){return(new this.constructor).copy(this)},onUpload:function(n){return this.onUploadCallback=n,this}}),Object.defineProperties(hi.prototype,{count:{get:function(){return this.data.count}},array:{get:function(){return this.data.array}}}),Object.assign(hi.prototype,{isInterleavedBufferAttribute:!0,setX:function(n,t){return this.data.array[n*this.data.stride+this.offset]=t,this},setY:function(n,t){return this.data.array[n*this.data.stride+this.offset+1]=t,this},setZ:function(n,t){return this.data.array[n*this.data.stride+this.offset+2]=t,this},setW:function(n,t){return this.data.array[n*this.data.stride+this.offset+3]=t,this},getX:function(n){return this.data.array[n*this.data.stride+this.offset]},getY:function(n){return this.data.array[n*this.data.stride+this.offset+1]},getZ:function(n){return this.data.array[n*this.data.stride+this.offset+2]},getW:function(n){return this.data.array[n*this.data.stride+this.offset+3]},setXY:function(n,t,e){return n=n*this.data.stride+this.offset,this.data.array[n+0]=t,this.data.array[n+1]=e,this},setXYZ:function(n,t,e,r){return n=n*this.data.stride+this.offset,this.data.array[n+0]=t,this.data.array[n+1]=e,this.data.array[n+2]=r,this},setXYZW:function(n,t,e,r,i){return n=n*this.data.stride+this.offset,this.data.array[n+0]=t,this.data.array[n+1]=e,this.data.array[n+2]=r,this.data.array[n+3]=i,this}}),vi.prototype=Object.create(Be.prototype),vi.prototype.constructor=vi,vi.prototype.isSpriteMaterial=!0,vi.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.color.copy(n.color),this.map=n.map,this.rotation=n.rotation,this},di.prototype=Object.assign(Object.create(ve.prototype),{constructor:di,isSprite:!0,raycast:function(){var n=new jt,t=new jt,e=new jt,r=new zt,i=new zt,o=new Gt,a=new jt,l=new jt,s=new jt;function c(n,t,e,a,l,s){r.subVectors(n,e).addScalar(.5).multiply(a),void 0!==l?(i.x=s*r.x-l*r.y,i.y=l*r.x+s*r.y):i.copy(r),n.copy(t),n.x+=i.x,n.y+=i.y,n.applyMatrix4(o)}return function(r,i){t.setFromMatrixScale(this.matrixWorld),o.getInverse(this.modelViewMatrix).premultiply(this.matrixWorld),e.setFromMatrixPosition(this.modelViewMatrix);var u,h,v=this.material.rotation;0!==v&&(h=Math.cos(v),u=Math.sin(v));var d=this.center;c(a.set(-.5,-.5,0),e,d,t,u,h),c(l.set(.5,-.5,0),e,d,t,u,h),c(s.set(.5,.5,0),e,d,t,u,h);var f=r.ray.intersectTriangle(a,l,s,!1,n);if(null!==f||(c(l.set(-.5,.5,0),e,d,t,u,h),null!==(f=r.ray.intersectTriangle(a,s,l,!1,n)))){var p=r.ray.origin.distanceTo(n);p<r.near||p>r.far||i.push({distance:p,point:n.clone(),face:null,object:this})}}}(),clone:function(){return new this.constructor(this.material).copy(this)},copy:function(n){return ve.prototype.copy.call(this,n),void 0!==n.center&&this.center.copy(n.center),this}}),fi.prototype=Object.assign(Object.create(ve.prototype),{constructor:fi,copy:function(n){ve.prototype.copy.call(this,n,!1);for(var t=n.levels,e=0,r=t.length;e<r;e++){var i=t[e];this.addLevel(i.object.clone(),i.distance)}return this},addLevel:function(n,t){void 0===t&&(t=0),t=Math.abs(t);for(var e=this.levels,r=0;r<e.length&&!(t<e[r].distance);r++);e.splice(r,0,{distance:t,object:n}),this.add(n)},getObjectForDistance:function(n){for(var t=this.levels,e=1,r=t.length;e<r&&!(n<t[e].distance);e++);return t[e-1].object},raycast:function(){var n=new jt;return function(t,e){n.setFromMatrixPosition(this.matrixWorld);var r=t.ray.origin.distanceTo(n);this.getObjectForDistance(r).raycast(t,e)}}(),update:function(){var n=new jt,t=new jt;return function(e){var r=this.levels;if(r.length>1){n.setFromMatrixPosition(e.matrixWorld),t.setFromMatrixPosition(this.matrixWorld);var i=n.distanceTo(t);r[0].object.visible=!0;for(var o=1,a=r.length;o<a&&i>=r[o].distance;o++)r[o-1].object.visible=!1,r[o].object.visible=!0;for(;o<a;o++)r[o].object.visible=!1}}}(),toJSON:function(n){var t=ve.prototype.toJSON.call(this,n);t.object.levels=[];for(var e=this.levels,r=0,i=e.length;r<i;r++){var o=e[r];t.object.levels.push({object:o.object.uuid,distance:o.distance})}return t}}),Object.assign(pi.prototype,{calculateInverses:function(){this.boneInverses=[];for(var n=0,t=this.bones.length;n<t;n++){var e=new Gt;this.bones[n]&&e.getInverse(this.bones[n].matrixWorld),this.boneInverses.push(e)}},pose:function(){var n,t,e;for(t=0,e=this.bones.length;t<e;t++)(n=this.bones[t])&&n.matrixWorld.getInverse(this.boneInverses[t]);for(t=0,e=this.bones.length;t<e;t++)(n=this.bones[t])&&(n.parent&&n.parent.isBone?(n.matrix.getInverse(n.parent.matrixWorld),n.matrix.multiply(n.matrixWorld)):n.matrix.copy(n.matrixWorld),n.matrix.decompose(n.position,n.quaternion,n.scale))},update:function(){var n=new Gt,t=new Gt;return function(){for(var e=this.bones,r=this.boneInverses,i=this.boneMatrices,o=this.boneTexture,a=0,l=e.length;a<l;a++){var s=e[a]?e[a].matrixWorld:t;n.multiplyMatrices(s,r[a]),n.toArray(i,16*a)}void 0!==o&&(o.needsUpdate=!0)}}(),clone:function(){return new pi(this.bones,this.boneInverses)},getBoneByName:function(n){for(var t=0,e=this.bones.length;t<e;t++){var r=this.bones[t];if(r.name===n)return r}}}),mi.prototype=Object.assign(Object.create(ve.prototype),{constructor:mi,isBone:!0}),gi.prototype=Object.assign(Object.create(je.prototype),{constructor:gi,isSkinnedMesh:!0,initBones:function(){var n,t,e,r,i=[];if(this.geometry&&void 0!==this.geometry.bones){for(e=0,r=this.geometry.bones.length;e<r;e++)t=this.geometry.bones[e],n=new mi,i.push(n),n.name=t.name,n.position.fromArray(t.pos),n.quaternion.fromArray(t.rotq),void 0!==t.scl&&n.scale.fromArray(t.scl);for(e=0,r=this.geometry.bones.length;e<r;e++)-1!==(t=this.geometry.bones[e]).parent&&null!==t.parent&&void 0!==i[t.parent]?i[t.parent].add(i[e]):this.add(i[e])}return this.updateMatrixWorld(!0),i},bind:function(n,t){this.skeleton=n,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.getInverse(t)},pose:function(){this.skeleton.pose()},normalizeSkinWeights:function(){var n,t;if(this.geometry&&this.geometry.isGeometry)for(t=0;t<this.geometry.skinWeights.length;t++){var e=this.geometry.skinWeights[t];(n=1/e.manhattanLength())!==1/0?e.multiplyScalar(n):e.set(1,0,0,0)}else if(this.geometry&&this.geometry.isBufferGeometry){var r=new qt,i=this.geometry.attributes.skinWeight;for(t=0;t<i.count;t++)r.x=i.getX(t),r.y=i.getY(t),r.z=i.getZ(t),r.w=i.getW(t),(n=1/r.manhattanLength())!==1/0?r.multiplyScalar(n):r.set(1,0,0,0),i.setXYZW(t,r.x,r.y,r.z,r.w)}},updateMatrixWorld:function(n){je.prototype.updateMatrixWorld.call(this,n),"attached"===this.bindMode?this.bindMatrixInverse.getInverse(this.matrixWorld):"detached"===this.bindMode?this.bindMatrixInverse.getInverse(this.bindMatrix):console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),yi.prototype=Object.create(Be.prototype),yi.prototype.constructor=yi,yi.prototype.isLineBasicMaterial=!0,yi.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.color.copy(n.color),this.linewidth=n.linewidth,this.linecap=n.linecap,this.linejoin=n.linejoin,this},xi.prototype=Object.assign(Object.create(ve.prototype),{constructor:xi,isLine:!0,computeLineDistances:function(){var n=new jt,t=new jt;return function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var r=e.attributes.position,i=[0],o=1,a=r.count;o<a;o++)n.fromBufferAttribute(r,o-1),t.fromBufferAttribute(r,o),i[o]=i[o-1],i[o]+=n.distanceTo(t);e.addAttribute("lineDistance",new Te(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(e.isGeometry){var l=e.vertices;(i=e.lineDistances)[0]=0;for(o=1,a=l.length;o<a;o++)i[o]=i[o-1],i[o]+=l[o-1].distanceTo(l[o])}return this}}(),raycast:function(){var n=new Gt,t=new Ge,e=new Qt;return function(r,i){var o=r.linePrecision,a=o*o,l=this.geometry,s=this.matrixWorld;if(null===l.boundingSphere&&l.computeBoundingSphere(),e.copy(l.boundingSphere),e.applyMatrix4(s),!1!==r.ray.intersectsSphere(e)){n.getInverse(s),t.copy(r.ray).applyMatrix4(n);var c=new jt,u=new jt,h=new jt,v=new jt,d=this&&this.isLineSegments?2:1;if(l.isBufferGeometry){var f=l.index,p=l.attributes.position.array;if(null!==f)for(var m=f.array,g=0,y=m.length-1;g<y;g+=d){var x=m[g],b=m[g+1];if(c.fromArray(p,3*x),u.fromArray(p,3*b),!(t.distanceSqToSegment(c,u,v,h)>a))v.applyMatrix4(this.matrixWorld),(_=r.ray.origin.distanceTo(v))<r.near||_>r.far||i.push({distance:_,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}else for(g=0,y=p.length/3-1;g<y;g+=d){if(c.fromArray(p,3*g),u.fromArray(p,3*g+3),!(t.distanceSqToSegment(c,u,v,h)>a))v.applyMatrix4(this.matrixWorld),(_=r.ray.origin.distanceTo(v))<r.near||_>r.far||i.push({distance:_,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}}else if(l.isGeometry){var w=l.vertices,M=w.length;for(g=0;g<M-1;g+=d){var _;if(!(t.distanceSqToSegment(w[g],w[g+1],v,h)>a))v.applyMatrix4(this.matrixWorld),(_=r.ray.origin.distanceTo(v))<r.near||_>r.far||i.push({distance:_,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this})}}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),bi.prototype=Object.assign(Object.create(xi.prototype),{constructor:bi,isLineSegments:!0,computeLineDistances:function(){var n=new jt,t=new jt;return function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var r=e.attributes.position,i=[],o=0,a=r.count;o<a;o+=2)n.fromBufferAttribute(r,o),t.fromBufferAttribute(r,o+1),i[o]=0===o?0:i[o-1],i[o+1]=i[o]+n.distanceTo(t);e.addAttribute("lineDistance",new Te(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(e.isGeometry){var l=e.vertices;for(i=e.lineDistances,o=0,a=l.length;o<a;o+=2)n.copy(l[o]),t.copy(l[o+1]),i[o]=0===o?0:i[o-1],i[o+1]=i[o]+n.distanceTo(t)}return this}}()}),wi.prototype=Object.assign(Object.create(xi.prototype),{constructor:wi,isLineLoop:!0}),Mi.prototype=Object.create(Be.prototype),Mi.prototype.constructor=Mi,Mi.prototype.isPointsMaterial=!0,Mi.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.color.copy(n.color),this.map=n.map,this.size=n.size,this.sizeAttenuation=n.sizeAttenuation,this.morphTargets=n.morphTargets,this},_i.prototype=Object.assign(Object.create(ve.prototype),{constructor:_i,isPoints:!0,raycast:function(){var n=new Gt,t=new Ge,e=new Qt;return function(r,i){var o=this,a=this.geometry,l=this.matrixWorld,s=r.params.Points.threshold;if(null===a.boundingSphere&&a.computeBoundingSphere(),e.copy(a.boundingSphere),e.applyMatrix4(l),e.radius+=s,!1!==r.ray.intersectsSphere(e)){n.getInverse(l),t.copy(r.ray).applyMatrix4(n);var c=s/((this.scale.x+this.scale.y+this.scale.z)/3),u=c*c,h=new jt,v=new jt;if(a.isBufferGeometry){var d=a.index,f=a.attributes.position.array;if(null!==d)for(var p=d.array,m=0,g=p.length;m<g;m++){var y=p[m];h.fromArray(f,3*y),w(h,y)}else{m=0;for(var x=f.length/3;m<x;m++)h.fromArray(f,3*m),w(h,m)}}else{var b=a.vertices;for(m=0,x=b.length;m<x;m++)w(b[m],m)}}function w(n,e){var a=t.distanceSqToPoint(n);if(a<u){t.closestPointToPoint(n,v),v.applyMatrix4(l);var s=r.ray.origin.distanceTo(v);if(s<r.near||s>r.far)return;i.push({distance:s,distanceToRay:Math.sqrt(a),point:v.clone(),index:e,face:null,object:o})}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),Ei.prototype=Object.assign(Object.create(Xt.prototype),{constructor:Ei,isVideoTexture:!0,update:function(){var n=this.image;n.readyState>=n.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),Si.prototype=Object.create(Xt.prototype),Si.prototype.constructor=Si,Si.prototype.isCompressedTexture=!0,Ti.prototype=Object.create(Xt.prototype),Ti.prototype.constructor=Ti,Ti.prototype.isCanvasTexture=!0,Ai.prototype=Object.create(Xt.prototype),Ai.prototype.constructor=Ai,Ai.prototype.isDepthTexture=!0,Li.prototype=Object.create(Re.prototype),Li.prototype.constructor=Li,Pi.prototype=Object.create(ge.prototype),Pi.prototype.constructor=Pi,Ci.prototype=Object.create(Re.prototype),Ci.prototype.constructor=Ci,Ri.prototype=Object.create(ge.prototype),Ri.prototype.constructor=Ri,Oi.prototype=Object.create(Re.prototype),Oi.prototype.constructor=Oi,Di.prototype=Object.create(ge.prototype),Di.prototype.constructor=Di,Ui.prototype=Object.create(Oi.prototype),Ui.prototype.constructor=Ui,Ni.prototype=Object.create(ge.prototype),Ni.prototype.constructor=Ni,Ii.prototype=Object.create(Oi.prototype),Ii.prototype.constructor=Ii,Bi.prototype=Object.create(ge.prototype),Bi.prototype.constructor=Bi,Fi.prototype=Object.create(Oi.prototype),Fi.prototype.constructor=Fi,zi.prototype=Object.create(ge.prototype),zi.prototype.constructor=zi,Gi.prototype=Object.create(Oi.prototype),Gi.prototype.constructor=Gi,ki.prototype=Object.create(ge.prototype),ki.prototype.constructor=ki,ji.prototype=Object.create(Re.prototype),ji.prototype.constructor=ji,Hi.prototype=Object.create(ge.prototype),Hi.prototype.constructor=Hi,Vi.prototype=Object.create(Re.prototype),Vi.prototype.constructor=Vi,Wi.prototype=Object.create(ge.prototype),Wi.prototype.constructor=Wi,Xi.prototype=Object.create(Re.prototype),Xi.prototype.constructor=Xi;var qi=function(n,t,e){e=e||2;var r,i,o,a,l,s,c,u=t&&t.length,h=u?t[0]*e:n.length,v=Yi(n,0,h,e,!0),d=[];if(!v)return d;if(u&&(v=function(n,t,e,r){var i,o,a,l,s,c=[];for(i=0,o=t.length;i<o;i++)a=t[i]*r,l=i<o-1?t[i+1]*r:n.length,(s=Yi(n,a,l,r,!1))===s.next&&(s.steiner=!0),c.push(io(s));for(c.sort(to),i=0;i<c.length;i++)eo(c[i],e),e=Zi(e,e.next);return e}(n,t,v,e)),n.length>80*e){r=o=n[0],i=a=n[1];for(var f=e;f<h;f+=e)l=n[f],s=n[f+1],l<r&&(r=l),s<i&&(i=s),l>o&&(o=l),s>a&&(a=s);c=0!==(c=Math.max(o-r,a-i))?1/c:0}return Ji(v,d,e,r,i,c),d};function Yi(n,t,e,r,i){var o,a;if(i===function(n,t,e,r){for(var i=0,o=t,a=e-r;o<e;o+=r)i+=(n[a]-n[o])*(n[o+1]+n[a+1]),a=o;return i}(n,t,e,r)>0)for(o=t;o<e;o+=r)a=vo(o,n[o],n[o+1],a);else for(o=e-r;o>=t;o-=r)a=vo(o,n[o],n[o+1],a);return a&&so(a,a.next)&&(fo(a),a=a.next),a}function Zi(n,t){if(!n)return n;t||(t=n);var e,r=n;do{if(e=!1,r.steiner||!so(r,r.next)&&0!==lo(r.prev,r,r.next))r=r.next;else{if(fo(r),(r=t=r.prev)===r.next)break;e=!0}}while(e||r!==t);return t}function Ji(n,t,e,r,i,o,a){if(n){!a&&o&&function(n,t,e,r){var i=n;do{null===i.z&&(i.z=ro(i.x,i.y,t,e,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==n);i.prevZ.nextZ=null,i.prevZ=null,function(n){var t,e,r,i,o,a,l,s,c=1;do{for(e=n,n=null,o=null,a=0;e;){for(a++,r=e,l=0,t=0;t<c&&(l++,r=r.nextZ);t++);for(s=c;l>0||s>0&&r;)0!==l&&(0===s||!r||e.z<=r.z)?(i=e,e=e.nextZ,l--):(i=r,r=r.nextZ,s--),o?o.nextZ=i:n=i,i.prevZ=o,o=i;e=r}o.nextZ=null,c*=2}while(a>1)}(i)}(n,r,i,o);for(var l,s,c=n;n.prev!==n.next;)if(l=n.prev,s=n.next,o?Qi(n,r,i,o):Ki(n))t.push(l.i/e),t.push(n.i/e),t.push(s.i/e),fo(n),n=s.next,c=s.next;else if((n=s)===c){a?1===a?Ji(n=$i(n,t,e),t,e,r,i,o,2):2===a&&no(n,t,e,r,i,o):Ji(Zi(n),t,e,r,i,o,1);break}}}function Ki(n){var t=n.prev,e=n,r=n.next;if(lo(t,e,r)>=0)return!1;for(var i=n.next.next;i!==n.prev;){if(oo(t.x,t.y,e.x,e.y,r.x,r.y,i.x,i.y)&&lo(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Qi(n,t,e,r){var i=n.prev,o=n,a=n.next;if(lo(i,o,a)>=0)return!1;for(var l=i.x<o.x?i.x<a.x?i.x:a.x:o.x<a.x?o.x:a.x,s=i.y<o.y?i.y<a.y?i.y:a.y:o.y<a.y?o.y:a.y,c=i.x>o.x?i.x>a.x?i.x:a.x:o.x>a.x?o.x:a.x,u=i.y>o.y?i.y>a.y?i.y:a.y:o.y>a.y?o.y:a.y,h=ro(l,s,t,e,r),v=ro(c,u,t,e,r),d=n.nextZ;d&&d.z<=v;){if(d!==n.prev&&d!==n.next&&oo(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&lo(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(d=n.prevZ;d&&d.z>=h;){if(d!==n.prev&&d!==n.next&&oo(i.x,i.y,o.x,o.y,a.x,a.y,d.x,d.y)&&lo(d.prev,d,d.next)>=0)return!1;d=d.prevZ}return!0}function $i(n,t,e){var r=n;do{var i=r.prev,o=r.next.next;!so(i,o)&&co(i,r,r.next,o)&&uo(i,o)&&uo(o,i)&&(t.push(i.i/e),t.push(r.i/e),t.push(o.i/e),fo(r),fo(r.next),r=n=o),r=r.next}while(r!==n);return r}function no(n,t,e,r,i,o){var a=n;do{for(var l=a.next.next;l!==a.prev;){if(a.i!==l.i&&ao(a,l)){var s=ho(a,l);return a=Zi(a,a.next),s=Zi(s,s.next),Ji(a,t,e,r,i,o),void Ji(s,t,e,r,i,o)}l=l.next}a=a.next}while(a!==n)}function to(n,t){return n.x-t.x}function eo(n,t){if(t=function(n,t){var e,r=t,i=n.x,o=n.y,a=-1/0;do{if(o<=r.y&&o>=r.next.y&&r.next.y!==r.y){var l=r.x+(o-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(l<=i&&l>a){if(a=l,l===i){if(o===r.y)return r;if(o===r.next.y)return r.next}e=r.x<r.next.x?r:r.next}}r=r.next}while(r!==t);if(!e)return null;if(i===a)return e.prev;var s,c=e,u=e.x,h=e.y,v=1/0;r=e.next;for(;r!==c;)i>=r.x&&r.x>=u&&i!==r.x&&oo(o<h?i:a,o,u,h,o<h?a:i,o,r.x,r.y)&&((s=Math.abs(o-r.y)/(i-r.x))<v||s===v&&r.x>e.x)&&uo(r,n)&&(e=r,v=s),r=r.next;return e}(n,t)){var e=ho(t,n);Zi(e,e.next)}}function ro(n,t,e,r,i){return(n=1431655765&((n=858993459&((n=252645135&((n=16711935&((n=32767*(n-e)*i)|n<<8))|n<<4))|n<<2))|n<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function io(n){var t=n,e=n;do{t.x<e.x&&(e=t),t=t.next}while(t!==n);return e}function oo(n,t,e,r,i,o,a,l){return(i-a)*(t-l)-(n-a)*(o-l)>=0&&(n-a)*(r-l)-(e-a)*(t-l)>=0&&(e-a)*(o-l)-(i-a)*(r-l)>=0}function ao(n,t){return n.next.i!==t.i&&n.prev.i!==t.i&&!function(n,t){var e=n;do{if(e.i!==n.i&&e.next.i!==n.i&&e.i!==t.i&&e.next.i!==t.i&&co(e,e.next,n,t))return!0;e=e.next}while(e!==n);return!1}(n,t)&&uo(n,t)&&uo(t,n)&&function(n,t){var e=n,r=!1,i=(n.x+t.x)/2,o=(n.y+t.y)/2;do{e.y>o!=e.next.y>o&&e.next.y!==e.y&&i<(e.next.x-e.x)*(o-e.y)/(e.next.y-e.y)+e.x&&(r=!r),e=e.next}while(e!==n);return r}(n,t)}function lo(n,t,e){return(t.y-n.y)*(e.x-t.x)-(t.x-n.x)*(e.y-t.y)}function so(n,t){return n.x===t.x&&n.y===t.y}function co(n,t,e,r){return!!(so(n,t)&&so(e,r)||so(n,r)&&so(e,t))||lo(n,t,e)>0!=lo(n,t,r)>0&&lo(e,r,n)>0!=lo(e,r,t)>0}function uo(n,t){return lo(n.prev,n,n.next)<0?lo(n,t,n.next)>=0&&lo(n,n.prev,t)>=0:lo(n,t,n.prev)<0||lo(n,n.next,t)<0}function ho(n,t){var e=new po(n.i,n.x,n.y),r=new po(t.i,t.x,t.y),i=n.next,o=t.prev;return n.next=t,t.prev=n,e.next=i,i.prev=e,r.next=e,e.prev=r,o.next=r,r.prev=o,r}function vo(n,t,e,r){var i=new po(n,t,e);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function fo(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function po(n,t,e){this.i=n,this.x=t,this.y=e,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var mo={area:function(n){for(var t=n.length,e=0,r=t-1,i=0;i<t;r=i++)e+=n[r].x*n[i].y-n[i].x*n[r].y;return.5*e},isClockWise:function(n){return mo.area(n)<0},triangulateShape:function(n,t){var e=[],r=[],i=[];go(n),yo(e,n);var o=n.length;t.forEach(go);for(var a=0;a<t.length;a++)r.push(o),o+=t[a].length,yo(e,t[a]);var l=qi(e,r);for(a=0;a<l.length;a+=3)i.push(l.slice(a,a+3));return i}};function go(n){var t=n.length;t>2&&n[t-1].equals(n[0])&&n.pop()}function yo(n,t){for(var e=0;e<t.length;e++)n.push(t[e].x),n.push(t[e].y)}function xo(n,t){ge.call(this),this.type="ExtrudeGeometry",this.parameters={shapes:n,options:t},this.fromBufferGeometry(new bo(n,t)),this.mergeVertices()}function bo(n,t){Re.call(this),this.type="ExtrudeBufferGeometry",this.parameters={shapes:n,options:t};for(var e=this,r=[],i=[],o=0,a=(n=Array.isArray(n)?n:[n]).length;o<a;o++){l(n[o])}function l(n){var o=[],a=void 0!==t.curveSegments?t.curveSegments:12,l=void 0!==t.steps?t.steps:1,s=void 0!==t.depth?t.depth:100,c=void 0===t.bevelEnabled||t.bevelEnabled,u=void 0!==t.bevelThickness?t.bevelThickness:6,h=void 0!==t.bevelSize?t.bevelSize:u-2,v=void 0!==t.bevelSegments?t.bevelSegments:3,d=t.extrudePath,f=void 0!==t.UVGenerator?t.UVGenerator:wo;void 0!==t.amount&&(console.warn("THREE.ExtrudeBufferGeometry: amount has been renamed to depth."),s=t.amount);var p,m,g,y,x,b,w,M,_=!1;d&&(p=d.getSpacedPoints(l),_=!0,c=!1,m=d.computeFrenetFrames(l,!1),g=new jt,y=new jt,x=new jt),c||(v=0,u=0,h=0);var E=n.extractPoints(a),S=E.shape,T=E.holes;if(!mo.isClockWise(S))for(S=S.reverse(),w=0,M=T.length;w<M;w++)b=T[w],mo.isClockWise(b)&&(T[w]=b.reverse());var A=mo.triangulateShape(S,T),L=S;for(w=0,M=T.length;w<M;w++)b=T[w],S=S.concat(b);function P(n,t,e){return t||console.error("THREE.ExtrudeGeometry: vec does not exist"),t.clone().multiplyScalar(e).add(n)}var C,R,O,D,U,N,I=S.length,B=A.length;function F(n,t,e){var r,i,o,a=n.x-t.x,l=n.y-t.y,s=e.x-n.x,c=e.y-n.y,u=a*a+l*l,h=a*c-l*s;if(Math.abs(h)>Number.EPSILON){var v=Math.sqrt(u),d=Math.sqrt(s*s+c*c),f=t.x-l/v,p=t.y+a/v,m=((e.x-c/d-f)*c-(e.y+s/d-p)*s)/(a*c-l*s),g=(r=f+a*m-n.x)*r+(i=p+l*m-n.y)*i;if(g<=2)return new zt(r,i);o=Math.sqrt(g/2)}else{var y=!1;a>Number.EPSILON?s>Number.EPSILON&&(y=!0):a<-Number.EPSILON?s<-Number.EPSILON&&(y=!0):Math.sign(l)===Math.sign(c)&&(y=!0),y?(r=-l,i=a,o=Math.sqrt(u)):(r=a,i=l,o=Math.sqrt(u/2))}return new zt(r/o,i/o)}for(var z=[],G=0,k=L.length,j=k-1,H=G+1;G<k;G++,j++,H++)j===k&&(j=0),H===k&&(H=0),z[G]=F(L[G],L[j],L[H]);var V,W,X=[],q=z.concat();for(w=0,M=T.length;w<M;w++){for(b=T[w],V=[],G=0,j=(k=b.length)-1,H=G+1;G<k;G++,j++,H++)j===k&&(j=0),H===k&&(H=0),V[G]=F(b[G],b[j],b[H]);X.push(V),q=q.concat(V)}for(C=0;C<v;C++){for(O=C/v,D=u*Math.cos(O*Math.PI/2),R=h*Math.sin(O*Math.PI/2),G=0,k=L.length;G<k;G++)Z((U=P(L[G],z[G],R)).x,U.y,-D);for(w=0,M=T.length;w<M;w++)for(b=T[w],V=X[w],G=0,k=b.length;G<k;G++)Z((U=P(b[G],V[G],R)).x,U.y,-D)}for(R=h,G=0;G<I;G++)U=c?P(S[G],q[G],R):S[G],_?(y.copy(m.normals[0]).multiplyScalar(U.x),g.copy(m.binormals[0]).multiplyScalar(U.y),x.copy(p[0]).add(y).add(g),Z(x.x,x.y,x.z)):Z(U.x,U.y,0);for(W=1;W<=l;W++)for(G=0;G<I;G++)U=c?P(S[G],q[G],R):S[G],_?(y.copy(m.normals[W]).multiplyScalar(U.x),g.copy(m.binormals[W]).multiplyScalar(U.y),x.copy(p[W]).add(y).add(g),Z(x.x,x.y,x.z)):Z(U.x,U.y,s/l*W);for(C=v-1;C>=0;C--){for(O=C/v,D=u*Math.cos(O*Math.PI/2),R=h*Math.sin(O*Math.PI/2),G=0,k=L.length;G<k;G++)Z((U=P(L[G],z[G],R)).x,U.y,s+D);for(w=0,M=T.length;w<M;w++)for(b=T[w],V=X[w],G=0,k=b.length;G<k;G++)U=P(b[G],V[G],R),_?Z(U.x,U.y+p[l-1].y,p[l-1].x+D):Z(U.x,U.y,s+D)}function Y(n,t){var e,r;for(G=n.length;--G>=0;){e=G,(r=G-1)<0&&(r=n.length-1);var i=0,o=l+2*v;for(i=0;i<o;i++){var a=I*i,s=I*(i+1);K(t+e+a,t+r+a,t+r+s,t+e+s)}}}function Z(n,t,e){o.push(n),o.push(t),o.push(e)}function J(n,t,i){Q(n),Q(t),Q(i);var o=r.length/3,a=f.generateTopUV(e,r,o-3,o-2,o-1);$(a[0]),$(a[1]),$(a[2])}function K(n,t,i,o){Q(n),Q(t),Q(o),Q(t),Q(i),Q(o);var a=r.length/3,l=f.generateSideWallUV(e,r,a-6,a-3,a-2,a-1);$(l[0]),$(l[1]),$(l[3]),$(l[1]),$(l[2]),$(l[3])}function Q(n){r.push(o[3*n+0]),r.push(o[3*n+1]),r.push(o[3*n+2])}function $(n){i.push(n.x),i.push(n.y)}!function(){var n=r.length/3;if(c){var t=0,i=I*t;for(G=0;G<B;G++)J((N=A[G])[2]+i,N[1]+i,N[0]+i);for(i=I*(t=l+2*v),G=0;G<B;G++)J((N=A[G])[0]+i,N[1]+i,N[2]+i)}else{for(G=0;G<B;G++)J((N=A[G])[2],N[1],N[0]);for(G=0;G<B;G++)J((N=A[G])[0]+I*l,N[1]+I*l,N[2]+I*l)}e.addGroup(n,r.length/3-n,0)}(),function(){var n=r.length/3,t=0;for(Y(L,t),t+=L.length,w=0,M=T.length;w<M;w++)Y(b=T[w],t),t+=b.length;e.addGroup(n,r.length/3-n,1)}()}this.addAttribute("position",new Te(r,3)),this.addAttribute("uv",new Te(i,2)),this.computeVertexNormals()}xo.prototype=Object.create(ge.prototype),xo.prototype.constructor=xo,xo.prototype.toJSON=function(){var n=ge.prototype.toJSON.call(this);return Mo(this.parameters.shapes,this.parameters.options,n)},bo.prototype=Object.create(Re.prototype),bo.prototype.constructor=bo,bo.prototype.toJSON=function(){var n=Re.prototype.toJSON.call(this);return Mo(this.parameters.shapes,this.parameters.options,n)};var wo={generateTopUV:function(n,t,e,r,i){var o=t[3*e],a=t[3*e+1],l=t[3*r],s=t[3*r+1],c=t[3*i],u=t[3*i+1];return[new zt(o,a),new zt(l,s),new zt(c,u)]},generateSideWallUV:function(n,t,e,r,i,o){var a=t[3*e],l=t[3*e+1],s=t[3*e+2],c=t[3*r],u=t[3*r+1],h=t[3*r+2],v=t[3*i],d=t[3*i+1],f=t[3*i+2],p=t[3*o],m=t[3*o+1],g=t[3*o+2];return Math.abs(l-u)<.01?[new zt(a,1-s),new zt(c,1-h),new zt(v,1-f),new zt(p,1-g)]:[new zt(l,1-s),new zt(u,1-h),new zt(d,1-f),new zt(m,1-g)]}};function Mo(n,t,e){if(e.shapes=[],Array.isArray(n))for(var r=0,i=n.length;r<i;r++){var o=n[r];e.shapes.push(o.uuid)}else e.shapes.push(n.uuid);return void 0!==t.extrudePath&&(e.options.extrudePath=t.extrudePath.toJSON()),e}function _o(n,t){ge.call(this),this.type="TextGeometry",this.parameters={text:n,parameters:t},this.fromBufferGeometry(new Eo(n,t)),this.mergeVertices()}function Eo(n,t){var e=(t=t||{}).font;if(!e||!e.isFont)return console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),new ge;var r=e.generateShapes(n,t.size);t.depth=void 0!==t.height?t.height:50,void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),bo.call(this,r,t),this.type="TextBufferGeometry"}function So(n,t,e,r,i,o,a){ge.call(this),this.type="SphereGeometry",this.parameters={radius:n,widthSegments:t,heightSegments:e,phiStart:r,phiLength:i,thetaStart:o,thetaLength:a},this.fromBufferGeometry(new To(n,t,e,r,i,o,a)),this.mergeVertices()}function To(n,t,e,r,i,o,a){Re.call(this),this.type="SphereBufferGeometry",this.parameters={radius:n,widthSegments:t,heightSegments:e,phiStart:r,phiLength:i,thetaStart:o,thetaLength:a},n=n||1,t=Math.max(3,Math.floor(t)||8),e=Math.max(2,Math.floor(e)||6),r=void 0!==r?r:0,i=void 0!==i?i:2*Math.PI;var l,s,c=(o=void 0!==o?o:0)+(a=void 0!==a?a:Math.PI),u=0,h=[],v=new jt,d=new jt,f=[],p=[],m=[],g=[];for(s=0;s<=e;s++){var y=[],x=s/e;for(l=0;l<=t;l++){var b=l/t;v.x=-n*Math.cos(r+b*i)*Math.sin(o+x*a),v.y=n*Math.cos(o+x*a),v.z=n*Math.sin(r+b*i)*Math.sin(o+x*a),p.push(v.x,v.y,v.z),d.set(v.x,v.y,v.z).normalize(),m.push(d.x,d.y,d.z),g.push(b,1-x),y.push(u++)}h.push(y)}for(s=0;s<e;s++)for(l=0;l<t;l++){var w=h[s][l+1],M=h[s][l],_=h[s+1][l],E=h[s+1][l+1];(0!==s||o>0)&&f.push(w,M,E),(s!==e-1||c<Math.PI)&&f.push(M,_,E)}this.setIndex(f),this.addAttribute("position",new Te(p,3)),this.addAttribute("normal",new Te(m,3)),this.addAttribute("uv",new Te(g,2))}function Ao(n,t,e,r,i,o){ge.call(this),this.type="RingGeometry",this.parameters={innerRadius:n,outerRadius:t,thetaSegments:e,phiSegments:r,thetaStart:i,thetaLength:o},this.fromBufferGeometry(new Lo(n,t,e,r,i,o)),this.mergeVertices()}function Lo(n,t,e,r,i,o){Re.call(this),this.type="RingBufferGeometry",this.parameters={innerRadius:n,outerRadius:t,thetaSegments:e,phiSegments:r,thetaStart:i,thetaLength:o},n=n||.5,t=t||1,i=void 0!==i?i:0,o=void 0!==o?o:2*Math.PI,e=void 0!==e?Math.max(3,e):8;var a,l,s,c=[],u=[],h=[],v=[],d=n,f=(t-n)/(r=void 0!==r?Math.max(1,r):1),p=new jt,m=new zt;for(l=0;l<=r;l++){for(s=0;s<=e;s++)a=i+s/e*o,p.x=d*Math.cos(a),p.y=d*Math.sin(a),u.push(p.x,p.y,p.z),h.push(0,0,1),m.x=(p.x/t+1)/2,m.y=(p.y/t+1)/2,v.push(m.x,m.y);d+=f}for(l=0;l<r;l++){var g=l*(e+1);for(s=0;s<e;s++){var y=a=s+g,x=a+e+1,b=a+e+2,w=a+1;c.push(y,x,w),c.push(x,b,w)}}this.setIndex(c),this.addAttribute("position",new Te(u,3)),this.addAttribute("normal",new Te(h,3)),this.addAttribute("uv",new Te(v,2))}function Po(n,t,e,r){ge.call(this),this.type="LatheGeometry",this.parameters={points:n,segments:t,phiStart:e,phiLength:r},this.fromBufferGeometry(new Co(n,t,e,r)),this.mergeVertices()}function Co(n,t,e,r){Re.call(this),this.type="LatheBufferGeometry",this.parameters={points:n,segments:t,phiStart:e,phiLength:r},t=Math.floor(t)||12,e=e||0,r=r||2*Math.PI,r=Ft.clamp(r,0,2*Math.PI);var i,o,a,l=[],s=[],c=[],u=1/t,h=new jt,v=new zt;for(o=0;o<=t;o++){var d=e+o*u*r,f=Math.sin(d),p=Math.cos(d);for(a=0;a<=n.length-1;a++)h.x=n[a].x*f,h.y=n[a].y,h.z=n[a].x*p,s.push(h.x,h.y,h.z),v.x=o/t,v.y=a/(n.length-1),c.push(v.x,v.y)}for(o=0;o<t;o++)for(a=0;a<n.length-1;a++){var m=i=a+o*n.length,g=i+n.length,y=i+n.length+1,x=i+1;l.push(m,g,x),l.push(g,y,x)}if(this.setIndex(l),this.addAttribute("position",new Te(s,3)),this.addAttribute("uv",new Te(c,2)),this.computeVertexNormals(),r===2*Math.PI){var b=this.attributes.normal.array,w=new jt,M=new jt,_=new jt;for(i=t*n.length*3,o=0,a=0;o<n.length;o++,a+=3)w.x=b[a+0],w.y=b[a+1],w.z=b[a+2],M.x=b[i+a+0],M.y=b[i+a+1],M.z=b[i+a+2],_.addVectors(w,M).normalize(),b[a+0]=b[i+a+0]=_.x,b[a+1]=b[i+a+1]=_.y,b[a+2]=b[i+a+2]=_.z}}function Ro(n,t){ge.call(this),this.type="ShapeGeometry","object"==typeof t&&(console.warn("THREE.ShapeGeometry: Options parameter has been removed."),t=t.curveSegments),this.parameters={shapes:n,curveSegments:t},this.fromBufferGeometry(new Oo(n,t)),this.mergeVertices()}function Oo(n,t){Re.call(this),this.type="ShapeBufferGeometry",this.parameters={shapes:n,curveSegments:t},t=t||12;var e=[],r=[],i=[],o=[],a=0,l=0;if(!1===Array.isArray(n))c(n);else for(var s=0;s<n.length;s++)c(n[s]),this.addGroup(a,l,s),a+=l,l=0;function c(n){var a,s,c,u=r.length/3,h=n.extractPoints(t),v=h.shape,d=h.holes;if(!1===mo.isClockWise(v))for(v=v.reverse(),a=0,s=d.length;a<s;a++)c=d[a],!0===mo.isClockWise(c)&&(d[a]=c.reverse());var f=mo.triangulateShape(v,d);for(a=0,s=d.length;a<s;a++)c=d[a],v=v.concat(c);for(a=0,s=v.length;a<s;a++){var p=v[a];r.push(p.x,p.y,0),i.push(0,0,1),o.push(p.x,p.y)}for(a=0,s=f.length;a<s;a++){var m=f[a],g=m[0]+u,y=m[1]+u,x=m[2]+u;e.push(g,y,x),l+=3}}this.setIndex(e),this.addAttribute("position",new Te(r,3)),this.addAttribute("normal",new Te(i,3)),this.addAttribute("uv",new Te(o,2))}function Do(n,t){if(t.shapes=[],Array.isArray(n))for(var e=0,r=n.length;e<r;e++){var i=n[e];t.shapes.push(i.uuid)}else t.shapes.push(n.uuid);return t}function Uo(n,t){Re.call(this),this.type="EdgesGeometry",this.parameters={thresholdAngle:t},t=void 0!==t?t:1;var e,r,i,o,a=[],l=Math.cos(Ft.DEG2RAD*t),s=[0,0],c={},u=["a","b","c"];n.isBufferGeometry?(o=new ge).fromBufferGeometry(n):o=n.clone(),o.mergeVertices(),o.computeFaceNormals();for(var h=o.vertices,v=o.faces,d=0,f=v.length;d<f;d++)for(var p=v[d],m=0;m<3;m++)e=p[u[m]],r=p[u[(m+1)%3]],s[0]=Math.min(e,r),s[1]=Math.max(e,r),void 0===c[i=s[0]+","+s[1]]?c[i]={index1:s[0],index2:s[1],face1:d,face2:void 0}:c[i].face2=d;for(i in c){var g=c[i];if(void 0===g.face2||v[g.face1].normal.dot(v[g.face2].normal)<=l){var y=h[g.index1];a.push(y.x,y.y,y.z),y=h[g.index2],a.push(y.x,y.y,y.z)}}this.addAttribute("position",new Te(a,3))}function No(n,t,e,r,i,o,a,l){ge.call(this),this.type="CylinderGeometry",this.parameters={radiusTop:n,radiusBottom:t,height:e,radialSegments:r,heightSegments:i,openEnded:o,thetaStart:a,thetaLength:l},this.fromBufferGeometry(new Io(n,t,e,r,i,o,a,l)),this.mergeVertices()}function Io(n,t,e,r,i,o,a,l){Re.call(this),this.type="CylinderBufferGeometry",this.parameters={radiusTop:n,radiusBottom:t,height:e,radialSegments:r,heightSegments:i,openEnded:o,thetaStart:a,thetaLength:l};var s=this;n=void 0!==n?n:1,t=void 0!==t?t:1,e=e||1,r=Math.floor(r)||8,i=Math.floor(i)||1,o=void 0!==o&&o,a=void 0!==a?a:0,l=void 0!==l?l:2*Math.PI;var c=[],u=[],h=[],v=[],d=0,f=[],p=e/2,m=0;function g(e){var i,o,f,g=new zt,y=new jt,x=0,b=!0===e?n:t,w=!0===e?1:-1;for(o=d,i=1;i<=r;i++)u.push(0,p*w,0),h.push(0,w,0),v.push(.5,.5),d++;for(f=d,i=0;i<=r;i++){var M=i/r*l+a,_=Math.cos(M),E=Math.sin(M);y.x=b*E,y.y=p*w,y.z=b*_,u.push(y.x,y.y,y.z),h.push(0,w,0),g.x=.5*_+.5,g.y=.5*E*w+.5,v.push(g.x,g.y),d++}for(i=0;i<r;i++){var S=o+i,T=f+i;!0===e?c.push(T,T+1,S):c.push(T+1,T,S),x+=3}s.addGroup(m,x,!0===e?1:2),m+=x}!function(){var o,g,y=new jt,x=new jt,b=0,w=(t-n)/e;for(g=0;g<=i;g++){var M=[],_=g/i,E=_*(t-n)+n;for(o=0;o<=r;o++){var S=o/r,T=S*l+a,A=Math.sin(T),L=Math.cos(T);x.x=E*A,x.y=-_*e+p,x.z=E*L,u.push(x.x,x.y,x.z),y.set(A,w,L).normalize(),h.push(y.x,y.y,y.z),v.push(S,1-_),M.push(d++)}f.push(M)}for(o=0;o<r;o++)for(g=0;g<i;g++){var P=f[g][o],C=f[g+1][o],R=f[g+1][o+1],O=f[g][o+1];c.push(P,C,O),c.push(C,R,O),b+=6}s.addGroup(m,b,0),m+=b}(),!1===o&&(n>0&&g(!0),t>0&&g(!1)),this.setIndex(c),this.addAttribute("position",new Te(u,3)),this.addAttribute("normal",new Te(h,3)),this.addAttribute("uv",new Te(v,2))}function Bo(n,t,e,r,i,o,a){No.call(this,0,n,t,e,r,i,o,a),this.type="ConeGeometry",this.parameters={radius:n,height:t,radialSegments:e,heightSegments:r,openEnded:i,thetaStart:o,thetaLength:a}}function Fo(n,t,e,r,i,o,a){Io.call(this,0,n,t,e,r,i,o,a),this.type="ConeBufferGeometry",this.parameters={radius:n,height:t,radialSegments:e,heightSegments:r,openEnded:i,thetaStart:o,thetaLength:a}}function zo(n,t,e,r){ge.call(this),this.type="CircleGeometry",this.parameters={radius:n,segments:t,thetaStart:e,thetaLength:r},this.fromBufferGeometry(new Go(n,t,e,r)),this.mergeVertices()}function Go(n,t,e,r){Re.call(this),this.type="CircleBufferGeometry",this.parameters={radius:n,segments:t,thetaStart:e,thetaLength:r},n=n||1,t=void 0!==t?Math.max(3,t):8,e=void 0!==e?e:0,r=void 0!==r?r:2*Math.PI;var i,o,a=[],l=[],s=[],c=[],u=new jt,h=new zt;for(l.push(0,0,0),s.push(0,0,1),c.push(.5,.5),o=0,i=3;o<=t;o++,i+=3){var v=e+o/t*r;u.x=n*Math.cos(v),u.y=n*Math.sin(v),l.push(u.x,u.y,u.z),s.push(0,0,1),h.x=(l[i]/n+1)/2,h.y=(l[i+1]/n+1)/2,c.push(h.x,h.y)}for(i=1;i<=t;i++)a.push(i,i+1,0);this.setIndex(a),this.addAttribute("position",new Te(l,3)),this.addAttribute("normal",new Te(s,3)),this.addAttribute("uv",new Te(c,2))}_o.prototype=Object.create(ge.prototype),_o.prototype.constructor=_o,Eo.prototype=Object.create(bo.prototype),Eo.prototype.constructor=Eo,So.prototype=Object.create(ge.prototype),So.prototype.constructor=So,To.prototype=Object.create(Re.prototype),To.prototype.constructor=To,Ao.prototype=Object.create(ge.prototype),Ao.prototype.constructor=Ao,Lo.prototype=Object.create(Re.prototype),Lo.prototype.constructor=Lo,Po.prototype=Object.create(ge.prototype),Po.prototype.constructor=Po,Co.prototype=Object.create(Re.prototype),Co.prototype.constructor=Co,Ro.prototype=Object.create(ge.prototype),Ro.prototype.constructor=Ro,Ro.prototype.toJSON=function(){var n=ge.prototype.toJSON.call(this);return Do(this.parameters.shapes,n)},Oo.prototype=Object.create(Re.prototype),Oo.prototype.constructor=Oo,Oo.prototype.toJSON=function(){var n=Re.prototype.toJSON.call(this);return Do(this.parameters.shapes,n)},Uo.prototype=Object.create(Re.prototype),Uo.prototype.constructor=Uo,No.prototype=Object.create(ge.prototype),No.prototype.constructor=No,Io.prototype=Object.create(Re.prototype),Io.prototype.constructor=Io,Bo.prototype=Object.create(No.prototype),Bo.prototype.constructor=Bo,Fo.prototype=Object.create(Io.prototype),Fo.prototype.constructor=Fo,zo.prototype=Object.create(ge.prototype),zo.prototype.constructor=zo,Go.prototype=Object.create(Re.prototype),Go.prototype.constructor=Go;var ko=Object.freeze({WireframeGeometry:Li,ParametricGeometry:Pi,ParametricBufferGeometry:Ci,TetrahedronGeometry:Di,TetrahedronBufferGeometry:Ui,OctahedronGeometry:Ni,OctahedronBufferGeometry:Ii,IcosahedronGeometry:Bi,IcosahedronBufferGeometry:Fi,DodecahedronGeometry:zi,DodecahedronBufferGeometry:Gi,PolyhedronGeometry:Ri,PolyhedronBufferGeometry:Oi,TubeGeometry:ki,TubeBufferGeometry:ji,TorusKnotGeometry:Hi,TorusKnotBufferGeometry:Vi,TorusGeometry:Wi,TorusBufferGeometry:Xi,TextGeometry:_o,TextBufferGeometry:Eo,SphereGeometry:So,SphereBufferGeometry:To,RingGeometry:Ao,RingBufferGeometry:Lo,PlaneGeometry:Ue,PlaneBufferGeometry:Ne,LatheGeometry:Po,LatheBufferGeometry:Co,ShapeGeometry:Ro,ShapeBufferGeometry:Oo,ExtrudeGeometry:xo,ExtrudeBufferGeometry:bo,EdgesGeometry:Uo,ConeGeometry:Bo,ConeBufferGeometry:Fo,CylinderGeometry:No,CylinderBufferGeometry:Io,CircleGeometry:zo,CircleBufferGeometry:Go,BoxGeometry:Oe,BoxBufferGeometry:De});function jo(n){Be.call(this),this.type="ShadowMaterial",this.color=new ie(0),this.transparent=!0,this.setValues(n)}function Ho(n){ze.call(this,n),this.type="RawShaderMaterial"}function Vo(n){Be.call(this),this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new ie(16777215),this.roughness=.5,this.metalness=.5,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ie(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=It,this.normalScale=new zt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(n)}function Wo(n){Vo.call(this),this.defines={PHYSICAL:""},this.type="MeshPhysicalMaterial",this.reflectivity=.5,this.clearCoat=0,this.clearCoatRoughness=0,this.setValues(n)}function Xo(n){Be.call(this),this.type="MeshPhongMaterial",this.color=new ie(16777215),this.specular=new ie(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ie(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=It,this.normalScale=new zt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=$,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(n)}function qo(n){Xo.call(this),this.defines={TOON:""},this.type="MeshToonMaterial",this.gradientMap=null,this.setValues(n)}function Yo(n){Be.call(this),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=It,this.normalScale=new zt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(n)}function Zo(n){Be.call(this),this.type="MeshLambertMaterial",this.color=new ie(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ie(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=$,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(n)}function Jo(n){yi.call(this),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(n)}jo.prototype=Object.create(Be.prototype),jo.prototype.constructor=jo,jo.prototype.isShadowMaterial=!0,jo.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.color.copy(n.color),this},Ho.prototype=Object.create(ze.prototype),Ho.prototype.constructor=Ho,Ho.prototype.isRawShaderMaterial=!0,Vo.prototype=Object.create(Be.prototype),Vo.prototype.constructor=Vo,Vo.prototype.isMeshStandardMaterial=!0,Vo.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.defines={STANDARD:""},this.color.copy(n.color),this.roughness=n.roughness,this.metalness=n.metalness,this.map=n.map,this.lightMap=n.lightMap,this.lightMapIntensity=n.lightMapIntensity,this.aoMap=n.aoMap,this.aoMapIntensity=n.aoMapIntensity,this.emissive.copy(n.emissive),this.emissiveMap=n.emissiveMap,this.emissiveIntensity=n.emissiveIntensity,this.bumpMap=n.bumpMap,this.bumpScale=n.bumpScale,this.normalMap=n.normalMap,this.normalMapType=n.normalMapType,this.normalScale.copy(n.normalScale),this.displacementMap=n.displacementMap,this.displacementScale=n.displacementScale,this.displacementBias=n.displacementBias,this.roughnessMap=n.roughnessMap,this.metalnessMap=n.metalnessMap,this.alphaMap=n.alphaMap,this.envMap=n.envMap,this.envMapIntensity=n.envMapIntensity,this.refractionRatio=n.refractionRatio,this.wireframe=n.wireframe,this.wireframeLinewidth=n.wireframeLinewidth,this.wireframeLinecap=n.wireframeLinecap,this.wireframeLinejoin=n.wireframeLinejoin,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this.morphNormals=n.morphNormals,this},Wo.prototype=Object.create(Vo.prototype),Wo.prototype.constructor=Wo,Wo.prototype.isMeshPhysicalMaterial=!0,Wo.prototype.copy=function(n){return Vo.prototype.copy.call(this,n),this.defines={PHYSICAL:""},this.reflectivity=n.reflectivity,this.clearCoat=n.clearCoat,this.clearCoatRoughness=n.clearCoatRoughness,this},Xo.prototype=Object.create(Be.prototype),Xo.prototype.constructor=Xo,Xo.prototype.isMeshPhongMaterial=!0,Xo.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.color.copy(n.color),this.specular.copy(n.specular),this.shininess=n.shininess,this.map=n.map,this.lightMap=n.lightMap,this.lightMapIntensity=n.lightMapIntensity,this.aoMap=n.aoMap,this.aoMapIntensity=n.aoMapIntensity,this.emissive.copy(n.emissive),this.emissiveMap=n.emissiveMap,this.emissiveIntensity=n.emissiveIntensity,this.bumpMap=n.bumpMap,this.bumpScale=n.bumpScale,this.normalMap=n.normalMap,this.normalMapType=n.normalMapType,this.normalScale.copy(n.normalScale),this.displacementMap=n.displacementMap,this.displacementScale=n.displacementScale,this.displacementBias=n.displacementBias,this.specularMap=n.specularMap,this.alphaMap=n.alphaMap,this.envMap=n.envMap,this.combine=n.combine,this.reflectivity=n.reflectivity,this.refractionRatio=n.refractionRatio,this.wireframe=n.wireframe,this.wireframeLinewidth=n.wireframeLinewidth,this.wireframeLinecap=n.wireframeLinecap,this.wireframeLinejoin=n.wireframeLinejoin,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this.morphNormals=n.morphNormals,this},qo.prototype=Object.create(Xo.prototype),qo.prototype.constructor=qo,qo.prototype.isMeshToonMaterial=!0,qo.prototype.copy=function(n){return Xo.prototype.copy.call(this,n),this.gradientMap=n.gradientMap,this},Yo.prototype=Object.create(Be.prototype),Yo.prototype.constructor=Yo,Yo.prototype.isMeshNormalMaterial=!0,Yo.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.bumpMap=n.bumpMap,this.bumpScale=n.bumpScale,this.normalMap=n.normalMap,this.normalMapType=n.normalMapType,this.normalScale.copy(n.normalScale),this.displacementMap=n.displacementMap,this.displacementScale=n.displacementScale,this.displacementBias=n.displacementBias,this.wireframe=n.wireframe,this.wireframeLinewidth=n.wireframeLinewidth,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this.morphNormals=n.morphNormals,this},Zo.prototype=Object.create(Be.prototype),Zo.prototype.constructor=Zo,Zo.prototype.isMeshLambertMaterial=!0,Zo.prototype.copy=function(n){return Be.prototype.copy.call(this,n),this.color.copy(n.color),this.map=n.map,this.lightMap=n.lightMap,this.lightMapIntensity=n.lightMapIntensity,this.aoMap=n.aoMap,this.aoMapIntensity=n.aoMapIntensity,this.emissive.copy(n.emissive),this.emissiveMap=n.emissiveMap,this.emissiveIntensity=n.emissiveIntensity,this.specularMap=n.specularMap,this.alphaMap=n.alphaMap,this.envMap=n.envMap,this.combine=n.combine,this.reflectivity=n.reflectivity,this.refractionRatio=n.refractionRatio,this.wireframe=n.wireframe,this.wireframeLinewidth=n.wireframeLinewidth,this.wireframeLinecap=n.wireframeLinecap,this.wireframeLinejoin=n.wireframeLinejoin,this.skinning=n.skinning,this.morphTargets=n.morphTargets,this.morphNormals=n.morphNormals,this},Jo.prototype=Object.create(yi.prototype),Jo.prototype.constructor=Jo,Jo.prototype.isLineDashedMaterial=!0,Jo.prototype.copy=function(n){return yi.prototype.copy.call(this,n),this.scale=n.scale,this.dashSize=n.dashSize,this.gapSize=n.gapSize,this};var Ko=Object.freeze({ShadowMaterial:jo,SpriteMaterial:vi,RawShaderMaterial:Ho,ShaderMaterial:ze,PointsMaterial:Mi,MeshPhysicalMaterial:Wo,MeshStandardMaterial:Vo,MeshPhongMaterial:Xo,MeshToonMaterial:qo,MeshNormalMaterial:Yo,MeshLambertMaterial:Zo,MeshDepthMaterial:Kr,MeshDistanceMaterial:Qr,MeshBasicMaterial:Fe,LineDashedMaterial:Jo,LineBasicMaterial:yi,Material:Be}),Qo={enabled:!1,files:{},add:function(n,t){!1!==this.enabled&&(this.files[n]=t)},get:function(n){if(!1!==this.enabled)return this.files[n]},remove:function(n){delete this.files[n]},clear:function(){this.files={}}};function $o(n,t,e){var r=this,i=!1,o=0,a=0,l=void 0;this.onStart=void 0,this.onLoad=n,this.onProgress=t,this.onError=e,this.itemStart=function(n){a++,!1===i&&void 0!==r.onStart&&r.onStart(n,o,a),i=!0},this.itemEnd=function(n){o++,void 0!==r.onProgress&&r.onProgress(n,o,a),o===a&&(i=!1,void 0!==r.onLoad&&r.onLoad())},this.itemError=function(n){void 0!==r.onError&&r.onError(n)},this.resolveURL=function(n){return l?l(n):n},this.setURLModifier=function(n){return l=n,this}}var na=new $o,ta={};function ea(n){this.manager=void 0!==n?n:na}function ra(n){this.manager=void 0!==n?n:na,this._parser=null}function ia(n){this.manager=void 0!==n?n:na,this._parser=null}function oa(n){this.manager=void 0!==n?n:na}function aa(n){this.manager=void 0!==n?n:na}function la(n){this.manager=void 0!==n?n:na}function sa(){this.type="Curve",this.arcLengthDivisions=200}function ca(n,t,e,r,i,o,a,l){sa.call(this),this.type="EllipseCurve",this.aX=n||0,this.aY=t||0,this.xRadius=e||1,this.yRadius=r||1,this.aStartAngle=i||0,this.aEndAngle=o||2*Math.PI,this.aClockwise=a||!1,this.aRotation=l||0}function ua(n,t,e,r,i,o){ca.call(this,n,t,e,e,r,i,o),this.type="ArcCurve"}function ha(){var n=0,t=0,e=0,r=0;function i(i,o,a,l){n=i,t=a,e=-3*i+3*o-2*a-l,r=2*i-2*o+a+l}return{initCatmullRom:function(n,t,e,r,o){i(t,e,o*(e-n),o*(r-t))},initNonuniformCatmullRom:function(n,t,e,r,o,a,l){var s=(t-n)/o-(e-n)/(o+a)+(e-t)/a,c=(e-t)/a-(r-t)/(a+l)+(r-e)/l;i(t,e,s*=a,c*=a)},calc:function(i){var o=i*i;return n+t*i+e*o+r*(o*i)}}}Object.assign(ea.prototype,{load:function(n,t,e,r){void 0===n&&(n=""),void 0!==this.path&&(n=this.path+n),n=this.manager.resolveURL(n);var i=this,o=Qo.get(n);if(void 0!==o)return i.manager.itemStart(n),setTimeout(function(){t&&t(o),i.manager.itemEnd(n)},0),o;if(void 0===ta[n]){var a=n.match(/^data:(.*?)(;base64)?,(.*)$/);if(a){var l=a[1],s=!!a[2],c=a[3];c=window.decodeURIComponent(c),s&&(c=window.atob(c));try{var u,h=(this.responseType||"").toLowerCase();switch(h){case"arraybuffer":case"blob":for(var v=new Uint8Array(c.length),d=0;d<c.length;d++)v[d]=c.charCodeAt(d);u="blob"===h?new Blob([v.buffer],{type:l}):v.buffer;break;case"document":var f=new DOMParser;u=f.parseFromString(c,l);break;case"json":u=JSON.parse(c);break;default:u=c}window.setTimeout(function(){t&&t(u),i.manager.itemEnd(n)},0)}catch(t){window.setTimeout(function(){r&&r(t),i.manager.itemEnd(n),i.manager.itemError(n)},0)}}else{ta[n]=[],ta[n].push({onLoad:t,onProgress:e,onError:r});var p=new XMLHttpRequest;for(var m in p.open("GET",n,!0),p.addEventListener("load",function(t){var e=this.response;Qo.add(n,e);var r=ta[n];if(delete ta[n],200===this.status||0===this.status){0===this.status&&console.warn("THREE.FileLoader: HTTP Status 0 received.");for(var o=0,a=r.length;o<a;o++){(l=r[o]).onLoad&&l.onLoad(e)}i.manager.itemEnd(n)}else{for(o=0,a=r.length;o<a;o++){var l;(l=r[o]).onError&&l.onError(t)}i.manager.itemEnd(n),i.manager.itemError(n)}},!1),p.addEventListener("progress",function(t){for(var e=ta[n],r=0,i=e.length;r<i;r++){var o=e[r];o.onProgress&&o.onProgress(t)}},!1),p.addEventListener("error",function(t){var e=ta[n];delete ta[n];for(var r=0,o=e.length;r<o;r++){var a=e[r];a.onError&&a.onError(t)}i.manager.itemEnd(n),i.manager.itemError(n)},!1),void 0!==this.responseType&&(p.responseType=this.responseType),void 0!==this.withCredentials&&(p.withCredentials=this.withCredentials),p.overrideMimeType&&p.overrideMimeType(void 0!==this.mimeType?this.mimeType:"text/plain"),this.requestHeader)p.setRequestHeader(m,this.requestHeader[m]);p.send(null)}return i.manager.itemStart(n),p}ta[n].push({onLoad:t,onProgress:e,onError:r})},setPath:function(n){return this.path=n,this},setResponseType:function(n){return this.responseType=n,this},setWithCredentials:function(n){return this.withCredentials=n,this},setMimeType:function(n){return this.mimeType=n,this},setRequestHeader:function(n){return this.requestHeader=n,this}}),Object.assign(ra.prototype,{load:function(n,t,e,r){var i=this,o=[],a=new Si;a.image=o;var l=new ea(this.manager);function s(s){l.load(n[s],function(n){var e=i._parser(n,!0);o[s]={width:e.width,height:e.height,format:e.format,mipmaps:e.mipmaps},6===(c+=1)&&(1===e.mipmapCount&&(a.minFilter=Mn),a.format=e.format,a.needsUpdate=!0,t&&t(a))},e,r)}if(l.setPath(this.path),l.setResponseType("arraybuffer"),Array.isArray(n))for(var c=0,u=0,h=n.length;u<h;++u)s(u);else l.load(n,function(n){var e=i._parser(n,!0);if(e.isCubemap)for(var r=e.mipmaps.length/e.mipmapCount,l=0;l<r;l++){o[l]={mipmaps:[]};for(var s=0;s<e.mipmapCount;s++)o[l].mipmaps.push(e.mipmaps[l*e.mipmapCount+s]),o[l].format=e.format,o[l].width=e.width,o[l].height=e.height}else a.image.width=e.width,a.image.height=e.height,a.mipmaps=e.mipmaps;1===e.mipmapCount&&(a.minFilter=Mn),a.format=e.format,a.needsUpdate=!0,t&&t(a)},e,r);return a},setPath:function(n){return this.path=n,this}}),Object.assign(ia.prototype,{load:function(n,t,e,r){var i=this,o=new Jt,a=new ea(this.manager);return a.setResponseType("arraybuffer"),a.load(n,function(n){var e=i._parser(n);e&&(void 0!==e.image?o.image=e.image:void 0!==e.data&&(o.image.width=e.width,o.image.height=e.height,o.image.data=e.data),o.wrapS=void 0!==e.wrapS?e.wrapS:gn,o.wrapT=void 0!==e.wrapT?e.wrapT:gn,o.magFilter=void 0!==e.magFilter?e.magFilter:Mn,o.minFilter=void 0!==e.minFilter?e.minFilter:En,o.anisotropy=void 0!==e.anisotropy?e.anisotropy:1,void 0!==e.format&&(o.format=e.format),void 0!==e.type&&(o.type=e.type),void 0!==e.mipmaps&&(o.mipmaps=e.mipmaps),1===e.mipmapCount&&(o.minFilter=Mn),o.needsUpdate=!0,t&&t(o,e))},e,r),o}}),Object.assign(oa.prototype,{crossOrigin:"anonymous",load:function(n,t,e,r){void 0===n&&(n=""),void 0!==this.path&&(n=this.path+n),n=this.manager.resolveURL(n);var i=this,o=Qo.get(n);if(void 0!==o)return i.manager.itemStart(n),setTimeout(function(){t&&t(o),i.manager.itemEnd(n)},0),o;var a=document.createElementNS("http://www.w3.org/1999/xhtml","img");function l(){a.removeEventListener("load",l,!1),a.removeEventListener("error",s,!1),Qo.add(n,this),t&&t(this),i.manager.itemEnd(n)}function s(t){a.removeEventListener("load",l,!1),a.removeEventListener("error",s,!1),r&&r(t),i.manager.itemEnd(n),i.manager.itemError(n)}return a.addEventListener("load",l,!1),a.addEventListener("error",s,!1),"data:"!==n.substr(0,5)&&void 0!==this.crossOrigin&&(a.crossOrigin=this.crossOrigin),i.manager.itemStart(n),a.src=n,a},setCrossOrigin:function(n){return this.crossOrigin=n,this},setPath:function(n){return this.path=n,this}}),Object.assign(aa.prototype,{crossOrigin:"anonymous",load:function(n,t,e,r){var i=new Ve,o=new oa(this.manager);o.setCrossOrigin(this.crossOrigin),o.setPath(this.path);var a=0;function l(e){o.load(n[e],function(n){i.images[e]=n,6===++a&&(i.needsUpdate=!0,t&&t(i))},void 0,r)}for(var s=0;s<n.length;++s)l(s);return i},setCrossOrigin:function(n){return this.crossOrigin=n,this},setPath:function(n){return this.path=n,this}}),Object.assign(la.prototype,{crossOrigin:"anonymous",load:function(n,t,e,r){var i=new Xt,o=new oa(this.manager);return o.setCrossOrigin(this.crossOrigin),o.setPath(this.path),o.load(n,function(e){i.image=e;var r=n.search(/\.(jpg|jpeg)$/)>0||0===n.search(/^data\:image\/jpeg/);i.format=r?Fn:zn,i.needsUpdate=!0,void 0!==t&&t(i)},e,r),i},setCrossOrigin:function(n){return this.crossOrigin=n,this},setPath:function(n){return this.path=n,this}}),Object.assign(sa.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(n,t){var e=this.getUtoTmapping(n);return this.getPoint(e,t)},getPoints:function(n){void 0===n&&(n=5);for(var t=[],e=0;e<=n;e++)t.push(this.getPoint(e/n));return t},getSpacedPoints:function(n){void 0===n&&(n=5);for(var t=[],e=0;e<=n;e++)t.push(this.getPointAt(e/n));return t},getLength:function(){var n=this.getLengths();return n[n.length-1]},getLengths:function(n){if(void 0===n&&(n=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===n+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,e,r=[],i=this.getPoint(0),o=0;for(r.push(0),e=1;e<=n;e++)o+=(t=this.getPoint(e/n)).distanceTo(i),r.push(o),i=t;return this.cacheArcLengths=r,r},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(n,t){var e,r=this.getLengths(),i=0,o=r.length;e=t||n*r[o-1];for(var a,l=0,s=o-1;l<=s;)if((a=r[i=Math.floor(l+(s-l)/2)]-e)<0)l=i+1;else{if(!(a>0)){s=i;break}s=i-1}if(r[i=s]===e)return i/(o-1);var c=r[i];return(i+(e-c)/(r[i+1]-c))/(o-1)},getTangent:function(n){var t=n-1e-4,e=n+1e-4;t<0&&(t=0),e>1&&(e=1);var r=this.getPoint(t);return this.getPoint(e).clone().sub(r).normalize()},getTangentAt:function(n){var t=this.getUtoTmapping(n);return this.getTangent(t)},computeFrenetFrames:function(n,t){var e,r,i,o=new jt,a=[],l=[],s=[],c=new jt,u=new Gt;for(e=0;e<=n;e++)r=e/n,a[e]=this.getTangentAt(r),a[e].normalize();l[0]=new jt,s[0]=new jt;var h=Number.MAX_VALUE,v=Math.abs(a[0].x),d=Math.abs(a[0].y),f=Math.abs(a[0].z);for(v<=h&&(h=v,o.set(1,0,0)),d<=h&&(h=d,o.set(0,1,0)),f<=h&&o.set(0,0,1),c.crossVectors(a[0],o).normalize(),l[0].crossVectors(a[0],c),s[0].crossVectors(a[0],l[0]),e=1;e<=n;e++)l[e]=l[e-1].clone(),s[e]=s[e-1].clone(),c.crossVectors(a[e-1],a[e]),c.length()>Number.EPSILON&&(c.normalize(),i=Math.acos(Ft.clamp(a[e-1].dot(a[e]),-1,1)),l[e].applyMatrix4(u.makeRotationAxis(c,i))),s[e].crossVectors(a[e],l[e]);if(!0===t)for(i=Math.acos(Ft.clamp(l[0].dot(l[n]),-1,1)),i/=n,a[0].dot(c.crossVectors(l[0],l[n]))>0&&(i=-i),e=1;e<=n;e++)l[e].applyMatrix4(u.makeRotationAxis(a[e],i*e)),s[e].crossVectors(a[e],l[e]);return{tangents:a,normals:l,binormals:s}},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.arcLengthDivisions=n.arcLengthDivisions,this},toJSON:function(){var n={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return n.arcLengthDivisions=this.arcLengthDivisions,n.type=this.type,n},fromJSON:function(n){return this.arcLengthDivisions=n.arcLengthDivisions,this}}),ca.prototype=Object.create(sa.prototype),ca.prototype.constructor=ca,ca.prototype.isEllipseCurve=!0,ca.prototype.getPoint=function(n,t){for(var e=t||new zt,r=2*Math.PI,i=this.aEndAngle-this.aStartAngle,o=Math.abs(i)<Number.EPSILON;i<0;)i+=r;for(;i>r;)i-=r;i<Number.EPSILON&&(i=o?0:r),!0!==this.aClockwise||o||(i===r?i=-r:i-=r);var a=this.aStartAngle+n*i,l=this.aX+this.xRadius*Math.cos(a),s=this.aY+this.yRadius*Math.sin(a);if(0!==this.aRotation){var c=Math.cos(this.aRotation),u=Math.sin(this.aRotation),h=l-this.aX,v=s-this.aY;l=h*c-v*u+this.aX,s=h*u+v*c+this.aY}return e.set(l,s)},ca.prototype.copy=function(n){return sa.prototype.copy.call(this,n),this.aX=n.aX,this.aY=n.aY,this.xRadius=n.xRadius,this.yRadius=n.yRadius,this.aStartAngle=n.aStartAngle,this.aEndAngle=n.aEndAngle,this.aClockwise=n.aClockwise,this.aRotation=n.aRotation,this},ca.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);return n.aX=this.aX,n.aY=this.aY,n.xRadius=this.xRadius,n.yRadius=this.yRadius,n.aStartAngle=this.aStartAngle,n.aEndAngle=this.aEndAngle,n.aClockwise=this.aClockwise,n.aRotation=this.aRotation,n},ca.prototype.fromJSON=function(n){return sa.prototype.fromJSON.call(this,n),this.aX=n.aX,this.aY=n.aY,this.xRadius=n.xRadius,this.yRadius=n.yRadius,this.aStartAngle=n.aStartAngle,this.aEndAngle=n.aEndAngle,this.aClockwise=n.aClockwise,this.aRotation=n.aRotation,this},ua.prototype=Object.create(ca.prototype),ua.prototype.constructor=ua,ua.prototype.isArcCurve=!0;var va=new jt,da=new ha,fa=new ha,pa=new ha;function ma(n,t,e,r){sa.call(this),this.type="CatmullRomCurve3",this.points=n||[],this.closed=t||!1,this.curveType=e||"centripetal",this.tension=r||.5}function ga(n,t,e,r,i){var o=.5*(r-t),a=.5*(i-e),l=n*n;return(2*e-2*r+o+a)*(n*l)+(-3*e+3*r-2*o-a)*l+o*n+e}function ya(n,t,e,r){return function(n,t){var e=1-n;return e*e*t}(n,t)+function(n,t){return 2*(1-n)*n*t}(n,e)+function(n,t){return n*n*t}(n,r)}function xa(n,t,e,r,i){return function(n,t){var e=1-n;return e*e*e*t}(n,t)+function(n,t){var e=1-n;return 3*e*e*n*t}(n,e)+function(n,t){return 3*(1-n)*n*n*t}(n,r)+function(n,t){return n*n*n*t}(n,i)}function ba(n,t,e,r){sa.call(this),this.type="CubicBezierCurve",this.v0=n||new zt,this.v1=t||new zt,this.v2=e||new zt,this.v3=r||new zt}function wa(n,t,e,r){sa.call(this),this.type="CubicBezierCurve3",this.v0=n||new jt,this.v1=t||new jt,this.v2=e||new jt,this.v3=r||new jt}function Ma(n,t){sa.call(this),this.type="LineCurve",this.v1=n||new zt,this.v2=t||new zt}function _a(n,t){sa.call(this),this.type="LineCurve3",this.v1=n||new jt,this.v2=t||new jt}function Ea(n,t,e){sa.call(this),this.type="QuadraticBezierCurve",this.v0=n||new zt,this.v1=t||new zt,this.v2=e||new zt}function Sa(n,t,e){sa.call(this),this.type="QuadraticBezierCurve3",this.v0=n||new jt,this.v1=t||new jt,this.v2=e||new jt}function Ta(n){sa.call(this),this.type="SplineCurve",this.points=n||[]}ma.prototype=Object.create(sa.prototype),ma.prototype.constructor=ma,ma.prototype.isCatmullRomCurve3=!0,ma.prototype.getPoint=function(n,t){var e,r,i,o,a=t||new jt,l=this.points,s=l.length,c=(s-(this.closed?0:1))*n,u=Math.floor(c),h=c-u;if(this.closed?u+=u>0?0:(Math.floor(Math.abs(u)/s)+1)*s:0===h&&u===s-1&&(u=s-2,h=1),this.closed||u>0?e=l[(u-1)%s]:(va.subVectors(l[0],l[1]).add(l[0]),e=va),r=l[u%s],i=l[(u+1)%s],this.closed||u+2<s?o=l[(u+2)%s]:(va.subVectors(l[s-1],l[s-2]).add(l[s-1]),o=va),"centripetal"===this.curveType||"chordal"===this.curveType){var v="chordal"===this.curveType?.5:.25,d=Math.pow(e.distanceToSquared(r),v),f=Math.pow(r.distanceToSquared(i),v),p=Math.pow(i.distanceToSquared(o),v);f<1e-4&&(f=1),d<1e-4&&(d=f),p<1e-4&&(p=f),da.initNonuniformCatmullRom(e.x,r.x,i.x,o.x,d,f,p),fa.initNonuniformCatmullRom(e.y,r.y,i.y,o.y,d,f,p),pa.initNonuniformCatmullRom(e.z,r.z,i.z,o.z,d,f,p)}else"catmullrom"===this.curveType&&(da.initCatmullRom(e.x,r.x,i.x,o.x,this.tension),fa.initCatmullRom(e.y,r.y,i.y,o.y,this.tension),pa.initCatmullRom(e.z,r.z,i.z,o.z,this.tension));return a.set(da.calc(h),fa.calc(h),pa.calc(h)),a},ma.prototype.copy=function(n){sa.prototype.copy.call(this,n),this.points=[];for(var t=0,e=n.points.length;t<e;t++){var r=n.points[t];this.points.push(r.clone())}return this.closed=n.closed,this.curveType=n.curveType,this.tension=n.tension,this},ma.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);n.points=[];for(var t=0,e=this.points.length;t<e;t++){var r=this.points[t];n.points.push(r.toArray())}return n.closed=this.closed,n.curveType=this.curveType,n.tension=this.tension,n},ma.prototype.fromJSON=function(n){sa.prototype.fromJSON.call(this,n),this.points=[];for(var t=0,e=n.points.length;t<e;t++){var r=n.points[t];this.points.push((new jt).fromArray(r))}return this.closed=n.closed,this.curveType=n.curveType,this.tension=n.tension,this},ba.prototype=Object.create(sa.prototype),ba.prototype.constructor=ba,ba.prototype.isCubicBezierCurve=!0,ba.prototype.getPoint=function(n,t){var e=t||new zt,r=this.v0,i=this.v1,o=this.v2,a=this.v3;return e.set(xa(n,r.x,i.x,o.x,a.x),xa(n,r.y,i.y,o.y,a.y)),e},ba.prototype.copy=function(n){return sa.prototype.copy.call(this,n),this.v0.copy(n.v0),this.v1.copy(n.v1),this.v2.copy(n.v2),this.v3.copy(n.v3),this},ba.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);return n.v0=this.v0.toArray(),n.v1=this.v1.toArray(),n.v2=this.v2.toArray(),n.v3=this.v3.toArray(),n},ba.prototype.fromJSON=function(n){return sa.prototype.fromJSON.call(this,n),this.v0.fromArray(n.v0),this.v1.fromArray(n.v1),this.v2.fromArray(n.v2),this.v3.fromArray(n.v3),this},wa.prototype=Object.create(sa.prototype),wa.prototype.constructor=wa,wa.prototype.isCubicBezierCurve3=!0,wa.prototype.getPoint=function(n,t){var e=t||new jt,r=this.v0,i=this.v1,o=this.v2,a=this.v3;return e.set(xa(n,r.x,i.x,o.x,a.x),xa(n,r.y,i.y,o.y,a.y),xa(n,r.z,i.z,o.z,a.z)),e},wa.prototype.copy=function(n){return sa.prototype.copy.call(this,n),this.v0.copy(n.v0),this.v1.copy(n.v1),this.v2.copy(n.v2),this.v3.copy(n.v3),this},wa.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);return n.v0=this.v0.toArray(),n.v1=this.v1.toArray(),n.v2=this.v2.toArray(),n.v3=this.v3.toArray(),n},wa.prototype.fromJSON=function(n){return sa.prototype.fromJSON.call(this,n),this.v0.fromArray(n.v0),this.v1.fromArray(n.v1),this.v2.fromArray(n.v2),this.v3.fromArray(n.v3),this},Ma.prototype=Object.create(sa.prototype),Ma.prototype.constructor=Ma,Ma.prototype.isLineCurve=!0,Ma.prototype.getPoint=function(n,t){var e=t||new zt;return 1===n?e.copy(this.v2):(e.copy(this.v2).sub(this.v1),e.multiplyScalar(n).add(this.v1)),e},Ma.prototype.getPointAt=function(n,t){return this.getPoint(n,t)},Ma.prototype.getTangent=function(){return this.v2.clone().sub(this.v1).normalize()},Ma.prototype.copy=function(n){return sa.prototype.copy.call(this,n),this.v1.copy(n.v1),this.v2.copy(n.v2),this},Ma.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);return n.v1=this.v1.toArray(),n.v2=this.v2.toArray(),n},Ma.prototype.fromJSON=function(n){return sa.prototype.fromJSON.call(this,n),this.v1.fromArray(n.v1),this.v2.fromArray(n.v2),this},_a.prototype=Object.create(sa.prototype),_a.prototype.constructor=_a,_a.prototype.isLineCurve3=!0,_a.prototype.getPoint=function(n,t){var e=t||new jt;return 1===n?e.copy(this.v2):(e.copy(this.v2).sub(this.v1),e.multiplyScalar(n).add(this.v1)),e},_a.prototype.getPointAt=function(n,t){return this.getPoint(n,t)},_a.prototype.copy=function(n){return sa.prototype.copy.call(this,n),this.v1.copy(n.v1),this.v2.copy(n.v2),this},_a.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);return n.v1=this.v1.toArray(),n.v2=this.v2.toArray(),n},_a.prototype.fromJSON=function(n){return sa.prototype.fromJSON.call(this,n),this.v1.fromArray(n.v1),this.v2.fromArray(n.v2),this},Ea.prototype=Object.create(sa.prototype),Ea.prototype.constructor=Ea,Ea.prototype.isQuadraticBezierCurve=!0,Ea.prototype.getPoint=function(n,t){var e=t||new zt,r=this.v0,i=this.v1,o=this.v2;return e.set(ya(n,r.x,i.x,o.x),ya(n,r.y,i.y,o.y)),e},Ea.prototype.copy=function(n){return sa.prototype.copy.call(this,n),this.v0.copy(n.v0),this.v1.copy(n.v1),this.v2.copy(n.v2),this},Ea.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);return n.v0=this.v0.toArray(),n.v1=this.v1.toArray(),n.v2=this.v2.toArray(),n},Ea.prototype.fromJSON=function(n){return sa.prototype.fromJSON.call(this,n),this.v0.fromArray(n.v0),this.v1.fromArray(n.v1),this.v2.fromArray(n.v2),this},Sa.prototype=Object.create(sa.prototype),Sa.prototype.constructor=Sa,Sa.prototype.isQuadraticBezierCurve3=!0,Sa.prototype.getPoint=function(n,t){var e=t||new jt,r=this.v0,i=this.v1,o=this.v2;return e.set(ya(n,r.x,i.x,o.x),ya(n,r.y,i.y,o.y),ya(n,r.z,i.z,o.z)),e},Sa.prototype.copy=function(n){return sa.prototype.copy.call(this,n),this.v0.copy(n.v0),this.v1.copy(n.v1),this.v2.copy(n.v2),this},Sa.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);return n.v0=this.v0.toArray(),n.v1=this.v1.toArray(),n.v2=this.v2.toArray(),n},Sa.prototype.fromJSON=function(n){return sa.prototype.fromJSON.call(this,n),this.v0.fromArray(n.v0),this.v1.fromArray(n.v1),this.v2.fromArray(n.v2),this},Ta.prototype=Object.create(sa.prototype),Ta.prototype.constructor=Ta,Ta.prototype.isSplineCurve=!0,Ta.prototype.getPoint=function(n,t){var e=t||new zt,r=this.points,i=(r.length-1)*n,o=Math.floor(i),a=i-o,l=r[0===o?o:o-1],s=r[o],c=r[o>r.length-2?r.length-1:o+1],u=r[o>r.length-3?r.length-1:o+2];return e.set(ga(a,l.x,s.x,c.x,u.x),ga(a,l.y,s.y,c.y,u.y)),e},Ta.prototype.copy=function(n){sa.prototype.copy.call(this,n),this.points=[];for(var t=0,e=n.points.length;t<e;t++){var r=n.points[t];this.points.push(r.clone())}return this},Ta.prototype.toJSON=function(){var n=sa.prototype.toJSON.call(this);n.points=[];for(var t=0,e=this.points.length;t<e;t++){var r=this.points[t];n.points.push(r.toArray())}return n},Ta.prototype.fromJSON=function(n){sa.prototype.fromJSON.call(this,n),this.points=[];for(var t=0,e=n.points.length;t<e;t++){var r=n.points[t];this.points.push((new zt).fromArray(r))}return this};var Aa=Object.freeze({ArcCurve:ua,CatmullRomCurve3:ma,CubicBezierCurve:ba,CubicBezierCurve3:wa,EllipseCurve:ca,LineCurve:Ma,LineCurve3:_a,QuadraticBezierCurve:Ea,QuadraticBezierCurve3:Sa,SplineCurve:Ta});function La(){sa.call(this),this.type="CurvePath",this.curves=[],this.autoClose=!1}function Pa(n){La.call(this),this.type="Path",this.currentPoint=new zt,n&&this.setFromPoints(n)}function Ca(n){Pa.call(this,n),this.uuid=Ft.generateUUID(),this.type="Shape",this.holes=[]}function Ra(n,t){ve.call(this),this.type="Light",this.color=new ie(n),this.intensity=void 0!==t?t:1,this.receiveShadow=void 0}function Oa(n,t,e){Ra.call(this,n,e),this.type="HemisphereLight",this.castShadow=void 0,this.position.copy(ve.DefaultUp),this.updateMatrix(),this.groundColor=new ie(t)}function Da(n){this.camera=n,this.bias=0,this.radius=1,this.mapSize=new zt(512,512),this.map=null,this.matrix=new Gt}function Ua(){Da.call(this,new ri(50,1,.5,500))}function Na(n,t,e,r,i,o){Ra.call(this,n,t),this.type="SpotLight",this.position.copy(ve.DefaultUp),this.updateMatrix(),this.target=new ve,Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(n){this.intensity=n/Math.PI}}),this.distance=void 0!==e?e:0,this.angle=void 0!==r?r:Math.PI/3,this.penumbra=void 0!==i?i:0,this.decay=void 0!==o?o:1,this.shadow=new Ua}function Ia(n,t,e,r){Ra.call(this,n,t),this.type="PointLight",Object.defineProperty(this,"power",{get:function(){return 4*this.intensity*Math.PI},set:function(n){this.intensity=n/(4*Math.PI)}}),this.distance=void 0!==e?e:0,this.decay=void 0!==r?r:1,this.shadow=new Da(new ri(90,1,.5,500))}function Ba(){Da.call(this,new fe(-5,5,5,-5,.5,500))}function Fa(n,t){Ra.call(this,n,t),this.type="DirectionalLight",this.position.copy(ve.DefaultUp),this.updateMatrix(),this.target=new ve,this.shadow=new Ba}function za(n,t){Ra.call(this,n,t),this.type="AmbientLight",this.castShadow=void 0}function Ga(n,t,e,r){Ra.call(this,n,t),this.type="RectAreaLight",this.width=void 0!==e?e:10,this.height=void 0!==r?r:10}La.prototype=Object.assign(Object.create(sa.prototype),{constructor:La,add:function(n){this.curves.push(n)},closePath:function(){var n=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);n.equals(t)||this.curves.push(new Ma(t,n))},getPoint:function(n){for(var t=n*this.getLength(),e=this.getCurveLengths(),r=0;r<e.length;){if(e[r]>=t){var i=e[r]-t,o=this.curves[r],a=o.getLength(),l=0===a?0:1-i/a;return o.getPointAt(l)}r++}return null},getLength:function(){var n=this.getCurveLengths();return n[n.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var n=[],t=0,e=0,r=this.curves.length;e<r;e++)t+=this.curves[e].getLength(),n.push(t);return this.cacheLengths=n,n},getSpacedPoints:function(n){void 0===n&&(n=40);for(var t=[],e=0;e<=n;e++)t.push(this.getPoint(e/n));return this.autoClose&&t.push(t[0]),t},getPoints:function(n){n=n||12;for(var t,e=[],r=0,i=this.curves;r<i.length;r++)for(var o=i[r],a=o&&o.isEllipseCurve?2*n:o&&(o.isLineCurve||o.isLineCurve3)?1:o&&o.isSplineCurve?n*o.points.length:n,l=o.getPoints(a),s=0;s<l.length;s++){var c=l[s];t&&t.equals(c)||(e.push(c),t=c)}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e},copy:function(n){sa.prototype.copy.call(this,n),this.curves=[];for(var t=0,e=n.curves.length;t<e;t++){var r=n.curves[t];this.curves.push(r.clone())}return this.autoClose=n.autoClose,this},toJSON:function(){var n=sa.prototype.toJSON.call(this);n.autoClose=this.autoClose,n.curves=[];for(var t=0,e=this.curves.length;t<e;t++){var r=this.curves[t];n.curves.push(r.toJSON())}return n},fromJSON:function(n){sa.prototype.fromJSON.call(this,n),this.autoClose=n.autoClose,this.curves=[];for(var t=0,e=n.curves.length;t<e;t++){var r=n.curves[t];this.curves.push((new Aa[r.type]).fromJSON(r))}return this}}),Pa.prototype=Object.assign(Object.create(La.prototype),{constructor:Pa,setFromPoints:function(n){this.moveTo(n[0].x,n[0].y);for(var t=1,e=n.length;t<e;t++)this.lineTo(n[t].x,n[t].y)},moveTo:function(n,t){this.currentPoint.set(n,t)},lineTo:function(n,t){var e=new Ma(this.currentPoint.clone(),new zt(n,t));this.curves.push(e),this.currentPoint.set(n,t)},quadraticCurveTo:function(n,t,e,r){var i=new Ea(this.currentPoint.clone(),new zt(n,t),new zt(e,r));this.curves.push(i),this.currentPoint.set(e,r)},bezierCurveTo:function(n,t,e,r,i,o){var a=new ba(this.currentPoint.clone(),new zt(n,t),new zt(e,r),new zt(i,o));this.curves.push(a),this.currentPoint.set(i,o)},splineThru:function(n){var t=new Ta([this.currentPoint.clone()].concat(n));this.curves.push(t),this.currentPoint.copy(n[n.length-1])},arc:function(n,t,e,r,i,o){var a=this.currentPoint.x,l=this.currentPoint.y;this.absarc(n+a,t+l,e,r,i,o)},absarc:function(n,t,e,r,i,o){this.absellipse(n,t,e,e,r,i,o)},ellipse:function(n,t,e,r,i,o,a,l){var s=this.currentPoint.x,c=this.currentPoint.y;this.absellipse(n+s,t+c,e,r,i,o,a,l)},absellipse:function(n,t,e,r,i,o,a,l){var s=new ca(n,t,e,r,i,o,a,l);if(this.curves.length>0){var c=s.getPoint(0);c.equals(this.currentPoint)||this.lineTo(c.x,c.y)}this.curves.push(s);var u=s.getPoint(1);this.currentPoint.copy(u)},copy:function(n){return La.prototype.copy.call(this,n),this.currentPoint.copy(n.currentPoint),this},toJSON:function(){var n=La.prototype.toJSON.call(this);return n.currentPoint=this.currentPoint.toArray(),n},fromJSON:function(n){return La.prototype.fromJSON.call(this,n),this.currentPoint.fromArray(n.currentPoint),this}}),Ca.prototype=Object.assign(Object.create(Pa.prototype),{constructor:Ca,getPointsHoles:function(n){for(var t=[],e=0,r=this.holes.length;e<r;e++)t[e]=this.holes[e].getPoints(n);return t},extractPoints:function(n){return{shape:this.getPoints(n),holes:this.getPointsHoles(n)}},copy:function(n){Pa.prototype.copy.call(this,n),this.holes=[];for(var t=0,e=n.holes.length;t<e;t++){var r=n.holes[t];this.holes.push(r.clone())}return this},toJSON:function(){var n=Pa.prototype.toJSON.call(this);n.uuid=this.uuid,n.holes=[];for(var t=0,e=this.holes.length;t<e;t++){var r=this.holes[t];n.holes.push(r.toJSON())}return n},fromJSON:function(n){Pa.prototype.fromJSON.call(this,n),this.uuid=n.uuid,this.holes=[];for(var t=0,e=n.holes.length;t<e;t++){var r=n.holes[t];this.holes.push((new Pa).fromJSON(r))}return this}}),Ra.prototype=Object.assign(Object.create(ve.prototype),{constructor:Ra,isLight:!0,copy:function(n){return ve.prototype.copy.call(this,n),this.color.copy(n.color),this.intensity=n.intensity,this},toJSON:function(n){var t=ve.prototype.toJSON.call(this,n);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,void 0!==this.groundColor&&(t.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(t.object.distance=this.distance),void 0!==this.angle&&(t.object.angle=this.angle),void 0!==this.decay&&(t.object.decay=this.decay),void 0!==this.penumbra&&(t.object.penumbra=this.penumbra),void 0!==this.shadow&&(t.object.shadow=this.shadow.toJSON()),t}}),Oa.prototype=Object.assign(Object.create(Ra.prototype),{constructor:Oa,isHemisphereLight:!0,copy:function(n){return Ra.prototype.copy.call(this,n),this.groundColor.copy(n.groundColor),this}}),Object.assign(Da.prototype,{copy:function(n){return this.camera=n.camera.clone(),this.bias=n.bias,this.radius=n.radius,this.mapSize.copy(n.mapSize),this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var n={};return 0!==this.bias&&(n.bias=this.bias),1!==this.radius&&(n.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(n.mapSize=this.mapSize.toArray()),n.camera=this.camera.toJSON(!1).object,delete n.camera.matrix,n}}),Ua.prototype=Object.assign(Object.create(Da.prototype),{constructor:Ua,isSpotLightShadow:!0,update:function(n){var t=this.camera,e=2*Ft.RAD2DEG*n.angle,r=this.mapSize.width/this.mapSize.height,i=n.distance||t.far;e===t.fov&&r===t.aspect&&i===t.far||(t.fov=e,t.aspect=r,t.far=i,t.updateProjectionMatrix())}}),Na.prototype=Object.assign(Object.create(Ra.prototype),{constructor:Na,isSpotLight:!0,copy:function(n){return Ra.prototype.copy.call(this,n),this.distance=n.distance,this.angle=n.angle,this.penumbra=n.penumbra,this.decay=n.decay,this.target=n.target.clone(),this.shadow=n.shadow.clone(),this}}),Ia.prototype=Object.assign(Object.create(Ra.prototype),{constructor:Ia,isPointLight:!0,copy:function(n){return Ra.prototype.copy.call(this,n),this.distance=n.distance,this.decay=n.decay,this.shadow=n.shadow.clone(),this}}),Ba.prototype=Object.assign(Object.create(Da.prototype),{constructor:Ba}),Fa.prototype=Object.assign(Object.create(Ra.prototype),{constructor:Fa,isDirectionalLight:!0,copy:function(n){return Ra.prototype.copy.call(this,n),this.target=n.target.clone(),this.shadow=n.shadow.clone(),this}}),za.prototype=Object.assign(Object.create(Ra.prototype),{constructor:za,isAmbientLight:!0}),Ga.prototype=Object.assign(Object.create(Ra.prototype),{constructor:Ga,isRectAreaLight:!0,copy:function(n){return Ra.prototype.copy.call(this,n),this.width=n.width,this.height=n.height,this},toJSON:function(n){var t=Ra.prototype.toJSON.call(this,n);return t.object.width=this.width,t.object.height=this.height,t}});var ka={arraySlice:function(n,t,e){return ka.isTypedArray(n)?new n.constructor(n.subarray(t,void 0!==e?e:n.length)):n.slice(t,e)},convertArray:function(n,t,e){return!n||!e&&n.constructor===t?n:"number"==typeof t.BYTES_PER_ELEMENT?new t(n):Array.prototype.slice.call(n)},isTypedArray:function(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)},getKeyframeOrder:function(n){for(var t=n.length,e=new Array(t),r=0;r!==t;++r)e[r]=r;return e.sort(function(t,e){return n[t]-n[e]}),e},sortedArray:function(n,t,e){for(var r=n.length,i=new n.constructor(r),o=0,a=0;a!==r;++o)for(var l=e[o]*t,s=0;s!==t;++s)i[a++]=n[l+s];return i},flattenJSON:function(n,t,e,r){for(var i=1,o=n[0];void 0!==o&&void 0===o[r];)o=n[i++];if(void 0!==o){var a=o[r];if(void 0!==a)if(Array.isArray(a))do{void 0!==(a=o[r])&&(t.push(o.time),e.push.apply(e,a)),o=n[i++]}while(void 0!==o);else if(void 0!==a.toArray)do{void 0!==(a=o[r])&&(t.push(o.time),a.toArray(e,e.length)),o=n[i++]}while(void 0!==o);else do{void 0!==(a=o[r])&&(t.push(o.time),e.push(a)),o=n[i++]}while(void 0!==o)}}};function ja(n,t,e,r){this.parameterPositions=n,this._cachedIndex=0,this.resultBuffer=void 0!==r?r:new t.constructor(e),this.sampleValues=t,this.valueSize=e}function Ha(n,t,e,r){ja.call(this,n,t,e,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0}function Va(n,t,e,r){ja.call(this,n,t,e,r)}function Wa(n,t,e,r){ja.call(this,n,t,e,r)}function Xa(n,t,e,r){if(void 0===n)throw new Error("THREE.KeyframeTrack: track name is undefined");if(void 0===t||0===t.length)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+n);this.name=n,this.times=ka.convertArray(t,this.TimeBufferType),this.values=ka.convertArray(e,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}function qa(n,t,e){Xa.call(this,n,t,e)}function Ya(n,t,e,r){Xa.call(this,n,t,e,r)}function Za(n,t,e,r){Xa.call(this,n,t,e,r)}function Ja(n,t,e,r){ja.call(this,n,t,e,r)}function Ka(n,t,e,r){Xa.call(this,n,t,e,r)}function Qa(n,t,e,r){Xa.call(this,n,t,e,r)}function $a(n,t,e,r){Xa.call(this,n,t,e,r)}function nl(n,t,e){this.name=n,this.tracks=e,this.duration=void 0!==t?t:-1,this.uuid=Ft.generateUUID(),this.duration<0&&this.resetDuration()}function tl(n){if(void 0===n.type)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");var t=function(n){switch(n.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return Za;case"vector":case"vector2":case"vector3":case"vector4":return $a;case"color":return Ya;case"quaternion":return Ka;case"bool":case"boolean":return qa;case"string":return Qa}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+n)}(n.type);if(void 0===n.times){var e=[],r=[];ka.flattenJSON(n.keys,e,r,"value"),n.times=e,n.values=r}return void 0!==t.parse?t.parse(n):new t(n.name,n.times,n.values,n.interpolation)}function el(n){this.manager=void 0!==n?n:na,this.textures={}}function rl(n){this.manager=void 0!==n?n:na}Object.assign(ja.prototype,{evaluate:function(n){var t=this.parameterPositions,e=this._cachedIndex,r=t[e],i=t[e-1];n:{t:{var o;e:{r:if(!(n<r)){for(var a=e+2;;){if(void 0===r){if(n<i)break r;return e=t.length,this._cachedIndex=e,this.afterEnd_(e-1,n,i)}if(e===a)break;if(i=r,n<(r=t[++e]))break t}o=t.length;break e}if(n>=i)break n;var l=t[1];n<l&&(e=2,i=l);for(a=e-2;;){if(void 0===i)return this._cachedIndex=0,this.beforeStart_(0,n,r);if(e===a)break;if(r=i,n>=(i=t[--e-1]))break t}o=e,e=0}for(;e<o;){var s=e+o>>>1;n<t[s]?o=s:e=s+1}if(r=t[e],void 0===(i=t[e-1]))return this._cachedIndex=0,this.beforeStart_(0,n,r);if(void 0===r)return e=t.length,this._cachedIndex=e,this.afterEnd_(e-1,i,n)}this._cachedIndex=e,this.intervalChanged_(e,i,r)}return this.interpolate_(e,i,n,r)},settings:null,DefaultSettings_:{},getSettings_:function(){return this.settings||this.DefaultSettings_},copySampleValue_:function(n){for(var t=this.resultBuffer,e=this.sampleValues,r=this.valueSize,i=n*r,o=0;o!==r;++o)t[o]=e[i+o];return t},interpolate_:function(){throw new Error("call to abstract method")},intervalChanged_:function(){}}),
//!\ DECLARE ALIAS AFTER assign prototype !
Object.assign(ja.prototype,{beforeStart_:ja.prototype.copySampleValue_,afterEnd_:ja.prototype.copySampleValue_}),Ha.prototype=Object.assign(Object.create(ja.prototype),{constructor:Ha,DefaultSettings_:{endingStart:bt,endingEnd:bt},intervalChanged_:function(n,t,e){var r=this.parameterPositions,i=n-2,o=n+1,a=r[i],l=r[o];if(void 0===a)switch(this.getSettings_().endingStart){case wt:i=n,a=2*t-e;break;case Mt:a=t+r[i=r.length-2]-r[i+1];break;default:i=n,a=e}if(void 0===l)switch(this.getSettings_().endingEnd){case wt:o=n,l=2*e-t;break;case Mt:o=1,l=e+r[1]-r[0];break;default:o=n-1,l=t}var s=.5*(e-t),c=this.valueSize;this._weightPrev=s/(t-a),this._weightNext=s/(l-e),this._offsetPrev=i*c,this._offsetNext=o*c},interpolate_:function(n,t,e,r){for(var i=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=n*a,s=l-a,c=this._offsetPrev,u=this._offsetNext,h=this._weightPrev,v=this._weightNext,d=(e-t)/(r-t),f=d*d,p=f*d,m=-h*p+2*h*f-h*d,g=(1+h)*p+(-1.5-2*h)*f+(-.5+h)*d+1,y=(-1-v)*p+(1.5+v)*f+.5*d,x=v*p-v*f,b=0;b!==a;++b)i[b]=m*o[c+b]+g*o[s+b]+y*o[l+b]+x*o[u+b];return i}}),Va.prototype=Object.assign(Object.create(ja.prototype),{constructor:Va,interpolate_:function(n,t,e,r){for(var i=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=n*a,s=l-a,c=(e-t)/(r-t),u=1-c,h=0;h!==a;++h)i[h]=o[s+h]*u+o[l+h]*c;return i}}),Wa.prototype=Object.assign(Object.create(ja.prototype),{constructor:Wa,interpolate_:function(n){return this.copySampleValue_(n-1)}}),Object.assign(Xa,{toJSON:function(n){var t,e=n.constructor;if(void 0!==e.toJSON)t=e.toJSON(n);else{t={name:n.name,times:ka.convertArray(n.times,Array),values:ka.convertArray(n.values,Array)};var r=n.getInterpolation();r!==n.DefaultInterpolation&&(t.interpolation=r)}return t.type=n.ValueTypeName,t}}),Object.assign(Xa.prototype,{constructor:Xa,TimeBufferType:Float32Array,ValueBufferType:Float32Array,DefaultInterpolation:yt,InterpolantFactoryMethodDiscrete:function(n){return new Wa(this.times,this.values,this.getValueSize(),n)},InterpolantFactoryMethodLinear:function(n){return new Va(this.times,this.values,this.getValueSize(),n)},InterpolantFactoryMethodSmooth:function(n){return new Ha(this.times,this.values,this.getValueSize(),n)},setInterpolation:function(n){var t;switch(n){case gt:t=this.InterpolantFactoryMethodDiscrete;break;case yt:t=this.InterpolantFactoryMethodLinear;break;case xt:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){var e="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(n===this.DefaultInterpolation)throw new Error(e);this.setInterpolation(this.DefaultInterpolation)}return console.warn("THREE.KeyframeTrack:",e),this}return this.createInterpolant=t,this},getInterpolation:function(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return gt;case this.InterpolantFactoryMethodLinear:return yt;case this.InterpolantFactoryMethodSmooth:return xt}},getValueSize:function(){return this.values.length/this.times.length},shift:function(n){if(0!==n)for(var t=this.times,e=0,r=t.length;e!==r;++e)t[e]+=n;return this},scale:function(n){if(1!==n)for(var t=this.times,e=0,r=t.length;e!==r;++e)t[e]*=n;return this},trim:function(n,t){for(var e=this.times,r=e.length,i=0,o=r-1;i!==r&&e[i]<n;)++i;for(;-1!==o&&e[o]>t;)--o;if(++o,0!==i||o!==r){i>=o&&(i=(o=Math.max(o,1))-1);var a=this.getValueSize();this.times=ka.arraySlice(e,i,o),this.values=ka.arraySlice(this.values,i*a,o*a)}return this},validate:function(){var n=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),n=!1);var e=this.times,r=this.values,i=e.length;0===i&&(console.error("THREE.KeyframeTrack: Track is empty.",this),n=!1);for(var o=null,a=0;a!==i;a++){var l=e[a];if("number"==typeof l&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),n=!1;break}if(null!==o&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),n=!1;break}o=l}if(void 0!==r&&ka.isTypedArray(r)){a=0;for(var s=r.length;a!==s;++a){var c=r[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),n=!1;break}}}return n},optimize:function(){for(var n=this.times,t=this.values,e=this.getValueSize(),r=this.getInterpolation()===xt,i=1,o=n.length-1,a=1;a<o;++a){var l=!1,s=n[a];if(s!==n[a+1]&&(1!==a||s!==s[0]))if(r)l=!0;else for(var c=a*e,u=c-e,h=c+e,v=0;v!==e;++v){var d=t[c+v];if(d!==t[u+v]||d!==t[h+v]){l=!0;break}}if(l){if(a!==i){n[i]=n[a];var f=a*e,p=i*e;for(v=0;v!==e;++v)t[p+v]=t[f+v]}++i}}if(o>0){n[i]=n[o];for(f=o*e,p=i*e,v=0;v!==e;++v)t[p+v]=t[f+v];++i}return i!==n.length&&(this.times=ka.arraySlice(n,0,i),this.values=ka.arraySlice(t,0,i*e)),this}}),qa.prototype=Object.assign(Object.create(Xa.prototype),{constructor:qa,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:gt,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Ya.prototype=Object.assign(Object.create(Xa.prototype),{constructor:Ya,ValueTypeName:"color"}),Za.prototype=Object.assign(Object.create(Xa.prototype),{constructor:Za,ValueTypeName:"number"}),Ja.prototype=Object.assign(Object.create(ja.prototype),{constructor:Ja,interpolate_:function(n,t,e,r){for(var i=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=n*a,s=(e-t)/(r-t),c=l+a;l!==c;l+=4)kt.slerpFlat(i,0,o,l-a,o,l,s);return i}}),Ka.prototype=Object.assign(Object.create(Xa.prototype),{constructor:Ka,ValueTypeName:"quaternion",DefaultInterpolation:yt,InterpolantFactoryMethodLinear:function(n){return new Ja(this.times,this.values,this.getValueSize(),n)},InterpolantFactoryMethodSmooth:void 0}),Qa.prototype=Object.assign(Object.create(Xa.prototype),{constructor:Qa,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:gt,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),$a.prototype=Object.assign(Object.create(Xa.prototype),{constructor:$a,ValueTypeName:"vector"}),Object.assign(nl,{parse:function(n){for(var t=[],e=n.tracks,r=1/(n.fps||1),i=0,o=e.length;i!==o;++i)t.push(tl(e[i]).scale(r));return new nl(n.name,n.duration,t)},toJSON:function(n){for(var t=[],e=n.tracks,r={name:n.name,duration:n.duration,tracks:t,uuid:n.uuid},i=0,o=e.length;i!==o;++i)t.push(Xa.toJSON(e[i]));return r},CreateFromMorphTargetSequence:function(n,t,e,r){for(var i=t.length,o=[],a=0;a<i;a++){var l=[],s=[];l.push((a+i-1)%i,a,(a+1)%i),s.push(0,1,0);var c=ka.getKeyframeOrder(l);l=ka.sortedArray(l,1,c),s=ka.sortedArray(s,1,c),r||0!==l[0]||(l.push(i),s.push(s[0])),o.push(new Za(".morphTargetInfluences["+t[a].name+"]",l,s).scale(1/e))}return new nl(n,-1,o)},findByName:function(n,t){var e=n;if(!Array.isArray(n)){var r=n;e=r.geometry&&r.geometry.animations||r.animations}for(var i=0;i<e.length;i++)if(e[i].name===t)return e[i];return null},CreateClipsFromMorphTargetSequences:function(n,t,e){for(var r={},i=/^([\w-]*?)([\d]+)$/,o=0,a=n.length;o<a;o++){var l=n[o],s=l.name.match(i);if(s&&s.length>1){var c=r[h=s[1]];c||(r[h]=c=[]),c.push(l)}}var u=[];for(var h in r)u.push(nl.CreateFromMorphTargetSequence(h,r[h],t,e));return u},parseAnimation:function(n,t){if(!n)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var e=function(n,t,e,r,i){if(0!==e.length){var o=[],a=[];ka.flattenJSON(e,o,a,r),0!==o.length&&i.push(new n(t,o,a))}},r=[],i=n.name||"default",o=n.length||-1,a=n.fps||30,l=n.hierarchy||[],s=0;s<l.length;s++){var c=l[s].keys;if(c&&0!==c.length)if(c[0].morphTargets){for(var u={},h=0;h<c.length;h++)if(c[h].morphTargets)for(var v=0;v<c[h].morphTargets.length;v++)u[c[h].morphTargets[v]]=-1;for(var d in u){var f=[],p=[];for(v=0;v!==c[h].morphTargets.length;++v){var m=c[h];f.push(m.time),p.push(m.morphTarget===d?1:0)}r.push(new Za(".morphTargetInfluence["+d+"]",f,p))}o=u.length*(a||1)}else{var g=".bones["+t[s].name+"]";e($a,g+".position",c,"pos",r),e(Ka,g+".quaternion",c,"rot",r),e($a,g+".scale",c,"scl",r)}}return 0===r.length?null:new nl(i,o,r)}}),Object.assign(nl.prototype,{resetDuration:function(){for(var n=0,t=0,e=this.tracks.length;t!==e;++t){var r=this.tracks[t];n=Math.max(n,r.times[r.times.length-1])}return this.duration=n,this},trim:function(){for(var n=0;n<this.tracks.length;n++)this.tracks[n].trim(0,this.duration);return this},validate:function(){for(var n=!0,t=0;t<this.tracks.length;t++)n=n&&this.tracks[t].validate();return n},optimize:function(){for(var n=0;n<this.tracks.length;n++)this.tracks[n].optimize();return this}}),Object.assign(el.prototype,{load:function(n,t,e,r){var i=this;new ea(i.manager).load(n,function(n){t(i.parse(JSON.parse(n)))},e,r)},setTextures:function(n){this.textures=n},parse:function(n){var t=this.textures;function e(n){return void 0===t[n]&&console.warn("THREE.MaterialLoader: Undefined texture",n),t[n]}var r=new Ko[n.type];if(void 0!==n.uuid&&(r.uuid=n.uuid),void 0!==n.name&&(r.name=n.name),void 0!==n.color&&r.color.setHex(n.color),void 0!==n.roughness&&(r.roughness=n.roughness),void 0!==n.metalness&&(r.metalness=n.metalness),void 0!==n.emissive&&r.emissive.setHex(n.emissive),void 0!==n.specular&&r.specular.setHex(n.specular),void 0!==n.shininess&&(r.shininess=n.shininess),void 0!==n.clearCoat&&(r.clearCoat=n.clearCoat),void 0!==n.clearCoatRoughness&&(r.clearCoatRoughness=n.clearCoatRoughness),void 0!==n.uniforms&&(r.uniforms=n.uniforms),void 0!==n.vertexShader&&(r.vertexShader=n.vertexShader),void 0!==n.fragmentShader&&(r.fragmentShader=n.fragmentShader),void 0!==n.vertexColors&&(r.vertexColors=n.vertexColors),void 0!==n.fog&&(r.fog=n.fog),void 0!==n.flatShading&&(r.flatShading=n.flatShading),void 0!==n.blending&&(r.blending=n.blending),void 0!==n.side&&(r.side=n.side),void 0!==n.opacity&&(r.opacity=n.opacity),void 0!==n.transparent&&(r.transparent=n.transparent),void 0!==n.alphaTest&&(r.alphaTest=n.alphaTest),void 0!==n.depthTest&&(r.depthTest=n.depthTest),void 0!==n.depthWrite&&(r.depthWrite=n.depthWrite),void 0!==n.colorWrite&&(r.colorWrite=n.colorWrite),void 0!==n.wireframe&&(r.wireframe=n.wireframe),void 0!==n.wireframeLinewidth&&(r.wireframeLinewidth=n.wireframeLinewidth),void 0!==n.wireframeLinecap&&(r.wireframeLinecap=n.wireframeLinecap),void 0!==n.wireframeLinejoin&&(r.wireframeLinejoin=n.wireframeLinejoin),void 0!==n.rotation&&(r.rotation=n.rotation),1!==n.linewidth&&(r.linewidth=n.linewidth),void 0!==n.dashSize&&(r.dashSize=n.dashSize),void 0!==n.gapSize&&(r.gapSize=n.gapSize),void 0!==n.scale&&(r.scale=n.scale),void 0!==n.polygonOffset&&(r.polygonOffset=n.polygonOffset),void 0!==n.polygonOffsetFactor&&(r.polygonOffsetFactor=n.polygonOffsetFactor),void 0!==n.polygonOffsetUnits&&(r.polygonOffsetUnits=n.polygonOffsetUnits),void 0!==n.skinning&&(r.skinning=n.skinning),void 0!==n.morphTargets&&(r.morphTargets=n.morphTargets),void 0!==n.dithering&&(r.dithering=n.dithering),void 0!==n.visible&&(r.visible=n.visible),void 0!==n.userData&&(r.userData=n.userData),void 0!==n.shading&&(r.flatShading=1===n.shading),void 0!==n.size&&(r.size=n.size),void 0!==n.sizeAttenuation&&(r.sizeAttenuation=n.sizeAttenuation),void 0!==n.map&&(r.map=e(n.map)),void 0!==n.alphaMap&&(r.alphaMap=e(n.alphaMap),r.transparent=!0),void 0!==n.bumpMap&&(r.bumpMap=e(n.bumpMap)),void 0!==n.bumpScale&&(r.bumpScale=n.bumpScale),void 0!==n.normalMap&&(r.normalMap=e(n.normalMap)),void 0!==n.normalMapType&&(r.normalMapType=n.normalMapType),void 0!==n.normalScale){var i=n.normalScale;!1===Array.isArray(i)&&(i=[i,i]),r.normalScale=(new zt).fromArray(i)}return void 0!==n.displacementMap&&(r.displacementMap=e(n.displacementMap)),void 0!==n.displacementScale&&(r.displacementScale=n.displacementScale),void 0!==n.displacementBias&&(r.displacementBias=n.displacementBias),void 0!==n.roughnessMap&&(r.roughnessMap=e(n.roughnessMap)),void 0!==n.metalnessMap&&(r.metalnessMap=e(n.metalnessMap)),void 0!==n.emissiveMap&&(r.emissiveMap=e(n.emissiveMap)),void 0!==n.emissiveIntensity&&(r.emissiveIntensity=n.emissiveIntensity),void 0!==n.specularMap&&(r.specularMap=e(n.specularMap)),void 0!==n.envMap&&(r.envMap=e(n.envMap)),void 0!==n.reflectivity&&(r.reflectivity=n.reflectivity),void 0!==n.lightMap&&(r.lightMap=e(n.lightMap)),void 0!==n.lightMapIntensity&&(r.lightMapIntensity=n.lightMapIntensity),void 0!==n.aoMap&&(r.aoMap=e(n.aoMap)),void 0!==n.aoMapIntensity&&(r.aoMapIntensity=n.aoMapIntensity),void 0!==n.gradientMap&&(r.gradientMap=e(n.gradientMap)),r}}),Object.assign(rl.prototype,{load:function(n,t,e,r){var i=this;new ea(i.manager).load(n,function(n){t(i.parse(JSON.parse(n)))},e,r)},parse:function(n){var t=new Re,e=n.data.index;if(void 0!==e){var r=new il[e.type](e.array);t.setIndex(new ye(r,1))}var i=n.data.attributes;for(var o in i){var a=i[o];r=new il[a.type](a.array);t.addAttribute(o,new ye(r,a.itemSize,a.normalized))}var l=n.data.groups||n.data.drawcalls||n.data.offsets;if(void 0!==l)for(var s=0,c=l.length;s!==c;++s){var u=l[s];t.addGroup(u.start,u.count,u.materialIndex)}var h=n.data.boundingSphere;if(void 0!==h){var v=new jt;void 0!==h.center&&v.fromArray(h.center),t.boundingSphere=new Qt(v,h.radius)}return t}});var il={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:"undefined"!=typeof Uint8ClampedArray?Uint8ClampedArray:Uint8Array,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function ol(){}ol.Handlers={handlers:[],add:function(n,t){this.handlers.push(n,t)},get:function(n){for(var t=this.handlers,e=0,r=t.length;e<r;e+=2){var i=t[e],o=t[e+1];if(i.test(n))return o}return null}},Object.assign(ol.prototype,{crossOrigin:"anonymous",onLoadStart:function(){},onLoadProgress:function(){},onLoadComplete:function(){},initMaterials:function(n,t,e){for(var r=[],i=0;i<n.length;++i)r[i]=this.createMaterial(n[i],t,e);return r},createMaterial:function(){var n={NoBlending:_,NormalBlending:E,AdditiveBlending:S,SubtractiveBlending:T,MultiplyBlending:A,CustomBlending:L},t=new ie,e=new la,r=new el;return function(i,o,a){var l={};function s(n,t,r,i,s){var c,u=o+n,h=ol.Handlers.get(u);null!==h?c=h.load(u):(e.setCrossOrigin(a),c=e.load(u)),void 0!==t&&(c.repeat.fromArray(t),1!==t[0]&&(c.wrapS=mn),1!==t[1]&&(c.wrapT=mn)),void 0!==r&&c.offset.fromArray(r),void 0!==i&&("repeat"===i[0]&&(c.wrapS=mn),"mirror"===i[0]&&(c.wrapS=yn),"repeat"===i[1]&&(c.wrapT=mn),"mirror"===i[1]&&(c.wrapT=yn)),void 0!==s&&(c.anisotropy=s);var v=Ft.generateUUID();return l[v]=c,v}var c={uuid:Ft.generateUUID(),type:"MeshLambertMaterial"};for(var u in i){var h=i[u];switch(u){case"DbgColor":case"DbgIndex":case"opticalDensity":case"illumination":break;case"DbgName":c.name=h;break;case"blending":c.blending=n[h];break;case"colorAmbient":case"mapAmbient":console.warn("THREE.Loader.createMaterial:",u,"is no longer supported.");break;case"colorDiffuse":c.color=t.fromArray(h).getHex();break;case"colorSpecular":c.specular=t.fromArray(h).getHex();break;case"colorEmissive":c.emissive=t.fromArray(h).getHex();break;case"specularCoef":c.shininess=h;break;case"shading":"basic"===h.toLowerCase()&&(c.type="MeshBasicMaterial"),"phong"===h.toLowerCase()&&(c.type="MeshPhongMaterial"),"standard"===h.toLowerCase()&&(c.type="MeshStandardMaterial");break;case"mapDiffuse":c.map=s(h,i.mapDiffuseRepeat,i.mapDiffuseOffset,i.mapDiffuseWrap,i.mapDiffuseAnisotropy);break;case"mapDiffuseRepeat":case"mapDiffuseOffset":case"mapDiffuseWrap":case"mapDiffuseAnisotropy":break;case"mapEmissive":c.emissiveMap=s(h,i.mapEmissiveRepeat,i.mapEmissiveOffset,i.mapEmissiveWrap,i.mapEmissiveAnisotropy);break;case"mapEmissiveRepeat":case"mapEmissiveOffset":case"mapEmissiveWrap":case"mapEmissiveAnisotropy":break;case"mapLight":c.lightMap=s(h,i.mapLightRepeat,i.mapLightOffset,i.mapLightWrap,i.mapLightAnisotropy);break;case"mapLightRepeat":case"mapLightOffset":case"mapLightWrap":case"mapLightAnisotropy":break;case"mapAO":c.aoMap=s(h,i.mapAORepeat,i.mapAOOffset,i.mapAOWrap,i.mapAOAnisotropy);break;case"mapAORepeat":case"mapAOOffset":case"mapAOWrap":case"mapAOAnisotropy":break;case"mapBump":c.bumpMap=s(h,i.mapBumpRepeat,i.mapBumpOffset,i.mapBumpWrap,i.mapBumpAnisotropy);break;case"mapBumpScale":c.bumpScale=h;break;case"mapBumpRepeat":case"mapBumpOffset":case"mapBumpWrap":case"mapBumpAnisotropy":break;case"mapNormal":c.normalMap=s(h,i.mapNormalRepeat,i.mapNormalOffset,i.mapNormalWrap,i.mapNormalAnisotropy);break;case"mapNormalFactor":c.normalScale=h;break;case"mapNormalRepeat":case"mapNormalOffset":case"mapNormalWrap":case"mapNormalAnisotropy":break;case"mapSpecular":c.specularMap=s(h,i.mapSpecularRepeat,i.mapSpecularOffset,i.mapSpecularWrap,i.mapSpecularAnisotropy);break;case"mapSpecularRepeat":case"mapSpecularOffset":case"mapSpecularWrap":case"mapSpecularAnisotropy":break;case"mapMetalness":c.metalnessMap=s(h,i.mapMetalnessRepeat,i.mapMetalnessOffset,i.mapMetalnessWrap,i.mapMetalnessAnisotropy);break;case"mapMetalnessRepeat":case"mapMetalnessOffset":case"mapMetalnessWrap":case"mapMetalnessAnisotropy":break;case"mapRoughness":c.roughnessMap=s(h,i.mapRoughnessRepeat,i.mapRoughnessOffset,i.mapRoughnessWrap,i.mapRoughnessAnisotropy);break;case"mapRoughnessRepeat":case"mapRoughnessOffset":case"mapRoughnessWrap":case"mapRoughnessAnisotropy":break;case"mapAlpha":c.alphaMap=s(h,i.mapAlphaRepeat,i.mapAlphaOffset,i.mapAlphaWrap,i.mapAlphaAnisotropy);break;case"mapAlphaRepeat":case"mapAlphaOffset":case"mapAlphaWrap":case"mapAlphaAnisotropy":break;case"flipSided":c.side=m;break;case"doubleSided":c.side=g;break;case"transparency":console.warn("THREE.Loader.createMaterial: transparency has been renamed to opacity"),c.opacity=h;break;case"depthTest":case"depthWrite":case"colorWrite":case"opacity":case"reflectivity":case"transparent":case"visible":case"wireframe":c[u]=h;break;case"vertexColors":!0===h&&(c.vertexColors=M),"face"===h&&(c.vertexColors=w);break;default:console.error("THREE.Loader.createMaterial: Unsupported",u,h)}}return"MeshBasicMaterial"===c.type&&delete c.emissive,"MeshPhongMaterial"!==c.type&&delete c.specular,c.opacity<1&&(c.transparent=!0),r.setTextures(l),r.parse(c)}}()});var al={decodeText:function(n){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(n);for(var t="",e=0,r=n.length;e<r;e++)t+=String.fromCharCode(n[e]);return decodeURIComponent(escape(t))},extractUrlBase:function(n){var t=n.lastIndexOf("/");return-1===t?"./":n.substr(0,t+1)}};function ll(n){"boolean"==typeof n&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),n=void 0),this.manager=void 0!==n?n:na,this.withCredentials=!1}function sl(n){this.manager=void 0!==n?n:na,this.texturePath=""}Object.assign(ll.prototype,{crossOrigin:"anonymous",load:function(n,t,e,r){var i=this,o=this.texturePath&&"string"==typeof this.texturePath?this.texturePath:al.extractUrlBase(n),a=new ea(this.manager);a.setWithCredentials(this.withCredentials),a.load(n,function(e){var r=JSON.parse(e),a=r.metadata;if(void 0!==a){var l=a.type;if(void 0!==l&&"object"===l.toLowerCase())return void console.error("THREE.JSONLoader: "+n+" should be loaded with THREE.ObjectLoader instead.")}var s=i.parse(r,o);t(s.geometry,s.materials)},e,r)},setCrossOrigin:function(n){return this.crossOrigin=n,this},setTexturePath:function(n){return this.texturePath=n,this},parse:function(){return function(n,t){void 0!==n.data&&(n=n.data),void 0!==n.scale?n.scale=1/n.scale:n.scale=1;var e=new ge;return function(n,t){function e(n,t){return n&1<<t}var r,i,o,a,l,s,c,u,h,v,d,f,p,m,g,y,x,b,w,M,_,E,S,T,A,L=n.faces,P=n.vertices,C=n.normals,R=n.colors,O=n.scale,D=0;if(void 0!==n.uvs){for(r=0;r<n.uvs.length;r++)n.uvs[r].length&&D++;for(r=0;r<D;r++)t.faceVertexUvs[r]=[]}for(a=0,l=P.length;a<l;)(b=new jt).x=P[a++]*O,b.y=P[a++]*O,b.z=P[a++]*O,t.vertices.push(b);for(a=0,l=L.length;a<l;)if(d=e(v=L[a++],0),f=e(v,1),p=e(v,3),m=e(v,4),g=e(v,5),y=e(v,6),x=e(v,7),d){if((M=new pe).a=L[a],M.b=L[a+1],M.c=L[a+3],(_=new pe).a=L[a+1],_.b=L[a+2],_.c=L[a+3],a+=4,f&&(h=L[a++],M.materialIndex=h,_.materialIndex=h),o=t.faces.length,p)for(r=0;r<D;r++)for(T=n.uvs[r],t.faceVertexUvs[r][o]=[],t.faceVertexUvs[r][o+1]=[],i=0;i<4;i++)A=new zt(T[2*(u=L[a++])],T[2*u+1]),2!==i&&t.faceVertexUvs[r][o].push(A),0!==i&&t.faceVertexUvs[r][o+1].push(A);if(m&&(c=3*L[a++],M.normal.set(C[c++],C[c++],C[c]),_.normal.copy(M.normal)),g)for(r=0;r<4;r++)c=3*L[a++],S=new jt(C[c++],C[c++],C[c]),2!==r&&M.vertexNormals.push(S),0!==r&&_.vertexNormals.push(S);if(y&&(E=R[s=L[a++]],M.color.setHex(E),_.color.setHex(E)),x)for(r=0;r<4;r++)E=R[s=L[a++]],2!==r&&M.vertexColors.push(new ie(E)),0!==r&&_.vertexColors.push(new ie(E));t.faces.push(M),t.faces.push(_)}else{if((w=new pe).a=L[a++],w.b=L[a++],w.c=L[a++],f&&(h=L[a++],w.materialIndex=h),o=t.faces.length,p)for(r=0;r<D;r++)for(T=n.uvs[r],t.faceVertexUvs[r][o]=[],i=0;i<3;i++)A=new zt(T[2*(u=L[a++])],T[2*u+1]),t.faceVertexUvs[r][o].push(A);if(m&&(c=3*L[a++],w.normal.set(C[c++],C[c++],C[c])),g)for(r=0;r<3;r++)c=3*L[a++],S=new jt(C[c++],C[c++],C[c]),w.vertexNormals.push(S);if(y&&(s=L[a++],w.color.setHex(R[s])),x)for(r=0;r<3;r++)s=L[a++],w.vertexColors.push(new ie(R[s]));t.faces.push(w)}}(n,e),function(n,t){var e=void 0!==n.influencesPerVertex?n.influencesPerVertex:2;if(n.skinWeights)for(var r=0,i=n.skinWeights.length;r<i;r+=e){var o=n.skinWeights[r],a=e>1?n.skinWeights[r+1]:0,l=e>2?n.skinWeights[r+2]:0,s=e>3?n.skinWeights[r+3]:0;t.skinWeights.push(new qt(o,a,l,s))}if(n.skinIndices)for(r=0,i=n.skinIndices.length;r<i;r+=e){var c=n.skinIndices[r],u=e>1?n.skinIndices[r+1]:0,h=e>2?n.skinIndices[r+2]:0,v=e>3?n.skinIndices[r+3]:0;t.skinIndices.push(new qt(c,u,h,v))}t.bones=n.bones,t.bones&&t.bones.length>0&&(t.skinWeights.length!==t.skinIndices.length||t.skinIndices.length!==t.vertices.length)&&console.warn("When skinning, number of vertices ("+t.vertices.length+"), skinIndices ("+t.skinIndices.length+"), and skinWeights ("+t.skinWeights.length+") should match.")}(n,e),function(n,t){var e=n.scale;if(void 0!==n.morphTargets)for(var r=0,i=n.morphTargets.length;r<i;r++){t.morphTargets[r]={},t.morphTargets[r].name=n.morphTargets[r].name,t.morphTargets[r].vertices=[];for(var o=t.morphTargets[r].vertices,a=n.morphTargets[r].vertices,l=0,s=a.length;l<s;l+=3){var c=new jt;c.x=a[l]*e,c.y=a[l+1]*e,c.z=a[l+2]*e,o.push(c)}}if(void 0!==n.morphColors&&n.morphColors.length>0){console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.');var u=t.faces,h=n.morphColors[0].colors;for(r=0,i=u.length;r<i;r++)u[r].color.fromArray(h,3*r)}}(n,e),function(n,t){var e=[],r=[];void 0!==n.animation&&r.push(n.animation),void 0!==n.animations&&(n.animations.length?r=r.concat(n.animations):r.push(n.animations));for(var i=0;i<r.length;i++){var o=nl.parseAnimation(r[i],t.bones);o&&e.push(o)}if(t.morphTargets){var a=nl.CreateClipsFromMorphTargetSequences(t.morphTargets,10);e=e.concat(a)}e.length>0&&(t.animations=e)}(n,e),e.computeFaceNormals(),e.computeBoundingSphere(),void 0===n.materials||0===n.materials.length?{geometry:e}:{geometry:e,materials:ol.prototype.initMaterials(n.materials,t,this.crossOrigin)}}}()}),Object.assign(sl.prototype,{crossOrigin:"anonymous",load:function(n,t,e,r){""===this.texturePath&&(this.texturePath=n.substring(0,n.lastIndexOf("/")+1));var i=this;new ea(i.manager).load(n,function(e){var o=null;try{o=JSON.parse(e)}catch(t){return void 0!==r&&r(t),void console.error("THREE:ObjectLoader: Can't parse "+n+".",t.message)}var a=o.metadata;void 0!==a&&void 0!==a.type&&"geometry"!==a.type.toLowerCase()?i.parse(o,t):console.error("THREE.ObjectLoader: Can't load "+n+". Use THREE.JSONLoader instead.")},e,r)},setTexturePath:function(n){return this.texturePath=n,this},setCrossOrigin:function(n){return this.crossOrigin=n,this},parse:function(n,t){var e=this.parseShape(n.shapes),r=this.parseGeometries(n.geometries,e),i=this.parseImages(n.images,function(){void 0!==t&&t(l)}),o=this.parseTextures(n.textures,i),a=this.parseMaterials(n.materials,o),l=this.parseObject(n.object,r,a);return n.animations&&(l.animations=this.parseAnimations(n.animations)),void 0!==n.images&&0!==n.images.length||void 0!==t&&t(l),l},parseShape:function(n){var t={};if(void 0!==n)for(var e=0,r=n.length;e<r;e++){var i=(new Ca).fromJSON(n[e]);t[i.uuid]=i}return t},parseGeometries:function(n,t){var e={};if(void 0!==n)for(var r=new ll,i=new rl,o=0,a=n.length;o<a;o++){var l,s=n[o];switch(s.type){case"PlaneGeometry":case"PlaneBufferGeometry":l=new ko[s.type](s.width,s.height,s.widthSegments,s.heightSegments);break;case"BoxGeometry":case"BoxBufferGeometry":case"CubeGeometry":l=new ko[s.type](s.width,s.height,s.depth,s.widthSegments,s.heightSegments,s.depthSegments);break;case"CircleGeometry":case"CircleBufferGeometry":l=new ko[s.type](s.radius,s.segments,s.thetaStart,s.thetaLength);break;case"CylinderGeometry":case"CylinderBufferGeometry":l=new ko[s.type](s.radiusTop,s.radiusBottom,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);break;case"ConeGeometry":case"ConeBufferGeometry":l=new ko[s.type](s.radius,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);break;case"SphereGeometry":case"SphereBufferGeometry":l=new ko[s.type](s.radius,s.widthSegments,s.heightSegments,s.phiStart,s.phiLength,s.thetaStart,s.thetaLength);break;case"DodecahedronGeometry":case"DodecahedronBufferGeometry":case"IcosahedronGeometry":case"IcosahedronBufferGeometry":case"OctahedronGeometry":case"OctahedronBufferGeometry":case"TetrahedronGeometry":case"TetrahedronBufferGeometry":l=new ko[s.type](s.radius,s.detail);break;case"RingGeometry":case"RingBufferGeometry":l=new ko[s.type](s.innerRadius,s.outerRadius,s.thetaSegments,s.phiSegments,s.thetaStart,s.thetaLength);break;case"TorusGeometry":case"TorusBufferGeometry":l=new ko[s.type](s.radius,s.tube,s.radialSegments,s.tubularSegments,s.arc);break;case"TorusKnotGeometry":case"TorusKnotBufferGeometry":l=new ko[s.type](s.radius,s.tube,s.tubularSegments,s.radialSegments,s.p,s.q);break;case"LatheGeometry":case"LatheBufferGeometry":l=new ko[s.type](s.points,s.segments,s.phiStart,s.phiLength);break;case"PolyhedronGeometry":case"PolyhedronBufferGeometry":l=new ko[s.type](s.vertices,s.indices,s.radius,s.details);break;case"ShapeGeometry":case"ShapeBufferGeometry":for(var c=[],u=0,h=s.shapes.length;u<h;u++){var v=t[s.shapes[u]];c.push(v)}l=new ko[s.type](c,s.curveSegments);break;case"ExtrudeGeometry":case"ExtrudeBufferGeometry":for(c=[],u=0,h=s.shapes.length;u<h;u++){v=t[s.shapes[u]];c.push(v)}var d=s.options.extrudePath;void 0!==d&&(s.options.extrudePath=(new Aa[d.type]).fromJSON(d)),l=new ko[s.type](c,s.options);break;case"BufferGeometry":l=i.parse(s);break;case"Geometry":l=r.parse(s,this.texturePath).geometry;break;default:console.warn('THREE.ObjectLoader: Unsupported geometry type "'+s.type+'"');continue}l.uuid=s.uuid,void 0!==s.name&&(l.name=s.name),!0===l.isBufferGeometry&&void 0!==s.userData&&(l.userData=s.userData),e[s.uuid]=l}return e},parseMaterials:function(n,t){var e={};if(void 0!==n){var r=new el;r.setTextures(t);for(var i=0,o=n.length;i<o;i++){var a=n[i];if("MultiMaterial"===a.type){for(var l=[],s=0;s<a.materials.length;s++)l.push(r.parse(a.materials[s]));e[a.uuid]=l}else e[a.uuid]=r.parse(a)}}return e},parseAnimations:function(n){for(var t=[],e=0;e<n.length;e++){var r=n[e],i=nl.parse(r);void 0!==r.uuid&&(i.uuid=r.uuid),t.push(i)}return t},parseImages:function(n,t){var e=this,r={};function i(n){return e.manager.itemStart(n),o.load(n,function(){e.manager.itemEnd(n)},void 0,function(){e.manager.itemEnd(n),e.manager.itemError(n)})}if(void 0!==n&&n.length>0){var o=new oa(new $o(t));o.setCrossOrigin(this.crossOrigin);for(var a=0,l=n.length;a<l;a++){var s=n[a],c=s.url;if(Array.isArray(c)){r[s.uuid]=[];for(var u=0,h=c.length;u<h;u++){var v=c[u],d=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(v)?v:e.texturePath+v;r[s.uuid].push(i(d))}}else{d=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(s.url)?s.url:e.texturePath+s.url;r[s.uuid]=i(d)}}}return r},parseTextures:function(n,t){function e(n,t){return"number"==typeof n?n:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",n),t[n])}var r={};if(void 0!==n)for(var i=0,o=n.length;i<o;i++){var a,l=n[i];void 0===l.image&&console.warn('THREE.ObjectLoader: No "image" specified for',l.uuid),void 0===t[l.image]&&console.warn("THREE.ObjectLoader: Undefined image",l.image),(a=Array.isArray(t[l.image])?new Ve(t[l.image]):new Xt(t[l.image])).needsUpdate=!0,a.uuid=l.uuid,void 0!==l.name&&(a.name=l.name),void 0!==l.mapping&&(a.mapping=e(l.mapping,ul)),void 0!==l.offset&&a.offset.fromArray(l.offset),void 0!==l.repeat&&a.repeat.fromArray(l.repeat),void 0!==l.center&&a.center.fromArray(l.center),void 0!==l.rotation&&(a.rotation=l.rotation),void 0!==l.wrap&&(a.wrapS=e(l.wrap[0],hl),a.wrapT=e(l.wrap[1],hl)),void 0!==l.format&&(a.format=l.format),void 0!==l.minFilter&&(a.minFilter=e(l.minFilter,vl)),void 0!==l.magFilter&&(a.magFilter=e(l.magFilter,vl)),void 0!==l.anisotropy&&(a.anisotropy=l.anisotropy),void 0!==l.flipY&&(a.flipY=l.flipY),r[l.uuid]=a}return r},parseObject:function(n,t,e){var r;function i(n){return void 0===t[n]&&console.warn("THREE.ObjectLoader: Undefined geometry",n),t[n]}function o(n){if(void 0!==n){if(Array.isArray(n)){for(var t=[],r=0,i=n.length;r<i;r++){var o=n[r];void 0===e[o]&&console.warn("THREE.ObjectLoader: Undefined material",o),t.push(e[o])}return t}return void 0===e[n]&&console.warn("THREE.ObjectLoader: Undefined material",n),e[n]}}switch(n.type){case"Scene":r=new ci,void 0!==n.background&&Number.isInteger(n.background)&&(r.background=new ie(n.background)),void 0!==n.fog&&("Fog"===n.fog.type?r.fog=new si(n.fog.color,n.fog.near,n.fog.far):"FogExp2"===n.fog.type&&(r.fog=new li(n.fog.color,n.fog.density)));break;case"PerspectiveCamera":r=new ri(n.fov,n.aspect,n.near,n.far),void 0!==n.focus&&(r.focus=n.focus),void 0!==n.zoom&&(r.zoom=n.zoom),void 0!==n.filmGauge&&(r.filmGauge=n.filmGauge),void 0!==n.filmOffset&&(r.filmOffset=n.filmOffset),void 0!==n.view&&(r.view=Object.assign({},n.view));break;case"OrthographicCamera":r=new fe(n.left,n.right,n.top,n.bottom,n.near,n.far),void 0!==n.zoom&&(r.zoom=n.zoom),void 0!==n.view&&(r.view=Object.assign({},n.view));break;case"AmbientLight":r=new za(n.color,n.intensity);break;case"DirectionalLight":r=new Fa(n.color,n.intensity);break;case"PointLight":r=new Ia(n.color,n.intensity,n.distance,n.decay);break;case"RectAreaLight":r=new Ga(n.color,n.intensity,n.width,n.height);break;case"SpotLight":r=new Na(n.color,n.intensity,n.distance,n.angle,n.penumbra,n.decay);break;case"HemisphereLight":r=new Oa(n.color,n.groundColor,n.intensity);break;case"SkinnedMesh":console.warn("THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.");case"Mesh":var a=i(n.geometry),l=o(n.material);r=a.bones&&a.bones.length>0?new gi(a,l):new je(a,l);break;case"LOD":r=new fi;break;case"Line":r=new xi(i(n.geometry),o(n.material),n.mode);break;case"LineLoop":r=new wi(i(n.geometry),o(n.material));break;case"LineSegments":r=new bi(i(n.geometry),o(n.material));break;case"PointCloud":case"Points":r=new _i(i(n.geometry),o(n.material));break;case"Sprite":r=new di(o(n.material));break;case"Group":r=new ei;break;default:r=new ve}if(r.uuid=n.uuid,void 0!==n.name&&(r.name=n.name),void 0!==n.matrix?(r.matrix.fromArray(n.matrix),void 0!==n.matrixAutoUpdate&&(r.matrixAutoUpdate=n.matrixAutoUpdate),r.matrixAutoUpdate&&r.matrix.decompose(r.position,r.quaternion,r.scale)):(void 0!==n.position&&r.position.fromArray(n.position),void 0!==n.rotation&&r.rotation.fromArray(n.rotation),void 0!==n.quaternion&&r.quaternion.fromArray(n.quaternion),void 0!==n.scale&&r.scale.fromArray(n.scale)),void 0!==n.castShadow&&(r.castShadow=n.castShadow),void 0!==n.receiveShadow&&(r.receiveShadow=n.receiveShadow),n.shadow&&(void 0!==n.shadow.bias&&(r.shadow.bias=n.shadow.bias),void 0!==n.shadow.radius&&(r.shadow.radius=n.shadow.radius),void 0!==n.shadow.mapSize&&r.shadow.mapSize.fromArray(n.shadow.mapSize),void 0!==n.shadow.camera&&(r.shadow.camera=this.parseObject(n.shadow.camera))),void 0!==n.visible&&(r.visible=n.visible),void 0!==n.frustumCulled&&(r.frustumCulled=n.frustumCulled),void 0!==n.renderOrder&&(r.renderOrder=n.renderOrder),void 0!==n.userData&&(r.userData=n.userData),void 0!==n.layers&&(r.layers.mask=n.layers),void 0!==n.children)for(var s=n.children,c=0;c<s.length;c++)r.add(this.parseObject(s[c],t,e));if("LOD"===n.type)for(var u=n.levels,h=0;h<u.length;h++){var v=u[h],d=r.getObjectByProperty("uuid",v.object);void 0!==d&&r.addLevel(d,v.distance)}return r}});var cl,ul={UVMapping:sn,CubeReflectionMapping:cn,CubeRefractionMapping:un,EquirectangularReflectionMapping:hn,EquirectangularRefractionMapping:vn,SphericalReflectionMapping:dn,CubeUVReflectionMapping:fn,CubeUVRefractionMapping:pn},hl={RepeatWrapping:mn,ClampToEdgeWrapping:gn,MirroredRepeatWrapping:yn},vl={NearestFilter:xn,NearestMipMapNearestFilter:bn,NearestMipMapLinearFilter:wn,LinearFilter:Mn,LinearMipMapNearestFilter:_n,LinearMipMapLinearFilter:En};function dl(n){"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.manager=void 0!==n?n:na,this.options=void 0}function fl(){this.type="ShapePath",this.color=new ie,this.subPaths=[],this.currentPath=null}function pl(n){this.type="Font",this.data=n}function ml(n,t,e,r,i){var o=i.glyphs[n]||i.glyphs["?"];if(o){var a,l,s,c,u,h,v,d,f=new fl;if(o.o)for(var p=o._cachedOutline||(o._cachedOutline=o.o.split(" ")),m=0,g=p.length;m<g;){switch(p[m++]){case"m":a=p[m++]*t+e,l=p[m++]*t+r,f.moveTo(a,l);break;case"l":a=p[m++]*t+e,l=p[m++]*t+r,f.lineTo(a,l);break;case"q":s=p[m++]*t+e,c=p[m++]*t+r,u=p[m++]*t+e,h=p[m++]*t+r,f.quadraticCurveTo(u,h,s,c);break;case"b":s=p[m++]*t+e,c=p[m++]*t+r,u=p[m++]*t+e,h=p[m++]*t+r,v=p[m++]*t+e,d=p[m++]*t+r,f.bezierCurveTo(u,h,v,d,s,c)}}return{offsetX:o.ha*t,path:f}}}function gl(n){this.manager=void 0!==n?n:na}dl.prototype={constructor:dl,setOptions:function(n){return this.options=n,this},load:function(n,t,e,r){void 0===n&&(n=""),void 0!==this.path&&(n=this.path+n),n=this.manager.resolveURL(n);var i=this,o=Qo.get(n);if(void 0!==o)return i.manager.itemStart(n),setTimeout(function(){t&&t(o),i.manager.itemEnd(n)},0),o;fetch(n).then(function(n){return n.blob()}).then(function(n){return createImageBitmap(n,i.options)}).then(function(e){Qo.add(n,e),t&&t(e),i.manager.itemEnd(n)}).catch(function(t){r&&r(t),i.manager.itemEnd(n),i.manager.itemError(n)})},setCrossOrigin:function(){return this},setPath:function(n){return this.path=n,this}},Object.assign(fl.prototype,{moveTo:function(n,t){this.currentPath=new Pa,this.subPaths.push(this.currentPath),this.currentPath.moveTo(n,t)},lineTo:function(n,t){this.currentPath.lineTo(n,t)},quadraticCurveTo:function(n,t,e,r){this.currentPath.quadraticCurveTo(n,t,e,r)},bezierCurveTo:function(n,t,e,r,i,o){this.currentPath.bezierCurveTo(n,t,e,r,i,o)},splineThru:function(n){this.currentPath.splineThru(n)},toShapes:function(n,t){function e(n){for(var t=[],e=0,r=n.length;e<r;e++){var i=n[e],o=new Ca;o.curves=i.curves,t.push(o)}return t}function r(n,t){for(var e=t.length,r=!1,i=e-1,o=0;o<e;i=o++){var a=t[i],l=t[o],s=l.x-a.x,c=l.y-a.y;if(Math.abs(c)>Number.EPSILON){if(c<0&&(a=t[o],s=-s,l=t[i],c=-c),n.y<a.y||n.y>l.y)continue;if(n.y===a.y){if(n.x===a.x)return!0}else{var u=c*(n.x-a.x)-s*(n.y-a.y);if(0===u)return!0;if(u<0)continue;r=!r}}else{if(n.y!==a.y)continue;if(l.x<=n.x&&n.x<=a.x||a.x<=n.x&&n.x<=l.x)return!0}}return r}var i=mo.isClockWise,o=this.subPaths;if(0===o.length)return[];if(!0===t)return e(o);var a,l,s,c=[];if(1===o.length)return l=o[0],(s=new Ca).curves=l.curves,c.push(s),c;var u=!i(o[0].getPoints());u=n?!u:u;var h,v,d=[],f=[],p=[],m=0;f[m]=void 0,p[m]=[];for(var g=0,y=o.length;g<y;g++)a=i(h=(l=o[g]).getPoints()),(a=n?!a:a)?(!u&&f[m]&&m++,f[m]={s:new Ca,p:h},f[m].s.curves=l.curves,u&&m++,p[m]=[]):p[m].push({h:l,p:h[0]});if(!f[0])return e(o);if(f.length>1){for(var x=!1,b=[],w=0,M=f.length;w<M;w++)d[w]=[];for(w=0,M=f.length;w<M;w++)for(var _=p[w],E=0;E<_.length;E++){for(var S=_[E],T=!0,A=0;A<f.length;A++)r(S.p,f[A].p)&&(w!==A&&b.push({froms:w,tos:A,hole:E}),T?(T=!1,d[A].push(S)):x=!0);T&&d[w].push(S)}b.length>0&&(x||(p=d))}g=0;for(var L=f.length;g<L;g++){s=f[g].s,c.push(s);for(var P=0,C=(v=p[g]).length;P<C;P++)s.holes.push(v[P].h)}return c}}),Object.assign(pl.prototype,{isFont:!0,generateShapes:function(n,t){void 0===t&&(t=100);for(var e=[],r=function(n,t,e){for(var r=Array.from?Array.from(n):String(n).split(""),i=t/e.resolution,o=(e.boundingBox.yMax-e.boundingBox.yMin+e.underlineThickness)*i,a=[],l=0,s=0,c=0;c<r.length;c++){var u=r[c];if("\n"===u)l=0,s-=o;else{var h=ml(u,i,l,s,e);l+=h.offsetX,a.push(h.path)}}return a}(n,t,this.data),i=0,o=r.length;i<o;i++)Array.prototype.push.apply(e,r[i].toShapes());return e}}),Object.assign(gl.prototype,{load:function(n,t,e,r){var i=this,o=new ea(this.manager);o.setPath(this.path),o.load(n,function(n){var e;try{e=JSON.parse(n)}catch(t){console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),e=JSON.parse(n.substring(65,n.length-2))}var r=i.parse(e);t&&t(r)},e,r)},parse:function(n){return new pl(n)},setPath:function(n){return this.path=n,this}});var yl={getContext:function(){return void 0===cl&&(cl=new(window.AudioContext||window.webkitAudioContext)),cl},setContext:function(n){cl=n}};function xl(n){this.manager=void 0!==n?n:na}function bl(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new ri,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new ri,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1}function wl(n,t,e){ve.call(this),this.type="CubeCamera";var r=new ri(90,1,n,t);r.up.set(0,-1,0),r.lookAt(new jt(1,0,0)),this.add(r);var i=new ri(90,1,n,t);i.up.set(0,-1,0),i.lookAt(new jt(-1,0,0)),this.add(i);var o=new ri(90,1,n,t);o.up.set(0,0,1),o.lookAt(new jt(0,1,0)),this.add(o);var a=new ri(90,1,n,t);a.up.set(0,0,-1),a.lookAt(new jt(0,-1,0)),this.add(a);var l=new ri(90,1,n,t);l.up.set(0,-1,0),l.lookAt(new jt(0,0,1)),this.add(l);var s=new ri(90,1,n,t);s.up.set(0,-1,0),s.lookAt(new jt(0,0,-1)),this.add(s);var c={format:Fn,magFilter:Mn,minFilter:Mn};this.renderTarget=new Zt(e,e,c),this.renderTarget.texture.name="CubeCamera",this.update=function(n,t){null===this.parent&&this.updateMatrixWorld();var e=this.renderTarget,c=e.texture.generateMipmaps;e.texture.generateMipmaps=!1,e.activeCubeFace=0,n.render(t,r,e),e.activeCubeFace=1,n.render(t,i,e),e.activeCubeFace=2,n.render(t,o,e),e.activeCubeFace=3,n.render(t,a,e),e.activeCubeFace=4,n.render(t,l,e),e.texture.generateMipmaps=c,e.activeCubeFace=5,n.render(t,s,e),n.setRenderTarget(null)},this.clear=function(n,t,e,r){for(var i=this.renderTarget,o=0;o<6;o++)i.activeCubeFace=o,n.setRenderTarget(i),n.clear(t,e,r);n.setRenderTarget(null)}}function Ml(){ve.call(this),this.type="AudioListener",this.context=yl.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null}function _l(n){ve.call(this),this.type="Audio",this.context=n.context,this.gain=this.context.createGain(),this.gain.connect(n.getInput()),this.autoplay=!1,this.buffer=null,this.loop=!1,this.startTime=0,this.offset=0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.sourceType="empty",this.filters=[]}function El(n){_l.call(this,n),this.panner=this.context.createPanner(),this.panner.connect(this.gain)}function Sl(n,t){this.analyser=n.context.createAnalyser(),this.analyser.fftSize=void 0!==t?t:2048,this.data=new Uint8Array(this.analyser.frequencyBinCount),n.getOutput().connect(this.analyser)}function Tl(n,t,e){this.binding=n,this.valueSize=e;var r,i=Float64Array;switch(t){case"quaternion":r=this._slerp;break;case"string":case"bool":i=Array,r=this._select;break;default:r=this._lerp}this.buffer=new i(4*e),this._mixBufferRegion=r,this.cumulativeWeight=0,this.useCount=0,this.referenceCount=0}Object.assign(xl.prototype,{load:function(n,t,e,r){var i=new ea(this.manager);i.setResponseType("arraybuffer"),i.load(n,function(n){var e=n.slice(0);yl.getContext().decodeAudioData(e,function(n){t(n)})},e,r)}}),Object.assign(bl.prototype,{update:function(){var n,t,e,r,i,o,a,l,s=new Gt,c=new Gt;return function(u){if(n!==this||t!==u.focus||e!==u.fov||r!==u.aspect*this.aspect||i!==u.near||o!==u.far||a!==u.zoom||l!==this.eyeSep){n=this,t=u.focus,e=u.fov,r=u.aspect*this.aspect,i=u.near,o=u.far,a=u.zoom;var h,v,d=u.projectionMatrix.clone(),f=(l=this.eyeSep/2)*i/t,p=i*Math.tan(Ft.DEG2RAD*e*.5)/a;c.elements[12]=-l,s.elements[12]=l,h=-p*r+f,v=p*r+f,d.elements[0]=2*i/(v-h),d.elements[8]=(v+h)/(v-h),this.cameraL.projectionMatrix.copy(d),h=-p*r-f,v=p*r-f,d.elements[0]=2*i/(v-h),d.elements[8]=(v+h)/(v-h),this.cameraR.projectionMatrix.copy(d)}this.cameraL.matrixWorld.copy(u.matrixWorld).multiply(c),this.cameraR.matrixWorld.copy(u.matrixWorld).multiply(s)}}()}),wl.prototype=Object.create(ve.prototype),wl.prototype.constructor=wl,Ml.prototype=Object.assign(Object.create(ve.prototype),{constructor:Ml,getInput:function(){return this.gain},removeFilter:function(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this},getFilter:function(){return this.filter},setFilter:function(n){return null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=n,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this},getMasterVolume:function(){return this.gain.gain.value},setMasterVolume:function(n){return this.gain.gain.setTargetAtTime(n,this.context.currentTime,.01),this},updateMatrixWorld:function(){var n=new jt,t=new kt,e=new jt,r=new jt;return function(i){ve.prototype.updateMatrixWorld.call(this,i);var o=this.context.listener,a=this.up;this.matrixWorld.decompose(n,t,e),r.set(0,0,-1).applyQuaternion(t),o.positionX?(o.positionX.setValueAtTime(n.x,this.context.currentTime),o.positionY.setValueAtTime(n.y,this.context.currentTime),o.positionZ.setValueAtTime(n.z,this.context.currentTime),o.forwardX.setValueAtTime(r.x,this.context.currentTime),o.forwardY.setValueAtTime(r.y,this.context.currentTime),o.forwardZ.setValueAtTime(r.z,this.context.currentTime),o.upX.setValueAtTime(a.x,this.context.currentTime),o.upY.setValueAtTime(a.y,this.context.currentTime),o.upZ.setValueAtTime(a.z,this.context.currentTime)):(o.setPosition(n.x,n.y,n.z),o.setOrientation(r.x,r.y,r.z,a.x,a.y,a.z))}}()}),_l.prototype=Object.assign(Object.create(ve.prototype),{constructor:_l,getOutput:function(){return this.gain},setNodeSource:function(n){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=n,this.connect(),this},setMediaElementSource:function(n){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(n),this.connect(),this},setBuffer:function(n){return this.buffer=n,this.sourceType="buffer",this.autoplay&&this.play(),this},play:function(){if(!0!==this.isPlaying){if(!1!==this.hasPlaybackControl){var n=this.context.createBufferSource();return n.buffer=this.buffer,n.loop=this.loop,n.onended=this.onEnded.bind(this),n.playbackRate.setValueAtTime(this.playbackRate,this.startTime),this.startTime=this.context.currentTime,n.start(this.startTime,this.offset),this.isPlaying=!0,this.source=n,this.connect()}console.warn("THREE.Audio: this Audio has no playback control.")}else console.warn("THREE.Audio: Audio is already playing.")},pause:function(){if(!1!==this.hasPlaybackControl)return!0===this.isPlaying&&(this.source.stop(),this.source.onended=null,this.offset+=(this.context.currentTime-this.startTime)*this.playbackRate,this.isPlaying=!1),this;console.warn("THREE.Audio: this Audio has no playback control.")},stop:function(){if(!1!==this.hasPlaybackControl)return this.source.stop(),this.source.onended=null,this.offset=0,this.isPlaying=!1,this;console.warn("THREE.Audio: this Audio has no playback control.")},connect:function(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(var n=1,t=this.filters.length;n<t;n++)this.filters[n-1].connect(this.filters[n]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this},disconnect:function(){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(var n=1,t=this.filters.length;n<t;n++)this.filters[n-1].disconnect(this.filters[n]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this},getFilters:function(){return this.filters},setFilters:function(n){return n||(n=[]),!0===this.isPlaying?(this.disconnect(),this.filters=n,this.connect()):this.filters=n,this},getFilter:function(){return this.getFilters()[0]},setFilter:function(n){return this.setFilters(n?[n]:[])},setPlaybackRate:function(n){if(!1!==this.hasPlaybackControl)return this.playbackRate=n,!0===this.isPlaying&&this.source.playbackRate.setValueAtTime(this.playbackRate,this.context.currentTime),this;console.warn("THREE.Audio: this Audio has no playback control.")},getPlaybackRate:function(){return this.playbackRate},onEnded:function(){this.isPlaying=!1},getLoop:function(){return!1===this.hasPlaybackControl?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop},setLoop:function(n){if(!1!==this.hasPlaybackControl)return this.loop=n,!0===this.isPlaying&&(this.source.loop=this.loop),this;console.warn("THREE.Audio: this Audio has no playback control.")},getVolume:function(){return this.gain.gain.value},setVolume:function(n){return this.gain.gain.setTargetAtTime(n,this.context.currentTime,.01),this}}),El.prototype=Object.assign(Object.create(_l.prototype),{constructor:El,getOutput:function(){return this.panner},getRefDistance:function(){return this.panner.refDistance},setRefDistance:function(n){return this.panner.refDistance=n,this},getRolloffFactor:function(){return this.panner.rolloffFactor},setRolloffFactor:function(n){return this.panner.rolloffFactor=n,this},getDistanceModel:function(){return this.panner.distanceModel},setDistanceModel:function(n){return this.panner.distanceModel=n,this},getMaxDistance:function(){return this.panner.maxDistance},setMaxDistance:function(n){return this.panner.maxDistance=n,this},setDirectionalCone:function(n,t,e){return this.panner.coneInnerAngle=n,this.panner.coneOuterAngle=t,this.panner.coneOuterGain=e,this},updateMatrixWorld:function(){var n=new jt,t=new kt,e=new jt,r=new jt;return function(i){ve.prototype.updateMatrixWorld.call(this,i);var o=this.panner;this.matrixWorld.decompose(n,t,e),r.set(0,0,1).applyQuaternion(t),o.setPosition(n.x,n.y,n.z),o.setOrientation(r.x,r.y,r.z)}}()}),Object.assign(Sl.prototype,{getFrequencyData:function(){return this.analyser.getByteFrequencyData(this.data),this.data},getAverageFrequency:function(){for(var n=0,t=this.getFrequencyData(),e=0;e<t.length;e++)n+=t[e];return n/t.length}}),Object.assign(Tl.prototype,{accumulate:function(n,t){var e=this.buffer,r=this.valueSize,i=n*r+r,o=this.cumulativeWeight;if(0===o){for(var a=0;a!==r;++a)e[i+a]=e[a];o=t}else{var l=t/(o+=t);this._mixBufferRegion(e,i,0,l,r)}this.cumulativeWeight=o},apply:function(n){var t=this.valueSize,e=this.buffer,r=n*t+t,i=this.cumulativeWeight,o=this.binding;if(this.cumulativeWeight=0,i<1){var a=3*t;this._mixBufferRegion(e,r,a,1-i,t)}for(var l=t,s=t+t;l!==s;++l)if(e[l]!==e[l+t]){o.setValue(e,r);break}},saveOriginalState:function(){var n=this.binding,t=this.buffer,e=this.valueSize,r=3*e;n.getValue(t,r);for(var i=e,o=r;i!==o;++i)t[i]=t[r+i%e];this.cumulativeWeight=0},restoreOriginalState:function(){var n=3*this.valueSize;this.binding.setValue(this.buffer,n)},_select:function(n,t,e,r,i){if(r>=.5)for(var o=0;o!==i;++o)n[t+o]=n[e+o]},_slerp:function(n,t,e,r){kt.slerpFlat(n,t,n,t,n,e,r)},_lerp:function(n,t,e,r,i){for(var o=1-r,a=0;a!==i;++a){var l=t+a;n[l]=n[l]*o+n[e+a]*r}}});var Al,Ll;function Pl(n,t,e){var r=e||Cl.parseTrackName(t);this._targetGroup=n,this._bindings=n.subscribe_(t,r)}function Cl(n,t,e){this.path=t,this.parsedPath=e||Cl.parseTrackName(t),this.node=Cl.findNode(n,this.parsedPath.nodeName)||n,this.rootNode=n}function Rl(){this.uuid=Ft.generateUUID(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;var n={};this._indicesByUUID=n;for(var t=0,e=arguments.length;t!==e;++t)n[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};var r=this;this.stats={objects:{get total(){return r._objects.length},get inUse(){return this.total-r.nCachedObjects_}},get bindingsPerObject(){return r._bindings.length}}}function Ol(n,t,e){this._mixer=n,this._clip=t,this._localRoot=e||null;for(var r=t.tracks,i=r.length,o=new Array(i),a={endingStart:bt,endingEnd:bt},l=0;l!==i;++l){var s=r[l].createInterpolant(null);o[l]=s,s.settings=a}this._interpolantSettings=a,this._interpolants=o,this._propertyBindings=new Array(i),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=pt,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}function Dl(n){this._root=n,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}function Ul(n){"string"==typeof n&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),n=arguments[1]),this.value=n}function Nl(){Re.call(this),this.type="InstancedBufferGeometry",this.maxInstancedCount=void 0}function Il(n,t,e){ui.call(this,n,t),this.meshPerAttribute=e||1}function Bl(n,t,e){ye.call(this,n,t),this.meshPerAttribute=e||1}function Fl(n,t,e,r){this.ray=new Ge(n,t),this.near=e||0,this.far=r||1/0,this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}},Object.defineProperties(this.params,{PointCloud:{get:function(){return console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."),this.Points}}})}function zl(n,t){return n.distance-t.distance}function Gl(n,t,e,r){if(!1!==n.visible&&(n.raycast(t,e),!0===r))for(var i=n.children,o=0,a=i.length;o<a;o++)Gl(i[o],t,e,!0)}function kl(n){this.autoStart=void 0===n||n,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}function jl(n,t,e){return this.radius=void 0!==n?n:1,this.phi=void 0!==t?t:0,this.theta=void 0!==e?e:0,this}function Hl(n,t,e){return this.radius=void 0!==n?n:1,this.theta=void 0!==t?t:0,this.y=void 0!==e?e:0,this}function Vl(n,t){this.min=void 0!==n?n:new zt(1/0,1/0),this.max=void 0!==t?t:new zt(-1/0,-1/0)}function Wl(n,t){this.start=void 0!==n?n:new jt,this.end=void 0!==t?t:new jt}function Xl(n){ve.call(this),this.material=n,this.render=function(){}}function ql(n,t,e,r){this.object=n,this.size=void 0!==t?t:1;var i=void 0!==e?e:16711680,o=void 0!==r?r:1,a=0,l=this.object.geometry;l&&l.isGeometry?a=3*l.faces.length:l&&l.isBufferGeometry&&(a=l.attributes.normal.count);var s=new Re,c=new Te(2*a*3,3);s.addAttribute("position",c),bi.call(this,s,new yi({color:i,linewidth:o})),this.matrixAutoUpdate=!1,this.update()}function Yl(n,t){ve.call(this),this.light=n,this.light.updateMatrixWorld(),this.matrix=n.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;for(var e=new Re,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1],i=0,o=1;i<32;i++,o++){var a=i/32*Math.PI*2,l=o/32*Math.PI*2;r.push(Math.cos(a),Math.sin(a),1,Math.cos(l),Math.sin(l),1)}e.addAttribute("position",new Te(r,3));var s=new yi({fog:!1});this.cone=new bi(e,s),this.add(this.cone),this.update()}function Zl(n){for(var t=function n(t){var e=[];t&&t.isBone&&e.push(t);for(var r=0;r<t.children.length;r++)e.push.apply(e,n(t.children[r]));return e}(n),e=new Re,r=[],i=[],o=new ie(0,0,1),a=new ie(0,1,0),l=0;l<t.length;l++){var s=t[l];s.parent&&s.parent.isBone&&(r.push(0,0,0),r.push(0,0,0),i.push(o.r,o.g,o.b),i.push(a.r,a.g,a.b))}e.addAttribute("position",new Te(r,3)),e.addAttribute("color",new Te(i,3));var c=new yi({vertexColors:M,depthTest:!1,depthWrite:!1,transparent:!0});bi.call(this,e,c),this.root=n,this.bones=t,this.matrix=n.matrixWorld,this.matrixAutoUpdate=!1}function Jl(n,t,e){this.light=n,this.light.updateMatrixWorld(),this.color=e;var r=new To(t,4,2),i=new Fe({wireframe:!0,fog:!1});je.call(this,r,i),this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}function Kl(n,t){ve.call(this),this.light=n,this.light.updateMatrixWorld(),this.matrix=n.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;var e=new yi({fog:!1}),r=new Re;r.addAttribute("position",new ye(new Float32Array(15),3)),this.line=new xi(r,e),this.add(this.line),this.update()}function Ql(n,t,e){ve.call(this),this.light=n,this.light.updateMatrixWorld(),this.matrix=n.matrixWorld,this.matrixAutoUpdate=!1,this.color=e;var r=new Ii(t);r.rotateY(.5*Math.PI),this.material=new Fe({wireframe:!0,fog:!1}),void 0===this.color&&(this.material.vertexColors=M);var i=r.getAttribute("position"),o=new Float32Array(3*i.count);r.addAttribute("color",new ye(o,3)),this.add(new je(r,this.material)),this.update()}function $l(n,t,e,r){n=n||10,t=t||10,e=new ie(void 0!==e?e:4473924),r=new ie(void 0!==r?r:8947848);for(var i=t/2,o=n/t,a=n/2,l=[],s=[],c=0,u=0,h=-a;c<=t;c++,h+=o){l.push(-a,0,h,a,0,h),l.push(h,0,-a,h,0,a);var v=c===i?e:r;v.toArray(s,u),u+=3,v.toArray(s,u),u+=3,v.toArray(s,u),u+=3,v.toArray(s,u),u+=3}var d=new Re;d.addAttribute("position",new Te(l,3)),d.addAttribute("color",new Te(s,3));var f=new yi({vertexColors:M});bi.call(this,d,f)}function ns(n,t,e,r,i,o){n=n||10,t=t||16,e=e||8,r=r||64,i=new ie(void 0!==i?i:4473924),o=new ie(void 0!==o?o:8947848);var a,l,s,c,u,h,v,d=[],f=[];for(c=0;c<=t;c++)s=c/t*(2*Math.PI),a=Math.sin(s)*n,l=Math.cos(s)*n,d.push(0,0,0),d.push(a,0,l),v=1&c?i:o,f.push(v.r,v.g,v.b),f.push(v.r,v.g,v.b);for(c=0;c<=e;c++)for(v=1&c?i:o,h=n-n/e*c,u=0;u<r;u++)s=u/r*(2*Math.PI),a=Math.sin(s)*h,l=Math.cos(s)*h,d.push(a,0,l),f.push(v.r,v.g,v.b),s=(u+1)/r*(2*Math.PI),a=Math.sin(s)*h,l=Math.cos(s)*h,d.push(a,0,l),f.push(v.r,v.g,v.b);var p=new Re;p.addAttribute("position",new Te(d,3)),p.addAttribute("color",new Te(f,3));var m=new yi({vertexColors:M});bi.call(this,p,m)}function ts(n,t,e,r){this.object=n,this.size=void 0!==t?t:1;var i=void 0!==e?e:16776960,o=void 0!==r?r:1,a=0,l=this.object.geometry;l&&l.isGeometry?a=l.faces.length:console.warn("THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.");var s=new Re,c=new Te(2*a*3,3);s.addAttribute("position",c),bi.call(this,s,new yi({color:i,linewidth:o})),this.matrixAutoUpdate=!1,this.update()}function es(n,t,e){ve.call(this),this.light=n,this.light.updateMatrixWorld(),this.matrix=n.matrixWorld,this.matrixAutoUpdate=!1,this.color=e,void 0===t&&(t=1);var r=new Re;r.addAttribute("position",new Te([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));var i=new yi({fog:!1});this.lightPlane=new xi(r,i),this.add(this.lightPlane),(r=new Re).addAttribute("position",new Te([0,0,0,0,0,1],3)),this.targetLine=new xi(r,i),this.add(this.targetLine),this.update()}function rs(n){var t=new Re,e=new yi({color:16777215,vertexColors:w}),r=[],i=[],o={},a=new ie(16755200),l=new ie(16711680),s=new ie(43775),c=new ie(16777215),u=new ie(3355443);function h(n,t,e){v(n,e),v(t,e)}function v(n,t){r.push(0,0,0),i.push(t.r,t.g,t.b),void 0===o[n]&&(o[n]=[]),o[n].push(r.length/3-1)}h("n1","n2",a),h("n2","n4",a),h("n4","n3",a),h("n3","n1",a),h("f1","f2",a),h("f2","f4",a),h("f4","f3",a),h("f3","f1",a),h("n1","f1",a),h("n2","f2",a),h("n3","f3",a),h("n4","f4",a),h("p","n1",l),h("p","n2",l),h("p","n3",l),h("p","n4",l),h("u1","u2",s),h("u2","u3",s),h("u3","u1",s),h("c","t",c),h("p","c",u),h("cn1","cn2",u),h("cn3","cn4",u),h("cf1","cf2",u),h("cf3","cf4",u),t.addAttribute("position",new Te(r,3)),t.addAttribute("color",new Te(i,3)),bi.call(this,t,e),this.camera=n,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=n.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=o,this.update()}function is(n,t){this.object=n,void 0===t&&(t=16776960);var e=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]),r=new Float32Array(24),i=new Re;i.setIndex(new ye(e,1)),i.addAttribute("position",new ye(r,3)),bi.call(this,i,new yi({color:t})),this.matrixAutoUpdate=!1,this.update()}function os(n,t){this.type="Box3Helper",this.box=n;var e=void 0!==t?t:16776960,r=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]),i=new Re;i.setIndex(new ye(r,1)),i.addAttribute("position",new Te([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),bi.call(this,i,new yi({color:e})),this.geometry.computeBoundingSphere()}function as(n,t,e){this.type="PlaneHelper",this.plane=n,this.size=void 0===t?1:t;var r=void 0!==e?e:16776960,i=new Re;i.addAttribute("position",new Te([1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,0,0,1,0,0,0],3)),i.computeBoundingSphere(),xi.call(this,i,new yi({color:r}));var o=new Re;o.addAttribute("position",new Te([1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1],3)),o.computeBoundingSphere(),this.add(new je(o,new Fe({color:r,opacity:.2,transparent:!0,depthWrite:!1})))}function ls(n,t,e,r,i,o){ve.call(this),void 0===r&&(r=16776960),void 0===e&&(e=1),void 0===i&&(i=.2*e),void 0===o&&(o=.2*i),void 0===Al&&((Al=new Re).addAttribute("position",new Te([0,0,0,0,1,0],3)),(Ll=new Io(0,.5,1,5,1)).translate(0,-.5,0)),this.position.copy(t),this.line=new xi(Al,new yi({color:r})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new je(Ll,new Fe({color:r})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(n),this.setLength(e,i,o)}function ss(n){var t=[0,0,0,n=n||1,0,0,0,0,0,0,n,0,0,0,0,0,0,n],e=new Re;e.addAttribute("position",new Te(t,3)),e.addAttribute("color",new Te([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));var r=new yi({vertexColors:M});bi.call(this,e,r)}function cs(n,t,e,r,i,o,a){return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),new pe(n,t,e,i,o,a)}Object.assign(Pl.prototype,{getValue:function(n,t){this.bind();var e=this._targetGroup.nCachedObjects_,r=this._bindings[e];void 0!==r&&r.getValue(n,t)},setValue:function(n,t){for(var e=this._bindings,r=this._targetGroup.nCachedObjects_,i=e.length;r!==i;++r)e[r].setValue(n,t)},bind:function(){for(var n=this._bindings,t=this._targetGroup.nCachedObjects_,e=n.length;t!==e;++t)n[t].bind()},unbind:function(){for(var n=this._bindings,t=this._targetGroup.nCachedObjects_,e=n.length;t!==e;++t)n[t].unbind()}}),Object.assign(Cl,{Composite:Pl,create:function(n,t,e){return n&&n.isAnimationObjectGroup?new Cl.Composite(n,t,e):new Cl(n,t,e)},sanitizeNodeName:function(){var n=new RegExp("[\\[\\]\\.:\\/]","g");return function(t){return t.replace(/\s/g,"_").replace(n,"")}}(),parseTrackName:function(){var n="[^\\[\\]\\.:\\/]",t="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",e=/((?:WC+[\/:])*)/.source.replace("WC",n),r=/(WCOD+)?/.source.replace("WCOD",t),i=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",n),o=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",n),a=new RegExp("^"+e+r+i+o+"$"),l=["material","materials","bones"];return function(n){var t=a.exec(n);if(!t)throw new Error("PropertyBinding: Cannot parse trackName: "+n);var e={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=e.nodeName&&e.nodeName.lastIndexOf(".");if(void 0!==r&&-1!==r){var i=e.nodeName.substring(r+1);-1!==l.indexOf(i)&&(e.nodeName=e.nodeName.substring(0,r),e.objectName=i)}if(null===e.propertyName||0===e.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+n);return e}}(),findNode:function(n,t){if(!t||""===t||"root"===t||"."===t||-1===t||t===n.name||t===n.uuid)return n;if(n.skeleton){var e=n.skeleton.getBoneByName(t);if(void 0!==e)return e}if(n.children){var r=function(n){for(var e=0;e<n.length;e++){var i=n[e];if(i.name===t||i.uuid===t)return i;var o=r(i.children);if(o)return o}return null},i=r(n.children);if(i)return i}return null}}),Object.assign(Cl.prototype,{_getValue_unavailable:function(){},_setValue_unavailable:function(){},BindingType:{Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Versioning:{None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},GetterByBindingType:[function(n,t){n[t]=this.node[this.propertyName]},function(n,t){for(var e=this.resolvedProperty,r=0,i=e.length;r!==i;++r)n[t++]=e[r]},function(n,t){n[t]=this.resolvedProperty[this.propertyIndex]},function(n,t){this.resolvedProperty.toArray(n,t)}],SetterByBindingTypeAndVersioning:[[function(n,t){this.targetObject[this.propertyName]=n[t]},function(n,t){this.targetObject[this.propertyName]=n[t],this.targetObject.needsUpdate=!0},function(n,t){this.targetObject[this.propertyName]=n[t],this.targetObject.matrixWorldNeedsUpdate=!0}],[function(n,t){for(var e=this.resolvedProperty,r=0,i=e.length;r!==i;++r)e[r]=n[t++]},function(n,t){for(var e=this.resolvedProperty,r=0,i=e.length;r!==i;++r)e[r]=n[t++];this.targetObject.needsUpdate=!0},function(n,t){for(var e=this.resolvedProperty,r=0,i=e.length;r!==i;++r)e[r]=n[t++];this.targetObject.matrixWorldNeedsUpdate=!0}],[function(n,t){this.resolvedProperty[this.propertyIndex]=n[t]},function(n,t){this.resolvedProperty[this.propertyIndex]=n[t],this.targetObject.needsUpdate=!0},function(n,t){this.resolvedProperty[this.propertyIndex]=n[t],this.targetObject.matrixWorldNeedsUpdate=!0}],[function(n,t){this.resolvedProperty.fromArray(n,t)},function(n,t){this.resolvedProperty.fromArray(n,t),this.targetObject.needsUpdate=!0},function(n,t){this.resolvedProperty.fromArray(n,t),this.targetObject.matrixWorldNeedsUpdate=!0}]],getValue:function(n,t){this.bind(),this.getValue(n,t)},setValue:function(n,t){this.bind(),this.setValue(n,t)},bind:function(){var n=this.node,t=this.parsedPath,e=t.objectName,r=t.propertyName,i=t.propertyIndex;if(n||(n=Cl.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=n),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,n){if(e){var o=t.objectIndex;switch(e){case"materials":if(!n.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!n.material.materials)return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);n=n.material.materials;break;case"bones":if(!n.skeleton)return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);n=n.skeleton.bones;for(var a=0;a<n.length;a++)if(n[a].name===o){o=a;break}break;default:if(void 0===n[e])return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);n=n[e]}if(void 0!==o){if(void 0===n[o])return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,n);n=n[o]}}var l=n[r];if(void 0!==l){var s=this.Versioning.None;void 0!==n.needsUpdate?(s=this.Versioning.NeedsUpdate,this.targetObject=n):void 0!==n.matrixWorldNeedsUpdate&&(s=this.Versioning.MatrixWorldNeedsUpdate,this.targetObject=n);var c=this.BindingType.Direct;if(void 0!==i){if("morphTargetInfluences"===r){if(!n.geometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(n.geometry.isBufferGeometry){if(!n.geometry.morphAttributes)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);for(a=0;a<this.node.geometry.morphAttributes.position.length;a++)if(n.geometry.morphAttributes.position[a].name===i){i=a;break}}else{if(!n.geometry.morphTargets)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.",this);for(a=0;a<this.node.geometry.morphTargets.length;a++)if(n.geometry.morphTargets[a].name===i){i=a;break}}}c=this.BindingType.ArrayElement,this.resolvedProperty=l,this.propertyIndex=i}else void 0!==l.fromArray&&void 0!==l.toArray?(c=this.BindingType.HasFromToArray,this.resolvedProperty=l):Array.isArray(l)?(c=this.BindingType.EntireArray,this.resolvedProperty=l):this.propertyName=r;this.getValue=this.GetterByBindingType[c],this.setValue=this.SetterByBindingTypeAndVersioning[c][s]}else{var u=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+u+"."+r+" but it wasn't found.",n)}}else console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.")},unbind:function(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}),
//!\ DECLARE ALIAS AFTER assign prototype !
Object.assign(Cl.prototype,{_getValue_unbound:Cl.prototype.getValue,_setValue_unbound:Cl.prototype.setValue}),Object.assign(Rl.prototype,{isAnimationObjectGroup:!0,add:function(){for(var n=this._objects,t=n.length,e=this.nCachedObjects_,r=this._indicesByUUID,i=this._paths,o=this._parsedPaths,a=this._bindings,l=a.length,s=void 0,c=0,u=arguments.length;c!==u;++c){var h=arguments[c],v=h.uuid,d=r[v];if(void 0===d){d=t++,r[v]=d,n.push(h);for(var f=0,p=l;f!==p;++f)a[f].push(new Cl(h,i[f],o[f]))}else if(d<e){s=n[d];var m=--e,g=n[m];r[g.uuid]=d,n[d]=g,r[v]=m,n[m]=h;for(f=0,p=l;f!==p;++f){var y=a[f],x=y[m],b=y[d];y[d]=x,void 0===b&&(b=new Cl(h,i[f],o[f])),y[m]=b}}else n[d]!==s&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=e},remove:function(){for(var n=this._objects,t=this.nCachedObjects_,e=this._indicesByUUID,r=this._bindings,i=r.length,o=0,a=arguments.length;o!==a;++o){var l=arguments[o],s=l.uuid,c=e[s];if(void 0!==c&&c>=t){var u=t++,h=n[u];e[h.uuid]=c,n[c]=h,e[s]=u,n[u]=l;for(var v=0,d=i;v!==d;++v){var f=r[v],p=f[u],m=f[c];f[c]=p,f[u]=m}}}this.nCachedObjects_=t},uncache:function(){for(var n=this._objects,t=n.length,e=this.nCachedObjects_,r=this._indicesByUUID,i=this._bindings,o=i.length,a=0,l=arguments.length;a!==l;++a){var s=arguments[a].uuid,c=r[s];if(void 0!==c)if(delete r[s],c<e){var u=--e,h=n[u],v=n[g=--t];r[h.uuid]=c,n[c]=h,r[v.uuid]=u,n[u]=v,n.pop();for(var d=0,f=o;d!==f;++d){var p=(y=i[d])[u],m=y[g];y[c]=p,y[u]=m,y.pop()}}else{var g;r[(v=n[g=--t]).uuid]=c,n[c]=v,n.pop();for(d=0,f=o;d!==f;++d){var y;(y=i[d])[c]=y[g],y.pop()}}}this.nCachedObjects_=e},subscribe_:function(n,t){var e=this._bindingsIndicesByPath,r=e[n],i=this._bindings;if(void 0!==r)return i[r];var o=this._paths,a=this._parsedPaths,l=this._objects,s=l.length,c=this.nCachedObjects_,u=new Array(s);r=i.length,e[n]=r,o.push(n),a.push(t),i.push(u);for(var h=c,v=l.length;h!==v;++h){var d=l[h];u[h]=new Cl(d,n,t)}return u},unsubscribe_:function(n){var t=this._bindingsIndicesByPath,e=t[n];if(void 0!==e){var r=this._paths,i=this._parsedPaths,o=this._bindings,a=o.length-1,l=o[a];t[n[a]]=e,o[e]=l,o.pop(),i[e]=i[a],i.pop(),r[e]=r[a],r.pop()}}}),Object.assign(Ol.prototype,{play:function(){return this._mixer._activateAction(this),this},stop:function(){return this._mixer._deactivateAction(this),this.reset()},reset:function(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()},isRunning:function(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)},isScheduled:function(){return this._mixer._isActiveAction(this)},startAt:function(n){return this._startTime=n,this},setLoop:function(n,t){return this.loop=n,this.repetitions=t,this},setEffectiveWeight:function(n){return this.weight=n,this._effectiveWeight=this.enabled?n:0,this.stopFading()},getEffectiveWeight:function(){return this._effectiveWeight},fadeIn:function(n){return this._scheduleFading(n,0,1)},fadeOut:function(n){return this._scheduleFading(n,1,0)},crossFadeFrom:function(n,t,e){if(n.fadeOut(t),this.fadeIn(t),e){var r=this._clip.duration,i=n._clip.duration,o=i/r,a=r/i;n.warp(1,o,t),this.warp(a,1,t)}return this},crossFadeTo:function(n,t,e){return n.crossFadeFrom(this,t,e)},stopFading:function(){var n=this._weightInterpolant;return null!==n&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(n)),this},setEffectiveTimeScale:function(n){return this.timeScale=n,this._effectiveTimeScale=this.paused?0:n,this.stopWarping()},getEffectiveTimeScale:function(){return this._effectiveTimeScale},setDuration:function(n){return this.timeScale=this._clip.duration/n,this.stopWarping()},syncWith:function(n){return this.time=n.time,this.timeScale=n.timeScale,this.stopWarping()},halt:function(n){return this.warp(this._effectiveTimeScale,0,n)},warp:function(n,t,e){var r=this._mixer,i=r.time,o=this._timeScaleInterpolant,a=this.timeScale;null===o&&(o=r._lendControlInterpolant(),this._timeScaleInterpolant=o);var l=o.parameterPositions,s=o.sampleValues;return l[0]=i,l[1]=i+e,s[0]=n/a,s[1]=t/a,this},stopWarping:function(){var n=this._timeScaleInterpolant;return null!==n&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(n)),this},getMixer:function(){return this._mixer},getClip:function(){return this._clip},getRoot:function(){return this._localRoot||this._mixer._root},_update:function(n,t,e,r){if(this.enabled){var i=this._startTime;if(null!==i){var o=(n-i)*e;if(o<0||0===e)return;this._startTime=null,t=e*o}t*=this._updateTimeScale(n);var a=this._updateTime(t),l=this._updateWeight(n);if(l>0)for(var s=this._interpolants,c=this._propertyBindings,u=0,h=s.length;u!==h;++u)s[u].evaluate(a),c[u].accumulate(r,l)}else this._updateWeight(n)},_updateWeight:function(n){var t=0;if(this.enabled){t=this.weight;var e=this._weightInterpolant;if(null!==e){var r=e.evaluate(n)[0];t*=r,n>e.parameterPositions[1]&&(this.stopFading(),0===r&&(this.enabled=!1))}}return this._effectiveWeight=t,t},_updateTimeScale:function(n){var t=0;if(!this.paused){t=this.timeScale;var e=this._timeScaleInterpolant;if(null!==e)t*=e.evaluate(n)[0],n>e.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}return this._effectiveTimeScale=t,t},_updateTime:function(n){var t=this.time+n,e=this._clip.duration,r=this.loop,i=this._loopCount,o=r===mt;if(0===n)return-1===i?t:o&&1==(1&i)?e-t:t;if(r===ft){-1===i&&(this._loopCount=0,this._setEndings(!0,!0,!1));n:{if(t>=e)t=e;else{if(!(t<0))break n;t=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this._mixer.dispatchEvent({type:"finished",action:this,direction:n<0?-1:1})}}else{if(-1===i&&(n>=0?(i=0,this._setEndings(!0,0===this.repetitions,o)):this._setEndings(0===this.repetitions,!0,o)),t>=e||t<0){var a=Math.floor(t/e);t-=e*a,i+=Math.abs(a);var l=this.repetitions-i;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,t=n>0?e:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:n>0?1:-1});else{if(1===l){var s=n<0;this._setEndings(s,!s,o)}else this._setEndings(!1,!1,o);this._loopCount=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}if(o&&1==(1&i))return this.time=t,e-t}return this.time=t,t},_setEndings:function(n,t,e){var r=this._interpolantSettings;e?(r.endingStart=wt,r.endingEnd=wt):(r.endingStart=n?this.zeroSlopeAtStart?wt:bt:Mt,r.endingEnd=t?this.zeroSlopeAtEnd?wt:bt:Mt)},_scheduleFading:function(n,t,e){var r=this._mixer,i=r.time,o=this._weightInterpolant;null===o&&(o=r._lendControlInterpolant(),this._weightInterpolant=o);var a=o.parameterPositions,l=o.sampleValues;return a[0]=i,l[0]=t,a[1]=i+n,l[1]=e,this}}),Dl.prototype=Object.assign(Object.create(r.prototype),{constructor:Dl,_bindAction:function(n,t){var e=n._localRoot||this._root,r=n._clip.tracks,i=r.length,o=n._propertyBindings,a=n._interpolants,l=e.uuid,s=this._bindingsByRootAndName,c=s[l];void 0===c&&(c={},s[l]=c);for(var u=0;u!==i;++u){var h=r[u],v=h.name,d=c[v];if(void 0!==d)o[u]=d;else{if(void 0!==(d=o[u])){null===d._cacheIndex&&(++d.referenceCount,this._addInactiveBinding(d,l,v));continue}var f=t&&t._propertyBindings[u].binding.parsedPath;++(d=new Tl(Cl.create(e,v,f),h.ValueTypeName,h.getValueSize())).referenceCount,this._addInactiveBinding(d,l,v),o[u]=d}a[u].resultBuffer=d.buffer}},_activateAction:function(n){if(!this._isActiveAction(n)){if(null===n._cacheIndex){var t=(n._localRoot||this._root).uuid,e=n._clip.uuid,r=this._actionsByClip[e];this._bindAction(n,r&&r.knownActions[0]),this._addInactiveAction(n,e,t)}for(var i=n._propertyBindings,o=0,a=i.length;o!==a;++o){var l=i[o];0==l.useCount++&&(this._lendBinding(l),l.saveOriginalState())}this._lendAction(n)}},_deactivateAction:function(n){if(this._isActiveAction(n)){for(var t=n._propertyBindings,e=0,r=t.length;e!==r;++e){var i=t[e];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(n)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var n=this;this.stats={actions:{get total(){return n._actions.length},get inUse(){return n._nActiveActions}},bindings:{get total(){return n._bindings.length},get inUse(){return n._nActiveBindings}},controlInterpolants:{get total(){return n._controlInterpolants.length},get inUse(){return n._nActiveControlInterpolants}}}},_isActiveAction:function(n){var t=n._cacheIndex;return null!==t&&t<this._nActiveActions},_addInactiveAction:function(n,t,e){var r=this._actions,i=this._actionsByClip,o=i[t];if(void 0===o)o={knownActions:[n],actionByRoot:{}},n._byClipCacheIndex=0,i[t]=o;else{var a=o.knownActions;n._byClipCacheIndex=a.length,a.push(n)}n._cacheIndex=r.length,r.push(n),o.actionByRoot[e]=n},_removeInactiveAction:function(n){var t=this._actions,e=t[t.length-1],r=n._cacheIndex;e._cacheIndex=r,t[r]=e,t.pop(),n._cacheIndex=null;var i=n._clip.uuid,o=this._actionsByClip,a=o[i],l=a.knownActions,s=l[l.length-1],c=n._byClipCacheIndex;s._byClipCacheIndex=c,l[c]=s,l.pop(),n._byClipCacheIndex=null,delete a.actionByRoot[(n._localRoot||this._root).uuid],0===l.length&&delete o[i],this._removeInactiveBindingsForAction(n)},_removeInactiveBindingsForAction:function(n){for(var t=n._propertyBindings,e=0,r=t.length;e!==r;++e){var i=t[e];0==--i.referenceCount&&this._removeInactiveBinding(i)}},_lendAction:function(n){var t=this._actions,e=n._cacheIndex,r=this._nActiveActions++,i=t[r];n._cacheIndex=r,t[r]=n,i._cacheIndex=e,t[e]=i},_takeBackAction:function(n){var t=this._actions,e=n._cacheIndex,r=--this._nActiveActions,i=t[r];n._cacheIndex=r,t[r]=n,i._cacheIndex=e,t[e]=i},_addInactiveBinding:function(n,t,e){var r=this._bindingsByRootAndName,i=r[t],o=this._bindings;void 0===i&&(i={},r[t]=i),i[e]=n,n._cacheIndex=o.length,o.push(n)},_removeInactiveBinding:function(n){var t=this._bindings,e=n.binding,r=e.rootNode.uuid,i=e.path,o=this._bindingsByRootAndName,a=o[r],l=t[t.length-1],s=n._cacheIndex;l._cacheIndex=s,t[s]=l,t.pop(),delete a[i];n:{for(var c in a)break n;delete o[r]}},_lendBinding:function(n){var t=this._bindings,e=n._cacheIndex,r=this._nActiveBindings++,i=t[r];n._cacheIndex=r,t[r]=n,i._cacheIndex=e,t[e]=i},_takeBackBinding:function(n){var t=this._bindings,e=n._cacheIndex,r=--this._nActiveBindings,i=t[r];n._cacheIndex=r,t[r]=n,i._cacheIndex=e,t[e]=i},_lendControlInterpolant:function(){var n=this._controlInterpolants,t=this._nActiveControlInterpolants++,e=n[t];return void 0===e&&((e=new Va(new Float32Array(2),new Float32Array(2),1,this._controlInterpolantsResultBuffer)).__cacheIndex=t,n[t]=e),e},_takeBackControlInterpolant:function(n){var t=this._controlInterpolants,e=n.__cacheIndex,r=--this._nActiveControlInterpolants,i=t[r];n.__cacheIndex=r,t[r]=n,i.__cacheIndex=e,t[e]=i},_controlInterpolantsResultBuffer:new Float32Array(1),clipAction:function(n,t){var e=t||this._root,r=e.uuid,i="string"==typeof n?nl.findByName(e,n):n,o=null!==i?i.uuid:n,a=this._actionsByClip[o],l=null;if(void 0!==a){var s=a.actionByRoot[r];if(void 0!==s)return s;l=a.knownActions[0],null===i&&(i=l._clip)}if(null===i)return null;var c=new Ol(this,i,t);return this._bindAction(c,l),this._addInactiveAction(c,o,r),c},existingAction:function(n,t){var e=t||this._root,r=e.uuid,i="string"==typeof n?nl.findByName(e,n):n,o=i?i.uuid:n,a=this._actionsByClip[o];return void 0!==a&&a.actionByRoot[r]||null},stopAllAction:function(){var n=this._actions,t=this._nActiveActions,e=this._bindings,r=this._nActiveBindings;this._nActiveActions=0,this._nActiveBindings=0;for(var i=0;i!==t;++i)n[i].reset();for(i=0;i!==r;++i)e[i].useCount=0;return this},update:function(n){n*=this.timeScale;for(var t=this._actions,e=this._nActiveActions,r=this.time+=n,i=Math.sign(n),o=this._accuIndex^=1,a=0;a!==e;++a){t[a]._update(r,n,i,o)}var l=this._bindings,s=this._nActiveBindings;for(a=0;a!==s;++a)l[a].apply(o);return this},getRoot:function(){return this._root},uncacheClip:function(n){var t=this._actions,e=n.uuid,r=this._actionsByClip,i=r[e];if(void 0!==i){for(var o=i.knownActions,a=0,l=o.length;a!==l;++a){var s=o[a];this._deactivateAction(s);var c=s._cacheIndex,u=t[t.length-1];s._cacheIndex=null,s._byClipCacheIndex=null,u._cacheIndex=c,t[c]=u,t.pop(),this._removeInactiveBindingsForAction(s)}delete r[e]}},uncacheRoot:function(n){var t=n.uuid,e=this._actionsByClip;for(var r in e){var i=e[r].actionByRoot[t];void 0!==i&&(this._deactivateAction(i),this._removeInactiveAction(i))}var o=this._bindingsByRootAndName[t];if(void 0!==o)for(var a in o){var l=o[a];l.restoreOriginalState(),this._removeInactiveBinding(l)}},uncacheAction:function(n,t){var e=this.existingAction(n,t);null!==e&&(this._deactivateAction(e),this._removeInactiveAction(e))}}),Ul.prototype.clone=function(){return new Ul(void 0===this.value.clone?this.value:this.value.clone())},Nl.prototype=Object.assign(Object.create(Re.prototype),{constructor:Nl,isInstancedBufferGeometry:!0,copy:function(n){return Re.prototype.copy.call(this,n),this.maxInstancedCount=n.maxInstancedCount,this},clone:function(){return(new this.constructor).copy(this)}}),Il.prototype=Object.assign(Object.create(ui.prototype),{constructor:Il,isInstancedInterleavedBuffer:!0,copy:function(n){return ui.prototype.copy.call(this,n),this.meshPerAttribute=n.meshPerAttribute,this}}),Bl.prototype=Object.assign(Object.create(ye.prototype),{constructor:Bl,isInstancedBufferAttribute:!0,copy:function(n){return ye.prototype.copy.call(this,n),this.meshPerAttribute=n.meshPerAttribute,this}}),Object.assign(Fl.prototype,{linePrecision:1,set:function(n,t){this.ray.set(n,t)},setFromCamera:function(n,t){t&&t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(n.x,n.y,.5).unproject(t).sub(this.ray.origin).normalize()):t&&t.isOrthographicCamera?(this.ray.origin.set(n.x,n.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld)):console.error("THREE.Raycaster: Unsupported camera type.")},intersectObject:function(n,t,e){var r=e||[];return Gl(n,this,r,t),r.sort(zl),r},intersectObjects:function(n,t,e){var r=e||[];if(!1===Array.isArray(n))return console.warn("THREE.Raycaster.intersectObjects: objects is not an Array."),r;for(var i=0,o=n.length;i<o;i++)Gl(n[i],this,r,t);return r.sort(zl),r}}),Object.assign(kl.prototype,{start:function(){this.startTime=("undefined"==typeof performance?Date:performance).now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1,this.autoStart=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var n=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){var t=("undefined"==typeof performance?Date:performance).now();n=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=n}return n}}),Object.assign(jl.prototype,{set:function(n,t,e){return this.radius=n,this.phi=t,this.theta=e,this},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.radius=n.radius,this.phi=n.phi,this.theta=n.theta,this},makeSafe:function(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this},setFromVector3:function(n){return this.radius=n.length(),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(n.x,n.z),this.phi=Math.acos(Ft.clamp(n.y/this.radius,-1,1))),this}}),Object.assign(Hl.prototype,{set:function(n,t,e){return this.radius=n,this.theta=t,this.y=e,this},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.radius=n.radius,this.theta=n.theta,this.y=n.y,this},setFromVector3:function(n){return this.radius=Math.sqrt(n.x*n.x+n.z*n.z),this.theta=Math.atan2(n.x,n.z),this.y=n.y,this}}),Object.assign(Vl.prototype,{set:function(n,t){return this.min.copy(n),this.max.copy(t),this},setFromPoints:function(n){this.makeEmpty();for(var t=0,e=n.length;t<e;t++)this.expandByPoint(n[t]);return this},setFromCenterAndSize:function(){var n=new zt;return function(t,e){var r=n.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(r),this.max.copy(t).add(r),this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.min.copy(n.min),this.max.copy(n.max),this},makeEmpty:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this},isEmpty:function(){return this.max.x<this.min.x||this.max.y<this.min.y},getCenter:function(n){return void 0===n&&(console.warn("THREE.Box2: .getCenter() target is now required"),n=new zt),this.isEmpty()?n.set(0,0):n.addVectors(this.min,this.max).multiplyScalar(.5)},getSize:function(n){return void 0===n&&(console.warn("THREE.Box2: .getSize() target is now required"),n=new zt),this.isEmpty()?n.set(0,0):n.subVectors(this.max,this.min)},expandByPoint:function(n){return this.min.min(n),this.max.max(n),this},expandByVector:function(n){return this.min.sub(n),this.max.add(n),this},expandByScalar:function(n){return this.min.addScalar(-n),this.max.addScalar(n),this},containsPoint:function(n){return!(n.x<this.min.x||n.x>this.max.x||n.y<this.min.y||n.y>this.max.y)},containsBox:function(n){return this.min.x<=n.min.x&&n.max.x<=this.max.x&&this.min.y<=n.min.y&&n.max.y<=this.max.y},getParameter:function(n,t){return void 0===t&&(console.warn("THREE.Box2: .getParameter() target is now required"),t=new zt),t.set((n.x-this.min.x)/(this.max.x-this.min.x),(n.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(n){return!(n.max.x<this.min.x||n.min.x>this.max.x||n.max.y<this.min.y||n.min.y>this.max.y)},clampPoint:function(n,t){return void 0===t&&(console.warn("THREE.Box2: .clampPoint() target is now required"),t=new zt),t.copy(n).clamp(this.min,this.max)},distanceToPoint:function(){var n=new zt;return function(t){return n.copy(t).clamp(this.min,this.max).sub(t).length()}}(),intersect:function(n){return this.min.max(n.min),this.max.min(n.max),this},union:function(n){return this.min.min(n.min),this.max.max(n.max),this},translate:function(n){return this.min.add(n),this.max.add(n),this},equals:function(n){return n.min.equals(this.min)&&n.max.equals(this.max)}}),Object.assign(Wl.prototype,{set:function(n,t){return this.start.copy(n),this.end.copy(t),this},clone:function(){return(new this.constructor).copy(this)},copy:function(n){return this.start.copy(n.start),this.end.copy(n.end),this},getCenter:function(n){return void 0===n&&(console.warn("THREE.Line3: .getCenter() target is now required"),n=new jt),n.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(n){return void 0===n&&(console.warn("THREE.Line3: .delta() target is now required"),n=new jt),n.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(n,t){return void 0===t&&(console.warn("THREE.Line3: .at() target is now required"),t=new jt),this.delta(t).multiplyScalar(n).add(this.start)},closestPointToPointParameter:function(){var n=new jt,t=new jt;return function(e,r){n.subVectors(e,this.start),t.subVectors(this.end,this.start);var i=t.dot(t),o=t.dot(n)/i;return r&&(o=Ft.clamp(o,0,1)),o}}(),closestPointToPoint:function(n,t,e){var r=this.closestPointToPointParameter(n,t);return void 0===e&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),e=new jt),this.delta(e).multiplyScalar(r).add(this.start)},applyMatrix4:function(n){return this.start.applyMatrix4(n),this.end.applyMatrix4(n),this},equals:function(n){return n.start.equals(this.start)&&n.end.equals(this.end)}}),Xl.prototype=Object.create(ve.prototype),Xl.prototype.constructor=Xl,Xl.prototype.isImmediateRenderObject=!0,ql.prototype=Object.create(bi.prototype),ql.prototype.constructor=ql,ql.prototype.update=function(){var n=new jt,t=new jt,e=new Ht;return function(){var r=["a","b","c"];this.object.updateMatrixWorld(!0),e.getNormalMatrix(this.object.matrixWorld);var i=this.object.matrixWorld,o=this.geometry.attributes.position,a=this.object.geometry;if(a&&a.isGeometry)for(var l=a.vertices,s=a.faces,c=0,u=0,h=s.length;u<h;u++)for(var v=s[u],d=0,f=v.vertexNormals.length;d<f;d++){var p=l[v[r[d]]],m=v.vertexNormals[d];n.copy(p).applyMatrix4(i),t.copy(m).applyMatrix3(e).normalize().multiplyScalar(this.size).add(n),o.setXYZ(c,n.x,n.y,n.z),c+=1,o.setXYZ(c,t.x,t.y,t.z),c+=1}else if(a&&a.isBufferGeometry){var g=a.attributes.position,y=a.attributes.normal;for(c=0,d=0,f=g.count;d<f;d++)n.set(g.getX(d),g.getY(d),g.getZ(d)).applyMatrix4(i),t.set(y.getX(d),y.getY(d),y.getZ(d)),t.applyMatrix3(e).normalize().multiplyScalar(this.size).add(n),o.setXYZ(c,n.x,n.y,n.z),c+=1,o.setXYZ(c,t.x,t.y,t.z),c+=1}o.needsUpdate=!0}}(),Yl.prototype=Object.create(ve.prototype),Yl.prototype.constructor=Yl,Yl.prototype.dispose=function(){this.cone.geometry.dispose(),this.cone.material.dispose()},Yl.prototype.update=function(){var n=new jt,t=new jt;return function(){this.light.updateMatrixWorld();var e=this.light.distance?this.light.distance:1e3,r=e*Math.tan(this.light.angle);this.cone.scale.set(r,r,e),n.setFromMatrixPosition(this.light.matrixWorld),t.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(t.sub(n)),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}(),Zl.prototype=Object.create(bi.prototype),Zl.prototype.constructor=Zl,Zl.prototype.updateMatrixWorld=function(){var n=new jt,t=new Gt,e=new Gt;return function(r){var i=this.bones,o=this.geometry,a=o.getAttribute("position");e.getInverse(this.root.matrixWorld);for(var l=0,s=0;l<i.length;l++){var c=i[l];c.parent&&c.parent.isBone&&(t.multiplyMatrices(e,c.matrixWorld),n.setFromMatrixPosition(t),a.setXYZ(s,n.x,n.y,n.z),t.multiplyMatrices(e,c.parent.matrixWorld),n.setFromMatrixPosition(t),a.setXYZ(s+1,n.x,n.y,n.z),s+=2)}o.getAttribute("position").needsUpdate=!0,ve.prototype.updateMatrixWorld.call(this,r)}}(),Jl.prototype=Object.create(je.prototype),Jl.prototype.constructor=Jl,Jl.prototype.dispose=function(){this.geometry.dispose(),this.material.dispose()},Jl.prototype.update=function(){void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)},Kl.prototype=Object.create(ve.prototype),Kl.prototype.constructor=Kl,Kl.prototype.dispose=function(){this.children[0].geometry.dispose(),this.children[0].material.dispose()},Kl.prototype.update=function(){var n=.5*this.light.width,t=.5*this.light.height,e=this.line.geometry.attributes.position,r=e.array;r[0]=n,r[1]=-t,r[2]=0,r[3]=n,r[4]=t,r[5]=0,r[6]=-n,r[7]=t,r[8]=0,r[9]=-n,r[10]=-t,r[11]=0,r[12]=n,r[13]=-t,r[14]=0,e.needsUpdate=!0,void 0!==this.color?this.line.material.color.set(this.color):this.line.material.color.copy(this.light.color)},Ql.prototype=Object.create(ve.prototype),Ql.prototype.constructor=Ql,Ql.prototype.dispose=function(){this.children[0].geometry.dispose(),this.children[0].material.dispose()},Ql.prototype.update=function(){var n=new jt,t=new ie,e=new ie;return function(){var r=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{var i=r.geometry.getAttribute("color");t.copy(this.light.color),e.copy(this.light.groundColor);for(var o=0,a=i.count;o<a;o++){var l=o<a/2?t:e;i.setXYZ(o,l.r,l.g,l.b)}i.needsUpdate=!0}r.lookAt(n.setFromMatrixPosition(this.light.matrixWorld).negate())}}(),$l.prototype=Object.create(bi.prototype),$l.prototype.constructor=$l,ns.prototype=Object.create(bi.prototype),ns.prototype.constructor=ns,ts.prototype=Object.create(bi.prototype),ts.prototype.constructor=ts,ts.prototype.update=function(){var n=new jt,t=new jt,e=new Ht;return function(){this.object.updateMatrixWorld(!0),e.getNormalMatrix(this.object.matrixWorld);for(var r=this.object.matrixWorld,i=this.geometry.attributes.position,o=this.object.geometry,a=o.vertices,l=o.faces,s=0,c=0,u=l.length;c<u;c++){var h=l[c],v=h.normal;n.copy(a[h.a]).add(a[h.b]).add(a[h.c]).divideScalar(3).applyMatrix4(r),t.copy(v).applyMatrix3(e).normalize().multiplyScalar(this.size).add(n),i.setXYZ(s,n.x,n.y,n.z),s+=1,i.setXYZ(s,t.x,t.y,t.z),s+=1}i.needsUpdate=!0}}(),es.prototype=Object.create(ve.prototype),es.prototype.constructor=es,es.prototype.dispose=function(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()},es.prototype.update=function(){var n=new jt,t=new jt,e=new jt;return function(){n.setFromMatrixPosition(this.light.matrixWorld),t.setFromMatrixPosition(this.light.target.matrixWorld),e.subVectors(t,n),this.lightPlane.lookAt(e),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(e),this.targetLine.scale.z=e.length()}}(),rs.prototype=Object.create(bi.prototype),rs.prototype.constructor=rs,rs.prototype.update=function(){var n,t,e=new jt,r=new de;function i(i,o,a,l){e.set(o,a,l).unproject(r);var s=t[i];if(void 0!==s)for(var c=n.getAttribute("position"),u=0,h=s.length;u<h;u++)c.setXYZ(s[u],e.x,e.y,e.z)}return function(){n=this.geometry,t=this.pointMap;r.projectionMatrix.copy(this.camera.projectionMatrix),i("c",0,0,-1),i("t",0,0,1),i("n1",-1,-1,-1),i("n2",1,-1,-1),i("n3",-1,1,-1),i("n4",1,1,-1),i("f1",-1,-1,1),i("f2",1,-1,1),i("f3",-1,1,1),i("f4",1,1,1),i("u1",.7,1.1,-1),i("u2",-.7,1.1,-1),i("u3",0,2,-1),i("cf1",-1,0,1),i("cf2",1,0,1),i("cf3",0,-1,1),i("cf4",0,1,1),i("cn1",-1,0,-1),i("cn2",1,0,-1),i("cn3",0,-1,-1),i("cn4",0,1,-1),n.getAttribute("position").needsUpdate=!0}}(),is.prototype=Object.create(bi.prototype),is.prototype.constructor=is,is.prototype.update=function(){var n=new Kt;return function(t){if(void 0!==t&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),void 0!==this.object&&n.setFromObject(this.object),!n.isEmpty()){var e=n.min,r=n.max,i=this.geometry.attributes.position,o=i.array;o[0]=r.x,o[1]=r.y,o[2]=r.z,o[3]=e.x,o[4]=r.y,o[5]=r.z,o[6]=e.x,o[7]=e.y,o[8]=r.z,o[9]=r.x,o[10]=e.y,o[11]=r.z,o[12]=r.x,o[13]=r.y,o[14]=e.z,o[15]=e.x,o[16]=r.y,o[17]=e.z,o[18]=e.x,o[19]=e.y,o[20]=e.z,o[21]=r.x,o[22]=e.y,o[23]=e.z,i.needsUpdate=!0,this.geometry.computeBoundingSphere()}}}(),is.prototype.setFromObject=function(n){return this.object=n,this.update(),this},os.prototype=Object.create(bi.prototype),os.prototype.constructor=os,os.prototype.updateMatrixWorld=function(n){var t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),ve.prototype.updateMatrixWorld.call(this,n))},as.prototype=Object.create(xi.prototype),as.prototype.constructor=as,as.prototype.updateMatrixWorld=function(n){var t=-this.plane.constant;Math.abs(t)<1e-8&&(t=1e-8),this.scale.set(.5*this.size,.5*this.size,t),this.children[0].material.side=t<0?m:p,this.lookAt(this.plane.normal),ve.prototype.updateMatrixWorld.call(this,n)},ls.prototype=Object.create(ve.prototype),ls.prototype.constructor=ls,ls.prototype.setDirection=function(){var n,t=new jt;return function(e){e.y>.99999?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(t.set(e.z,0,-e.x).normalize(),n=Math.acos(e.y),this.quaternion.setFromAxisAngle(t,n))}}(),ls.prototype.setLength=function(n,t,e){void 0===t&&(t=.2*n),void 0===e&&(e=.2*t),this.line.scale.set(1,Math.max(0,n-t),1),this.line.updateMatrix(),this.cone.scale.set(e,t,e),this.cone.position.y=n,this.cone.updateMatrix()},ls.prototype.setColor=function(n){this.line.material.color.copy(n),this.cone.material.color.copy(n)},ss.prototype=Object.create(bi.prototype),ss.prototype.constructor=ss;var us=0,hs=1;function vs(n){return console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead."),n}function ds(n){return void 0===n&&(n=[]),console.warn("THREE.MultiMaterial has been removed. Use an Array instead."),n.isMultiMaterial=!0,n.materials=n,n.clone=function(){return n.slice()},n}function fs(n,t){return console.warn("THREE.PointCloud has been renamed to THREE.Points."),new _i(n,t)}function ps(n){return console.warn("THREE.Particle has been renamed to THREE.Sprite."),new di(n)}function ms(n,t){return console.warn("THREE.ParticleSystem has been renamed to THREE.Points."),new _i(n,t)}function gs(n){return console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial."),new Mi(n)}function ys(n){return console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."),new Mi(n)}function xs(n){return console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial."),new Mi(n)}function bs(n,t,e){return console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead."),new jt(n,t,e)}function ws(n,t){return console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead."),new ye(n,t).setDynamic(!0)}function Ms(n,t){return console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead."),new xe(n,t)}function _s(n,t){return console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead."),new be(n,t)}function Es(n,t){return console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead."),new we(n,t)}function Ss(n,t){return console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead."),new Me(n,t)}function Ts(n,t){return console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead."),new _e(n,t)}function As(n,t){return console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."),new Ee(n,t)}function Ls(n,t){return console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead."),new Se(n,t)}function Ps(n,t){return console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),new Te(n,t)}function Cs(n,t){return console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),new Ae(n,t)}function Rs(n){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),ma.call(this,n),this.type="catmullrom",this.closed=!0}function Os(n){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),ma.call(this,n),this.type="catmullrom"}function Ds(n){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),ma.call(this,n),this.type="catmullrom"}function Us(n){return console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),new ss(n)}function Ns(n,t){return console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),new is(n,t)}function Is(n,t){return console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),new bi(new Uo(n.geometry),new yi({color:void 0!==t?t:16777215}))}function Bs(n,t){return console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead."),new bi(new Li(n.geometry),new yi({color:void 0!==t?t:16777215}))}function Fs(n){return console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader."),new ea(n)}function zs(n){return console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),new ia(n)}sa.create=function(n,t){return console.log("THREE.Curve.create() has been deprecated"),n.prototype=Object.create(sa.prototype),n.prototype.constructor=n,n.prototype.getPoint=t,n},Object.assign(La.prototype,{createPointsGeometry:function(n){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var t=this.getPoints(n);return this.createGeometry(t)},createSpacedPointsGeometry:function(n){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var t=this.getSpacedPoints(n);return this.createGeometry(t)},createGeometry:function(n){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var t=new ge,e=0,r=n.length;e<r;e++){var i=n[e];t.vertices.push(new jt(i.x,i.y,i.z||0))}return t}}),Object.assign(Pa.prototype,{fromPoints:function(n){console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),this.setFromPoints(n)}}),Rs.prototype=Object.create(ma.prototype),Os.prototype=Object.create(ma.prototype),Ds.prototype=Object.create(ma.prototype),Object.assign(Ds.prototype,{initFromArray:function(){console.error("THREE.Spline: .initFromArray() has been removed.")},getControlPointsArray:function(){console.error("THREE.Spline: .getControlPointsArray() has been removed.")},reparametrizeByArcLength:function(){console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")}}),$l.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")},Zl.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")},Object.assign(ol.prototype,{extractUrlBase:function(n){return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),al.extractUrlBase(n)}}),Object.assign(Vl.prototype,{center:function(n){return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),this.getCenter(n)},empty:function(){return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(n){return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(n)},size:function(n){return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),this.getSize(n)}}),Object.assign(Kt.prototype,{center:function(n){return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),this.getCenter(n)},empty:function(){return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(n){return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(n)},isIntersectionSphere:function(n){return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(n)},size:function(n){return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),this.getSize(n)}}),Wl.prototype.center=function(n){return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),this.getCenter(n)},Object.assign(Ft,{random16:function(){return console.warn("THREE.Math: .random16() has been deprecated. Use Math.random() instead."),Math.random()},nearestPowerOfTwo:function(n){return console.warn("THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo()."),Ft.floorPowerOfTwo(n)},nextPowerOfTwo:function(n){return console.warn("THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo()."),Ft.ceilPowerOfTwo(n)}}),Object.assign(Ht.prototype,{flattenToArrayOffset:function(n,t){return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(n,t)},multiplyVector3:function(n){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),n.applyMatrix3(this)},multiplyVector3Array:function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")},applyToBuffer:function(n){return console.warn("THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead."),this.applyToBufferAttribute(n)},applyToVector3Array:function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")}}),Object.assign(Gt.prototype,{extractPosition:function(n){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(n)},flattenToArrayOffset:function(n,t){return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(n,t)},getPosition:function(){var n;return function(){return void 0===n&&(n=new jt),console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),n.setFromMatrixColumn(this,3)}}(),setRotationFromQuaternion:function(n){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(n)},multiplyToArray:function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")},multiplyVector3:function(n){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),n.applyMatrix4(this)},multiplyVector4:function(n){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),n.applyMatrix4(this)},multiplyVector3Array:function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")},rotateAxis:function(n){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),n.transformDirection(this)},crossVector:function(n){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),n.applyMatrix4(this)},translate:function(){console.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(){console.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(){console.error("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")},applyToBuffer:function(n){return console.warn("THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead."),this.applyToBufferAttribute(n)},applyToVector3Array:function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")},makeFrustum:function(n,t,e,r,i,o){return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),this.makePerspective(n,t,r,e,i,o)}}),$t.prototype.isIntersectionLine=function(n){return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),this.intersectsLine(n)},kt.prototype.multiplyVector3=function(n){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),n.applyQuaternion(this)},Object.assign(Ge.prototype,{isIntersectionBox:function(n){return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(n)},isIntersectionPlane:function(n){return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),this.intersectsPlane(n)},isIntersectionSphere:function(n){return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(n)}}),Object.assign(ke.prototype,{area:function(){return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),this.getArea()},barycoordFromPoint:function(n,t){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),this.getBarycoord(n,t)},midpoint:function(n){return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),this.getMidpoint(n)},normal:function(n){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),this.getNormal(n)},plane:function(n){return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),this.getPlane(n)}}),Object.assign(ke,{barycoordFromPoint:function(n,t,e,r,i){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),ke.getBarycoord(n,t,e,r,i)},normal:function(n,t,e,r){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),ke.getNormal(n,t,e,r)}}),Object.assign(Ca.prototype,{extractAllPoints:function(n){return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),this.extractPoints(n)},extrude:function(n){return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),new xo(this,n)},makeGeometry:function(n){return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),new Ro(this,n)}}),Object.assign(zt.prototype,{fromAttribute:function(n,t,e){return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(n,t,e)},distanceToManhattan:function(n){return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(n)},lengthManhattan:function(){return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(jt.prototype,{setEulerFromRotationMatrix:function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(n){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(n)},getScaleFromMatrix:function(n){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(n)},getColumnFromMatrix:function(n,t){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(t,n)},applyProjection:function(n){return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),this.applyMatrix4(n)},fromAttribute:function(n,t,e){return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(n,t,e)},distanceToManhattan:function(n){return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(n)},lengthManhattan:function(){return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(qt.prototype,{fromAttribute:function(n,t,e){return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(n,t,e)},lengthManhattan:function(){return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(ge.prototype,{computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}}),Object.assign(ve.prototype,{getChildByName:function(n){return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(n)},renderDepth:function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")},translate:function(n,t){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(t,n)},getWorldRotation:function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")}}),Object.defineProperties(ve.prototype,{eulerOrder:{get:function(){return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order},set:function(n){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order=n}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}}),Object.defineProperties(fi.prototype,{objects:{get:function(){return console.warn("THREE.LOD: .objects has been renamed to .levels."),this.levels}}}),Object.defineProperty(pi.prototype,"useVertexTexture",{get:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")},set:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")}}),Object.defineProperty(sa.prototype,"__arcLengthDivisions",{get:function(){return console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions},set:function(n){console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions=n}}),ri.prototype.setLens=function(n,t){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),void 0!==t&&(this.filmGauge=t),this.setFocalLength(n)},Object.defineProperties(Ra.prototype,{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(n){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),this.shadow.camera.fov=n}},shadowCameraLeft:{set:function(n){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),this.shadow.camera.left=n}},shadowCameraRight:{set:function(n){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),this.shadow.camera.right=n}},shadowCameraTop:{set:function(n){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),this.shadow.camera.top=n}},shadowCameraBottom:{set:function(n){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),this.shadow.camera.bottom=n}},shadowCameraNear:{set:function(n){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),this.shadow.camera.near=n}},shadowCameraFar:{set:function(n){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),this.shadow.camera.far=n}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}},shadowBias:{set:function(n){console.warn("THREE.Light: .shadowBias is now .shadow.bias."),this.shadow.bias=n}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(n){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),this.shadow.mapSize.width=n}},shadowMapHeight:{set:function(n){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),this.shadow.mapSize.height=n}}}),Object.defineProperties(ye.prototype,{length:{get:function(){return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),this.array.length}},copyIndicesArray:function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")}}),Object.assign(Re.prototype,{addIndex:function(n){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),this.setIndex(n)},addDrawCall:function(n,t,e){void 0!==e&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),this.addGroup(n,t)},clearDrawCalls:function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),this.clearGroups()},computeTangents:function(){console.warn("THREE.BufferGeometry: .computeTangents() has been removed.")},computeOffsets:function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")}}),Object.defineProperties(Re.prototype,{drawcalls:{get:function(){return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),this.groups}},offsets:{get:function(){return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),this.groups}}}),Object.assign(bo.prototype,{getArrays:function(){console.error("THREE.ExtrudeBufferGeometry: .getArrays() has been removed.")},addShapeList:function(){console.error("THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.")},addShape:function(){console.error("THREE.ExtrudeBufferGeometry: .addShape() has been removed.")}}),Object.defineProperties(Ul.prototype,{dynamic:{set:function(){console.warn("THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.")}},onUpdate:{value:function(){return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),this}}}),Object.defineProperties(Be.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},wrapRGB:{get:function(){return console.warn("THREE.Material: .wrapRGB has been removed."),new ie}},shading:{get:function(){console.error("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(n){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=n===y}}}),Object.defineProperties(Xo.prototype,{metal:{get:function(){return console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead."),!1},set:function(){console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead")}}}),Object.defineProperties(ze.prototype,{derivatives:{get:function(){return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives},set:function(n){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives=n}}}),Object.assign(ai.prototype,{animate:function(n){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),this.setAnimationLoop(n)},getCurrentRenderTarget:function(){return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),this.getRenderTarget()},getMaxAnisotropy:function(){return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),this.capabilities.getMaxAnisotropy()},getPrecision:function(){return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),this.capabilities.precision},resetGLState:function(){return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),this.state.reset()},supportsFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),this.extensions.get("OES_texture_float")},supportsHalfFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),this.extensions.get("OES_texture_half_float")},supportsStandardDerivatives:function(){return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),this.extensions.get("OES_standard_derivatives")},supportsCompressedTextureS3TC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),this.extensions.get("WEBGL_compressed_texture_s3tc")},supportsCompressedTexturePVRTC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),this.extensions.get("WEBGL_compressed_texture_pvrtc")},supportsBlendMinMax:function(){return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),this.extensions.get("EXT_blend_minmax")},supportsVertexTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),this.capabilities.vertexTextures},supportsInstancedArrays:function(){return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),this.extensions.get("ANGLE_instanced_arrays")},enableScissorTest:function(n){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),this.setScissorTest(n)},initMaterial:function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")},addPrePlugin:function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")},addPostPlugin:function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")},updateShadowMap:function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")},setFaceCulling:function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")}}),Object.defineProperties(ai.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(n){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),this.shadowMap.enabled=n}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(n){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),this.shadowMap.type=n}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}}}),Object.defineProperties($r.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}},renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}}),Object.defineProperties(Yt.prototype,{wrapS:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS},set:function(n){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS=n}},wrapT:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT},set:function(n){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT=n}},magFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter},set:function(n){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter=n}},minFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter},set:function(n){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter=n}},anisotropy:{get:function(){return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy},set:function(n){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy=n}},offset:{get:function(){return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset},set:function(n){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset=n}},repeat:{get:function(){return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat},set:function(n){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat=n}},format:{get:function(){return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format},set:function(n){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format=n}},type:{get:function(){return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type},set:function(n){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type=n}},generateMipmaps:{get:function(){return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps},set:function(n){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps=n}}}),Object.defineProperties(oi.prototype,{standing:{set:function(){console.warn("THREE.WebVRManager: .standing has been removed.")}}}),_l.prototype.load=function(n){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");var t=this;return(new xl).load(n,function(n){t.setBuffer(n)}),this},Sl.prototype.getData=function(){return console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData()."),this.getFrequencyData()},wl.prototype.updateCubeMap=function(n,t){return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),this.update(n,t)};var Gs={merge:function(n,t,e){var r;console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead."),t.isMesh&&(t.matrixAutoUpdate&&t.updateMatrix(),r=t.matrix,t=t.geometry),n.merge(t,r,e)},center:function(n){return console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead."),n.center()}};function ks(){console.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js."),this.projectVector=function(n,t){console.warn("THREE.Projector: .projectVector() is now vector.project()."),n.project(t)},this.unprojectVector=function(n,t){console.warn("THREE.Projector: .unprojectVector() is now vector.unproject()."),n.unproject(t)},this.pickingRay=function(){console.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}}function js(){console.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js"),this.domElement=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),this.clear=function(){},this.render=function(){},this.setClearColor=function(){},this.setSize=function(){}}Vt.crossOrigin=void 0,Vt.loadTexture=function(n,t,e,r){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");var i=new la;i.setCrossOrigin(this.crossOrigin);var o=i.load(n,e,void 0,r);return t&&(o.mapping=t),o},Vt.loadTextureCube=function(n,t,e,r){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");var i=new aa;i.setCrossOrigin(this.crossOrigin);var o=i.load(n,e,void 0,r);return t&&(o.mapping=t),o},Vt.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},Vt.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")};var Hs={createMultiMaterialObject:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")},detach:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")},attach:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")}};function Vs(){console.error("THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js")}}.call(this,e(0))},function(n,t,e){"use strict";(function(n,r){e.d(t,"c",function(){return o}),e.d(t,"a",function(){return a}),e.d(t,"b",function(){return l});var i=new n.Group,o=/iPhone|iPad|iPod|Android/i.test(navigator.userAgent);console.log(o);var a=new n.App([new n.ElementModule({appendChild:function(){}}),new n.SceneModule,new n.DefineModule("camera",new n.PerspectiveCamera({position:[0,0,0],near:.01,fov:o?55:45})),new n.RenderingModule({bgColor:2500134,pixelRatio:Math.min(window.devicePixelRatio,o?1:2),renderer:{antialias:!0}})].concat(function(n){return function(n){if(Array.isArray(n)){for(var t=0,e=new Array(n.length);t<n.length;t++)e[t]=n[t];return e}}(n)||function(n){if(Symbol.iterator in Object(n)||"[object Arguments]"===Object.prototype.toString.call(n))return Array.from(n)}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}(o?[]:[new n.PostProcessorModule({depthTexture:!0,stencilTexture:!0,depthBuffer:!0})])));window.InteractiveApp={getElement:function(){return a.get("renderer").domElement},start:function(){return a.start()},getApp:function(){return a}};var l=a.get("camera");i.add(l),i.position.set(0,-17.580869159097375,17593357406225284e-21),i.quaternion.set(.7071064273819282,0,0,.7071071349909898),l.position.set(0,0,0),l.quaternion.set(0,0,0,1),i.addTo(a);var s=a.get("scene");s.fog=new r.Fog(2500134,0,60),console.log(a,s)}).call(this,e(5),e(0))},function(n,t,e){!function(n){"use strict";function t(n){return function(){var t=Object.create(n.prototype);return n.apply(t,arguments),t}}function e(n,e){n.create=t(n),n.prototype=Object.create(e.prototype),n.prototype.constructor=n}function r(n,t,e){return Math.min(Math.max(e,n),t)}function i(n,t,e){e=e||0,this.indices=new Uint16Array(n+e),this._count=n/t,this._itemSize=t,this._offset=e}function o(n,t,e,r){var o=t.length||arguments.length-1,a=n.length?n[0]:n,l=n.length?n[1]:n;i.call(this,o,3),this.setAngle(a,l),this.setIndices(t,e,r)}function a(n,t,e){var r=e.length||1;i.call(this,r,1,2),this.setAxis(n,t),this.setIndices(e)}e(i,Object),i.prototype.setIndices=function(n){for(var t=this._offset,e=n.length?n:arguments,r=this.indices,i=0;i<e.length;i++)r[i+t]=e[i]},i.prototype.applyConstraint=function(n,t,e){},e(o,i),o.prototype.setAngle=function(n,t){t=null!=t?t:n,this.setMin(n),this.setMax(t)},o.prototype.setMin=function(n){this._min=this.clampAngle(n)},o.prototype._min=null,o.prototype.setMax=function(n){this._max=this.clampAngle(n)},o.prototype._max=null,o.prototype.clampAngle=function(n){return r(1e-7,Math.PI-1e-7,n)},o.ANGLE_OBTUSE=.75*Math.PI,o.prototype.applyConstraint=function(n,t,e){var r=this.indices,i=r[n],a=r[n+1],l=r[n+2],s=3*i,c=s+1,u=s+2,h=3*a,v=h+1,d=h+2,f=3*l,p=f+1,m=f+2,g=t[h]-t[s],y=t[v]-t[c],x=t[d]-t[u],b=t[f]-t[h],w=t[p]-t[v],M=t[m]-t[d],_=t[f]-t[s],E=t[p]-t[c],S=t[m]-t[u];if(!(_||E||S))return t[s]+=.1,t[v]+=.1,void(t[f]-=.1);var T=g*g+y*y+x*x,A=b*b+w*w+M*M,L=_*_+E*E+S*S,P=Math.sqrt(T),C=Math.sqrt(A),R=Math.sqrt(L),O=1/P,D=1/C,U=this._min,N=this._max,I=Math.acos(-g*O*b*D+-y*O*w*D+-x*O*M*D);if(!(I>U&&I<N)){var B=I<U?U:N,F=T+A-2*P*C*Math.cos(B),z=Math.sqrt(F),G=(R-z)/R*.5;if(t[s]+=_*G,t[c]+=E*G,t[u]+=S*G,t[f]-=_*G,t[p]-=E*G,t[m]-=S*G,!(B<o.ANGLE_OBTUSE)){var k=Math.acos((T+F-A)/(2*P*z)),j=1/R,H=_*j,V=E*j,W=S*j,X=H*g+V*y+W*x,q=H*X,Y=V*X,Z=W*X,J=q-g,K=Y-y,Q=Z-x;if(J||K||Q){var $=q*q+Y*Y+Z*Z,nn=J*J+K*K+Q*Q,tn=Math.sqrt($),en=Math.sqrt(nn),rn=tn*Math.tan(k),on=(en-rn)/en;t[h]+=J*on,t[v]+=K*on,t[d]+=Q*on}else B<Math.PI&&(t[h]+=.1,t[v]+=.1,t[d]+=.1)}}},e(a,i),a.prototype.setAxis=function(n,t){var e=this.indices;e[0]=n,e[1]=t},a.prototype.applyConstraint=function(n,t,e){var r=this.indices,i=r[0],o=r[n+2],a=r[1],l=3*i,s=l+1,c=l+2,u=3*o,h=u+1,v=u+2,d=3*a,f=d+1,p=d+2,m=t[u]-t[l],g=t[h]-t[s],y=t[v]-t[c],x=t[d]-t[l],b=t[f]-t[s],w=t[p]-t[c],M=x*x+b*b+w*w,_=Math.sqrt(M),E=1/_,S=x*E,T=b*E,A=w*E,L=S*m+T*g+A*y,P=S*L,C=T*L,R=A*L;t[u]=t[l]+P,t[h]=t[s]+C,t[v]=t[c]+R};var l={};function s(n,t,e){this.distance=e||0,this.friction=.05,this.bufferVec3=l.create(2),this.setOrigin(n),this.setNormal(t)}function c(n,t){this.friction=.05,this.bufferVec3=l.create(2),this.setBounds(n,t)}function u(n,t,e){var r=t.length||arguments.length-1,o=n.length?n[0]:n,a=n.length?n[1]:n;i.call(this,r,2),this.setDistance(o,a),this.setIndices(t,e)}function h(n,t,e,r){var o=r.length||1;i.call(this,o,1,3),this.bufferVec3=l.create(1),this.setPlane(n,t,e),this.setIndices(r)}function v(n,t){var e=t.length||1;i.call(this,e,1),this.bufferVec3=l.create(1),this.setPosition(n),this.setIndices(t)}function d(n,t){t=t||{},this.vector=new Float32Array(3),t.type&&(this.type=t.type),null!=n&&this.set(n)}function f(n){d.call(this,n)}function p(n,t){t=t||{},d.apply(this,arguments),this.intensity=t.intensity||.05,this.setRadius(t.radius||0)}l.create=function(n){var t="number"==typeof(n=n||1);return new Float32Array(t?3*n:n)},l.set=function(n,t,e,r,i){var o=3*t,a=o+1,l=o+2;null==r&&(i=e[2],r=e[1],e=e[0]),n[o]=e,n[a]=r,n[l]=i},l.copy=function(n,t,e){var r=3*t,i=r+1,o=r+2;return e[0]=n[r],e[1]=n[i],e[2]=n[o],e},l.lengthSq=function(n,t){var e=3*t,r=e+1,i=e+2,o=n[e],a=n[r],l=n[i];return o*o+a*a+l*l},l.length=function(n,t){var e=3*t,r=e+1,i=e+2,o=n[e],a=n[r],l=n[i];return Math.sqrt(o*o+a*a+l*l)},l.distanceSq=function(n,t,e){var r=3*t,i=r+1,o=r+2,a=3*e,l=a+1,s=a+2,c=n[r]-n[a],u=n[i]-n[l],h=n[o]-n[s];return c*c+u*u+h*h},l.distance=function(n,t,e){var r=3*t,i=r+1,o=r+2,a=3*e,l=a+1,s=a+2,c=n[r]-n[a],u=n[i]-n[l],h=n[o]-n[s];return Math.sqrt(c*c+u*u+h*h)},l.normalize=function(n,t){var e=3*t,r=e+1,i=e+2,o=n[e],a=n[r],l=n[i],s=1/Math.sqrt(o*o+a*a+l*l);n[e]*=s,n[r]*=s,n[i]*=s},l.angle=function(n,t,e,r){var i=3*t,o=i+1,a=i+2,s=3*e,c=s+1,u=s+2,h=3*r,v=h+1,d=h+2,f=1/l.distance(n,e,t),p=1/l.distance(n,e,r),m=(n[i]-n[s])*f,g=(n[o]-n[c])*f,y=(n[a]-n[u])*f,x=(n[h]-n[s])*p,b=(n[v]-n[c])*p,w=(n[d]-n[u])*p,M=m*x+g*b+y*w;return Math.acos(M)},e(s,i),s.prototype._isGlobal=!0,s.prototype.setOrigin=function(n,t,e){l.set(this.bufferVec3,0,n,t,e)},s.prototype.setNormal=function(n,t,e){l.set(this.bufferVec3,1,n,t,e),l.normalize(this.bufferVec3,1)},s.prototype.applyConstraint=function(n,t,e){var r=this.friction,i=this.bufferVec3,o=n,a=o+1,l=o+2,s=t[o]-i[0],c=t[a]-i[1],u=t[l]-i[2],h=i[3],v=i[4],d=i[5],f=s*h+c*v+u*d;f>this.distance||(t[o]-=h*f,t[a]-=v*f,t[l]-=d*f,e[o]-=(e[o]-t[o])*r,e[a]-=(e[a]-t[a])*r,e[l]-=(e[l]-t[l])*r)},e(c,i),c.prototype._isGlobal=!0,c.prototype.setBounds=function(n,t){this.setMin(n),this.setMax(t)},c.prototype.setMin=function(n,t,e){l.set(this.bufferVec3,0,n,t,e)},c.prototype.setMax=function(n,t,e){l.set(this.bufferVec3,1,n,t,e)},c.prototype.applyConstraint=function(n,t,e){var i=this.friction,o=this.bufferVec3,a=n,l=a+1,s=a+2,c=r(o[0],o[3],t[a]),u=r(o[1],o[4],t[l]),h=r(o[2],o[5],t[s]),v=t[a]-c,d=t[l]-u,f=t[s]-h;t[a]=c,t[l]=u,t[s]=h,(v||d||f)&&(e[a]-=(e[a]-c)*i,e[l]-=(e[l]-u)*i,e[s]-=(e[s]-h)*i)},e(u,i),u.prototype.setDistance=function(n,t){this.setMin(n),this.setMax(null!=t?t:n)},u.prototype.setMin=function(n){this._min2=n*n},u.prototype._min2=null,u.prototype.setMax=function(n){this._max2=n*n},u.prototype._max2=null,u.prototype.applyConstraint=function(n,t,e){var r=this.indices,i=r[n],o=r[n+1],a=3*i,l=a+1,s=a+2,c=3*o,u=c+1,h=c+2,v=t[c]-t[a],d=t[u]-t[l],f=t[h]-t[s];v||d||f||(v=d=f=.1);var p=v*v+d*d+f*f,m=this._min2,g=this._max2;if(!(p<g&&p>m)){var y=p<m?m:g,x=y/(p+y),b=x-.5,w=x-.5;t[a]-=v*b,t[l]-=d*b,t[s]-=f*b,t[c]+=v*w,t[u]+=d*w,t[h]+=f*w}},e(h,i),h.prototype.setPlane=function(n,t,e){var r=this.indices;r[0]=n,r[1]=t,r[2]=e},h.prototype._calculateNormal=function(n,t){var e=this.bufferVec3,r=this.indices,i=r[0],o=r[1],a=r[2],l=3*i,s=l+1,c=l+2,u=3*o,h=u+1,v=u+2,d=3*a,f=d+1,p=d+2,m=t[l]-t[u],g=t[s]-t[h],y=t[c]-t[v],x=t[d]-t[u],b=t[f]-t[h],w=t[p]-t[v],M=g*w-y*b,_=y*x-m*w,E=m*b-g*x,S=M*M+_*_+E*E;if(!S)return t[l]+=.1,t[h]+=.1,t[d]-=.1,void(this._hasNormal=!1);var T=1/Math.sqrt(S);e[0]=M*T,e[1]=_*T,e[2]=E*T,this._hasNormal=!0},h.prototype._hasNormal=!1,h.prototype.applyConstraint=function(n,t,e){var r=this.bufferVec3,i=this.indices,o=i[1],a=i[n+3],l=3*o,s=l+1,c=l+2,u=3*a,h=u+1,v=u+2;if(0===n&&this._calculateNormal(n,t),this._hasNormal){var d=r[0],f=r[1],p=r[2],m=t[u]-t[l],g=t[h]-t[s],y=t[v]-t[c],x=m*d+g*f+y*p;t[u]-=d*x,t[h]-=f*x,t[v]-=p*x}},e(v,i),v.prototype.setPosition=function(n,t,e){l.set(this.bufferVec3,0,n,t,e)},v.prototype.applyConstraint=function(n,t,e){var r=this.bufferVec3,i=this.indices[n],o=3*i,a=o+1,l=o+2;t[o]=e[o]=r[0],t[a]=e[a]=r[1],t[l]=e[l]=r[2]},e(d,Object),d.ATTRACTOR=0,d.REPULSOR=1,d.ATTRACTOR_REPULSOR=2,d.prototype.type=d.ATTRACTOR,d.prototype.set=function(n,t,e){l.set(this.vector,0,n,t,e)},d.prototype.applyForce=function(n,t,e,r){},e(f,d),f.prototype.applyForce=function(n,t,e,r){var i=this.vector;t[n]+=i[0],t[n+1]+=i[1],t[n+2]+=i[2]};var m=d.ATTRACTOR,g=d.REPULSOR,y=d.ATTRACTOR_REPULSOR;function x(n,t){var e=n.indexOf(t);if(!(e<0))for(var r=n.length-1;r>=e;r--)n[r]===t&&n.splice(r,1)}function b(n,t){var e="number"==typeof n,r=e?3*n:n.length,i=r/3,o=e?r:n;this.positions=new Float32Array(o),this.positionsPrev=new Float32Array(o),this.accumulatedForces=new Float32Array(r),this.weights=new Float32Array(i),this.setWeights(1),this._iterations=t||1,this._count=i,this._globalConstraints=[],this._localConstraints=[],this._pinConstraints=[],this._forces=[]}function w(n,t,e,r,i,o){var a=t[n];t[n]+=a-e[n]+r[n]*i*o,e[n]=a}e(p,d),p.prototype.setRadius=function(n){this._radius2=n*n},p.prototype._radius2=null,p.prototype.applyForce=function(n,t,e,r){var i,o,a=this.vector,l=n+1,s=n+2,c=e[n]-a[0],u=e[l]-a[1],h=e[s]-a[2],v=c*c+u*u+h*h,d=v-this._radius2;switch(this.type){case m:i=v>0&&d>0;break;case g:i=v>0&&d<0;break;case y:i=c||u||h}i&&(o=d/v*this.intensity,t[n]-=c*o,t[l]-=u*o,t[s]-=h*o)},e(b,Object),b.prototype.setPosition=function(n,t,e,r){l.set(this.positions,n,t,e,r),l.set(this.positionsPrev,n,t,e,r)},b.prototype.getPosition=function(n,t){return l.copy(this.positions,n,t)},b.prototype.getDistance=function(n,t){return l.distance(this.positions,n,t)},b.prototype.getAngle=function(n,t,e){return l.angle(this.positions,n,t,e)},b.prototype.setWeight=function(n,t){this.weights[n]=t},b.prototype.setWeights=function(n){for(var t=this.weights,e=0,r=t.length;e<r;e++)t[e]=n},b.prototype.each=function(n,t){t=t||this;for(var e=0,r=this._count;e<r;e++)n.call(t,e,this)},b.prototype.perturb=function(n){for(var t,e=this.positions,r=this.positionsPrev,i=0,o=e.length;i<o;i++)t=Math.random()*n,e[i]+=t,r[i]+=t},b.prototype.integrate=function(n){for(var t,e,r=n*n,i=this.positions,o=this.positionsPrev,a=this.accumulatedForces,l=this.weights,s=0,c=this._count;s<c;s++)e=l[s],w(t=3*s,i,o,a,e,r),w(t+1,i,o,a,e,r),w(t+2,i,o,a,e,r)},b.prototype._getConstraintBuffer=function(n){return n._isGlobal?this._globalConstraints:this._localConstraints},b.prototype.addConstraint=function(n){this._getConstraintBuffer(n).push(n)},b.prototype.removeConstraint=function(n){x(this._getConstraintBuffer(n),n)},b.prototype.addPinConstraint=function(n){this._pinConstraints.push(n)},b.prototype.removePinConstraint=function(n){x(this._pinConstraints,n)},b.prototype.satisfyConstraints=function(){for(var n=this._iterations,t=this._globalConstraints,e=this._localConstraints,r=this._pinConstraints,i=this._count,o=0;o<n;o++)this.satisfyConstraintGroup(t,i,3),this.satisfyConstraintGroup(e),r.length&&this.satisfyConstraintGroup(r)},b.prototype.satisfyConstraintGroup=function(n,t,e){for(var r,i=this.positions,o=this.positionsPrev,a=!t,l=0,s=n.length;l<s;l++){r=n[l],a&&(t=r._count,e=r._itemSize);for(var c=0;c<t;c++)r.applyConstraint(c*e,i,o)}},b.prototype.addForce=function(n){this._forces.push(n)},b.prototype.removeForce=function(n){x(this._forces,n)},b.prototype.accumulateForces=function(n){for(var t,e=this._forces,r=this.accumulatedForces,i=this.positions,o=this.positionsPrev,a=0,l=this._count;a<l;a++){r[t=3*a]=r[t+1]=r[t+2]=0;for(var s=0,c=e.length;s<c;s++)e[s].applyForce(t,r,i,o)}},b.prototype.tick=function(n){this.accumulateForces(n),this.integrate(n),this.satisfyConstraints()},n.VERSION="0.3.3",n.AngleConstraint=o,n.AxisConstraint=a,n.BoundingPlaneConstraint=s,n.BoxConstraint=c,n.Constraint=i,n.DistanceConstraint=u,n.PlaneConstraint=h,n.PointConstraint=v,n.DirectionalForce=f,n.Force=d,n.PointForce=p,n.Vec3=l,n.ParticleSystem=b,n.ctor=t,n.inherit=e,Object.defineProperty(n,"__esModule",{value:!0})}(t)},function(n,t){n.exports=function(n,t,e){return n*(1-e)+t*e}},function(n,t,e){var r;!function(){"use strict";var i=.5*(Math.sqrt(3)-1),o=(3-Math.sqrt(3))/6,a=1/6,l=(Math.sqrt(5)-1)/4,s=(5-Math.sqrt(5))/20;function c(n){var t;t="function"==typeof n?n:n?function(){var n=0,t=0,e=0,r=1,i=function(){var n=4022871197;return function(t){t=t.toString();for(var e=0;e<t.length;e++){var r=.02519603282416938*(n+=t.charCodeAt(e));r-=n=r>>>0,n=(r*=n)>>>0,n+=4294967296*(r-=n)}return 2.3283064365386963e-10*(n>>>0)}}();n=i(" "),t=i(" "),e=i(" ");for(var o=0;o<arguments.length;o++)(n-=i(arguments[o]))<0&&(n+=1),(t-=i(arguments[o]))<0&&(t+=1),(e-=i(arguments[o]))<0&&(e+=1);return i=null,function(){var i=2091639*n+2.3283064365386963e-10*r;return n=t,t=e,e=i-(r=0|i)}}(n):Math.random,this.p=u(t),this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);for(var e=0;e<512;e++)this.perm[e]=this.p[255&e],this.permMod12[e]=this.perm[e]%12}function u(n){var t,e=new Uint8Array(256);for(t=0;t<256;t++)e[t]=t;for(t=0;t<255;t++){var r=t+~~(n()*(256-t)),i=e[t];e[t]=e[r],e[r]=i}return e}c.prototype={grad3:new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]),grad4:new Float32Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]),noise2D:function(n,t){var e,r,a=this.permMod12,l=this.perm,s=this.grad3,c=0,u=0,h=0,v=(n+t)*i,d=Math.floor(n+v),f=Math.floor(t+v),p=(d+f)*o,m=n-(d-p),g=t-(f-p);m>g?(e=1,r=0):(e=0,r=1);var y=m-e+o,x=g-r+o,b=m-1+2*o,w=g-1+2*o,M=255&d,_=255&f,E=.5-m*m-g*g;if(E>=0){var S=3*a[M+l[_]];c=(E*=E)*E*(s[S]*m+s[S+1]*g)}var T=.5-y*y-x*x;if(T>=0){var A=3*a[M+e+l[_+r]];u=(T*=T)*T*(s[A]*y+s[A+1]*x)}var L=.5-b*b-w*w;if(L>=0){var P=3*a[M+1+l[_+1]];h=(L*=L)*L*(s[P]*b+s[P+1]*w)}return 70*(c+u+h)},noise3D:function(n,t,e){var r,i,o,l,s,c,u,h,v,d,f=this.permMod12,p=this.perm,m=this.grad3,g=(n+t+e)*(1/3),y=Math.floor(n+g),x=Math.floor(t+g),b=Math.floor(e+g),w=(y+x+b)*a,M=n-(y-w),_=t-(x-w),E=e-(b-w);M>=_?_>=E?(s=1,c=0,u=0,h=1,v=1,d=0):M>=E?(s=1,c=0,u=0,h=1,v=0,d=1):(s=0,c=0,u=1,h=1,v=0,d=1):_<E?(s=0,c=0,u=1,h=0,v=1,d=1):M<E?(s=0,c=1,u=0,h=0,v=1,d=1):(s=0,c=1,u=0,h=1,v=1,d=0);var S=M-s+a,T=_-c+a,A=E-u+a,L=M-h+2*a,P=_-v+2*a,C=E-d+2*a,R=M-1+.5,O=_-1+.5,D=E-1+.5,U=255&y,N=255&x,I=255&b,B=.6-M*M-_*_-E*E;if(B<0)r=0;else{var F=3*f[U+p[N+p[I]]];r=(B*=B)*B*(m[F]*M+m[F+1]*_+m[F+2]*E)}var z=.6-S*S-T*T-A*A;if(z<0)i=0;else{var G=3*f[U+s+p[N+c+p[I+u]]];i=(z*=z)*z*(m[G]*S+m[G+1]*T+m[G+2]*A)}var k=.6-L*L-P*P-C*C;if(k<0)o=0;else{var j=3*f[U+h+p[N+v+p[I+d]]];o=(k*=k)*k*(m[j]*L+m[j+1]*P+m[j+2]*C)}var H=.6-R*R-O*O-D*D;if(H<0)l=0;else{var V=3*f[U+1+p[N+1+p[I+1]]];l=(H*=H)*H*(m[V]*R+m[V+1]*O+m[V+2]*D)}return 32*(r+i+o+l)},noise4D:function(n,t,e,r){var i,o,a,c,u,h,v,d,f,p,m,g,y,x,b,w,M,_=this.perm,E=this.grad4,S=(n+t+e+r)*l,T=Math.floor(n+S),A=Math.floor(t+S),L=Math.floor(e+S),P=Math.floor(r+S),C=(T+A+L+P)*s,R=n-(T-C),O=t-(A-C),D=e-(L-C),U=r-(P-C),N=0,I=0,B=0,F=0;R>O?N++:I++,R>D?N++:B++,R>U?N++:F++,O>D?I++:B++,O>U?I++:F++,D>U?B++:F++;var z=R-(h=N>=3?1:0)+s,G=O-(v=I>=3?1:0)+s,k=D-(d=B>=3?1:0)+s,j=U-(f=F>=3?1:0)+s,H=R-(p=N>=2?1:0)+2*s,V=O-(m=I>=2?1:0)+2*s,W=D-(g=B>=2?1:0)+2*s,X=U-(y=F>=2?1:0)+2*s,q=R-(x=N>=1?1:0)+3*s,Y=O-(b=I>=1?1:0)+3*s,Z=D-(w=B>=1?1:0)+3*s,J=U-(M=F>=1?1:0)+3*s,K=R-1+4*s,Q=O-1+4*s,$=D-1+4*s,nn=U-1+4*s,tn=255&T,en=255&A,rn=255&L,on=255&P,an=.6-R*R-O*O-D*D-U*U;if(an<0)i=0;else{var ln=_[tn+_[en+_[rn+_[on]]]]%32*4;i=(an*=an)*an*(E[ln]*R+E[ln+1]*O+E[ln+2]*D+E[ln+3]*U)}var sn=.6-z*z-G*G-k*k-j*j;if(sn<0)o=0;else{var cn=_[tn+h+_[en+v+_[rn+d+_[on+f]]]]%32*4;o=(sn*=sn)*sn*(E[cn]*z+E[cn+1]*G+E[cn+2]*k+E[cn+3]*j)}var un=.6-H*H-V*V-W*W-X*X;if(un<0)a=0;else{var hn=_[tn+p+_[en+m+_[rn+g+_[on+y]]]]%32*4;a=(un*=un)*un*(E[hn]*H+E[hn+1]*V+E[hn+2]*W+E[hn+3]*X)}var vn=.6-q*q-Y*Y-Z*Z-J*J;if(vn<0)c=0;else{var dn=_[tn+x+_[en+b+_[rn+w+_[on+M]]]]%32*4;c=(vn*=vn)*vn*(E[dn]*q+E[dn+1]*Y+E[dn+2]*Z+E[dn+3]*J)}var fn=.6-K*K-Q*Q-$*$-nn*nn;if(fn<0)u=0;else{var pn=_[tn+1+_[en+1+_[rn+1+_[on+1]]]]%32*4;u=(fn*=fn)*fn*(E[pn]*K+E[pn+1]*Q+E[pn+2]*$+E[pn+3]*nn)}return 27*(i+o+a+c+u)}},c._buildPermutationTable=u,void 0===(r=function(){return c}.call(t,e,t,n))||(n.exports=r),t.SimplexNoise=c,n.exports=c}()},function(n,t,e){"use strict";e.r(t),function(n,r){e.d(t,"Component",function(){return J}),e.d(t,"MeshComponent",function(){return an}),e.d(t,"LightComponent",function(){return ln}),e.d(t,"CameraComponent",function(){return sn}),e.d(t,"App",function(){return Mt}),e.d(t,"Loop",function(){return _t}),e.d(t,"ModuleManager",function(){return Z}),e.d(t,"AmbientLight",function(){return Et}),e.d(t,"DirectionalLight",function(){return St}),e.d(t,"HemisphereLight",function(){return Tt}),e.d(t,"PointLight",function(){return At}),e.d(t,"SpotLight",function(){return Lt}),e.d(t,"AreaLight",function(){return Pt}),e.d(t,"CubeCamera",function(){return Ct}),e.d(t,"OrthographicCamera",function(){return Rt}),e.d(t,"PerspectiveCamera",function(){return Ot}),e.d(t,"Box",function(){return Dt}),e.d(t,"Circle",function(){return Ut}),e.d(t,"Cone",function(){return Nt}),e.d(t,"Cylinder",function(){return It}),e.d(t,"Dodecahedron",function(){return Bt}),e.d(t,"Extrude",function(){return Ft}),e.d(t,"Icosahedron",function(){return zt}),e.d(t,"Lathe",function(){return Gt}),e.d(t,"Line",function(){return kt}),e.d(t,"Importer",function(){return jt}),e.d(t,"Octahedron",function(){return Ht}),e.d(t,"Parametric",function(){return Vt}),e.d(t,"Plane",function(){return Wt}),e.d(t,"Polyhedron",function(){return Yt}),e.d(t,"Ring",function(){return Zt}),e.d(t,"Shape",function(){return Jt}),e.d(t,"Sphere",function(){return Kt}),e.d(t,"Tetrahedron",function(){return Qt}),e.d(t,"Text",function(){return $t}),e.d(t,"Torus",function(){return ne}),e.d(t,"Torusknot",function(){return te}),e.d(t,"Tube",function(){return ee}),e.d(t,"Group",function(){return re}),e.d(t,"extend",function(){return o}),e.d(t,"instruct",function(){return a}),e.d(t,"transformData",function(){return l}),e.d(t,"toArray",function(){return s}),e.d(t,"ElementModule",function(){return ie}),e.d(t,"RenderingModule",function(){return oe}),e.d(t,"SceneModule",function(){return ae}),e.d(t,"ResizeModule",function(){return le}),e.d(t,"PostProcessorModule",function(){return Rr}),e.d(t,"VirtualMouseModule",function(){return Dr}),e.d(t,"EventsPatchModule",function(){return Or}),e.d(t,"ControlsModule",function(){return Ur}),e.d(t,"FogModule",function(){return Nr}),e.d(t,"StateModule",function(){return Br}),e.d(t,"OrbitControlsModule",function(){return zr}),e.d(t,"DynamicGeometryModule",function(){return Gr}),e.d(t,"TextureModule",function(){return jr}),e.d(t,"AnimationModule",function(){return Hr}),e.d(t,"DefineModule",function(){return Vr}),e.d(t,"Model",function(){return Wr}),e.d(t,"CameraModule",function(){return Xr});var i=e(0),o=function n(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];var o=!0,a=!1,l=void 0;try{for(var s,c=r[Symbol.iterator]();!(o=(s=c.next()).done);o=!0){var u=s.value;if(u){var h=!0,v=!1,d=void 0;try{for(var f,p=Object.getOwnPropertyNames(u)[Symbol.iterator]();!(h=(f=p.next()).done);h=!0){var m=f.value;void 0!==t[m]&&u[m]&&"[object Object]"===t[m].toString()&&"[object Object]"===u[m].toString()?t[m].constructor===Object&&n(t[m],u[m]):t[m]=void 0===t[m]?u[m]:t[m],void 0===t[m]&&Array.isArray(u[m])?t[m]=u[m].slice():void 0===t[m]&&Array.isArray(u[m])&&(t[m]=u[m])}}catch(n){v=!0,d=n}finally{try{!h&&p.return&&p.return()}finally{if(v)throw d}}}}}catch(n){a=!0,l=n}finally{try{!o&&c.return&&c.return()}finally{if(a)throw l}}return t},a=function(n,t){for(var e={},r=0,i=t.length;r<i;r++){e[t[r]]=n[r]}return e},l=function n(t,e){for(var r in e)Array.isArray(t[r])?t[r]=a(t[r],e[r]):t[r]instanceof Object&&!Array.isArray(e[r])&&(t[r]=n(t[r],e[r]));return t},s=function(n,t){for(var e=[],r=0,i=t.length;r<i;r++){var o=t[r];e[r]=n[o]}return e},c=function(n){var t={},e=[];(n=n||this).on=function(n,e,r){(t[n]=t[n]||[]).push([e,r])},n.off=function(n,r){n||(t={});for(var i=t[n]||e,o=i.length=r?i.length:0;o--;)r==i[o][0]&&i.splice(o,1)},n.emit=function(n){for(var r,i=t[n]||e,o=i.length>0?i.slice(0,i.length):i,a=0;r=o[a++];)r[0].apply(r[1],e.slice.call(arguments,1))}},u=function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")},h=function(){function n(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}return function(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}}(),v=Object.assign||function(n){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r])}return n},d=function n(t,e,r){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);return null===o?void 0:n(o,e,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0},f=function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(n,t):n.__proto__=t)},p=function(n,t){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?n:t},m=function(){return function(n,t){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return function(n,t){var e=[],r=!0,i=!1,o=void 0;try{for(var a,l=n[Symbol.iterator]();!(r=(a=l.next()).done)&&(e.push(a.value),!t||e.length!==t);r=!0);}catch(n){i=!0,o=n}finally{try{!r&&l.return&&l.return()}finally{if(i)throw o}}return e}(n,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),g=function(n){function t(n,e,r){u(this,t);var i=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"@"+n+": "+e)),o=i.stack.split("\n");return o.splice(1,2),i.stack=o.join("\n"),console&&console.error("Component:",r),i.name="CompositionError",i}return f(t,n),t}(Error),y=function(n){function t(n,e,r){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];u(this,t);var o=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"@"+n+": "+e)),a=o.stack.split("\n");return a.splice(1,2),o.stack=a.join("\n"),console&&console.error("Active module:",r),console&&i&&console.error("Dependency published by module:",i),o.name="DependencyError",o}return f(t,n),t}(Error),x=function(n){function t(n,e,r){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];u(this,t);var o=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"@"+n+": "+e)),a=o.stack.split("\n");return a.splice(1,2),o.stack=a.join("\n"),console&&console.error("Component:",r),console&&i&&console.error("Active module:",i),o.name="ManagerError",o}return f(t,n),t}(Error),b=function(){throw new Error("WhitestormJS Framework requires Three.js r84. https://threejs.org/")};try{i.REVISION||b()}catch(n){b()}var w=function(n){function t(){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return f(t,c),h(t,[{key:"integrateModules",value:function(n){if(this.modules||n){if(n&&n.modules&&(this.modules=n.modules.slice(0)),this.modules)for(var t=0,e=this.modules.length;t<e;t++)this.applyModule(this.modules[t],!1);n&&this.applyBridge({onCopy:n})}}},{key:"applyBridge",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.modules;if(!t)return n;for(var e=0,r=t.length;e<r;e++)for(var i in n)if(n[i]){var o=t[e];o&&o.bridge&&o.bridge[i]&&(n[i]=o.bridge[i].apply(this,[n[i],o]))}return n}},{key:"applyCommand",value:function(n){var t=this,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(n,e){return n.apply(t,[e])},r=this.modules;if(r)for(var i=0,o=r.length;i<o;i++){var a=r[i];n in a&&e(a[n],a)}}},{key:"applyModule",value:function(n){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(n){if(t&&this.modules?this.modules.push(n):t&&(this.modules=[n]),this.manager&&this.manager.active(n),n.manager&&this.manager)n.manager(this.manager);else if(n.manager)throw new x("Component","Module requires ModuleManager that is turned off for this component",this,n);return n.integrate&&n.integrate.bind(this)(n),n}}},{key:"disposeModules",value:function(){for(;this.modules.length;)this.disposeModule(this.modules[0])}},{key:"disposeModule",value:function(n){if(n)return this.modules.splice(this.modules.indexOf(n),1),n.dispose&&n.dispose.bind(this)(n),n}},{key:"module",value:function(n){return this.applyModule(n),this}}]),t}(),M="object"==typeof n&&n&&n.Object===Object&&n,_="object"==typeof self&&self&&self.Object===Object&&self,E=(M||_||Function("return this")()).Symbol,S=Object.prototype,T=S.hasOwnProperty,A=S.toString,L=E?E.toStringTag:void 0;var P=Object.prototype.toString;var C="[object Null]",R="[object Undefined]",O=E?E.toStringTag:void 0;function D(n){return null==n?void 0===n?R:C:O&&O in Object(n)?function(n){var t=T.call(n,L),e=n[L];try{n[L]=void 0;var r=!0}catch(n){}var i=A.call(n);return r&&(t?n[L]=e:delete n[L]),i}(n):function(n){return P.call(n)}(n)}var U=function(n,t){return function(e){return n(t(e))}}(Object.getPrototypeOf,Object);var N="[object Object]",I=Function.prototype,B=Object.prototype,F=I.toString,z=B.hasOwnProperty,G=F.call(Object);var k=function(n){var t,e=n.Symbol;return"function"==typeof e?e.observable?t=e.observable:(t=e("observable"),e.observable=t):t="@@observable",t}("undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:r),j={INIT:"@@redux/INIT"};function H(n,t,e){var r;if("function"==typeof t&&void 0===e&&(e=t,t=void 0),void 0!==e){if("function"!=typeof e)throw new Error("Expected the enhancer to be a function.");return e(H)(n,t)}if("function"!=typeof n)throw new Error("Expected the reducer to be a function.");var i=n,o=t,a=[],l=a,s=!1;function c(){l===a&&(l=a.slice())}function u(){return o}function h(n){if("function"!=typeof n)throw new Error("Expected listener to be a function.");var t=!0;return c(),l.push(n),function(){if(t){t=!1,c();var e=l.indexOf(n);l.splice(e,1)}}}function v(n){if(!function(n){if(!function(n){return null!=n&&"object"==typeof n}(n)||D(n)!=N)return!1;var t=U(n);if(null===t)return!0;var e=z.call(t,"constructor")&&t.constructor;return"function"==typeof e&&e instanceof e&&F.call(e)==G}(n))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===n.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(s)throw new Error("Reducers may not dispatch actions.");try{s=!0,o=i(o,n)}finally{s=!1}for(var t=a=l,e=0;e<t.length;e++){(0,t[e])()}return n}return v({type:j.INIT}),(r={dispatch:v,subscribe:h,getState:u,replaceReducer:function(n){if("function"!=typeof n)throw new Error("Expected the nextReducer to be a function.");i=n,v({type:j.INIT})}})[k]=function(){var n,t=h;return(n={subscribe:function(n){if("object"!=typeof n)throw new TypeError("Expected the observer to be an object.");function e(){n.next&&n.next(u())}return e(),{unsubscribe:t(e)}}})[k]=function(){return this},n},r}var V,W,X,q,Y,Z=function(){function n(t){u(this,n),this.handler=t,this.currentModule=null,this.store=H(function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[{},""],t=arguments[1];return n[0][t.key]=t.data,n[1]=t.key,n}),this.modules={}}return h(n,[{key:"active",value:function(n){this.currentModule=n}},{key:"reset",value:function(){this.currentModule=null}},{key:"define",value:function(n){this.modules[n]=this.currentModule}},{key:"use",value:function(n){return this.modules[n]}},{key:"set",value:function(n,t){this.store.dispatch({type:"ADD",key:n,data:t})}},{key:"get",value:function(n){if(!this.store.getState()[0][n])throw new y("ModuleManager","Module requires '"+n+"' dependency",this.currentModule);return this.store.getState()[0][n]}},{key:"has",value:function(n){return Boolean(this.store.getState()[0][n])}},{key:"update",value:function(){var n=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.store.subscribe(function(){var e=n.store.getState(),r=m(e,2),i=r[0],o=r[1],a=t[o];a&&a(i[o])})}},{key:"add",value:function(){return console.warn(".add() method is deprecated. Use .set() instead"),this.set.apply(this,arguments)}},{key:"require",value:function(n,t){void 0===this.use(n)&&this.handler.applyModule(t())}}]),n}(),J=(W=V=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.defaults,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.instructions;u(this,t);var i=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return i._wait=[],i.modules=[],i.children=[],i.params=o(l(n,r),e),i.params.manager&&(i.manager=new Z(i)),i.modules=i.params.modules,i.integrateModules(),i}return f(t,w),h(t,[{key:"wait",value:function(n){return n&&this._wait.push(n),Promise.all(this._wait)}},{key:"defer",value:function(n){var t=this;this.isDeffered?this.wait().then(function(){return n(t)}):n(this)}},{key:"updateParams",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.params=o(n,this.params),this.params}},{key:"clone",value:function(){return new this.constructor(this.params).copy(this)}},{key:"copy",value:function(n,t){return this.params=v({},n.params),n.native&&(this.native=n.native.clone(n.params)),t&&t(),this.integrateModules(n),this}},{key:"add",value:function(n){var t=this;return n.parent=this,new Promise(function(e,r){t.defer(function(){n.defer(function(){var i=n.native;i||r();var o=t.applyBridge({onAdd:n}).onAdd,a=function(){t.native.add(i),t.children.push(n),e(n)};o instanceof Promise?o.then(a):a()})})})}},{key:"remove",value:function(n){n.parent=null,this.native.remove(n.native)}},{key:"addTo",value:function(n){return n.add(this)}},{key:"get",value:function(n){return this.manager.get(n)}},{key:"use",value:function(n){return this.manager.use(n)}},{key:"isDeffered",get:function(){return this._wait.length>0}},{key:"manager",get:function(){if(this._manager)return this._manager;throw new x("Component","ModuleManager is not used in this component. 'manager' parameter should be set as 'true'",this)},set:function(n){this._manager=n}},{key:"native",get:function(){return this._native},set:function(n){return this._native=n,this._native.component=this,this._native}}]),t}(),V.defaults={modules:null,manager:!0},V.instructions={},W);function K(){for(var n=arguments.length,t=Array(n),e=0;e<n;e++)t[e]=arguments[e];return function(n){for(var e=0;e<t.length;e++)for(var r=t[e],i=0;i<r.map.length;i++){var o=r.map[i];Object.defineProperty(n.prototype,o,{get:r.getter(o),set:r.setter(o),configurable:r.configurable,enumerable:r.enumerable})}}}function Q(){for(var n=arguments.length,t=Array(n),e=0;e<n;e++)t[e]=arguments[e];return{map:t,getter:function(n){return function(){return this.native[n]}},setter:function(n){return function(t){this.native[n].copy(t)}},configurable:!0,enumerable:!0}}var $,nn,tn,en,rn,on,an=K(Q("position","rotation","quaternion","scale"),function(){for(var n=arguments.length,t=Array(n),e=0;e<n;e++)t[e]=arguments[e];return{map:t,getter:function(n){return function(){return this.native[n]}},setter:function(n){return function(t){this.native[n]=t}},configurable:!0,enumerable:!0}}("material","geometry"))((Y=q=function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.defaults,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.instructions;u(this,t);var i=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,e,r));if(i.params.build){var o=i.build(i.params);if(!o)throw new g("MeshComponent",".build() method should return a THREE.Object3D or a Promise resolved with THREE.Object3D.",i);o instanceof Promise?(i.wait(o),i.wait(new Promise(function(n){o.then(function(t){i.native=t,i.wrap().then(n)})}))):(i.native=o,i.wait(i.wrap()))}return i.applyCommand("postIntegrate"),i}return f(t,J),h(t,null,[{key:"custom",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Mesh;return function(r){function i(){return u(this,i),p(this,(i.__proto__||Object.getPrototypeOf(i)).apply(this,arguments))}return f(i,t),h(i,[{key:"build",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,r=this.applyBridge({geometry:n,material:t.material}),i=r.geometry,o=r.material;return this.applyBridge({mesh:new e(i,o)}).mesh}}]),i}()}},{key:"create",value:function(n,e,r){return new(t.custom(n,r))(e)}},{key:"from",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.build=!1;var r=new t(e);return r.native=n,r.wrap(),r}}]),h(t,[{key:"build",value:function(){throw new g("MeshComponent","Instance should have it's own .build().",this)}},{key:"wrap",value:function(){var n=this;return new Promise(function(t){var e=n.params,r=e.position,i=e.rotation,o=e.scale,a=e.shadow;n.position.set(r.x,r.y,r.z),n.rotation.set(i.x,i.y,i.z),n.scale.set(o.x,o.y,o.z),n.native.castShadow=a.cast,n.native.receiveShadow=a.receive,n.applyBridge({onWrap:1}),t(n)})}},{key:"copy",value:function(n){var e=this;return d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"copy",this).call(this,n,function(){e.position.copy(n.position),e.rotation.copy(n.rotation),e.quaternion.copy(n.quaternion)})}},{key:"clone",value:function(n,t){var e=new this.constructor({build:!1}).copy(this);return n&&(e.geometry=e.geometry.clone()),t&&(e.material=e.material.clone()),e}}]),t}(),q.defaults=v({},J.defaults,{build:!0,geometry:{},material:!1,shadow:{cast:!0,receive:!0},position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}),q.instructions={position:["x","y","z"],rotation:["x","y","z"],scale:["x","y","z"]},X=Y))||X,ln=K(Q("position","rotation","quaternion","target"))((tn=nn=function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.defaults,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.instructions;u(this,t);var i=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,e,r));if(i.params.build){var o=i.build(i.params);if(!o)throw new g("LightComponent",".build() method should return a THREE.Object3D or a Promise resolved with THREE.Object3D.",i);o instanceof Promise?o.then(function(n){i.native=n}):i.native=o,i.wait(i.wrap())}return i.applyCommand("postIntegrate"),i}return f(t,J),h(t,null,[{key:"from",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e.build=!1;var i=new t(e);return i.native=n,i.wrap(),r&&i.wrapShadow(),i}}]),h(t,[{key:"build",value:function(){throw new g("MeshComponent","Instance should have it's own .build().",this)}},{key:"wrap",value:function(){var n=this;return new Promise(function(t){n.defer(function(){var e=n.params,r=e.position,i=e.rotation;n.position.set(r.x,r.y,r.z),n.rotation.set(i.x,i.y,i.z),n.applyBridge({onWrap:1}),t(n)})})}},{key:"wrapShadow",value:function(){var n=this.native,t=this.params.shadow;n.castShadow=t.cast,n.shadow.mapSize.width=t.mapSize.width,n.shadow.mapSize.height=t.mapSize.height,n.shadow.bias=t.bias,n.shadow.radius=t.radius;var e=n.shadow.camera,r=t.camera;e.near=r.near,e.far=r.far,e.fov=r.fov,e.left=r.left,e.right=r.right,e.top=r.top,e.bottom=r.bottom}},{key:"copy",value:function(n){var e=this;return d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"copy",this).call(this,n,function(){e.target&&e.target.copy(n.target()),e.position.copy(n.position),e.rotation.copy(n.rotation),e.quaternion.copy(n.quaternion)})}},{key:"clone",value:function(){return new this.constructor({build:!1}).copy(this)}}]),t}(),nn.defaults=v({},J.defaults,{build:!0,shadow:{cast:!0,bias:0,radius:1,mapSize:{width:1024,height:1024},camera:{near:!0,far:400,fov:90,top:200,bottom:-200,left:-200,right:200}},position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0}}),nn.instructions={position:["x","y","z"],rotation:["x","y","z"]},$=tn))||$,sn=K(Q("position","rotation","quaternion","target"))((on=rn=function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.defaults,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.instructions;u(this,t);var i=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,e,r));if(i.params.build){var o=i.build(i.params);if(!o)throw new g("CameraComponent",".build() method should return a THREE.Object3D or a Promise resolved with THREE.Object3D.",i);o instanceof Promise?o.then(function(n){i.native=n}):i.native=o,i.wait(i.wrap())}return i.applyCommand("postIntegrate"),i}return f(t,J),h(t,null,[{key:"from",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.build=!1;var r=new t(e);return r.native=n,r.wrap(),r}}]),h(t,[{key:"build",value:function(){throw new g("CameraComponent","Instance should have it's own .build().",this)}},{key:"wrap",value:function(){var n=this;return new Promise(function(t){n.defer(function(){n.position.set(n.params.position.x,n.params.position.y,n.params.position.z),n.rotation.set(n.params.rotation.x,n.params.rotation.y,n.params.rotation.z),n.applyBridge({onWrap:1}),t(n)})})}},{key:"copy",value:function(n){var e=this;return d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"copy",this).call(this,n,function(){e.target&&e.target.copy(n.target()),e.position.copy(n.position),e.rotation.copy(n.rotation),e.quaternion.copy(n.quaternion)})}},{key:"clone",value:function(){return new this.constructor({build:!1}).copy(this)}}]),t}(),rn.defaults=v({},J.defaults,{build:!0,position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0}}),rn.instructions={position:["x","y","z"],rotation:["x","y","z"],scale:["x","y","z"]},en=on))||en;const cn="2.1.9";var un,hn,vn,dn,fn,pn,mn,gn,yn,xn,bn,wn,Mn,_n,En,Sn,Tn,An,Ln,Pn,Cn,Rn,On,Dn,Un,Nn,In,Bn,Fn,zn,Gn,kn,jn,Hn,Vn,Wn,Xn,qn,Yn,Zn,Jn,Kn,Qn,$n,nt,tt,et,rt,it,ot,at,lt,st,ct,ut,ht,vt,dt,ft,pt,mt,gt,yt,xt,bt,wt={window:"undefined"==typeof window?n:window},Mt=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];u(this,t),console.log("WHS.App "+cn);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.enabled=!0,e.loops=[],e.manager=new Z(e),e.modules=n,e.integrateModules(),e}return f(t,w),h(t,[{key:"start",value:function(){var n=wt.window.requestAnimationFrame||wt.window.webkitRequestAnimationFrame||wt.window.mozRequestAnimationFrame||function(n){wt.window.setTimeout(n,1e3/60)},t=this.loops,e=this.enabled;this.enabled=!0,function r(){if(n(r),e)for(var i=0,o=t.length;i<o;i++){var a=t[i];a.enabled&&a.execute(a.clock)}}()}},{key:"stop",value:function(){this.enabled=!1}},{key:"addLoop",value:function(n){var t=this;return new Promise(function(e){t.loops.push(n),e(n)})}},{key:"removeLoop",value:function(n){var t=this;return new Promise(function(e){var r=t.loops.indexOf(n);-1!==r&&t.loops.splice(r,1),e(n)})}},{key:"get",value:function(n){return this.manager.get(n)}},{key:"use",value:function(n){return this.manager.use(n)}}]),t}(),_t=function(){function n(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];u(this,n),this.func=t,this.clock=e?new i.Clock:null,this.enabled=!1}return h(n,[{key:"start",value:function(n){this.enabled||(n&&n.addLoop(this),this.clock&&this.clock.start(),this.enabled=!0)}},{key:"stop",value:function(n){this.enabled&&(this.clock&&this.clock.stop(),this.enabled=!1,n&&n.removeLoop(this))}},{key:"execute",value:function(){return this.func(this.clock)}}]),n}(),Et=(hn=un=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults))}return f(t,ln),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new i.AmbientLight(n.color,n.intensity)}).light}}]),t}(),un.defaults=v({},ln.defaults,{color:16777215,intensity:1}),hn),St=(dn=vn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults));return e.wrapShadow(),e}return f(t,ln),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new i.DirectionalLight(n.color,n.intensity)}).light}}]),t}(),vn.defaults=v({},ln.defaults,{color:16777215,intensity:1}),dn),Tt=(pn=fn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults))}return f(t,ln),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new i.HemisphereLight(n.skyColor,n.groundColor,n.intensity)}).light}}]),t}(),fn.defaults=v({},ln.defaults,{skyColor:16777215,groundColor:16777215,intensity:1}),pn),At=(gn=mn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults));return e.wrapShadow(),e}return f(t,ln),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new i.PointLight(n.color,n.intensity,n.distance,n.decay)}).light}}]),t}(),mn.defaults=v({},ln.defaults,{color:16777215,intensity:1,distance:100,decay:1}),gn),Lt=(xn=yn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults));return e.wrapShadow(),e}return f(t,ln),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new i.SpotLight(n.color,n.intensity,n.distance,n.angle,n.exponent,n.decay)}).light}}]),t}(),yn.defaults=v({},ln.defaults,{color:16777215,intensity:1,distance:100,angle:Math.PI/3,exponent:0,decay:1}),xn),Pt=(wn=bn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults))}return f(t,ln),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new i.RectAreaLight(n.color,n.intensity,n.width,n.height)}).light}}]),t}(),bn.defaults=v({},ln.defaults,{color:16777215,intensity:1,width:10,height:10}),wn),Ct=(_n=Mn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults))}return f(t,sn),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({camera:new i.CubeCamera(n.near,n.far,n.cubeResolution)}).camera}}]),t}(),Mn.defaults=v({},sn.defaults,{near:1,far:1e3,cubeResolution:128}),_n),Rt=(Sn=En=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults))}return f(t,sn),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({camera:new i.OrthographicCamera(n.left,n.right,n.top,n.bottom,n.near,n.far)}).camera}}]),t}(),En.defaults=v({},sn.defaults,{near:1,far:1e3,left:wt.window.innerWidth/-2,right:wt.window.innerWidth/2,top:wt.window.innerHeight/2,bottom:wt.window.innerHeight/-2}),Sn),Ot=(An=Tn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults))}return f(t,sn),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({camera:new i.PerspectiveCamera(n.fov,n.aspect,n.near,n.far)}).camera}}]),t}(),Tn.defaults=v({},sn.defaults,{near:1,far:1e3,fov:75,aspect:wt.window.innerWidth/wt.window.innerHeight}),An),Dt=(Pn=Ln=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions))}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.BoxBufferGeometry:i.BoxGeometry)(n.geometry.width,n.geometry.height,n.geometry.depth,n.geometry.widthSegments,n.geometry.heightSegments,n.geometry.depthSegments)}}]),t}(),Ln.defaults=v({},an.defaults,{geometry:{width:1,height:1,depth:1,widthSegments:1,heightSegments:1,depthSegments:1}}),Ln.instructions=v({},an.instructions,{geometry:["width","height","depth","widthSegments","heightSegments","depthSegements"]}),Pn),Ut=(Rn=Cn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions))}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.CircleBufferGeometry:i.CircleGeometry)(n.geometry.radius,n.geometry.segments,n.geometry.thetaStart,n.geometry.thetaLength)}}]),t}(),Cn.defaults=v({},an.defaults,{geometry:{radius:50,segments:8,thetaStart:0,thetaLength:2*Math.PI}}),Cn.instructions=v({},an.instructions,{geometry:["radius","segments","thetaStart","thetaLength"]}),Rn),Nt=(Dn=On=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.ConeBufferGeometry:i.ConeGeometry)(n.geometry.radius,n.geometry.height,n.geometry.radiusSegments,n.geometry.heightSegments,n.geometry.openEnded,n.geometry.thetaStart,n.geometry.thetaLength)}}]),t}(),On.defaults=v({},an.defaults,{geometry:{radius:20,height:100,radiusSegments:32,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:2*Math.PI}}),On.instructions=v({},an.instructions,{geometry:["radius","height","radiusSegments","heightSegments","openEnded","thetaStart","thetaLength"]}),Dn),It=(Nn=Un=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.CylinderBufferGeometry:i.CylinderGeometry)(n.geometry.radiusTop,n.geometry.radiusBottom,n.geometry.height,n.geometry.radiusSegments,n.geometry.heightSegments,n.geometry.openEnded,n.geometry.thetaStart,n.geometry.thetaLength)}}]),t}(),Un.defaults=v({},an.defaults,{geometry:{radiusTop:0,radiusBottom:1,height:1,radiusSegments:32,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:2*Math.PI}}),Un.instructions=v({},an.instructions,{geometry:["radiusTop","radiusBottom","height","radiusSegments","heightSegments","openEnded","thetaStart","thetaLength"]}),Nn),Bt=(Bn=In=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.DodecahedronBufferGeometry:i.DodecahedronGeometry)(n.geometry.radius,n.geometry.detail)}}]),t}(),In.defaults=v({},an.defaults,{geometry:{radius:1,detail:0}}),In.instructions=v({},an.instructions,{geometry:["radius","detail"]}),Bn),Ft=(zn=Fn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new i.ExtrudeGeometry(n.geometry.shapes,n.geometry.options);return n.buffer?(new i.BufferGeometry).fromGeometry(t):t}}]),t}(),Fn.defaults=v({},an.defaults,{geometry:{shapes:[],options:{}}}),Fn.instructions=v({},an.instructions,{geometry:["shapes","options"]}),zn),zt=(kn=Gn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.IcosahedronBufferGeometry:i.IcosahedronGeometry)(n.geometry.radius,n.geometry.detail)}}]),t}(),Gn.defaults=v({},an.defaults,{geometry:{radius:1,detail:0}}),Gn.instructions=v({},an.instructions,{geometry:["radius","detail"]}),kn),Gt=(Hn=jn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.LatheBufferGeometry:i.LatheGeometry)(n.geometry.points)}}]),t}(),jn.defaults=v({},an.defaults,{geometry:{points:[]}}),jn.instructions=v({},an.instructions,{geometry:["points"]}),Hn),kt=(Wn=Vn=function(n){function t(n){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions))}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Line(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.buffer?new i.BufferGeometry:new i.Geometry;if(n.buffer){for(var e=n.curve.getPoints(n.points),r=new Float32Array(3*e.length),o=0,a=e.length;o<a;o++){var l=3*o;r[l]=e[o].x,r[l+1]=e[o].y,r[l+2]=e[o].z}t.addAttribute("position",new i.BufferAttribute(r,3))}else t.vertices=n.curve.getPoints(n.points);return t}}]),t}(),Vn.defaults=v({},an.defaults,{curve:null,points:50}),Vn.instructions=v({},an.instructions,{geometry:["curve","points"]}),Wn),jt=(qn=Xn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions,!1))}return f(t,an),h(t,null,[{key:"filter",value:function(n,t){return function n(e){return e.children.forEach(function(r,i){r.children&&n(r),t(r)||e.children.splice(i,1)}),e}(n)}}]),h(t,[{key:"build",value:function(){var n=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(e){t.texturePath&&t.loader.setTexturePath(t.texturePath),t.loader.load(t.url,function(){for(var r=arguments.length,i=Array(r),o=0;o<r;o++)i[o]=arguments[o];t.onLoad.apply(t,i);var a=t.parser.apply(n,i);t.material&&(a.material=n.applyBridge({material:t.material}).material),e(a)},t.onProgress,t.onError)})}}]),t}(),Xn.defaults=v({},an.defaults,{url:"",loader:new i.JSONLoader,onLoad:function(){},onProgress:function(){},onError:function(){},texturePath:null,useCustomMaterial:!1,parser:function(n,t){var e=this.applyBridge({geometry:n,material:t}),r=e.geometry,o=e.material;return this.applyBridge({mesh:r.bones?new i.SkinnedMesh(r,o):new i.Mesh(r,o)}).mesh}}),Xn.instructions=v({},an.instructions),qn),Ht=(Zn=Yn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.OctahedronBufferGeometry:i.OctahedronGeometry)(n.geometry.radius,n.geometry.detail)}}]),t}(),Yn.defaults=v({},an.defaults,{geometry:{radius:1,detail:0}}),Zn),Vt=(Kn=Jn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions))}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.ParametricBufferGeometry:i.ParametricGeometry)(n.geometry.func,n.geometry.slices,n.geometry.stacks)}}]),t}(),Jn.defaults=v({},an.defaults,{geometry:{func:function(n,t){return new i.Vector3(n,t,0)},slices:10,stacks:10}}),Kn),Wt=($n=Qn=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.PlaneBufferGeometry:i.PlaneGeometry)(n.geometry.width,n.geometry.height,n.geometry.wSegments,n.geometry.hSegments)}}]),t}(),Qn.defaults=v({},an.defaults,{geometry:{width:10,height:10,wSegments:1,hSegments:1}}),Qn.instructions=v({},an.instructions,{geometry:["width","height","wSegments","hSegments"]}),$n),Xt=[-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,1,1,1,-1,1,1],qt=[2,1,0,0,3,2,0,4,7,7,3,0,0,1,5,5,4,0,1,2,6,6,5,1,2,3,7,7,6,2,4,5,6,6,7,4],Yt=(tt=nt=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.PolyhedronBufferGeometry:i.PolyhedronGeometry)(n.geometry.verticesOfCube,n.geometry.indicesOfFaces,n.geometry.radius,n.geometry.detail)}}]),t}(),nt.verticesOfCube=Xt,nt.indicesOfFaces=qt,nt.defaults=v({},an.defaults,{geometry:{verticesOfCube:Xt,indicesOfFaces:qt,radius:6,detail:2}}),nt.instructions=v({},an.instructions,{geometry:["verticesOfCube","indicesOfFaces","radius","detail"]}),tt),Zt=(rt=et=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.RingBufferGeometry:i.RingGeometry)(n.geometry.innerRadius,n.geometry.outerRadius,n.geometry.thetaSegments,n.geometry.phiSegments,n.geometry.thetaStart,n.geometry.thetaLength)}}]),t}(),et.defaults=v({},an.defaults,{geometry:{innerRadius:0,outerRadius:50,thetaSegments:8,phiSegments:8,thetaStart:0,thetaLength:2*Math.PI}}),et.instructions=v({},an.defaults,{geometry:["innerRadius","outerRadius","thetaSegments","phiSegments","thetaStart","thetaLength"]}),rt),Jt=(ot=it=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.ShapeBufferGeometry:i.ShapeGeometry)(n.geometry.shapes)}}]),t}(),it.defaults=v({},an.defaults,{geometry:{shapes:[]}}),it.instructions=v({},an.instructions,{geometry:["shapes"]}),ot),Kt=(lt=at=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions))}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.SphereBufferGeometry:i.SphereGeometry)(n.geometry.radius,n.geometry.widthSegments,n.geometry.heightSegments)}}]),t}(),at.defaults=v({},an.defaults,{geometry:{radius:1,widthSegments:8,heightSegments:6}}),at.instructions=v({},an.instructions,{geometry:["radius","widthSegments","heightSegments"]}),lt),Qt=(ct=st=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.TetrahedronBufferGeometry:i.TetrahedronGeometry)(n.geometry.radius,n.geometry.detail)}}]),t}(),st.defaults=v({},an.defaults,{geometry:{radius:1,detail:0}}),st.instructions=v({},an.instructions,{geometry:["radius","detail"]}),ct),$t=(ht=ut=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions))}return f(t,an),h(t,null,[{key:"load",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.loader;return new Promise(function(t){e.load(n,t)})}}]),h(t,[{key:"build",value:function(){var n=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,r=new Promise(function(t){(e.font instanceof Promise?e.font:Promise.resolve(e.font)).then(function(r){var o=n.applyBridge({geometry:new i.TextGeometry(e.text,Object.assign(e.geometry,{font:r})),material:e.material}),a=o.geometry,l=o.material;t(n.applyBridge({mesh:new i.Mesh(a,l)}).mesh)})});return d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wait",this).call(this,r),r}}]),t}(),ut.defaults=v({},an.defaults,{text:"Hello World!",font:null,geometry:{size:12,height:50,curveSegments:12,font:new i.Font,bevelEnabled:!1,bevelThickness:10,bevelSize:8}}),ut.instructions=v({},an.instructions),ut.loader=new i.FontLoader,ht),ne=(dt=vt=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new i.TorusGeometry(n.geometry.radius,n.geometry.tube,n.geometry.radialSegments,n.geometry.tubularSegments,n.geometry.arc)}}]),t}(),vt.defaults=v({},an.defaults,{geometry:{radius:100,tube:40,radialSegments:8,tubularSegments:6,arc:2*Math.PI}}),vt.instructions=v({},an.instructions,{geometry:["radius","tube","radialSegments","tubularSegments","arc"]}),dt),te=(pt=ft=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.TorusKnotBufferGeometry:i.TorusKnotGeometry)(n.geometry.radius,n.geometry.tube,n.geometry.radialSegments,n.geometry.tubularSegments,n.geometry.p,n.geometry.q)}}]),t}(),ft.defaults=v({},an.defaults,{geometry:{radius:100,tube:40,radialSegments:64,tubularSegments:8,p:2,q:3}}),ft.instructions=v({},an.instructions,{geometry:["radius","tube","radialSegments","tubularSegments","p","q"]}),pt),ee=(gt=mt=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,t.defaults,t.instructions));return n.build&&(e.build(n),d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"wrap",e).call(e)),e}return f(t,an),h(t,[{key:"build",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params,t=this.applyBridge({geometry:this.buildGeometry(n),material:n.material}),e=t.geometry,r=t.material;return this.applyBridge({mesh:new i.Mesh(e,r)}).mesh}},{key:"buildGeometry",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new(n.buffer?i.TubeBufferGeometry:i.TubeGeometry)(n.geometry.path,n.geometry.segments,n.geometry.radius,n.geometry.radiusSegments,n.geometry.closed)}}]),t}(),mt.defaults=v({},an.defaults,{geometry:{path:new i.LineCurve3(new i.Vector3(0,0,0),new i.Vector3(0,0,1)),segments:20,radius:2,radiusSegments:8,closed:!1}}),mt.instructions=v({},an.instructions,{geometry:["path","segments","radius","radiusSegments","closed"]}),gt),re=function(n){function t(){u(this,t);for(var n=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{})),e=arguments.length,r=Array(e),o=0;o<e;o++)r[o]=arguments[o];for(var a=0;a<r.length;a++){var l=r[a];l instanceof J?l.addTo(n):l instanceof i.Object3D&&n.native.add(l)}return n}return f(t,an),h(t,[{key:"build",value:function(){return new i.Object3D}}]),t}(),ie=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body;u(this,n),t.container?(console.warn("ElementModule now accepts only argument which is a DOM object, not a params object."),this.container=t.container):this.container=t,this.createElement()}return h(n,[{key:"createElement",value:function(){this.element=window.document.createElement("div"),this.element.className="whs-app",this.element.style.width="inherit",this.element.style.height="inherit",this.element.style.position="relative"}},{key:"manager",value:function(n){n.set("element",this.element),n.set("container",this.container)}},{key:"integrate",value:function(n){n.container.appendChild(n.element)}}]),n}(),oe=(xt=yt=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];u(this,n),bt.call(this),this.params=Object.assign({width:window.innerWidth,height:window.innerHeight,resolution:new i.Vector2(1,1),pixelRatio:window.devicePixelRatio,bgColor:0,bgOpacity:1,renderer:{},fix:function(){}},t);var r=this.params,o=r.bgColor,a=r.bgOpacity,l=r.renderer,s=r.pixelRatio,c=r.width,h=r.height,v=r.resolution,d=r.fix;for(var f in this.renderer=new i.WebGLRenderer(l),this.effects=[],this.renderer.setClearColor(o,a),s&&this.renderer.setPixelRatio(s),this.setSize(Number(c*v.x).toFixed(),Number(h*v.y).toFixed()),e)e[f]&&this.applyAdditional(f);d(this.renderer)}return h(n,[{key:"applyAdditional",value:function(t){n.additional[t].apply(this,[this.renderer])}},{key:"integrateRenderer",value:function(n,t,e){var r=this;return this.scene=t,this.camera=e,this.attachToCanvas(n),new _t(function(){return r.renderer.render(r.scene,r.camera)})}},{key:"effect",value:function(n){var t=this,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){n.render(t.scene,t.camera)};this.renderLoop.stop();var r=this.renderer.getSize();n.setSize(r.width,r.height);var i=new _t(e);return this.effects.push(i),this.enabled&&i.start(this.app),this}},{key:"setSize",value:function(n,t){this.renderer&&this.renderer.setSize(n,t)}},{key:"attachToCanvas",value:function(n){var t=this.renderer.domElement;n.appendChild(t),t.style.width="100%",t.style.height="100%"}},{key:"stop",value:function(){this.enabled=!1,this.renderLoop.stop(),this.effects.forEach(function(n){return n.stop()})}},{key:"play",value:function(){this.enabled=!0,this.renderLoop.start(),this.effects.forEach(function(n){return n.start()})}},{key:"manager",value:function(n){var t=this;n.define("rendering"),n.set("renderer",this.renderer),this.app=n.handler,this.renderLoop=this.integrateRenderer(n.get("element"),n.get("scene"),n.get("camera").native),n.update({element:function(n){t.attachToCanvas(n)},scene:function(n){t.scene=n},camera:function(n){t.camera=n.native}})}},{key:"integrate",value:function(n){var t=this;n.renderLoop.start(this),n.effects.forEach(function(n){return n.start(t)})}},{key:"dispose",value:function(){this.stop(),this.renderer.forceContextLoss()}}]),n}(),yt.additional={shadow:function(n){n.shadowMap.enabled=!0}},bt=function(){this.enabled=!0},xt),ae=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];u(this,n),this.scene=t?null:new i.Scene}return h(n,[{key:"manager",value:function(n){n.set("scene",this.scene)}},{key:"integrate",value:function(n){this.children=[],this.add=function(t){var e=this;return t.parent=this,new Promise(function(r,i){t.defer(function(){var o=t.native;o||i();var a=e.applyBridge({onAdd:t}).onAdd,l=function(){n.scene.add(o),e.children.push(t),r(t)};a instanceof Promise?a.then(l):l()})})},this.remove=function(t){t.parent=null,n.scene.remove(t.native)},this.setScene=function(t){n.scene=t,this.manager.set("scene",t)}}}]),n}(),le=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,n),this.params=Object.assign({auto:!0},t),this.callbacks=[this.setSize.bind(this)]}return h(n,[{key:"setSize",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.camera.native.aspect=n/t,this.camera.native.updateProjectionMatrix(),this.rendering&&this.rendering.setSize(n,t)}},{key:"trigger",value:function(){var n=this.container,t=n.offsetWidth,e=n.offsetHeight,r=this.resolution,i=Number(t*r.x).toFixed(),o=Number(e*r.y).toFixed();this.callbacks.forEach(function(n){n(i,o)})}},{key:"addAutoresize",value:function(){this.container=this.getContainer(),this.resolution=this.getResolution(),this.params.auto&&window.addEventListener("resize",this.trigger.bind(this))}},{key:"addCallback",value:function(n){this.callbacks.push(n)}},{key:"manager",value:function(n){var t=this;n.define("resize"),this.rendering=n.get("renderer"),this.camera=n.get("camera"),this.getResolution=function(){return n.use("rendering").params.resolution},this.getContainer=function(){return n.get("container")},n.update({container:function(n){t.container=n}}),this.addAutoresize()}}]),n}(),se="uniform sampler2D tPreviousLum;\r\nuniform sampler2D tCurrentLum;\r\nuniform float minLuminance;\r\nuniform float delta;\r\nuniform float tau;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tfloat previousLum = texture2D(tPreviousLum, vUv, MIP_LEVEL_1X1).r;\r\n\tfloat currentLum = texture2D(tCurrentLum, vUv, MIP_LEVEL_1X1).r;\r\n\r\n\tpreviousLum = max(minLuminance, previousLum);\r\n\tcurrentLum = max(minLuminance, currentLum);\r\n\r\n\t// Adapt the luminance using Pattanaik's technique.\r\n\tfloat adaptedLum = previousLum + (currentLum - previousLum) * (1.0 - exp(-delta * tau));\r\n\r\n\tgl_FragColor.r = adaptedLum;\r\n\r\n}\r\n",ce="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",ue=function(n){function t(){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"AdaptiveLuminosityMaterial",defines:{MIP_LEVEL_1X1:"0.0"},uniforms:{tPreviousLum:new i.Uniform(null),tCurrentLum:new i.Uniform(null),minLuminance:new i.Uniform(.01),delta:new i.Uniform(0),tau:new i.Uniform(1)},fragmentShader:se,vertexShader:ce,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),he="uniform sampler2D tDiffuse;\r\nuniform sampler2D tDepth;\r\n\r\nuniform float focus;\r\nuniform float aspect;\r\nuniform float aperture;\r\nuniform float maxBlur;\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifndef USE_LOGDEPTHBUF\r\n\r\n\t#include <packing>\r\n\r\n\tuniform float cameraNear;\r\n\tuniform float cameraFar;\r\n\r\n\tfloat readDepth(sampler2D depthSampler, vec2 coord) {\r\n\r\n\t\tfloat fragCoordZ = texture2D(depthSampler, coord).x;\r\n\t\tfloat viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\r\n\r\n\t\treturn viewZToOrthographicDepth(viewZ, cameraNear, cameraFar);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvoid main() {\r\n\r\n\tvec2 aspectCorrection = vec2(1.0, aspect);\r\n\r\n\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\tfloat depth = texture2D(tDepth, vUv).x;\r\n\r\n\t#else\r\n\r\n\t\tfloat depth = readDepth(tDepth, vUv);\r\n\r\n\t#endif\r\n\r\n\tfloat factor = depth - focus;\r\n\r\n\tvec2 dofBlur = vec2(clamp(factor * aperture, -maxBlur, maxBlur));\r\n\r\n\tvec2 dofblur9 = dofBlur * 0.9;\r\n\tvec2 dofblur7 = dofBlur * 0.7;\r\n\tvec2 dofblur4 = dofBlur * 0.4;\r\n\r\n\tvec4 color = vec4(0.0);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, 0.4 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, 0.37) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, 0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, 0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.40, 0.0 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, -0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, -0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, -0.37) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, -0.4 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, 0.37) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, 0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, 0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.4, 0.0 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, -0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, -0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, -0.37) * aspectCorrection) * dofBlur);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, 0.37) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, 0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, -0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, -0.37) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, 0.37) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, 0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, -0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, -0.37) * aspectCorrection) * dofblur9);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, 0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.40, 0.0 ) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, -0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, -0.4 ) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, 0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.4, 0.0 ) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, -0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, 0.4 ) * aspectCorrection) * dofblur7);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, 0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.4, 0.0 ) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, -0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, -0.4 ) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, 0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.4, 0.0 ) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, -0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, 0.4 ) * aspectCorrection) * dofblur4);\r\n\r\n\tgl_FragColor = color / 41.0;\r\n\r\n}\r\n",ve="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",de=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};u(this,t),void 0===e.focus&&(e.focus=1),void 0===e.aperture&&(e.aperture=.025),void 0===e.maxBlur&&(e.maxBlur=1);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"BokehMaterial",uniforms:{cameraNear:new i.Uniform(.1),cameraFar:new i.Uniform(2e3),aspect:new i.Uniform(1),tDiffuse:new i.Uniform(null),tDepth:new i.Uniform(null),focus:new i.Uniform(e.focus),aperture:new i.Uniform(e.aperture),maxBlur:new i.Uniform(e.maxBlur)},fragmentShader:he,vertexShader:ve,depthWrite:!1,depthTest:!1}));return null!==n&&r.adoptCameraSettings(n),r}return f(t,n),h(t,[{key:"adoptCameraSettings",value:function(n){this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,this.uniforms.aspect.value=n.aspect}}]),t}(i.ShaderMaterial),fe="uniform sampler2D tDiffuse;\r\nuniform sampler2D tDepth;\r\n\r\nuniform vec2 texelSize;\r\nuniform vec2 halfTexelSize;\r\n\r\nuniform float cameraNear;\r\nuniform float cameraFar;\r\n\r\nuniform float focalLength;\r\nuniform float focalStop;\r\n\r\nuniform float maxBlur;\r\nuniform vec3 luminanceCoefficients;\r\nuniform float luminanceThreshold;\r\nuniform float luminanceGain;\r\nuniform float bias;\r\nuniform float fringe;\r\nuniform float ditherStrength;\r\n\r\n#ifdef SHADER_FOCUS\r\n\r\n\tuniform vec2 focusCoords;\r\n\r\n#else\r\n\r\n\tuniform float focalDepth;\r\n\r\n#endif\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifndef USE_LOGDEPTHBUF\r\n\r\n\t#include <packing>\r\n\r\n\tfloat readDepth(sampler2D depthSampler, vec2 coord) {\r\n\r\n\t\tfloat fragCoordZ = texture2D(depthSampler, coord).x;\r\n\t\tfloat viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\r\n\r\n\t\treturn viewZToOrthographicDepth(viewZ, cameraNear, cameraFar);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#ifdef PENTAGON\r\n\r\n\tfloat penta(vec2 coords) {\r\n\r\n\t\tconst vec4 HS0 = vec4( 1.0, 0.0, 0.0, 1.0);\r\n\t\tconst vec4 HS1 = vec4( 0.309016994, 0.951056516, 0.0, 1.0);\r\n\t\tconst vec4 HS2 = vec4(-0.809016994, 0.587785252, 0.0, 1.0);\r\n\t\tconst vec4 HS3 = vec4(-0.809016994, -0.587785252, 0.0, 1.0);\r\n\t\tconst vec4 HS4 = vec4( 0.309016994, -0.951056516, 0.0, 1.0);\r\n\t\tconst vec4 HS5 = vec4( 0.0, 0.0, 1.0, 1.0);\r\n\r\n\t\tconst vec4 ONE = vec4(1.0);\r\n\r\n\t\tconst float P_FEATHER = 0.4;\r\n\t\tconst float N_FEATHER = -P_FEATHER;\r\n\r\n\t\tfloat inOrOut = -4.0;\r\n\r\n\t\tvec4 P = vec4(coords, vec2(RINGS_FLOAT - 1.3));\r\n\r\n\t\tvec4 dist = vec4(\r\n\t\t\tdot(P, HS0),\r\n\t\t\tdot(P, HS1),\r\n\t\t\tdot(P, HS2),\r\n\t\t\tdot(P, HS3)\r\n\t\t);\r\n\r\n\t\tdist = smoothstep(N_FEATHER, P_FEATHER, dist);\r\n\r\n\t\tinOrOut += dot(dist, ONE);\r\n\r\n\t\tdist.x = dot(P, HS4);\r\n\t\tdist.y = HS5.w - abs(P.z);\r\n\r\n\t\tdist = smoothstep(N_FEATHER, P_FEATHER, dist);\r\n\t\tinOrOut += dist.x;\r\n\r\n\t\treturn clamp(inOrOut, 0.0, 1.0);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#ifdef SHOW_FOCUS\r\n\r\n\tvec3 debugFocus(vec3 c, float blur, float depth) {\r\n\r\n\t\tfloat edge = 0.002 * depth;\r\n\t\tfloat m = clamp(smoothstep(0.0, edge, blur), 0.0, 1.0);\r\n\t\tfloat e = clamp(smoothstep(1.0 - edge, 1.0, blur), 0.0, 1.0);\r\n\r\n\t\tc = mix(c, vec3(1.0, 0.5, 0.0), (1.0 - m) * 0.6);\r\n\t\tc = mix(c, vec3(0.0, 0.5, 1.0), ((1.0 - e) - (1.0 - m)) * 0.2);\r\n\r\n\t\treturn c;\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#ifdef VIGNETTE\r\n\r\n\tfloat vignette() {\r\n\r\n\t\tconst vec2 CENTER = vec2(0.5);\r\n\r\n\t\tconst float VIGNETTE_OUT = 1.3;\r\n\t\tconst float VIGNETTE_IN = 0.0;\r\n\t\tconst float VIGNETTE_FADE = 22.0; \r\n\r\n\t\tfloat d = distance(vUv, CENTER);\r\n\t\td = smoothstep(VIGNETTE_OUT + (focalStop / VIGNETTE_FADE), VIGNETTE_IN + (focalStop / VIGNETTE_FADE), d);\r\n\r\n\t\treturn clamp(d, 0.0, 1.0);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvec2 rand(vec2 coord) {\r\n\r\n\tvec2 noise;\r\n\r\n\t#ifdef NOISE\r\n\r\n\t\tconst float a = 12.9898;\r\n\t\tconst float b = 78.233;\r\n\t\tconst float c = 43758.5453;\r\n\r\n\t\tnoise.x = clamp(fract(sin(mod(dot(coord, vec2(a, b)), 3.14)) * c), 0.0, 1.0) * 2.0 - 1.0;\r\n\t\tnoise.y = clamp(fract(sin(mod(dot(coord, vec2(a, b) * 2.0), 3.14)) * c), 0.0, 1.0) * 2.0 - 1.0;\r\n\r\n\t#else\r\n\r\n\t\tnoise.x = ((fract(1.0 - coord.s * halfTexelSize.x) * 0.25) + (fract(coord.t * halfTexelSize.y) * 0.75)) * 2.0 - 1.0;\r\n\t\tnoise.y = ((fract(1.0 - coord.s * halfTexelSize.x) * 0.75) + (fract(coord.t * halfTexelSize.y) * 0.25)) * 2.0 - 1.0;\r\n\r\n\t#endif\r\n\r\n\treturn noise;\r\n\r\n}\r\n\r\nvec3 processTexel(vec2 coords, float blur) {\r\n\r\n\tvec3 c;\r\n\tc.r = texture2D(tDiffuse, coords + vec2(0.0, 1.0) * texelSize * fringe * blur).r;\r\n\tc.g = texture2D(tDiffuse, coords + vec2(-0.866, -0.5) * texelSize * fringe * blur).g;\r\n\tc.b = texture2D(tDiffuse, coords + vec2(0.866, -0.5) * texelSize * fringe * blur).b;\r\n\r\n\t// Calculate the luminance of the constructed colour.\r\n\tfloat luminance = dot(c, luminanceCoefficients);\r\n\tfloat threshold = max((luminance - luminanceThreshold) * luminanceGain, 0.0);\r\n\r\n\treturn c + mix(vec3(0.0), c, threshold * blur);\r\n\r\n}\r\n\r\nfloat linearize(float depth) {\r\n\r\n\treturn -cameraFar * cameraNear / (depth * (cameraFar - cameraNear) - cameraFar);\r\n\r\n}\r\n\r\nfloat gather(float i, float j, float ringSamples, inout vec3 color, float w, float h, float blur) {\r\n\r\n\tconst float TWO_PI = 6.28318531;\r\n\r\n\tfloat step = TWO_PI / ringSamples;\r\n\tfloat pw = cos(j * step) * i;\r\n\tfloat ph = sin(j * step) * i;\r\n\r\n\t#ifdef PENTAGON\r\n\r\n\t\tfloat p = penta(vec2(pw, ph));\r\n\r\n\t#else\r\n\r\n\t\tfloat p = 1.0;\r\n\r\n\t#endif\r\n\r\n\tcolor += processTexel(vUv + vec2(pw * w, ph * h), blur) * mix(1.0, i / RINGS_FLOAT, bias) * p;\r\n\r\n\treturn mix(1.0, i / RINGS_FLOAT, bias) * p;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\tfloat depth = linearize(texture2D(tDepth, vUv).x);\r\n\r\n\t#else\r\n\r\n\t\tfloat depth = linearize(readDepth(tDepth, vUv));\r\n\r\n\t#endif\r\n\r\n\t#ifdef SHADER_FOCUS\r\n\r\n\t\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\t\tfloat fDepth = linearize(texture2D(tDepth, focusCoords).x);\r\n\r\n\t\t#else\r\n\r\n\t\t\tfloat fDepth = linearize(readDepth(tDepth, focusCoords));\r\n\r\n\t\t#endif\r\n\r\n\t#else\r\n\r\n\t\tfloat fDepth = focalDepth;\r\n\r\n\t#endif\r\n\r\n\t#ifdef MANUAL_DOF\r\n\r\n\t\tconst float nDoFStart = 1.0; \r\n\t\tconst float nDoFDist = 2.0;\r\n\t\tconst float fDoFStart = 1.0;\r\n\t\tconst float fDoFDist = 3.0;\r\n\r\n\t\tfloat focalPlane = depth - fDepth;\r\n\t\tfloat farDoF = (focalPlane - fDoFStart) / fDoFDist;\r\n\t\tfloat nearDoF = (-focalPlane - nDoFStart) / nDoFDist;\r\n\r\n\t\tfloat blur = (focalPlane > 0.0) ? farDoF : nearDoF;\r\n\r\n\t#else\r\n\r\n\t\tconst float CIRCLE_OF_CONFUSION = 0.03; // 35mm film = 0.03mm CoC.\r\n\r\n\t\tfloat focalPlaneMM = fDepth * 1000.0;\r\n\t\tfloat depthMM = depth * 1000.0;\r\n\r\n\t\tfloat focalPlane = (depthMM * focalLength) / (depthMM - focalLength);\r\n\t\tfloat farDoF = (focalPlaneMM * focalLength) / (focalPlaneMM - focalLength);\r\n\t\tfloat nearDoF = (focalPlaneMM - focalLength) / (focalPlaneMM * focalStop * CIRCLE_OF_CONFUSION);\r\n\r\n\t\tfloat blur = abs(focalPlane - farDoF) * nearDoF;\r\n\r\n\t#endif\r\n\r\n\tblur = clamp(blur, 0.0, 1.0);\r\n\r\n\t// Dithering.\r\n\tvec2 noise = rand(vUv) * ditherStrength * blur;\r\n\r\n\tfloat blurFactorX = texelSize.x * blur * maxBlur + noise.x;\r\n\tfloat blurFactorY = texelSize.y * blur * maxBlur + noise.y;\r\n\r\n\tconst int MAX_RING_SAMPLES = RINGS_INT * SAMPLES_INT;\r\n\r\n\t// Calculation of final color.\r\n\tvec4 color;\r\n\r\n\tif(blur < 0.05) {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv);\r\n\r\n\t} else {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv);\r\n\r\n\t\tfloat s = 1.0;\r\n\t\tint ringSamples;\r\n\r\n\t\tfor(int i = 1; i <= RINGS_INT; ++i) {\r\n\r\n\t\t\tringSamples = i * SAMPLES_INT;\r\n\r\n\t\t\t// Constant loop.\r\n\t\t\tfor(int j = 0; j < MAX_RING_SAMPLES; ++j) {\r\n\r\n\t\t\t\t// Break earlier.\r\n\t\t\t\tif(j >= ringSamples) { break; }\r\n\r\n\t\t\t\ts += gather(float(i), float(j), float(ringSamples), color.rgb, blurFactorX, blurFactorY, blur);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tcolor.rgb /= s; // Divide by sample count.\r\n\r\n\t}\r\n\r\n\t#ifdef SHOW_FOCUS\r\n\r\n\t\tcolor.rgb = debugFocus(color.rgb, blur, depth);\r\n\r\n\t#endif\r\n\r\n\t#ifdef VIGNETTE\r\n\r\n\t\tcolor.rgb *= vignette();\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",pe="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",me=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};u(this,t),void 0===e.rings&&(e.rings=3),void 0===e.samples&&(e.samples=2),void 0===e.showFocus&&(e.showFocus=!1),void 0===e.showFocus&&(e.showFocus=!1),void 0===e.manualDoF&&(e.manualDoF=!1),void 0===e.vignette&&(e.vignette=!1),void 0===e.pentagon&&(e.pentagon=!1),void 0===e.shaderFocus&&(e.shaderFocus=!0),void 0===e.noise&&(e.noise=!0);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"Bokeh2Material",defines:{RINGS_INT:e.rings.toFixed(0),RINGS_FLOAT:e.rings.toFixed(1),SAMPLES_INT:e.samples.toFixed(0),SAMPLES_FLOAT:e.samples.toFixed(1)},uniforms:{tDiffuse:new i.Uniform(null),tDepth:new i.Uniform(null),texelSize:new i.Uniform(new i.Vector2),halfTexelSize:new i.Uniform(new i.Vector2),cameraNear:new i.Uniform(.1),cameraFar:new i.Uniform(2e3),focalLength:new i.Uniform(24),focalStop:new i.Uniform(.9),maxBlur:new i.Uniform(1),luminanceThreshold:new i.Uniform(.5),luminanceGain:new i.Uniform(2),luminanceCoefficients:new i.Uniform(new i.Vector3(.2126,.7152,.0722)),bias:new i.Uniform(.5),fringe:new i.Uniform(.7),ditherStrength:new i.Uniform(1e-4),focusCoords:new i.Uniform(new i.Vector2(.5,.5)),focalDepth:new i.Uniform(1)},fragmentShader:fe,vertexShader:pe,depthWrite:!1,depthTest:!1}));return e.showFocus&&(r.defines.SHOW_FOCUS="1"),e.manualDoF&&(r.defines.MANUAL_DOF="1"),e.vignette&&(r.defines.VIGNETTE="1"),e.pentagon&&(r.defines.PENTAGON="1"),e.shaderFocus&&(r.defines.SHADER_FOCUS="1"),e.noise&&(r.defines.NOISE="1"),void 0!==e.texelSize&&r.setTexelSize(e.texelSize.x,e.texelSize.y),null!==n&&r.adoptCameraSettings(n),r}return f(t,n),h(t,[{key:"setTexelSize",value:function(n,t){this.uniforms.texelSize.value.set(n,t),this.uniforms.halfTexelSize.value.set(n,t).multiplyScalar(.5)}},{key:"adoptCameraSettings",value:function(n){this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,this.uniforms.focalLength.value=n.getFocalLength()}}]),t}(i.ShaderMaterial),ge="uniform sampler2D texture1;\r\nuniform sampler2D texture2;\r\n\r\nuniform float opacity1;\r\nuniform float opacity2;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel1 = opacity1 * texture2D(texture1, vUv);\r\n\tvec4 texel2 = opacity2 * texture2D(texture2, vUv);\r\n\r\n\t#ifdef SCREEN_MODE\r\n\r\n\t\tvec3 invTexel1 = vec3(1.0) - texel1.rgb;\r\n\t\tvec3 invTexel2 = vec3(1.0) - texel2.rgb;\r\n\r\n\t\tvec4 color = vec4(\r\n\t\t\tvec3(1.0) - invTexel1 * invTexel2,\r\n\t\t\ttexel1.a + texel2.a\r\n\t\t);\r\n\r\n\t#else\r\n\r\n\t\tvec4 color = texel1 + texel2;\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",ye="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",xe=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"CombineMaterial",uniforms:{texture1:new i.Uniform(null),texture2:new i.Uniform(null),opacity1:new i.Uniform(1),opacity2:new i.Uniform(1)},fragmentShader:ge,vertexShader:ye,depthWrite:!1,depthTest:!1}));return n&&(e.defines.SCREEN_MODE="1"),e}return f(t,n),t}(i.ShaderMaterial),be="uniform sampler2D tDiffuse;\r\n\r\nvarying vec2 vUv0;\r\nvarying vec2 vUv1;\r\nvarying vec2 vUv2;\r\nvarying vec2 vUv3;\r\n\r\nvoid main() {\r\n\r\n\t// Sample top left texel.\r\n\tvec4 sum = texture2D(tDiffuse, vUv0);\r\n\r\n\t// Sample top right texel.\r\n\tsum += texture2D(tDiffuse, vUv1);\r\n\r\n\t// Sample bottom right texel.\r\n\tsum += texture2D(tDiffuse, vUv2);\r\n\r\n\t// Sample bottom left texel.\r\n\tsum += texture2D(tDiffuse, vUv3);\r\n\r\n\t// Compute the average.\r\n\tgl_FragColor = sum * 0.25;\r\n\r\n}\r\n",we="uniform vec2 texelSize;\r\nuniform vec2 halfTexelSize;\r\nuniform float kernel;\r\n\r\nvarying vec2 vUv0;\r\nvarying vec2 vUv1;\r\nvarying vec2 vUv2;\r\nvarying vec2 vUv3;\r\n\r\nvoid main() {\r\n\r\n\tvec2 dUv = (texelSize * vec2(kernel)) + halfTexelSize;\r\n\r\n\tvUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);\r\n\tvUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);\r\n\tvUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);\r\n\tvUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",Me=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new i.Vector2;u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"ConvolutionMaterial",uniforms:{tDiffuse:new i.Uniform(null),texelSize:new i.Uniform(new i.Vector2),halfTexelSize:new i.Uniform(new i.Vector2),kernel:new i.Uniform(0)},fragmentShader:be,vertexShader:we,depthWrite:!1,depthTest:!1}));return e.setTexelSize(n.x,n.y),e.kernelSize=Ee.LARGE,e}return f(t,n),h(t,[{key:"getKernel",value:function(){return _e[this.kernelSize]}},{key:"setTexelSize",value:function(n,t){this.uniforms.texelSize.value.set(n,t),this.uniforms.halfTexelSize.value.set(n,t).multiplyScalar(.5)}}]),t}(i.ShaderMaterial),_e=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],Ee={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5},Se="uniform sampler2D tDiffuse;\r\nuniform float opacity;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tgl_FragColor = opacity * texel;\r\n\r\n}\r\n",Te="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",Ae=function(n){function t(){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"CopyMaterial",uniforms:{tDiffuse:new i.Uniform(null),opacity:new i.Uniform(1)},fragmentShader:Se,vertexShader:Te,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),Le="uniform sampler2D tDepth;\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifndef USE_LOGDEPTHBUF\r\n\r\n\t#include <packing>\r\n\r\n\tuniform float cameraNear;\r\n\tuniform float cameraFar;\r\n\r\n\tfloat readDepth(sampler2D depthSampler, vec2 coord) {\r\n\r\n\t\tfloat fragCoordZ = texture2D(depthSampler, coord).x;\r\n\t\tfloat viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\r\n\r\n\t\treturn viewZToOrthographicDepth(viewZ, cameraNear, cameraFar);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvoid main() {\r\n\r\n\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\tfloat depth = texture2D(tDepth, vUv).x;\r\n\r\n\t#else\r\n\r\n\t\tfloat depth = readDepth(tDepth, vUv);\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = vec4(depth, depth, depth, 1.0);\r\n\r\n}\r\n",Pe="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",Ce=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"DepthMaterial",uniforms:{cameraNear:new i.Uniform(.1),cameraFar:new i.Uniform(2e3),tDepth:new i.Uniform(null)},fragmentShader:Le,vertexShader:Pe,depthWrite:!1,depthTest:!1}));return null!==n&&e.adoptCameraSettings(n),e}return f(t,n),h(t,[{key:"adoptCameraSettings",value:function(n){this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far}}]),t}(i.ShaderMaterial),Re="uniform sampler2D tDiffuse;\r\n\r\nuniform float angle;\r\nuniform float scale;\r\nuniform float intensity;\r\n\r\nvarying vec2 vUv;\r\nvarying vec2 vUvPattern;\r\n\r\nfloat pattern() {\r\n\r\n\tfloat s = sin(angle);\r\n\tfloat c = cos(angle);\r\n\r\n\tvec2 point = vec2(c * vUvPattern.x - s * vUvPattern.y, s * vUvPattern.x + c * vUvPattern.y) * scale;\r\n\r\n\treturn (sin(point.x) * sin(point.y)) * 4.0;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tvec3 color = texel.rgb;\r\n\r\n\t#ifdef AVERAGE\r\n\r\n\t\tcolor = vec3((color.r + color.g + color.b) / 3.0);\r\n\r\n\t#endif\r\n\r\n\tcolor = vec3(color * 10.0 - 5.0 + pattern());\r\n\tcolor = texel.rgb + (color - texel.rgb) * intensity;\r\n\r\n\tgl_FragColor = vec4(color, texel.a);\r\n\r\n}\r\n",Oe="uniform vec4 offsetRepeat;\r\n\r\nvarying vec2 vUv;\r\nvarying vec2 vUvPattern;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tvUvPattern = uv * offsetRepeat.zw + offsetRepeat.xy;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",De=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"DotScreenMaterial",uniforms:{tDiffuse:new i.Uniform(null),angle:new i.Uniform(1.57),scale:new i.Uniform(1),intensity:new i.Uniform(1),offsetRepeat:new i.Uniform(new i.Vector4(.5,.5,1,1))},fragmentShader:Re,vertexShader:Oe,depthWrite:!1,depthTest:!1}));return n&&(e.defines.AVERAGE="1"),e}return f(t,n),t}(i.ShaderMaterial),Ue="uniform sampler2D tDiffuse;\r\nuniform float time;\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifdef NOISE\r\n\r\n\tuniform float noiseIntensity;\r\n\r\n#endif\r\n\r\n#ifdef SCANLINES\r\n\r\n\tuniform float scanlineIntensity;\r\n\tuniform float scanlineCount;\r\n\r\n#endif\r\n\r\n#ifdef GREYSCALE\r\n\r\n\tuniform vec3 luminanceCoefficients;\r\n\tuniform float greyscaleIntensity;\r\n\r\n#elif defined(SEPIA)\r\n\r\n\tuniform float sepiaIntensity;\r\n\r\n#endif\r\n\r\n#ifdef VIGNETTE\r\n\r\n\tuniform float vignetteOffset;\r\n\tuniform float vignetteDarkness;\r\n\r\n#endif\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tvec3 color = texel.rgb;\r\n\r\n\t#ifdef SCREEN_MODE\r\n\r\n\t\tvec3 invColor;\r\n\r\n\t#endif\r\n\r\n\t#ifdef NOISE\r\n\r\n\t\tfloat x = vUv.x * vUv.y * time * 1000.0;\r\n\t\tx = mod(x, 13.0) * mod(x, 123.0);\r\n\t\tx = mod(x, 0.01);\r\n\r\n\t\tvec3 noise = texel.rgb * clamp(0.1 + x * 100.0, 0.0, 1.0) * noiseIntensity;\r\n\r\n\t\t#ifdef SCREEN_MODE\r\n\r\n\t\t\tinvColor = vec3(1.0) - color;\r\n\t\t\tvec3 invNoise = vec3(1.0) - noise;\r\n\r\n\t\t\tcolor = vec3(1.0) - invColor * invNoise;\r\n\r\n\t\t#else\r\n\r\n\t\t\tcolor += noise;\r\n\r\n\t\t#endif\r\n\r\n\t#endif\r\n\r\n\t#ifdef SCANLINES\r\n\r\n\t\tvec2 sl = vec2(sin(vUv.y * scanlineCount), cos(vUv.y * scanlineCount));\r\n\t\tvec3 scanlines = texel.rgb * vec3(sl.x, sl.y, sl.x) * scanlineIntensity;\r\n\r\n\t\t#ifdef SCREEN_MODE\r\n\r\n\t\t\tinvColor = vec3(1.0) - color;\r\n\t\t\tvec3 invScanlines = vec3(1.0) - scanlines;\r\n\r\n\t\t\tcolor = vec3(1.0) - invColor * invScanlines;\r\n\r\n\t\t#else\r\n\r\n\t\t\tcolor += scanlines;\r\n\r\n\t\t#endif\r\n\r\n\t#endif\r\n\r\n\t#ifdef GREYSCALE\r\n\r\n\t\tcolor = mix(color, vec3(dot(color, luminanceCoefficients)), greyscaleIntensity);\r\n\r\n\t#elif defined(SEPIA)\r\n\r\n\t\tvec3 c = color.rgb;\r\n\r\n\t\tcolor.r = dot(c, vec3(1.0 - 0.607 * sepiaIntensity, 0.769 * sepiaIntensity, 0.189 * sepiaIntensity));\r\n\t\tcolor.g = dot(c, vec3(0.349 * sepiaIntensity, 1.0 - 0.314 * sepiaIntensity, 0.168 * sepiaIntensity));\r\n\t\tcolor.b = dot(c, vec3(0.272 * sepiaIntensity, 0.534 * sepiaIntensity, 1.0 - 0.869 * sepiaIntensity));\r\n\r\n\t#endif\r\n\r\n\t#ifdef VIGNETTE\r\n\r\n\t\tconst vec2 center = vec2(0.5);\r\n\r\n\t\t#ifdef ESKIL\r\n\r\n\t\t\tvec2 uv = (vUv - center) * vec2(vignetteOffset);\r\n\t\t\tcolor = mix(color.rgb, vec3(1.0 - vignetteDarkness), dot(uv, uv));\r\n\r\n\t\t#else\r\n\r\n\t\t\tfloat dist = distance(vUv, center);\r\n\t\t\tcolor *= smoothstep(0.8, vignetteOffset * 0.799, dist * (vignetteDarkness + vignetteOffset));\r\n\r\n\t\t#endif\t\t\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = vec4(clamp(color, 0.0, 1.0), texel.a);\r\n\r\n}\r\n",Ne="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",Ie=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t),void 0===n.screenMode&&(n.screenMode=!0),void 0===n.noise&&(n.noise=!0),void 0===n.scanlines&&(n.scanlines=!0),void 0===n.greyscale&&(n.greyscale=!1),void 0===n.sepia&&(n.sepia=!1),void 0===n.vignette&&(n.vignette=!1),void 0===n.eskil&&(n.eskil=!1),void 0===n.noiseIntensity&&(n.noiseIntensity=.5),void 0===n.scanlineIntensity&&(n.scanlineIntensity=.05),void 0===n.greyscaleIntensity&&(n.greyscaleIntensity=1),void 0===n.sepiaIntensity&&(n.sepiaIntensity=1),void 0===n.vignetteOffset&&(n.vignetteOffset=1),void 0===n.vignetteDarkness&&(n.vignetteDarkness=1);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"FilmMaterial",uniforms:{tDiffuse:new i.Uniform(null),time:new i.Uniform(0),noiseIntensity:new i.Uniform(n.noiseIntensity),scanlineIntensity:new i.Uniform(n.scanlineIntensity),scanlineCount:new i.Uniform(0),luminanceCoefficients:new i.Uniform(new i.Vector3(.2126,.7152,.0722)),greyscaleIntensity:new i.Uniform(n.greyscaleIntensity),sepiaIntensity:new i.Uniform(n.sepiaIntensity),vignetteOffset:new i.Uniform(n.vignetteOffset),vignetteDarkness:new i.Uniform(n.vignetteDarkness)},fragmentShader:Ue,vertexShader:Ne,depthWrite:!1,depthTest:!1}));return n.greyscale&&(e.defines.GREYSCALE="1"),n.sepia&&(e.defines.SEPIA="1"),n.vignette&&(e.defines.VIGNETTE="1"),n.eskil&&(e.defines.ESKIL="1"),n.screenMode&&(e.defines.SCREEN_MODE="1"),n.noise&&(e.defines.NOISE="1"),n.scanlines&&(e.defines.SCANLINES="1"),e}return f(t,n),t}(i.ShaderMaterial),Be="uniform sampler2D tDiffuse;\r\nuniform sampler2D tPerturb;\r\n\r\nuniform bool active;\r\n\r\nuniform float amount;\r\nuniform float angle;\r\nuniform float seed;\r\nuniform float seedX;\r\nuniform float seedY;\r\nuniform float distortionX;\r\nuniform float distortionY;\r\nuniform float colS;\r\n\r\nvarying vec2 vUv;\r\n\r\nfloat rand(vec2 tc) {\r\n\r\n\tconst float a = 12.9898;\r\n\tconst float b = 78.233;\r\n\tconst float c = 43758.5453;\r\n\r\n\tfloat dt = dot(tc, vec2(a, b));\r\n\tfloat sn = mod(dt, 3.14);\r\n\r\n\treturn fract(sin(sn) * c);\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec2 coord = vUv;\r\n\r\n\tfloat xs, ys;\r\n\tvec4 normal;\r\n\r\n\tvec2 offset;\r\n\tvec4 cr, cga, cb;\r\n\tvec4 snow, color;\r\n\r\n\tfloat sx, sy;\r\n\r\n\tif(active) {\r\n\r\n\t\txs = floor(gl_FragCoord.x / 0.5);\r\n\t\tys = floor(gl_FragCoord.y / 0.5);\r\n\r\n\t\tnormal = texture2D(tPerturb, coord * seed * seed);\r\n\r\n\t\tif(coord.y < distortionX + colS && coord.y > distortionX - colS * seed) {\r\n\r\n\t\t\tsx = clamp(ceil(seedX), 0.0, 1.0);\r\n\t\t\tcoord.y = sx * (1.0 - (coord.y + distortionY)) + (1.0 - sx) * distortionY;\r\n\r\n\t\t}\r\n\r\n\t\tif(coord.x < distortionY + colS && coord.x > distortionY - colS * seed) {\r\n\r\n\t\t\tsy = clamp(ceil(seedY), 0.0, 1.0);\r\n\t\t\tcoord.x = sy * distortionX + (1.0 - sy) * (1.0 - (coord.x + distortionX));\r\n\r\n\t\t}\r\n\r\n\t\tcoord.x += normal.x * seedX * (seed / 5.0);\r\n\t\tcoord.y += normal.y * seedY * (seed / 5.0);\r\n\r\n\t\toffset = amount * vec2(cos(angle), sin(angle));\r\n\r\n\t\tcr = texture2D(tDiffuse, coord + offset);\r\n\t\tcga = texture2D(tDiffuse, coord);\r\n\t\tcb = texture2D(tDiffuse, coord - offset);\r\n\r\n\t\tcolor = vec4(cr.r, cga.g, cb.b, cga.a);\r\n\t\tsnow = 200.0 * amount * vec4(rand(vec2(xs * seed, ys * seed * 50.0)) * 0.2);\r\n\t\tcolor += snow;\r\n\r\n\t} else {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv);\r\n\r\n\t}\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",Fe="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",ze=function(n){function t(){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"GlitchMaterial",uniforms:{tDiffuse:new i.Uniform(null),tPerturb:new i.Uniform(null),active:new i.Uniform(1),amount:new i.Uniform(.8),angle:new i.Uniform(.02),seed:new i.Uniform(.02),seedX:new i.Uniform(.02),seedY:new i.Uniform(.02),distortionX:new i.Uniform(.5),distortionY:new i.Uniform(.6),colS:new i.Uniform(.05)},fragmentShader:Be,vertexShader:Fe,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),Ge="uniform sampler2D tDiffuse;\r\nuniform vec3 lightPosition;\r\n\r\nuniform float exposure;\r\nuniform float decay;\r\nuniform float density;\r\nuniform float weight;\r\nuniform float clampMax;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec2 texCoord = vUv;\r\n\r\n\t// Calculate vector from pixel to light source in screen space.\r\n\tvec2 deltaTexCoord = texCoord - lightPosition.st;\r\n\tdeltaTexCoord *= 1.0 / NUM_SAMPLES_FLOAT * density;\r\n\r\n\t// A decreasing illumination factor.\r\n\tfloat illuminationDecay = 1.0;\r\n\r\n\tvec4 sample;\r\n\tvec4 color = vec4(0.0);\r\n\r\n\t// Estimate the probability of occlusion at each pixel by summing samples along a ray to the light source.\r\n\tfor(int i = 0; i < NUM_SAMPLES_INT; ++i) {\r\n\r\n\t\ttexCoord -= deltaTexCoord;\r\n\t\tsample = texture2D(tDiffuse, texCoord);\r\n\r\n\t\t// Apply sample attenuation scale/decay factors.\r\n\t\tsample *= illuminationDecay * weight;\r\n\r\n\t\tcolor += sample;\r\n\r\n\t\t// Update exponential decay factor.\r\n\t\tilluminationDecay *= decay;\r\n\r\n\t}\r\n\r\n\tgl_FragColor = clamp(color * exposure, 0.0, clampMax);\r\n\r\n}\r\n",ke="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",je=function(n){function t(){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"GodRaysMaterial",defines:{NUM_SAMPLES_FLOAT:"60.0",NUM_SAMPLES_INT:"60"},uniforms:{tDiffuse:new i.Uniform(null),lightPosition:new i.Uniform(null),exposure:new i.Uniform(.6),decay:new i.Uniform(.93),density:new i.Uniform(.96),weight:new i.Uniform(.4),clampMax:new i.Uniform(1)},fragmentShader:Ge,vertexShader:ke,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),He="uniform sampler2D tDiffuse;\r\nuniform float distinction;\r\nuniform vec2 range;\r\nuniform vec3 luminanceCoefficients;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tfloat v = dot(texel.rgb, luminanceCoefficients);\r\n\r\n\t#ifdef RANGE\r\n\r\n\t\tfloat low = step(range.x, v);\r\n\t\tfloat high = step(v, range.y);\r\n\r\n\t\t// Apply the mask.\r\n\t\tv *= low * high;\r\n\r\n\t#endif\r\n\r\n\tv = pow(abs(v), distinction);\r\n\r\n\t#ifdef COLOR\r\n\r\n\t\tgl_FragColor = vec4(texel.rgb * v, texel.a);\r\n\r\n\t#else\r\n\r\n\t\tgl_FragColor = vec4(v, v, v, texel.a);\r\n\r\n\t#endif\r\n\r\n}\r\n",Ve="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",We=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;u(this,t);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"LuminosityMaterial",uniforms:{tDiffuse:new i.Uniform(null),distinction:new i.Uniform(1),range:new i.Uniform(null!==e?e:new i.Vector2),luminanceCoefficients:new i.Uniform(new i.Vector3(.2126,.7152,.0722))},fragmentShader:He,vertexShader:Ve}));return n&&(r.defines.COLOR="1"),null!==e&&(r.defines.RANGE="1"),r}return f(t,n),t}(i.ShaderMaterial),Xe="uniform sampler2D tDiffuse;\r\nuniform float granularity;\r\nuniform float dx;\r\nuniform float dy;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel;\r\n\r\n\tif(granularity > 0.0) {\r\n\r\n\t\tvec2 coord = vec2(\r\n\t\t\tdx * (floor(vUv.x / dx) + 0.5),\r\n\t\t\tdy * (floor(vUv.y / dy) + 0.5)\r\n\t\t);\r\n\r\n\t\ttexel = texture2D(tDiffuse, coord);\r\n\r\n\t} else {\r\n\r\n\t\ttexel = texture2D(tDiffuse, vUv);\r\n\r\n\t}\r\n\r\n\tgl_FragColor = texel;\r\n\r\n}\r\n",qe="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",Ye=function(n){function t(){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"PixelationMaterial",uniforms:{tDiffuse:new i.Uniform(null),granularity:new i.Uniform(1),resolution:new i.Uniform(new i.Vector2(1,1)),dx:new i.Uniform(1),dy:new i.Uniform(1)},fragmentShader:Xe,vertexShader:qe,depthWrite:!1,depthTest:!1}))}return f(t,n),h(t,[{key:"setResolution",value:function(n,t){this.uniforms.resolution.value.set(n,t),this.granularity=this.granularity}},{key:"granularity",get:function(){return this.uniforms.granularity.value},set:function(n){var t=this.uniforms,e=t.resolution.value;t.granularity.value=n,t.dx.value=n/e.x,t.dy.value=n/e.y}}]),t}(i.ShaderMaterial),Ze="#include <common>\r\n\r\nuniform sampler2D tDiffuse;\r\nuniform vec2 center;\r\nuniform float aspect;\r\nuniform float waveSize;\r\nuniform float radius;\r\nuniform float maxRadius;\r\nuniform float amplitude;\r\n\r\nvarying vec2 vUv;\r\nvarying float vSize;\r\n\r\nvoid main() {\r\n\r\n\tvec2 aspectCorrection = vec2(aspect, 1.0);\r\n\r\n\tvec2 difference = vUv * aspectCorrection - center * aspectCorrection;\r\n\tfloat distance = sqrt(dot(difference, difference)) * vSize;\r\n\r\n\tvec2 displacement = vec2(0.0);\r\n\r\n\tif(distance > radius) {\r\n\r\n\t\tif(distance < radius + waveSize) {\r\n\r\n\t\t\tfloat angle = (distance - radius) * PI2 / waveSize;\r\n\t\t\tfloat cosSin = (1.0 - cos(angle)) * 0.5;\r\n\r\n\t\t\tfloat extent = maxRadius + waveSize;\r\n\t\t\tfloat decay = max(extent - distance * distance, 0.0) / extent;\r\n\r\n\t\t\tdisplacement = ((cosSin * amplitude * difference) / distance) * decay;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tgl_FragColor = texture2D(tDiffuse, vUv - displacement);\r\n\r\n}\r\n",Je="uniform float size;\r\nuniform float scale;\r\nuniform float cameraDistance;\r\n\r\nvarying vec2 vUv;\r\nvarying float vSize;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tvSize = (0.1 * cameraDistance) / size;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",Ke=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return u(this,t),void 0===n.maxRadius&&(n.maxRadius=1),void 0===n.waveSize&&(n.waveSize=.2),void 0===n.amplitude&&(n.amplitude=.05),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"ShockWaveMaterial",uniforms:{tDiffuse:new i.Uniform(null),center:new i.Uniform(new i.Vector2(.5,.5)),aspect:new i.Uniform(1),cameraDistance:new i.Uniform(1),size:new i.Uniform(1),radius:new i.Uniform(-n.waveSize),maxRadius:new i.Uniform(n.maxRadius),waveSize:new i.Uniform(n.waveSize),amplitude:new i.Uniform(n.amplitude)},fragmentShader:Ze,vertexShader:Je,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),Qe="uniform sampler2D tDiffuse;\r\nuniform sampler2D tWeights;\r\n\r\nuniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset;\r\n\r\nvoid main() {\r\n\r\n\t// Fetch the blending weights for current pixel.\r\n\tvec4 a;\r\n\ta.xz = texture2D(tWeights, vUv).xz;\r\n\ta.y = texture2D(tWeights, vOffset.zw).g;\r\n\ta.w = texture2D(tWeights, vOffset.xy).a;\r\n\r\n\tvec4 color;\r\n\r\n\t// Check if there is any blending weight with a value greater than 0.0.\r\n\tif(dot(a, vec4(1.0)) < 1e-5) {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv, 0.0);\r\n\r\n\t} else {\r\n\r\n\t\t/* Up to four lines can be crossing a pixel (one through each edge). We favor\r\n\t\t * blending by choosing the line with the maximum weight for each direction.\r\n\t\t */\r\n\r\n\t\tvec2 offset;\r\n\t\toffset.x = a.a > a.b ? a.a : -a.b; // Left vs. right.\r\n\t\toffset.y = a.g > a.r ? -a.g : a.r; // Top vs. bottom (changed signs).\r\n\r\n\t\t// Then we go in the direction that has the maximum weight (horizontal vs. vertical).\r\n\t\tif(abs(offset.x) > abs(offset.y)) {\r\n\r\n\t\t\toffset.y = 0.0;\r\n\r\n\t\t} else {\r\n\r\n\t\t\toffset.x = 0.0;\r\n\r\n\t\t}\r\n\r\n\t\t// Fetch the opposite color and lerp by hand.\r\n\t\tcolor = texture2D(tDiffuse, vUv, 0.0);\r\n\t\tvec2 coord = vUv + sign(offset) * texelSize;\r\n\t\tvec4 oppositeColor = texture2D(tDiffuse, coord, 0.0);\r\n\t\tfloat s = abs(offset.x) > abs(offset.y) ? abs(offset.x) : abs(offset.y);\r\n\r\n\t\t// Gamma correction.\r\n\t\tcolor.rgb = pow(abs(color.rgb), vec3(2.2));\r\n\t\toppositeColor.rgb = pow(abs(oppositeColor.rgb), vec3(2.2));\r\n\t\tcolor = mix(color, oppositeColor, s);\r\n\t\tcolor.rgb = pow(abs(color.rgb), vec3(1.0 / 2.2));\r\n\r\n\t}\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",$e="uniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\r\n\tvOffset = uv.xyxy + texelSize.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // Changed sign in W component.\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",nr=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new i.Vector2;return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"SMAABlendMaterial",uniforms:{tDiffuse:new i.Uniform(null),tWeights:new i.Uniform(null),texelSize:new i.Uniform(n)},fragmentShader:Qe,vertexShader:$e,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),tr="uniform sampler2D tDiffuse;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\n\r\nvoid main() {\r\n\r\n\tconst vec2 THRESHOLD = vec2(EDGE_THRESHOLD);\r\n\r\n\t// Calculate color deltas.\r\n\tvec4 delta;\r\n\tvec3 c = texture2D(tDiffuse, vUv).rgb;\r\n\r\n\tvec3 cLeft = texture2D(tDiffuse, vOffset[0].xy).rgb;\r\n\tvec3 t = abs(c - cLeft);\r\n\tdelta.x = max(max(t.r, t.g), t.b);\r\n\r\n\tvec3 cTop = texture2D(tDiffuse, vOffset[0].zw).rgb;\r\n\tt = abs(c - cTop);\r\n\tdelta.y = max(max(t.r, t.g), t.b);\r\n\r\n\t// We do the usual threshold.\r\n\tvec2 edges = step(THRESHOLD, delta.xy);\r\n\r\n\t// Then discard if there is no edge.\r\n\tif(dot(edges, vec2(1.0)) == 0.0) {\r\n\r\n\t\tdiscard;\r\n\r\n\t}\r\n\r\n\t// Calculate right and bottom deltas.\r\n\tvec3 cRight = texture2D(tDiffuse, vOffset[1].xy).rgb;\r\n\tt = abs(c - cRight);\r\n\tdelta.z = max(max(t.r, t.g), t.b);\r\n\r\n\tvec3 cBottom = texture2D(tDiffuse, vOffset[1].zw).rgb;\r\n\tt = abs(c - cBottom);\r\n\tdelta.w = max(max(t.r, t.g), t.b);\r\n\r\n\t// Calculate the maximum delta in the direct neighborhood.\r\n\tfloat maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w);\r\n\r\n\t// Calculate left-left and top-top deltas.\r\n\tvec3 cLeftLeft = texture2D(tDiffuse, vOffset[2].xy).rgb;\r\n\tt = abs(c - cLeftLeft);\r\n\tdelta.z = max(max(t.r, t.g), t.b);\r\n\r\n\tvec3 cTopTop = texture2D(tDiffuse, vOffset[2].zw).rgb;\r\n\tt = abs(c - cTopTop);\r\n\tdelta.w = max(max(t.r, t.g), t.b);\r\n\r\n\t// Calculate the final maximum delta.\r\n\tmaxDelta = max(max(maxDelta, delta.z), delta.w);\r\n\r\n\t// Local contrast adaptation in action.\r\n\tedges.xy *= step(0.5 * maxDelta, delta.xy);\r\n\r\n\tgl_FragColor = vec4(edges, 0.0, 0.0);\r\n\r\n}\r\n",er="uniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\r\n\tvOffset[0] = uv.xyxy + texelSize.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // Changed sign in W component.\r\n\tvOffset[1] = uv.xyxy + texelSize.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // Changed sign in W component.\r\n\tvOffset[2] = uv.xyxy + texelSize.xyxy * vec4(-2.0, 0.0, 0.0, 2.0); // Changed sign in W component.\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",rr=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new i.Vector2;return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"SMAAColorEdgesMaterial",defines:{EDGE_THRESHOLD:"0.1"},uniforms:{tDiffuse:new i.Uniform(null),texelSize:new i.Uniform(n)},fragmentShader:tr,vertexShader:er,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),ir="data:image/png;base64,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",or="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII=",ar="#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + float(offset) * texelSize, 0.0)\r\n\r\nuniform sampler2D tDiffuse;\r\nuniform sampler2D tArea;\r\nuniform sampler2D tSearch;\r\n\r\nuniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\nvarying vec2 vPixCoord;\r\n\r\nvec2 round(vec2 x) {\r\n\r\n\treturn sign(x) * floor(abs(x) + 0.5);\r\n\r\n}\r\n\r\nfloat searchLength(vec2 e, float bias, float scale) {\r\n\r\n\t// Not required if tSearch accesses are set to point.\r\n\t// const vec2 SEARCH_TEX_PIXEL_SIZE = 1.0 / vec2(66.0, 33.0);\r\n\t// e = vec2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE + e * vec2(scale, 1.0) * vec2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;\r\n\r\n\te.r = bias + e.r * scale;\r\n\r\n\treturn 255.0 * texture2D(tSearch, e, 0.0).r;\r\n\r\n}\r\n\r\nfloat searchXLeft(vec2 texCoord, float end) {\r\n\r\n\t/* @PSEUDO_GATHER4\r\n\t * This texCoord has been offset by (-0.25, -0.125) in the vertex shader to\r\n\t * sample between edge, thus fetching four edges in a row.\r\n\t * Sampling with different offsets in each direction allows to disambiguate\r\n\t * which edges are active from the four fetched ones.\r\n\t */\r\n\r\n\tvec2 e = vec2(0.0, 1.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord -= vec2(2.0, 0.0) * texelSize;\r\n\r\n\t\tif(!(texCoord.x > end && e.g > 0.8281 && e.r == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\t// Correct the previously applied offset (-0.25, -0.125).\r\n\ttexCoord.x += 0.25 * texelSize.x;\r\n\r\n\t// The searches are biased by 1, so adjust the coords accordingly.\r\n\ttexCoord.x += texelSize.x;\r\n\r\n\t// Disambiguate the length added by the last step.\r\n\ttexCoord.x += 2.0 * texelSize.x; // Undo last step.\r\n\ttexCoord.x -= texelSize.x * searchLength(e, 0.0, 0.5);\r\n\r\n\treturn texCoord.x;\r\n\r\n}\r\n\r\nfloat searchXRight(vec2 texCoord, float end) {\r\n\r\n\tvec2 e = vec2(0.0, 1.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord += vec2(2.0, 0.0) * texelSize;\r\n\r\n\t\tif(!(texCoord.x < end && e.g > 0.8281 && e.r == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\ttexCoord.x -= 0.25 * texelSize.x;\r\n\ttexCoord.x -= texelSize.x;\r\n\ttexCoord.x -= 2.0 * texelSize.x;\r\n\ttexCoord.x += texelSize.x * searchLength(e, 0.5, 0.5);\r\n\r\n\treturn texCoord.x;\r\n\r\n}\r\n\r\nfloat searchYUp(vec2 texCoord, float end) {\r\n\r\n\tvec2 e = vec2(1.0, 0.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord += vec2(0.0, 2.0) * texelSize; // Changed sign.\r\n\r\n\t\tif(!(texCoord.y > end && e.r > 0.8281 && e.g == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\ttexCoord.y -= 0.25 * texelSize.y; // Changed sign.\r\n\ttexCoord.y -= texelSize.y; // Changed sign.\r\n\ttexCoord.y -= 2.0 * texelSize.y; // Changed sign.\r\n\ttexCoord.y += texelSize.y * searchLength(e.gr, 0.0, 0.5); // Changed sign.\r\n\r\n\treturn texCoord.y;\r\n\r\n}\r\n\r\nfloat searchYDown(vec2 texCoord, float end) {\r\n\r\n\tvec2 e = vec2(1.0, 0.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i ) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord -= vec2(0.0, 2.0) * texelSize; // Changed sign.\r\n\r\n\t\tif(!(texCoord.y < end && e.r > 0.8281 && e.g == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\ttexCoord.y += 0.25 * texelSize.y; // Changed sign.\r\n\ttexCoord.y += texelSize.y; // Changed sign.\r\n\ttexCoord.y += 2.0 * texelSize.y; // Changed sign.\r\n\ttexCoord.y -= texelSize.y * searchLength(e.gr, 0.5, 0.5); // Changed sign.\r\n\r\n\treturn texCoord.y;\r\n\r\n}\r\n\r\nvec2 area(vec2 dist, float e1, float e2, float offset) {\r\n\r\n\t// Rounding prevents precision errors of bilinear filtering.\r\n\tvec2 texCoord = SMAA_AREATEX_MAX_DISTANCE * round(4.0 * vec2(e1, e2)) + dist;\r\n\r\n\t// Scale and bias for texel space translation.\r\n\ttexCoord = SMAA_AREATEX_PIXEL_SIZE * texCoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);\r\n\r\n\t// Move to proper place, according to the subpixel offset.\r\n\ttexCoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\r\n\r\n\treturn texture2D(tArea, texCoord, 0.0).rg;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec4 weights = vec4(0.0);\r\n\tvec4 subsampleIndices = vec4(0.0);\r\n\tvec2 e = texture2D(tDiffuse, vUv).rg;\r\n\r\n\tif(e.g > 0.0) {\r\n\r\n\t\t// Edge at north.\r\n\t\tvec2 d;\r\n\r\n\t\t// Find the distance to the left.\r\n\t\tvec2 coords;\r\n\t\tcoords.x = searchXLeft(vOffset[0].xy, vOffset[2].x);\r\n\t\tcoords.y = vOffset[1].y; // vOffset[1].y = vUv.y - 0.25 * texelSize.y (@CROSSING_OFFSET)\r\n\t\td.x = coords.x;\r\n\r\n\t\t/* Now fetch the left crossing edges, two at a time using bilinear filtering.\r\n\t\tSampling at -0.25 (see @CROSSING_OFFSET) enables to discern what value each edge has. */\r\n\r\n\t\tfloat e1 = texture2D(tDiffuse, coords, 0.0).r;\r\n\r\n\t\t// Find the distance to the right.\r\n\t\tcoords.x = searchXRight(vOffset[0].zw, vOffset[2].y);\r\n\t\td.y = coords.x;\r\n\r\n\t\t// Translate distances to pixel units for better interleave arithmetic and memory accesses.\r\n\t\td = d / texelSize.x - vPixCoord.x;\r\n\r\n\t\t// The area below needs a sqrt, as the areas texture is compressed quadratically.\r\n\t\tvec2 sqrtD = sqrt(abs(d));\r\n\r\n\t\t// Fetch the right crossing edges.\r\n\t\tcoords.y -= texelSize.y; // WebGL port note: Added.\r\n\t\tfloat e2 = sampleLevelZeroOffset(tDiffuse, coords, ivec2(1, 0)).r;\r\n\r\n\t\t// Pattern recognised, now get the actual area.\r\n\t\tweights.rg = area(sqrtD, e1, e2, subsampleIndices.y);\r\n\r\n\t}\r\n\r\n\tif(e.r > 0.0) {\r\n\r\n\t\t// Edge at west.\r\n\t\tvec2 d;\r\n\r\n\t\t// Find the distance to the top.\r\n\t\tvec2 coords;\r\n\r\n\t\tcoords.y = searchYUp(vOffset[1].xy, vOffset[2].z);\r\n\t\tcoords.x = vOffset[0].x; // vOffset[1].x = vUv.x - 0.25 * texelSize.x;\r\n\t\td.x = coords.y;\r\n\r\n\t\t// Fetch the top crossing edges.\r\n\t\tfloat e1 = texture2D(tDiffuse, coords, 0.0).g;\r\n\r\n\t\t// Find the distance to the bottom.\r\n\t\tcoords.y = searchYDown(vOffset[1].zw, vOffset[2].w);\r\n\t\td.y = coords.y;\r\n\r\n\t\t// Distances in pixel units.\r\n\t\td = d / texelSize.y - vPixCoord.y;\r\n\r\n\t\t// The area below needs a sqrt, as the areas texture is compressed quadratically.\r\n\t\tvec2 sqrtD = sqrt(abs(d));\r\n\r\n\t\t// Fetch the bottom crossing edges.\r\n\t\tcoords.y -= texelSize.y; // WebGL port note: Added.\r\n\t\tfloat e2 = sampleLevelZeroOffset(tDiffuse, coords, ivec2(0, 1)).g;\r\n\r\n\t\t// Get the area for this direction.\r\n\t\tweights.ba = area(sqrtD, e1, e2, subsampleIndices.x);\r\n\r\n\t}\r\n\r\n\tgl_FragColor = weights;\r\n\r\n}\r\n",lr="uniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\nvarying vec2 vPixCoord;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\r\n\tvPixCoord = uv / texelSize;\r\n\r\n\t// Offsets for the searches (see @PSEUDO_GATHER4).\r\n\tvOffset[0] = uv.xyxy + texelSize.xyxy * vec4(-0.25, 0.125, 1.25, 0.125); // Changed sign in Y and W components.\r\n\tvOffset[1] = uv.xyxy + texelSize.xyxy * vec4(-0.125, 0.25, -0.125, -1.25); //Changed sign in Y and W components.\r\n\r\n\t// This indicates the ends of the loops.\r\n\tvOffset[2] = vec4(vOffset[0].xz, vOffset[1].yw) + vec4(-2.0, 2.0, -2.0, 2.0) * texelSize.xxyy * SMAA_MAX_SEARCH_STEPS_FLOAT;\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",sr=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new i.Vector2;u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"SMAAWeightsMaterial",defines:{SMAA_MAX_SEARCH_STEPS_INT:"8",SMAA_MAX_SEARCH_STEPS_FLOAT:"8.0",SMAA_AREATEX_MAX_DISTANCE:"16.0",SMAA_AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",SMAA_AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)"},uniforms:{tDiffuse:new i.Uniform(null),tArea:new i.Uniform(null),tSearch:new i.Uniform(null),texelSize:new i.Uniform(n)},fragmentShader:ar,vertexShader:lr,depthWrite:!1,depthTest:!1}));return e.areaImage=ir,e.searchImage=or,e}return f(t,n),t}(i.ShaderMaterial),cr="uniform sampler2D tDiffuse;\r\nuniform float middleGrey;\r\nuniform float maxLuminance;\r\nuniform vec3 luminanceCoefficients;\r\n\r\n#ifdef ADAPTED_LUMINANCE\r\n\r\n\tuniform sampler2D luminanceMap;\r\n\r\n#else\r\n\r\n\tuniform float averageLuminance;\r\n\r\n#endif\r\n\r\nvarying vec2 vUv;\r\n\r\nvec3 toneMap(vec3 c) {\r\n\r\n\t#ifdef ADAPTED_LUMINANCE\r\n\r\n\t\t// Get the calculated average luminance by sampling the center.\r\n\t\tfloat lumAvg = texture2D(luminanceMap, vec2(0.5)).r;\r\n\r\n\t#else\r\n\r\n\t\tfloat lumAvg = averageLuminance;\r\n\r\n\t#endif\r\n\r\n\t// Calculate the luminance of the current pixel.\r\n\tfloat lumPixel = dot(c, luminanceCoefficients);\r\n\r\n\t// Apply the modified operator (Reinhard Eq. 4).\r\n\tfloat lumScaled = (lumPixel * middleGrey) / lumAvg;\r\n\r\n\tfloat lumCompressed = (lumScaled * (1.0 + (lumScaled / (maxLuminance * maxLuminance)))) / (1.0 + lumScaled);\r\n\r\n\treturn lumCompressed * c;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tgl_FragColor = vec4(toneMap(texel.rgb), texel.a);\r\n\r\n}\r\n",ur="varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",hr=function(n){function t(){return u(this,t),p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,{type:"ToneMappingMaterial",uniforms:{tDiffuse:new i.Uniform(null),luminanceMap:new i.Uniform(null),averageLuminance:new i.Uniform(1),luminanceCoefficients:new i.Uniform(new i.Vector3(.2126,.7152,.0722)),maxLuminance:new i.Uniform(16),middleGrey:new i.Uniform(.6)},fragmentShader:cr,vertexShader:ur,depthWrite:!1,depthTest:!1}))}return f(t,n),t}(i.ShaderMaterial),vr=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new i.Scene,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new i.OrthographicCamera(-1,1,1,-1,0,1),r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new i.Mesh(new i.PlaneBufferGeometry(2,2),null);u(this,n),this.name="Pass",this.scene=t,this.camera=e,this.quad=r,null!==this.quad&&(this.quad.frustumCulled=!1,null!==this.scene&&this.scene.add(this.quad)),this.needsSwap=!1,this.enabled=!0,this.renderToScreen=!1}return h(n,[{key:"render",value:function(n,t,e,r,i){throw new Error("Render method not implemented!")}},{key:"setSize",value:function(n,t){}},{key:"initialise",value:function(n,t){}},{key:"dispose",value:function(){var n=Object.keys(this),t=void 0,e=!0,r=!1,i=void 0;try{for(var o,a=n[Symbol.iterator]();!(e=(o=a.next()).done);e=!0)null!==this[t=o.value]&&"function"==typeof this[t].dispose&&(this[t].dispose(),this[t]=null)}catch(n){r=!0,i=n}finally{try{!e&&a.return&&a.return()}finally{if(r)throw i}}}}]),n}(),dr=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="BlurPass",e.needsSwap=!0,e.renderTargetX=new i.WebGLRenderTarget(1,1,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),e.renderTargetX.texture.name="Blur.TargetX",e.renderTargetX.texture.generateMipmaps=!1,e.renderTargetY=e.renderTargetX.clone(),e.renderTargetY.texture.name="Blur.TargetY",e.resolutionScale=void 0!==n.resolutionScale?n.resolutionScale:.5,e.convolutionMaterial=new Me,e.kernelSize=n.kernelSize,e.quad.material=e.convolutionMaterial,e}return f(t,vr),h(t,[{key:"render",value:function(n,t,e){var r,i=this.scene,o=this.camera,a=this.renderTargetX,l=this.renderTargetY,s=this.convolutionMaterial,c=s.uniforms,u=s.getKernel(),h=t,v=void 0,d=void 0;for(d=0,r=u.length-1;d<r;++d)v=d%2==0?a:l,c.kernel.value=u[d],c.tDiffuse.value=h.texture,n.render(i,o,v),h=v;c.kernel.value=u[d],c.tDiffuse.value=h.texture,n.render(i,o,this.renderToScreen?null:e)}},{key:"initialise",value:function(n,t){t||(this.renderTargetX.texture.format=i.RGBFormat,this.renderTargetY.texture.format=i.RGBFormat)}},{key:"setSize",value:function(n,t){n=Math.max(1,Math.floor(n*this.resolutionScale)),t=Math.max(1,Math.floor(t*this.resolutionScale)),this.renderTargetX.setSize(n,t),this.renderTargetY.setSize(n,t),this.convolutionMaterial.setTexelSize(1/n,1/t)}},{key:"width",get:function(){return this.renderTargetX.width}},{key:"height",get:function(){return this.renderTargetX.height}},{key:"kernelSize",get:function(){return this.convolutionMaterial.kernelSize},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ee.LARGE;this.convolutionMaterial.kernelSize=n}}]),t}(),fr=(function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="BloomPass",e.needsSwap=!0,e.blurPass=new dr(n),e.renderTarget=new i.WebGLRenderTarget(1,1,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),e.renderTarget.texture.name="Bloom.Target",e.renderTarget.texture.generateMipmaps=!1,e.combineMaterial=new xe(void 0===n.screenMode||n.screenMode),e.intensity=n.intensity,e.luminosityMaterial=new We(!0),e.distinction=n.distinction,e}f(t,vr),h(t,[{key:"render",value:function(n,t,e){var r=this.quad,i=this.scene,o=this.camera,a=this.blurPass,l=this.luminosityMaterial,s=this.combineMaterial,c=this.renderTarget;r.material=l,l.uniforms.tDiffuse.value=t.texture,n.render(i,o,c),a.render(n,c,c),r.material=s,s.uniforms.texture1.value=t.texture,s.uniforms.texture2.value=c.texture,n.render(i,o,this.renderToScreen?null:e)}},{key:"initialise",value:function(n,t){this.blurPass.initialise(n,t),t||(this.renderTarget.texture.format=i.RGBFormat)}},{key:"setSize",value:function(n,t){this.blurPass.setSize(n,t),n=this.blurPass.width,t=this.blurPass.height,this.renderTarget.setSize(n,t)}},{key:"resolutionScale",get:function(){return this.blurPass.resolutionScale},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;this.blurPass.resolutionScale=n}},{key:"kernelSize",get:function(){return this.blurPass.kernelSize},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ee.LARGE;this.blurPass.kernelSize=n}},{key:"intensity",get:function(){return this.combineMaterial.uniforms.opacity2.value},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.combineMaterial.uniforms.opacity2.value=n}},{key:"distinction",get:function(){return this.luminosityMaterial.uniforms.distinction.value},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.luminosityMaterial.uniforms.distinction.value=n}}])}(),function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};u(this,t);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.name="BokehPass",r.needsSwap=!0,r.bokehMaterial=new de(n,e),r.quad.material=r.bokehMaterial,r}f(t,vr),h(t,[{key:"render",value:function(n,t,e){this.bokehMaterial.uniforms.tDiffuse.value=t.texture,this.bokehMaterial.uniforms.tDepth.value=t.depthTexture,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(n,t){this.bokehMaterial.uniforms.aspect.value=n/t}}])}(),function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};u(this,t);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.name="Bokeh2Pass",r.needsSwap=!0,r.bokehMaterial=new me(n,e),r.quad.material=r.bokehMaterial,r}f(t,vr),h(t,[{key:"render",value:function(n,t,e){this.bokehMaterial.uniforms.tDiffuse.value=t.texture,this.bokehMaterial.uniforms.tDepth.value=t.depthTexture,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(n,t){this.bokehMaterial.setTexelSize(1/n,1/t)}}])}(),function(n){function t(){u(this,t);var n=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,null,null,null));return n.name="ClearMaskPass",n}return f(t,vr),h(t,[{key:"render",value:function(n){n.state.buffers.stencil.setTest(!1)}}]),t}()),pr=new i.Color,mr=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,null,null,null));return e.name="ClearPass",e.clearColor=void 0!==n.clearColor?n.clearColor:null,e.clearAlpha=void 0!==n.clearAlpha?n.clearAlpha:0,e}return f(t,vr),h(t,[{key:"render",value:function(n,t){var e=this.clearColor,r=void 0;null!==e&&(pr.copy(n.getClearColor()),r=n.getClearAlpha(),n.setClearColor(e,this.clearAlpha)),n.setRenderTarget(this.renderToScreen?null:t),n.clear(),null!==e&&n.setClearColor(pr,r)}}]),t}();(function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="DotScreenPass",e.needsSwap=!0,e.material=new De(n.average),void 0!==n.angle&&(e.material.uniforms.angle.value=n.angle),void 0!==n.scale&&(e.material.uniforms.scale.value=n.scale),void 0!==n.intensity&&(e.material.uniforms.intensity.value=n.intensity),e.quad.material=e.material,e}f(t,vr),h(t,[{key:"render",value:function(n,t,e){this.material.uniforms.tDiffuse.value=t.texture,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(n,t){n=Math.max(1,n),t=Math.max(1,t),this.material.uniforms.offsetRepeat.value.z=n,this.material.uniforms.offsetRepeat.value.w=t}}])})(),function(n){function t(n){u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="DepthPass",e.needsSwap=!0,e.depthMaterial=new Ce(n),e.quad.material=e.depthMaterial,e}f(t,vr),h(t,[{key:"render",value:function(n,t,e){this.depthMaterial.uniforms.tDepth.value=t.depthTexture,n.render(this.scene,this.camera,this.renderToScreen?null:e)}}])}(),function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="FilmPass",e.needsSwap=!0,e.material=new Ie(n),e.quad.material=e.material,e.scanlineDensity=void 0===n.scanlineDensity?1.25:n.scanlineDensity,e}f(t,vr),h(t,[{key:"render",value:function(n,t,e,r){this.material.uniforms.tDiffuse.value=t.texture,this.material.uniforms.time.value+=r,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(n,t){this.material.uniforms.scanlineCount.value=Math.round(t*this.scanlineDensity)}}])}();function gr(n,t){return n+Math.floor(Math.random()*(t-n+1))}function yr(n,t){return n+Math.random()*(t-n)}!function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="GlitchPass",e.needsSwap=!0,e.material=new ze,e.quad.material=e.material,e.texture=null,e.perturbMap=void 0!==n.perturbMap?n.perturbMap:e.generatePerturbMap(n.dtSize),e.perturbMap.name="Glitch.Perturbation",e.perturbMap.generateMipmaps=!1,e.mode=xr.SPORADIC,e.counter=0,e.breakPoint=gr(120,240),e}f(t,vr),h(t,[{key:"generatePerturbMap",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:64,t=n*n,e=new Float32Array(3*t),r=this.perturbMap,o=void 0,a=void 0;for(o=0;o<t;++o)a=Math.random(),e[3*o]=a,e[3*o+1]=a,e[3*o+2]=a;return null!==r&&r.dispose(),(r=new i.DataTexture(e,n,n,i.RGBFormat,i.FloatType)).needsUpdate=!0,this.perturbMap=r,r}},{key:"render",value:function(n,t,e){var r=this.mode,i=this.counter,o=this.breakPoint,a=this.material.uniforms;a.tDiffuse.value=t.texture,a.seed.value=Math.random(),a.active.value=!0,i%o==0||r===xr.CONSTANT_WILD?(a.amount.value=Math.random()/30,a.angle.value=yr(-Math.PI,Math.PI),a.seedX.value=yr(-1,1),a.seedY.value=yr(-1,1),a.distortionX.value=yr(0,1),a.distortionY.value=yr(0,1),this.breakPoint=gr(120,240),this.counter=0):i%o<o/5||r===xr.CONSTANT_MILD?(a.amount.value=Math.random()/90,a.angle.value=yr(-Math.PI,Math.PI),a.distortionX.value=yr(0,1),a.distortionY.value=yr(0,1),a.seedX.value=yr(-.3,.3),a.seedY.value=yr(-.3,.3)):a.active.value=!1,++this.counter,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"perturbMap",get:function(){return this.texture},set:function(n){this.texture=n,this.material.uniforms.tPerturb.value=n}}])}();var xr={SPORADIC:0,CONSTANT_MILD:1,CONSTANT_WILD:2},br=function(n){function t(n,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};u(this,t);var i=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,e,null));return i.name="RenderPass",i.clearPass=new mr(r),i.overrideMaterial=void 0!==r.overrideMaterial?r.overrideMaterial:null,i.clearDepth=void 0!==r.clearDepth&&r.clearDepth,i.clear=void 0===r.clear||r.clear,i}return f(t,vr),h(t,[{key:"render",value:function(n,t){var e=this.scene,r=this.renderToScreen?null:t;this.clear?this.clearPass.render(n,r):this.clearDepth&&(n.setRenderTarget(r),n.clearDepth()),e.overrideMaterial=this.overrideMaterial,n.render(e,this.camera,r),e.overrideMaterial=null}}]),t}();function wr(n,t,e){return Math.max(t,Math.min(e,n))}!function(n){function t(n,e,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};u(this,t);var a=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return a.name="GodRaysPass",a.needsSwap=!0,a.lightScene=new i.Scene,a.mainScene=n,a.mainCamera=e,a.renderPassLight=new br(a.lightScene,a.mainCamera),a.renderPassMask=new br(a.mainScene,a.mainCamera,{overrideMaterial:new i.MeshBasicMaterial({color:0}),clearColor:new i.Color(0)}),a.renderPassMask.clear=!1,a.blurPass=new dr(o),a.renderTargetX=new i.WebGLRenderTarget(1,1,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),a.renderTargetX.texture.name="GodRays.TargetX",a.renderTargetX.texture.generateMipmaps=!1,a.renderTargetY=a.renderTargetX.clone(),a.renderTargetY.texture.name="GodRays.TargetY",a.renderTargetMask=new i.WebGLRenderTarget(1,1,{minFilter:i.LinearFilter,magFilter:i.LinearFilter}),a.renderTargetMask.texture.name="GodRays.Mask",a.renderTargetMask.texture.generateMipmaps=!1,a.lightSource=r,a.screenPosition=new i.Vector3,a.godRaysMaterial=new je,a.godRaysMaterial.uniforms.lightPosition.value=a.screenPosition,void 0!==o.exposure&&(a.godRaysMaterial.uniforms.exposure.value=o.exposure),void 0!==o.density&&(a.godRaysMaterial.uniforms.density.value=o.density),void 0!==o.decay&&(a.godRaysMaterial.uniforms.decay.value=o.decay),void 0!==o.weight&&(a.godRaysMaterial.uniforms.weight.value=o.weight),void 0!==o.clampMax&&(a.godRaysMaterial.uniforms.clampMax.value=o.clampMax),a.samples=o.samples,a.combineMaterial=new xe(void 0===o.screenMode||o.screenMode),a.intensity=o.intensity,a}f(t,vr),h(t,[{key:"render",value:function(n,t,e){var r,i=this.quad,o=this.scene,a=this.camera,l=this.mainScene,s=this.lightSource,c=this.screenPosition,u=this.godRaysMaterial,h=this.combineMaterial,v=this.renderTargetMask,d=this.renderTargetX,f=this.renderTargetY,p=void 0;c.copy(s.position).project(this.mainCamera),c.x=wr(.5*(c.x+1),0,1),c.y=wr(.5*(c.y+1),0,1),p=s.parent,r=l.background,l.background=null,this.lightScene.add(s),this.renderPassLight.render(n,v),this.renderPassMask.render(n,v),null!==p&&p.add(s),l.background=r,this.blurPass.render(n,v,d),i.material=u,u.uniforms.tDiffuse.value=d.texture,n.render(o,a,f),i.material=h,h.uniforms.texture1.value=t.texture,h.uniforms.texture2.value=f.texture,n.render(o,a,this.renderToScreen?null:e)}},{key:"initialise",value:function(n,t){this.renderPassLight.initialise(n,t),this.renderPassMask.initialise(n,t),this.blurPass.initialise(n,t),t||(this.renderTargetMask.texture.format=i.RGBFormat,this.renderTargetX.texture.format=i.RGBFormat,this.renderTargetY.texture.format=i.RGBFormat)}},{key:"setSize",value:function(n,t){this.renderPassLight.setSize(n,t),this.renderPassMask.setSize(n,t),this.blurPass.setSize(n,t),n=this.blurPass.width,t=this.blurPass.height,this.renderTargetMask.setSize(n,t),this.renderTargetX.setSize(n,t),this.renderTargetY.setSize(n,t)}},{key:"resolutionScale",get:function(){return this.blurPass.resolutionScale},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;this.blurPass.resolutionScale=n}},{key:"kernelSize",get:function(){return this.blurPass.kernelSize},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ee.LARGE;this.blurPass.kernelSize=n}},{key:"intensity",get:function(){return this.combineMaterial.uniforms.opacity2.value},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.combineMaterial.uniforms.opacity2.value=n}},{key:"samples",get:function(){return Number.parseInt(this.godRaysMaterial.defines.NUM_SAMPLES_INT)},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:60;n=Math.floor(n),this.godRaysMaterial.defines.NUM_SAMPLES_FLOAT=n.toFixed(1),this.godRaysMaterial.defines.NUM_SAMPLES_INT=n.toFixed(0),this.godRaysMaterial.needsUpdate=!0}}])}();var Mr=function(n){function t(n,e){u(this,t);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n,e,null));return r.name="MaskPass",r.inverse=!1,r.clearStencil=!0,r}return f(t,vr),h(t,[{key:"render",value:function(n,t,e){var r=n.context,i=n.state,o=this.scene,a=this.camera,l=this.inverse?0:1,s=1-l;i.buffers.color.setMask(!1),i.buffers.depth.setMask(!1),i.buffers.color.setLocked(!0),i.buffers.depth.setLocked(!0),i.buffers.stencil.setTest(!0),i.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),i.buffers.stencil.setFunc(r.ALWAYS,l,4294967295),i.buffers.stencil.setClear(s),this.clearStencil&&(n.setRenderTarget(t),n.clearStencil(),n.setRenderTarget(e),n.clearStencil()),n.render(o,a,t),n.render(o,a,e),i.buffers.color.setLocked(!1),i.buffers.depth.setLocked(!1),i.buffers.stencil.setFunc(r.EQUAL,1,4294967295),i.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP)}}]),t}(),_r=(function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30;u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="PixelationPass",e.needsSwap=!0,e.pixelationMaterial=new Ye,e.granularity=n,e.quad.material=e.pixelationMaterial,e}f(t,vr),h(t,[{key:"render",value:function(n,t,e){this.pixelationMaterial.uniforms.tDiffuse.value=t.texture,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(n,t){this.pixelationMaterial.setResolution(n,t)}},{key:"granularity",get:function(){return this.pixelationMaterial.granularity},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30;(n=Math.floor(n))%2>0&&(n+=1),this.pixelationMaterial.granularity=n}}])}(),function(n){function t(n){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];u(this,t);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.name="SavePass",r.material=new Ae,r.quad.material=r.material,r.renderTarget=void 0!==n?n:new i.WebGLRenderTarget(1,1,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),r.renderTarget.texture.name="Save.Target",r.renderTarget.texture.generateMipmaps=!1,r.resize=e,r}f(t,vr),h(t,[{key:"render",value:function(n,t){this.material.uniforms.tDiffuse.value=t.texture,n.render(this.scene,this.camera,this.renderTarget)}},{key:"initialise",value:function(n,t){t||(this.renderTarget.texture.format=i.RGBFormat)}},{key:"setSize",value:function(n,t){this.resize&&(n=Math.max(1,n),t=Math.max(1,t),this.renderTarget.setSize(n,t))}}])}(),function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"tDiffuse";u(this,t);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.name="ShaderPass",r.needsSwap=!0,r.material=n,r.quad.material=r.material,r.textureID=e,r}return f(t,vr),h(t,[{key:"render",value:function(n,t,e){void 0!==this.material.uniforms[this.textureID]&&(this.material.uniforms[this.textureID].value=t.texture),n.render(this.scene,this.camera,this.renderToScreen?null:e)}}]),t}()),Er=.5*Math.PI,Sr=new i.Vector3,Tr=new i.Vector3;(function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new i.Vector3,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};u(this,t);var o=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.name="ShockWavePass",o.needsSwap=!0,o.mainCamera=n,o.epicenter=e,o.screenPosition=new i.Vector3,o.speed=void 0!==r.speed?r.speed:2,o.time=0,o.active=!1,o.shockWaveMaterial=new Ke(r),o.shockWaveMaterial.uniforms.center.value=o.screenPosition,o.copyMaterial=new Ae,o}f(t,vr),h(t,[{key:"explode",value:function(){this.time=0,this.active=!0}},{key:"render",value:function(n,t,e,r){var i=this.epicenter,o=this.mainCamera,a=this.screenPosition,l=this.shockWaveMaterial,s=l.uniforms,c=s.center,u=s.radius,h=s.maxRadius,v=s.waveSize;this.copyMaterial.uniforms.tDiffuse.value=t.texture,this.quad.material=this.copyMaterial,this.active&&(o.getWorldDirection(Sr),Tr.copy(o.position).sub(i),Sr.angleTo(Tr)>Er&&(s.cameraDistance.value=o.position.distanceTo(i),a.copy(i).project(o),c.value.x=.5*(a.x+1),c.value.y=.5*(a.y+1),s.tDiffuse.value=t.texture,this.quad.material=l),this.time+=r*this.speed,u.value=this.time-v.value,u.value>=2*(h.value+v.value)&&(this.active=!1)),n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(n,t){this.shockWaveMaterial.uniforms.aspect.value=n/t}}])})(),function(n){function t(n){u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));e.name="SMAAPass",e.needsSwap=!0,e.renderTargetColorEdges=new i.WebGLRenderTarget(1,1,{minFilter:i.LinearFilter,format:i.RGBFormat,stencilBuffer:!1,depthBuffer:!1}),e.renderTargetColorEdges.texture.name="SMAA.ColorEdges",e.renderTargetColorEdges.texture.generateMipmaps=!1,e.renderTargetWeights=e.renderTargetColorEdges.clone(),e.renderTargetWeights.texture.name="SMAA.Weights",e.renderTargetWeights.texture.format=i.RGBAFormat,e.colorEdgesMaterial=new rr,e.weightsMaterial=new sr;var r=new n;r.src=e.weightsMaterial.areaImage;var o=new i.Texture;o.image=r,o.name="SMAA.Area",o.minFilter=i.LinearFilter,o.format=i.RGBFormat,o.generateMipmaps=!1,o.needsUpdate=!0,o.flipY=!1;var a=new n;a.src=e.weightsMaterial.searchImage;var l=new i.Texture;return l.image=a,l.name="SMAA.Search",l.magFilter=i.NearestFilter,l.minFilter=i.NearestFilter,l.generateMipmaps=!1,l.needsUpdate=!0,l.flipY=!1,e.weightsMaterial.uniforms.tDiffuse.value=e.renderTargetColorEdges.texture,e.weightsMaterial.uniforms.tArea.value=o,e.weightsMaterial.uniforms.tSearch.value=l,e.blendMaterial=new nr,e.blendMaterial.uniforms.tWeights.value=e.renderTargetWeights.texture,e.quad.material=e.blendMaterial,e}f(t,vr),h(t,[{key:"render",value:function(n,t,e){this.quad.material=this.colorEdgesMaterial,this.colorEdgesMaterial.uniforms.tDiffuse.value=t.texture,n.render(this.scene,this.camera,this.renderTargetColorEdges,!0),this.quad.material=this.weightsMaterial,n.render(this.scene,this.camera,this.renderTargetWeights,!1),this.quad.material=this.blendMaterial,this.blendMaterial.uniforms.tDiffuse.value=t.texture,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(n,t){this.renderTargetColorEdges.setSize(n,t),this.renderTargetWeights.setSize(n,t),this.colorEdgesMaterial.uniforms.texelSize.value.copy(this.weightsMaterial.uniforms.texelSize.value.copy(this.blendMaterial.uniforms.texelSize.value.set(1/n,1/t)))}}])}(),function(n){function t(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;u(this,t);var r=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.name="TexturePass",r.copyMaterial=new Ae,r.copyMaterial.blending=i.AdditiveBlending,r.copyMaterial.transparent=!0,r.texture=n,r.opacity=e,r.quad.material=r.copyMaterial,r}f(t,vr),h(t,[{key:"render",value:function(n,t){n.render(this.scene,this.camera,this.renderToScreen?null:t)}},{key:"texture",get:function(){return this.copyMaterial.uniforms.tDiffuse.value},set:function(n){this.copyMaterial.uniforms.tDiffuse.value=n}},{key:"opacity",get:function(){return this.copyMaterial.uniforms.opacity.value},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.copyMaterial.uniforms.opacity.value=n}}])}();!function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="ToneMappingPass",e.needsSwap=!0,e.renderTargetLuminosity=new i.WebGLRenderTarget(1,1,{minFilter:i.LinearMipMapLinearFilter,magFilter:i.LinearFilter,format:i.RGBFormat,stencilBuffer:!1,depthBuffer:!1}),e.renderTargetLuminosity.texture.name="ToneMapping.Luminosity",e.renderTargetAdapted=e.renderTargetLuminosity.clone(),e.renderTargetAdapted.texture.name="ToneMapping.AdaptedLuminosity",e.renderTargetAdapted.texture.generateMipmaps=!1,e.renderTargetAdapted.texture.minFilter=i.LinearFilter,e.renderTargetPrevious=e.renderTargetAdapted.clone(),e.renderTargetPrevious.texture.name="ToneMapping.PreviousLuminosity",e.copyMaterial=new Ae,e.luminosityMaterial=new We,e.luminosityMaterial.uniforms.distinction.value=void 0!==n.distinction?n.distinction:1,e.adaptiveLuminosityMaterial=new ue,e.resolution=n.resolution,e.toneMappingMaterial=new hr,e.adaptive=n.adaptive,e}f(t,vr),h(t,[{key:"render",value:function(n,t,e,r){var i=this.quad,o=this.scene,a=this.camera,l=this.adaptiveLuminosityMaterial,s=this.luminosityMaterial,c=this.toneMappingMaterial,u=this.copyMaterial,h=this.renderTargetPrevious,v=this.renderTargetLuminosity,d=this.renderTargetAdapted;this.adaptive&&(i.material=s,s.uniforms.tDiffuse.value=t.texture,n.render(o,a,v),i.material=l,l.uniforms.delta.value=r,l.uniforms.tPreviousLum.value=h.texture,l.uniforms.tCurrentLum.value=v.texture,n.render(o,a,d),i.material=u,u.uniforms.tDiffuse.value=d.texture,n.render(o,a,h)),i.material=c,c.uniforms.tDiffuse.value=t.texture,n.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"initialise",value:function(n){this.quad.material=new i.MeshBasicMaterial({color:8388607}),n.render(this.scene,this.camera,this.renderTargetPrevious),this.quad.material.dispose()}},{key:"resolution",get:function(){return this.renderTargetLuminosity.width},set:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:256;n=function(n){return Math.pow(2,Math.max(0,Math.ceil(Math.log2(n))))}(n),this.renderTargetLuminosity.setSize(n,n),this.renderTargetPrevious.setSize(n,n),this.renderTargetAdapted.setSize(n,n),this.adaptiveLuminosityMaterial.defines.MIP_LEVEL_1X1=(Math.round(Math.log(n))/Math.log(2)).toFixed(1),this.adaptiveLuminosityMaterial.needsUpdate=!0}},{key:"adaptive",get:function(){return void 0!==this.toneMappingMaterial.defines.ADAPTED_LUMINANCE},set:function(){!(arguments.length>0&&void 0!==arguments[0])||arguments[0]?(this.toneMappingMaterial.defines.ADAPTED_LUMINANCE="1",this.toneMappingMaterial.uniforms.luminanceMap.value=this.renderTargetAdapted.texture):(delete this.toneMappingMaterial.defines.ADAPTED_LUMINANCE,this.toneMappingMaterial.uniforms.luminanceMap.value=null),this.toneMappingMaterial.needsUpdate=!0}}])}();var Ar,Lr,Pr=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};u(this,n),this.renderer=t,this.readBuffer=null,this.writeBuffer=null,null!==this.renderer&&(this.renderer.autoClear=!1,this.readBuffer=this.createBuffer(void 0===e.depthBuffer||e.depthBuffer,void 0!==e.stencilBuffer&&e.stencilBuffer,void 0!==e.depthTexture&&e.depthTexture),this.writeBuffer=this.readBuffer.clone()),this.copyPass=new _r(new Ae),this.passes=[]}return h(n,[{key:"replaceRenderer",value:function(n){var t=this.renderer,e=void 0,r=void 0,i=void 0;return null!==t&&t!==n&&(this.renderer=n,this.renderer.autoClear=!1,e=t.domElement.parentNode,r=t.getSize(),i=n.getSize(),null!==e&&(e.removeChild(t.domElement),e.appendChild(n.domElement)),r.width===i.width&&r.height===i.height||this.setSize()),t}},{key:"createBuffer",value:function(n,t,e){var r=this.renderer.getSize(),o=this.renderer.getPixelRatio(),a=this.renderer.context.getContextAttributes().alpha,l=new i.WebGLRenderTarget(r.width*o,r.height*o,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,format:a?i.RGBAFormat:i.RGBFormat,depthBuffer:n,stencilBuffer:t,depthTexture:e?new i.DepthTexture:null});return e&&t&&(l.depthTexture.format=i.DepthStencilFormat,l.depthTexture.type=i.UnsignedInt248Type),l.texture.name="EffectComposer.Buffer",l.texture.generateMipmaps=!1,l}},{key:"addPass",value:function(n,t){var e=this.renderer,r=e.getSize(),i=e.getPixelRatio();n.setSize(r.width*i,r.height*i),n.initialise(e,e.context.getContextAttributes().alpha),void 0!==t?this.passes.splice(t,0,n):this.passes.push(n)}},{key:"removePass",value:function(n){this.passes.splice(this.passes.indexOf(n),1)}},{key:"render",value:function(n){var t,e=this.passes,r=this.renderer,i=this.copyPass,o=this.readBuffer,a=this.writeBuffer,l=!1,s=void 0,c=void 0,u=void 0,h=void 0;for(h=0,t=e.length;h<t;++h)(s=e[h]).enabled&&(s.render(r,o,a,n,l),s.needsSwap&&(l&&((c=r.context).stencilFunc(c.NOTEQUAL,1,4294967295),i.render(r,o,a),c.stencilFunc(c.EQUAL,1,4294967295)),u=o,o=a,a=u),s instanceof Mr?l=!0:s instanceof fr&&(l=!1))}},{key:"setSize",value:function(n,t){var e,r=this.passes,i=this.renderer.getSize(),o=this.renderer.getPixelRatio(),a=void 0;for(void 0!==n&&void 0!==t||(n=i.width,t=i.height),this.renderer.setSize(n,t),n*=o,t*=o,this.readBuffer.setSize(n,t),this.writeBuffer.setSize(n,t),a=0,e=r.length;a<e;++a)r[a].setSize(n,t)}},{key:"reset",value:function(n){var t=this.readBuffer.depthBuffer,e=this.readBuffer.stencilBuffer,r=null!==this.readBuffer.depthTexture;this.dispose(void 0===n?this.createBuffer(t,e,r):n)}},{key:"dispose",value:function(n){var t=this.passes;for(null!==this.readBuffer&&null!==this.writeBuffer&&(this.readBuffer.dispose(),this.writeBuffer.dispose(),this.readBuffer=null,this.writeBuffer=null);t.length>0;)t.pop().dispose();void 0!==n?(this.readBuffer=n,this.writeBuffer=this.readBuffer.clone()):this.copyPass.dispose()}},{key:"depthTexture",get:function(){return this.readBuffer.depthTexture},set:function(n){this.readBuffer.depthTexture=n,this.writeBuffer.depthTexture=n}}]),n}(),Cr=function(n,t){var e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];n[t]||(e&&console.warn("@PostProcessorModule: pass."+t+"() was not found.",n),n[t]=function(){})},Rr=(Lr=Ar=function(){function n(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n.defaults;u(this,n),this.currentPass=null,this.defer=new Promise(function(n){t.resolve=n}),this.debug=e.debug,this.params=e}return h(n,[{key:"manager",value:function(n){var t=this;n.define("postprocessor"),this.effects=n.use("rendering").effects,this.renderer=n.get("renderer"),this.scene=n.get("scene"),this.camera=n.get("camera"),this.composer=new Pr(this.renderer,this.params),n.use("rendering").stop();var e=this.composer;this.renderLoop=new _t(function(n){return e.render(n.getDelta())}).start(n.handler),n.update({renderer:function(n){t.composer.replaceRenderer(n)},scene:function(n){t.scene=n},camera:function(n){t.camera=n}}),this.resolve()}},{key:"render",value:function(){var n=this;return this.defer.then(function(){var t=new br(n.scene,n.camera.native);n.composer.addPass(t),n.currentPass=t}),this}},{key:"pass",value:function(n){var t=this;return this.defer.then(function(){Cr(n,"setSize",t.debug),Cr(n,"initialise",t.debug),t.composer.addPass(n),t.currentPass=n}),this}},{key:"shader",value:function(n){var t=this,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"readBuffer";return this.defer.then(function(){n.uniforms[e]||(n.uniforms[e]={value:null});var r=new _r(n,e);t.composer.addPass(r),t.currentPass=r}),this}},{key:"get",value:function(n){return n?this.composer.passes.filter(function(t){return t.name===n})[0]:this.currentPass}},{key:"renderToScreen",value:function(){var n=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.defer.then(function(){n.currentPass.renderToScreen=t}),this}}]),n}(),Ar.defaults={debug:!0},Lr),Or=function(){function n(){u(this,n)}return h(n,[{key:"manager",value:function(n){n.define("events"),this.element=n.get("renderer").domElement}},{key:"patchEvents",value:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this;(arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]).forEach(function(e){return n.addEventListener(e,function(n){return t.emit(e,n)})})}},{key:"integrate",value:function(n){var t=n.element;(0,n.patchEvents)(t,this,["mousemove","mouseup","contextmenu","mousedown","click","wheel","touchstart","touchend","touchmove","keydown","keyup","keypress"])}}]),n}(),Dr=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.mouse=new i.Vector2,e.raycaster=new i.Raycaster,e.world=null,e.canvas=null,e.projectionPlane=new i.Plane(new i.Vector3(0,0,1),0),e.globalMovement=n,e}return f(t,c),h(t,[{key:"update",value:function(n,t,e){var r=this.canvas.getBoundingClientRect(),i=t||n.clientX,o=e||n.clientY;this.mouse.x=(i-r.left)/(r.right-r.left)*2-1,this.mouse.y=-(o-r.top)/(r.bottom-r.top)*2+1,this.projectionPlane.normal.copy(this.camera.getWorldDirection()),this.raycaster.setFromCamera(this.mouse,this.camera),this.emit("move")}},{key:"manager",value:function(n){n.define("mouse"),n.require("events",function(){return new Or}),this.canvas=n.get("renderer").domElement,this.camera=n.get("camera").native}},{key:"integrate",value:function(n){var t=this;["click","mousedown","mouseup","mousemove"].forEach(function(e){return t.on(e,function(t){return n.emit(e,t)})}),n.globalX=0,n.globalY=0,this.on("mousemove",function(t){null!==document.pointerLockElement?(n.globalX+=t.movementX,n.globalY+=t.movementY,n.update(t,n.globalX,n.globalY)):n.update(t)})}},{key:"track",value:function(n){var t=this,e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=!1;this.on("move",function(){t.hovers(n,e)?r?n.emit("mousemove"):(n.emit("mouseover"),r=!0):r&&(n.emit("mouseout"),r=!1)}),this.on("click",function(){r?n.emit("click"):n.emit("offClick")}),this.on("mousedown",function(){r&&n.emit("mousedown")}),this.on("mouseup",function(){r&&n.emit("mouseup")})}},{key:"intersection",value:function(n){var t=n.native,e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(t.children.length>0&&e){var r=[];return t.traverse(function(n){return r.push(n)}),this.raycaster.intersectObjects(r)}return this.raycaster.intersectObject(t)}},{key:"project",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.projectionPlane,t=arguments[1];return this.raycaster.ray.intersectPlane(n,t)}},{key:"hovers",value:function(n){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.intersection(n,t).length>0}},{key:"ray",get:function(){return this.raycaster.ray}},{key:"x",get:function(){return this.mouse.x}},{key:"y",get:function(){return this.mouse.y}}]),t}(),Ur=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,n),this.params=Object.assign({controls:!1,fix:function(n){return n},update:function(n){this.controls.update(n.getDelta())}},t),this.controls=this.params.controls,this.update=this.params.update}return h(n,null,[{key:"from",value:function(t){return new n({controls:t})}}]),h(n,[{key:"manager",value:function(n){n.define("controls"),n.require("events",function(){return new Or})}},{key:"setControls",value:function(n){return this.controls=n,this}},{key:"setUpdate",value:function(n){return this.update=n,this}},{key:"integrate",value:function(n){n.updateLoop=new _t(n.update.bind(n)),n.updateLoop.start(this)}}]),n}(),Nr=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];u(this,n),this.params=Object.assign({color:15716789,density:.02,near:10,far:1e3},t),e&&"exp2"!==e?"linear"===e&&(this.fog=new i.Fog(this.params.color,this.params.near,this.params.far)):this.fog=new i.FogExp2(this.params.color,this.params.density)}return h(n,[{key:"manager",value:function(n){n.set("fog",this.fog),n.get("scene").fog=this.fog}}]),n}(),Ir=function(n,t){return n===t||!!(n&&n.equals&&n.equals(t))},Br=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ir;u(this,n),this.store=H(n.actionGenerate(t)),this.configuration={},this.currentConfig="default",this.prevConfig="default"}return h(n,null,[{key:"actionGenerate",value:function(n){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[{},""],e=arguments[1],r=e.key,i=e.data;return n(t[0][r],i)?t:(t[0][r]=i,t[1]=r,t)}}}]),h(n,[{key:"default",value:function(n){return this.config({default:n}),this}},{key:"setEqualCheck",value:function(t){this.store.replaceReducer(n.actionGenerate(t))}},{key:"manager",value:function(n){n.define("state")}},{key:"config",value:function(n){for(var t in n)t&&(this.configuration[t]="default"===t?n[t]:Object.assign({},this.configuration.default,n[t]))}},{key:"update",value:function(){var n=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.store.subscribe(function(){var e=n.store.getState(),r=m(e,2),i=r[0],o=r[1],a=t[o];a&&a(i[o])})}},{key:"to",value:function(n){this.prevConfig=this.currentConfig,this.currentConfig=n;var t=this.configuration[n]?this.configuration[n]:this.configuration.default;this.set(t)}},{key:"set",value:function(n){for(var t in n)t&&this.store.dispatch({type:"ADD",key:t,data:n[t]})}},{key:"get",value:function(n){return this.store.getState()[0][n]}},{key:"prev",value:function(n,t,e){return this.prevConfig===n?t:e}},{key:"current",value:function(n,t,e){return this.currentConfig===n?t:e}}]),n}(),Fr=function(n){function t(n,e,r){u(this,t);var o=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));o.object=n,o.domElement=void 0===e?document:e,o.eventHandler=r,o.enabled=!0,o.target=new i.Vector3,o.minDistance=0,o.maxDistance=1/0,o.minZoom=0,o.maxZoom=1/0,o.minPolarAngle=0,o.maxPolarAngle=Math.PI,o.minAzimuthAngle=-1/0,o.maxAzimuthAngle=1/0,o.enableDamping=!1,o.dampingFactor=.25,o.enableZoom=!0,o.zoomSpeed=1,o.enableRotate=!0,o.rotateSpeed=1,o.enablePan=!0,o.keyPanSpeed=7,o.autoRotate=!1,o.autoRotateSpeed=2,o.enableKeys=!0,o.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},o.mouseButtons={ORBIT:i.MOUSE.LEFT,ZOOM:i.MOUSE.MIDDLE,PAN:i.MOUSE.RIGHT},o.target0=o.target.clone(),o.position0=o.object.position.clone(),o.zoom0=o.object.zoom,o.getPolarAngle=function(){return d.phi},o.getAzimuthalAngle=function(){return d.theta},o.reset=function(){o.target.copy(o.target0),o.object.position.copy(o.position0),o.object.zoom=o.zoom0,o.object.updateProjectionMatrix(),o.dispatchEvent(a),o.update(),h=c.NONE},o.update=function(){var t=new i.Vector3,e=(new i.Quaternion).setFromUnitVectors(n.up,new i.Vector3(0,1,0)),r=e.clone().inverse(),l=new i.Vector3,s=new i.Quaternion;return function(){var n=o.object.position;return t.copy(n).sub(o.target),t.applyQuaternion(e),d.setFromVector3(t),o.autoRotate&&h===c.NONE&&C(L()),d.theta+=f.theta,d.phi+=f.phi,d.theta=Math.max(o.minAzimuthAngle,Math.min(o.maxAzimuthAngle,d.theta)),d.phi=Math.max(o.minPolarAngle,Math.min(o.maxPolarAngle,d.phi)),d.makeSafe(),d.radius*=m,d.radius=Math.max(o.minDistance,Math.min(o.maxDistance,d.radius)),o.target.add(g),t.setFromSpherical(d),t.applyQuaternion(r),n.copy(o.target).add(t),o.object.lookAt(o.target),!0===o.enableDamping?(f.theta*=1-o.dampingFactor,f.phi*=1-o.dampingFactor):f.set(0,0,0),m=1,g.set(0,0,0),!!(y||l.distanceToSquared(o.object.position)>v||8*(1-s.dot(o.object.quaternion))>v)&&(o.dispatchEvent(a),l.copy(o.object.position),s.copy(o.object.quaternion),y=!1,!0)}()},o.dispose=function(){o.domElement.removeEventListener("contextmenu",W,!1),o.domElement.removeEventListener("mousedown",B,!1),o.domElement.removeEventListener("wheel",G,!1),o.domElement.removeEventListener("touchstart",j,!1),o.domElement.removeEventListener("touchend",V,!1),o.domElement.removeEventListener("touchmove",H,!1),document.removeEventListener("mousemove",F,!1),document.removeEventListener("mouseup",z,!1),window.removeEventListener("keydown",k,!1)};var a={type:"change"},l={type:"start"},s={type:"end"},c={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},h=c.NONE,v=1e-6,d=new i.Spherical,f=new i.Spherical,m=1,g=new i.Vector3,y=!1,x=new i.Vector2,b=new i.Vector2,w=new i.Vector2,M=new i.Vector2,_=new i.Vector2,E=new i.Vector2,S=new i.Vector2,T=new i.Vector2,A=new i.Vector2,L=function(){return 2*Math.PI/60/60*o.autoRotateSpeed},P=function(){return Math.pow(.95,o.zoomSpeed)},C=function(n){f.theta-=n},R=function(n){f.phi-=n},O=function(){var n=new i.Vector3;return function(t,e){n.setFromMatrixColumn(e,0),n.multiplyScalar(-t),g.add(n)}}(),D=function(){var n=new i.Vector3;return function(t,e){n.setFromMatrixColumn(e,1),n.multiplyScalar(t),g.add(n)}}(),U=function(){var n=new i.Vector3;return function(t,e){var r=o.domElement===document?o.domElement.body:o.domElement;if(o.object instanceof i.PerspectiveCamera){var a=o.object.position;n.copy(a).sub(o.target);var l=n.length();l*=Math.tan(o.object.fov/2*Math.PI/180),O(2*t*l/r.clientHeight,o.object.matrix),D(2*e*l/r.clientHeight,o.object.matrix)}else o.object instanceof i.OrthographicCamera?(O(t*(o.object.right-o.object.left)/o.object.zoom/r.clientWidth,o.object.matrix),D(e*(o.object.top-o.object.bottom)/o.object.zoom/r.clientHeight,o.object.matrix)):(console.warn("WARNING: OrbitControlsModule.js encountered an unknown camera type - pan disabled."),o.enablePan=!1)}}(),N=function(n){o.object instanceof i.PerspectiveCamera?m/=n:o.object instanceof i.OrthographicCamera?(o.object.zoom=Math.max(o.minZoom,Math.min(o.maxZoom,o.object.zoom*n)),o.object.updateProjectionMatrix(),y=!0):(console.warn("WARNING: OrbitControlsModule.js encountered an unknown camera type - dolly/zoom disabled."),o.enableZoom=!1)},I=function(n){o.object instanceof i.PerspectiveCamera?m*=n:o.object instanceof i.OrthographicCamera?(o.object.zoom=Math.max(o.minZoom,Math.min(o.maxZoom,o.object.zoom/n)),o.object.updateProjectionMatrix(),y=!0):(console.warn("WARNING: OrbitControlsModule.js encountered an unknown camera type - dolly/zoom disabled."),o.enableZoom=!1)},B=function(n){if(!1!==o.enabled){if(n.preventDefault(),n.button===o.mouseButtons.ORBIT){if(!1===o.enableRotate)return;!function(n){x.set(n.clientX,n.clientY)}(n),h=c.ROTATE}else if(n.button===o.mouseButtons.ZOOM){if(!1===o.enableZoom)return;!function(n){S.set(n.clientX,n.clientY)}(n),h=c.DOLLY}else if(n.button===o.mouseButtons.PAN){if(!1===o.enablePan)return;!function(n){M.set(n.clientX,n.clientY)}(n),h=c.PAN}h!==c.NONE&&(o.eventHandler.on("mousemove",F,!1),o.eventHandler.on("mouseup",z,!1),o.dispatchEvent(l))}},F=function(n){if(!1!==o.enabled)if(n.preventDefault(),h===c.ROTATE){if(!1===o.enableRotate)return;!function(n){b.set(n.clientX,n.clientY),w.subVectors(b,x);var t=o.domElement===document?o.domElement.body:o.domElement;C(2*Math.PI*w.x/t.clientWidth*o.rotateSpeed),R(2*Math.PI*w.y/t.clientHeight*o.rotateSpeed),x.copy(b),o.update()}(n)}else if(h===c.DOLLY){if(!1===o.enableZoom)return;!function(n){T.set(n.clientX,n.clientY),A.subVectors(T,S),A.y>0?N(P()):A.y<0&&I(P()),S.copy(T),o.update()}(n)}else if(h===c.PAN){if(!1===o.enablePan)return;!function(n){_.set(n.clientX,n.clientY),E.subVectors(_,M),U(E.x,E.y),M.copy(_),o.update()}(n)}},z=function n(t){!1!==o.enabled&&(document.removeEventListener("mousemove",F,!1),document.removeEventListener("mouseup",n,!1),o.dispatchEvent(s),h=c.NONE)},G=function(n){!1===o.enabled||!1===o.enableZoom||h!==c.NONE&&h!==c.ROTATE||(n.preventDefault(),n.stopPropagation(),function(n){n.deltaY<0?I(P()):n.deltaY>0&&N(P()),o.update()}(n),o.dispatchEvent(l),o.dispatchEvent(s))},k=function(n){!1!==o.enabled&&!1!==o.enableKeys&&!1!==o.enablePan&&function(n){switch(n.keyCode){case o.keys.UP:U(0,o.keyPanSpeed),o.update();break;case o.keys.BOTTOM:U(0,-o.keyPanSpeed),o.update();break;case o.keys.LEFT:U(o.keyPanSpeed,0),o.update();break;case o.keys.RIGHT:U(-o.keyPanSpeed,0),o.update()}}(n)},j=function(n){if(!1!==o.enabled){switch(n.touches.length){case 1:if(!1===o.enableRotate)return;!function(n){x.set(n.touches[0].pageX,n.touches[0].pageY)}(n),h=c.TOUCH_ROTATE;break;case 2:if(!1===o.enableZoom)return;!function(n){var t=n.touches[0].pageX-n.touches[1].pageX,e=n.touches[0].pageY-n.touches[1].pageY,r=Math.sqrt(t*t+e*e);S.set(0,r)}(n),h=c.TOUCH_DOLLY;break;case 3:if(!1===o.enablePan)return;!function(n){M.set(n.touches[0].pageX,n.touches[0].pageY)}(n),h=c.TOUCH_PAN;break;default:h=c.NONE}h!==c.NONE&&o.dispatchEvent(l)}},H=function(n){if(!1!==o.enabled)switch(n.preventDefault(),n.stopPropagation(),n.touches.length){case 1:if(!1===o.enableRotate)return;if(h!==c.TOUCH_ROTATE)return;!function(n){b.set(n.touches[0].pageX,n.touches[0].pageY),w.subVectors(b,x);var t=o.domElement===document?o.domElement.body:o.domElement;C(2*Math.PI*w.x/t.clientWidth*o.rotateSpeed),R(2*Math.PI*w.y/t.clientHeight*o.rotateSpeed),x.copy(b),o.update()}(n);break;case 2:if(!1===o.enableZoom)return;if(h!==c.TOUCH_DOLLY)return;!function(n){var t=n.touches[0].pageX-n.touches[1].pageX,e=n.touches[0].pageY-n.touches[1].pageY,r=Math.sqrt(t*t+e*e);T.set(0,r),A.subVectors(T,S),A.y>0?I(P()):A.y<0&&N(P()),S.copy(T),o.update()}(n);break;case 3:if(!1===o.enablePan)return;if(h!==c.TOUCH_PAN)return;!function(n){_.set(n.touches[0].pageX,n.touches[0].pageY),E.subVectors(_,M),U(E.x,E.y),M.copy(_),o.update()}(n);break;default:h=c.NONE}},V=function(n){!1!==o.enabled&&(o.dispatchEvent(s),h=c.NONE)},W=function(n){n.preventDefault()};return o.eventHandler.on("contextmenu",W,!1),o.eventHandler.on("mousedown",B,!1),o.eventHandler.on("wheel",G,!1),o.eventHandler.on("touchstart",j,!1),o.eventHandler.on("touchend",V,!1),o.eventHandler.on("touchmove",H,!1),o.eventHandler.on("keydown",k,!1),o.update(),o}return f(t,n),h(t,[{key:"center",get:function(){return console.warn("OrbitControls: .center has been renamed to .target"),this.target}},{key:"noZoom",get:function(){return console.warn("OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),!this.enableZoom},set:function(n){console.warn("OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),this.enableZoom=!n}},{key:"noRotate",get:function(){return console.warn("OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),!this.enableRotate},set:function(n){console.warn("OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),this.enableRotate=!n}},{key:"noPan",get:function(){return console.warn("OrbitControls: .noPan has been deprecated. Use .enablePan instead."),!this.enablePan},set:function(n){console.warn("OrbitControls: .noPan has been deprecated. Use .enablePan instead."),this.enablePan=!n}},{key:"noKeys",get:function(){return console.warn("OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),!this.enableKeys},set:function(n){console.warn("OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),this.enableKeys=!n}},{key:"staticMoving",get:function(){return console.warn("OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),!this.enableDamping},set:function(n){console.warn("OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),this.enableDamping=!n}},{key:"dynamicDampingFactor",get:function(){return console.warn("OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor},set:function(n){console.warn("OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor=n}}]),t}(i.EventDispatcher),zr=function(n){function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,t);var e=p(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,n));return e.params=Object.assign({follow:!1,object:null,target:new i.Vector3},n),e}return f(t,Ur),h(t,[{key:"manager",value:function(n){d(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"manager",this).call(this,n);var e=this.params,r=e.object,i=e.follow,o=e.target,a=r?r.native:n.get("camera").native,l=new Fr(a,n.get("element"),n.handler),s=i?function(n){l.update(n.getDelta()),l.target.copy(o)}:function(n){l.update(n.getDelta())};this.setControls(l),this.setUpdate(s),n.update({camera:function(n){r||(l.object=n.native)},element:function(n){l.domElement=n}}),l.target.copy(o)}}]),t}(),Gr=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,n),this.params=Object.assign({attributes:!1},t)}return h(n,[{key:"integrate",value:function(n){var t=this,e=n.params;if(this.g_=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.buildGeometry&&(this.native.geometry=this.buildGeometry(this.updateParams({geometry:n})))},e.attributes){var r=function(n){n&&Object.defineProperty(t,"g_"+n,{get:function(){return this.native.geometry.parameters[n]},set:function(t){this.native.geometry=this.buildGeometry(this.updateParams({geometry:function(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}({},n,t)}))},configurable:!0,enumerable:!0})};for(var i in this.params.geometry)r(i)}}}]),n}(),kr=new i.TextureLoader,jr=function(){function n(){var t=this;u(this,n),this.textures=[],this.bridge={material:function(n,t){return t.textures.forEach(function(t){n[t[0]]=t[1]}),n.needsUpdate=!0,n}};for(var e=arguments.length,r=Array(e),o=0;o<e;o++)r[o]=arguments[o];r.forEach(function(n){var e=n.url,r=n.type,o=void 0===r?"map":r,a=n.offset,l=void 0===a?new i.Vector2(0,0):a,s=n.repeat,c=void 0===s?new i.Vector2(1,1):s,u=n.wrap,h=void 0===u?i.RepeatWrapping:u,v=n.mapping,d=void 0===v?i.UVMapping:v,f=n.fix,p=void 0===f?function(n){return n}:f,m=kr.load(e);h.length>0?(m.wrapS=h[0],m.wrapT=h[1]):m.wrapS=m.wrapT=h,m.mapping=d,m.offset.copy(l),m.repeat.copy(c),m.magFilter=i.NearestFilter,m.minFilter=i.LinearMipMapLinearFilter,t.textures.push([o,p(m)])})}return h(n,null,[{key:"load",value:function(t){return new n({url:t}).textures[0][1]}}]),n}(),Hr=function(){function n(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};u(this,n),this.bridge={mesh:function(n,t){return n.geometry.skeleton=n.skeleton,t.mixer=new i.AnimationMixer(n.geometry),t.clips=n.geometry.animations,n}},this.params=Object.assign({speed:1},r),this.clock=new i.Clock,this.app=t,this.isDeferred=e}return h(n,[{key:"play",value:function(n){var t=i.AnimationClip.findByName(this.clips,n);this.mixer.clipAction(t).play()}},{key:"update",value:function(){this.mixer&&this.mixer.update(this.clock.getDelta()*this.params.speed)}},{key:"integrate",value:function(n){n.loop=new _t(function(){n.update()}),n.isDeferred||n.loop.start(n.app)}},{key:"manager",value:function(n){n.define("animation")}}]),n}(),Vr=function(){function n(t,e){u(this,n),this.name=t,this.data=e}return h(n,[{key:"manager",value:function(n){n.set(this.name,this.data)}}]),n}(),Wr=function(n){function t(n){var e;u(this,t),console.warn("Model is deprecated. Use Importer instead."),n.geometry&&(n.url=n.geometry.path,n.loader=n.geometry.loader);for(var r=arguments.length,i=Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];return p(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this,n].concat(i)))}return f(t,jt),t}(),Xr=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};u(this,n),console.warn("CameraModule is deprecated. Use DefineModule instead."),this.camera=new Ot(t)}return h(n,[{key:"integrate",value:function(n){this.add(n.camera)}},{key:"manager",value:function(n){n.set("camera",this.camera)}}]),n}()}.call(this,e(21),e(22)(n))},function(n,t,e){(function(){"use strict";var r=this.THREE||e(0);if(!r)throw new Error("MeshLine requires three.js");function i(){this.positions=[],this.previous=[],this.next=[],this.side=[],this.width=[],this.indices_array=[],this.uvs=[],this.counters=[],this.geometry=new r.BufferGeometry,this.widthCallback=null}function o(n,t,e,r,i){var o;if(n=n.subarray||n.slice?n:n.buffer,e=e.subarray||e.slice?e:e.buffer,n=t?n.subarray?n.subarray(t,i&&t+i):n.slice(t,i&&t+i):n,e.set)e.set(n,r);else for(o=0;o<n.length;o++)e[o+r]=n[o];return e}function a(n){function t(n,t){return void 0===n?t:n}r.Material.call(this),n=n||{},this.lineWidth=t(n.lineWidth,1),this.map=t(n.map,null),this.useMap=t(n.useMap,0),this.alphaMap=t(n.alphaMap,null),this.useAlphaMap=t(n.useAlphaMap,0),this.color=t(n.color,new r.Color(16777215)),this.opacity=t(n.opacity,1),this.resolution=t(n.resolution,new r.Vector2(1,1)),this.sizeAttenuation=t(n.sizeAttenuation,1),this.near=t(n.near,1),this.far=t(n.far,1),this.dashArray=t(n.dashArray,0),this.dashOffset=t(n.dashOffset,0),this.dashRatio=t(n.dashRatio,.5),this.useDash=0!==this.dashArray?1:0,this.visibility=t(n.visibility,1),this.alphaTest=t(n.alphaTest,0),this.repeat=t(n.repeat,new r.Vector2(1,1));var e=new r.RawShaderMaterial({uniforms:{lineWidth:{type:"f",value:this.lineWidth},map:{type:"t",value:this.map},useMap:{type:"f",value:this.useMap},alphaMap:{type:"t",value:this.alphaMap},useAlphaMap:{type:"f",value:this.useAlphaMap},color:{type:"c",value:this.color},opacity:{type:"f",value:this.opacity},resolution:{type:"v2",value:this.resolution},sizeAttenuation:{type:"f",value:this.sizeAttenuation},near:{type:"f",value:this.near},far:{type:"f",value:this.far},dashArray:{type:"f",value:this.dashArray},dashOffset:{type:"f",value:this.dashOffset},dashRatio:{type:"f",value:this.dashRatio},useDash:{type:"f",value:this.useDash},visibility:{type:"f",value:this.visibility},alphaTest:{type:"f",value:this.alphaTest},repeat:{type:"v2",value:this.repeat}},vertexShader:["precision highp float;","","attribute vec3 position;","attribute vec3 previous;","attribute vec3 next;","attribute float side;","attribute float width;","attribute vec2 uv;","attribute float counters;","","uniform mat4 projectionMatrix;","uniform mat4 modelViewMatrix;","uniform vec2 resolution;","uniform float lineWidth;","uniform vec3 color;","uniform float opacity;","uniform float near;","uniform float far;","uniform float sizeAttenuation;","","varying vec2 vUV;","varying vec4 vColor;","varying float vCounters;","","vec2 fix( vec4 i, float aspect ) {",""," vec2 res = i.xy / i.w;"," res.x *= aspect;","\t vCounters = counters;"," return res;","","}","","void main() {",""," float aspect = resolution.x / resolution.y;","\t float pixelWidthRatio = 1. / (resolution.x * projectionMatrix[0][0]);",""," vColor = vec4( color, opacity );"," vUV = uv;",""," mat4 m = projectionMatrix * modelViewMatrix;"," vec4 finalPosition = m * vec4( position, 1.0 );"," vec4 prevPos = m * vec4( previous, 1.0 );"," vec4 nextPos = m * vec4( next, 1.0 );",""," vec2 currentP = fix( finalPosition, aspect );"," vec2 prevP = fix( prevPos, aspect );"," vec2 nextP = fix( nextPos, aspect );","","\t float pixelWidth = finalPosition.w * pixelWidthRatio;"," float w = 1.8 * pixelWidth * lineWidth * width;",""," if( sizeAttenuation == 1. ) {"," w = 1.8 * lineWidth * width;"," }",""," vec2 dir;"," if( nextP == currentP ) dir = normalize( currentP - prevP );"," else if( prevP == currentP ) dir = normalize( nextP - currentP );"," else {"," vec2 dir1 = normalize( currentP - prevP );"," vec2 dir2 = normalize( nextP - currentP );"," dir = normalize( dir1 + dir2 );",""," vec2 perp = vec2( -dir1.y, dir1.x );"," vec2 miter = vec2( -dir.y, dir.x );"," //w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );",""," }",""," //vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;"," vec2 normal = vec2( -dir.y, dir.x );"," normal.x /= aspect;"," normal *= .5 * w;",""," vec4 offset = vec4( normal * side, 0.0, 1.0 );"," finalPosition.xy += offset.xy;",""," gl_Position = finalPosition;","","}"].join("\r\n"),fragmentShader:["#extension GL_OES_standard_derivatives : enable","precision mediump float;","","uniform sampler2D map;","uniform sampler2D alphaMap;","uniform float useMap;","uniform float useAlphaMap;","uniform float useDash;","uniform float dashArray;","uniform float dashOffset;","uniform float dashRatio;","uniform float visibility;","uniform float alphaTest;","uniform vec2 repeat;","","varying vec2 vUV;","varying vec4 vColor;","varying float vCounters;","","void main() {",""," vec4 c = vColor;"," if( useMap == 1. ) c *= texture2D( map, vUV * repeat );"," if( useAlphaMap == 1. ) c.a *= texture2D( alphaMap, vUV * repeat ).a;"," if( c.a < alphaTest ) discard;"," if( useDash == 1. ){"," c.a *= ceil(mod(vCounters + dashOffset, dashArray) - (dashArray * dashRatio));"," }"," gl_FragColor = c;"," gl_FragColor.a *= step(vCounters, visibility);","}"].join("\r\n")});return delete n.lineWidth,delete n.map,delete n.useMap,delete n.alphaMap,delete n.useAlphaMap,delete n.color,delete n.opacity,delete n.resolution,delete n.sizeAttenuation,delete n.near,delete n.far,delete n.dashArray,delete n.dashOffset,delete n.dashRatio,delete n.visibility,delete n.alphaTest,delete n.repeat,e.type="MeshLineMaterial",e.setValues(n),e}i.prototype.setGeometry=function(n,t){if(this.widthCallback=t,this.positions=[],this.counters=[],n instanceof r.Geometry)for(var e=0;e<n.vertices.length;e++){var i=n.vertices[e];t=e/n.vertices.length;this.positions.push(i.x,i.y,i.z),this.positions.push(i.x,i.y,i.z),this.counters.push(t),this.counters.push(t)}if(r.BufferGeometry,n instanceof Float32Array||n instanceof Array)for(e=0;e<n.length;e+=3){t=e/n.length;this.positions.push(n[e],n[e+1],n[e+2]),this.positions.push(n[e],n[e+1],n[e+2]),this.counters.push(t),this.counters.push(t)}this.process()},i.prototype.compareV3=function(n,t){var e=6*n,r=6*t;return this.positions[e]===this.positions[r]&&this.positions[e+1]===this.positions[r+1]&&this.positions[e+2]===this.positions[r+2]},i.prototype.copyV3=function(n){var t=6*n;return[this.positions[t],this.positions[t+1],this.positions[t+2]]},i.prototype.process=function(){var n,t,e=this.positions.length/6;this.previous=[],this.next=[],this.side=[],this.width=[],this.indices_array=[],this.uvs=[];for(var i=0;i<e;i++)this.side.push(1),this.side.push(-1);for(i=0;i<e;i++)n=this.widthCallback?this.widthCallback(i/(e-1)):1,this.width.push(n),this.width.push(n);for(i=0;i<e;i++)this.uvs.push(i/(e-1),0),this.uvs.push(i/(e-1),1);t=this.compareV3(0,e-1)?this.copyV3(e-2):this.copyV3(0),this.previous.push(t[0],t[1],t[2]),this.previous.push(t[0],t[1],t[2]);for(i=0;i<e-1;i++)t=this.copyV3(i),this.previous.push(t[0],t[1],t[2]),this.previous.push(t[0],t[1],t[2]);for(i=1;i<e;i++)t=this.copyV3(i),this.next.push(t[0],t[1],t[2]),this.next.push(t[0],t[1],t[2]);t=this.compareV3(e-1,0)?this.copyV3(1):this.copyV3(e-1),this.next.push(t[0],t[1],t[2]),this.next.push(t[0],t[1],t[2]);for(i=0;i<e-1;i++){var o=2*i;this.indices_array.push(o,o+1,o+2),this.indices_array.push(o+2,o+1,o+3)}this.attributes?(this.attributes.position.copyArray(new Float32Array(this.positions)),this.attributes.position.needsUpdate=!0,this.attributes.previous.copyArray(new Float32Array(this.previous)),this.attributes.previous.needsUpdate=!0,this.attributes.next.copyArray(new Float32Array(this.next)),this.attributes.next.needsUpdate=!0,this.attributes.side.copyArray(new Float32Array(this.side)),this.attributes.side.needsUpdate=!0,this.attributes.width.copyArray(new Float32Array(this.width)),this.attributes.width.needsUpdate=!0,this.attributes.uv.copyArray(new Float32Array(this.uvs)),this.attributes.uv.needsUpdate=!0,this.attributes.index.copyArray(new Uint16Array(this.indices_array)),this.attributes.index.needsUpdate=!0):this.attributes={position:new r.BufferAttribute(new Float32Array(this.positions),3),previous:new r.BufferAttribute(new Float32Array(this.previous),3),next:new r.BufferAttribute(new Float32Array(this.next),3),side:new r.BufferAttribute(new Float32Array(this.side),1),width:new r.BufferAttribute(new Float32Array(this.width),1),uv:new r.BufferAttribute(new Float32Array(this.uvs),2),index:new r.BufferAttribute(new Uint16Array(this.indices_array),1),counters:new r.BufferAttribute(new Float32Array(this.counters),1)},this.geometry.addAttribute("position",this.attributes.position),this.geometry.addAttribute("previous",this.attributes.previous),this.geometry.addAttribute("next",this.attributes.next),this.geometry.addAttribute("side",this.attributes.side),this.geometry.addAttribute("width",this.attributes.width),this.geometry.addAttribute("uv",this.attributes.uv),this.geometry.addAttribute("counters",this.attributes.counters),this.geometry.setIndex(this.attributes.index)},i.prototype.advance=function(n){var t=this.attributes.position.array,e=this.attributes.previous.array,r=this.attributes.next.array,i=t.length;o(t,0,e,0,i),o(t,6,t,0,i-6),t[i-6]=n.x,t[i-5]=n.y,t[i-4]=n.z,t[i-3]=n.x,t[i-2]=n.y,t[i-1]=n.z,o(t,6,r,0,i-6),r[i-6]=n.x,r[i-5]=n.y,r[i-4]=n.z,r[i-3]=n.x,r[i-2]=n.y,r[i-1]=n.z,this.attributes.position.needsUpdate=!0,this.attributes.previous.needsUpdate=!0,this.attributes.next.needsUpdate=!0},a.prototype=Object.create(r.Material.prototype),a.prototype.constructor=a,a.prototype.copy=function(n){return r.Material.prototype.copy.call(this,n),this.lineWidth=n.lineWidth,this.map=n.map,this.useMap=n.useMap,this.alphaMap=n.alphaMap,this.useAlphaMap=n.useAlphaMap,this.color.copy(n.color),this.opacity=n.opacity,this.resolution.copy(n.resolution),this.sizeAttenuation=n.sizeAttenuation,this.near=n.near,this.far=n.far,this.dashArray.copy(n.dashArray),this.dashOffset.copy(n.dashOffset),this.dashRatio.copy(n.dashRatio),this.useDash=n.useDash,this.visibility=n.visibility,this.alphaTest=n.alphaTest,this.repeat.copy(n.repeat),this},void 0!==n&&n.exports&&(t=n.exports={MeshLine:i,MeshLineMaterial:a}),t.MeshLine=i,t.MeshLineMaterial=a}).call(this)},function(n,t,e){"use strict";(function(n,r){e.d(t,"a",function(){return T});e(24);var i=e(2),o=e(6),a=e(8),l=e.n(a),s=e(9),c=e.n(s),u=e(10),h=e.n(u),v=e(11),d=e.n(v),f=e(12),p=e.n(f),m=e(13),g=e.n(m),y=e(14),x=e(15);function b(n){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}function w(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}function M(n,t){return!t||"object"!==b(t)&&"function"!=typeof t?function(n){if(void 0===n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}(n):t}function _(n){return(_=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)})(n)}function E(n,t){return(E=Object.setPrototypeOf||function(n,t){return n.__proto__=t,n})(n,t)}var S=new n.OBJLoader,T=function(t){function a(n,t){var e;return function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),(e=M(this,_(a).call(this,{isMobile:t}))).camera=n,e}return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");n.prototype=Object.create(t&&t.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),t&&E(n,t)}(a,r.MeshComponent),function(n,t,e){t&&w(n.prototype,t),e&&w(n,e)}(a,[{key:"build",value:function(){var t=this,r=S.parse(l.a).children[0],a=S.parse(c.a).children[0].geometry.attributes.position,s=S.parse(h.a).children[0].geometry.attributes.position.array,u=S.parse(d.a).children[0],v=S.parse(p.a).children[0].geometry.attributes.position,f=S.parse(g.a).children[0].geometry.attributes.position.array,m=new o.MeshLine;m.setGeometry(r.geometry.attributes.position.array);r.geometry.attributes.position.count;var b=new o.MeshLineMaterial({lineWidth:.1});b.side=n.DoubleSide,b.onBeforeCompile=function(n,t){n.vertexShader="\n precision highp float;\n\n attribute vec3 position;\n attribute vec3 previous;\n attribute vec3 next;\n attribute float side;\n attribute float width;\n attribute vec2 uv;\n attribute float counters;\n\n uniform mat4 projectionMatrix;\n uniform mat4 modelViewMatrix;\n uniform vec2 resolution;\n uniform float lineWidth;\n uniform vec3 color;\n uniform float opacity;\n uniform float near;\n uniform float far;\n uniform float sizeAttenuation;\n\n varying vec2 vUV;\n varying vec4 vColor;\n varying float vCounters;\n\n vec2 fix( vec4 i, float aspect ) {\n\n vec2 res = i.xy / i.w;\n res.x *= aspect;\n vCounters = counters;\n return res;\n\n }\n\n void main() {\n\n float aspect = resolution.x / resolution.y;\n float pixelWidthRatio = 1. / (resolution.x * projectionMatrix[0][0]);\n\n vColor = vec4( color, opacity );\n vUV = uv;\n\n mat4 m = projectionMatrix * modelViewMatrix;\n vec4 finalPosition = m * vec4( position, 1.0 );\n vec4 prevPos = m * vec4( previous, 1.0 );\n vec4 nextPos = m * vec4( next, 1.0 );\n\n vec2 currentP = fix( finalPosition, aspect );\n vec2 prevP = fix( prevPos, aspect );\n vec2 nextP = fix( nextPos, aspect );\n\n float pixelWidth = finalPosition.w * pixelWidthRatio;\n float w = 1.8 * pixelWidth * lineWidth * width;\n\n if( sizeAttenuation == 1. ) {\n w = 1.8 * lineWidth * width;\n }\n\n vec2 dir;\n if( nextP == currentP ) dir = normalize( currentP - prevP );\n else if( prevP == currentP ) dir = normalize( nextP - currentP );\n else {\n vec2 dir1 = normalize( currentP - prevP );\n vec2 dir2 = normalize( nextP - currentP );\n dir = normalize( dir1 );\n\n // vec2 perp = vec2( -dir1.y, dir1.x );\n // vec2 miter = vec2( -dir.y, dir.x );\n // w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );\n\n }\n\n vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;\n // vec2 normal = vec2( -dir.y, dir.x );\n normal.x /= aspect;\n normal *= .5 * w;\n\n normal = vec2(dir.x > 0.0 ? 0.007 : -0.007, 0.007);\n // normal.x = -normal.x;\n\n vec4 offset = vec4( normal * side, 0.0, 1.0 );\n finalPosition.xy += offset.xy;\n\n gl_Position = finalPosition;\n\n }\n ",n.vertexShader=n.vertexShader.replace("attribute float counters;","\n attribute float counters;\n attribute vec3 colorTest;\n varying vec3 vDColor;\n "),n.vertexShader=n.vertexShader.replace("vColor = vec4( color, opacity );","\n vColor = vec4( color, opacity );\n vDColor = colorTest;\n "),n.fragmentShader=n.fragmentShader.replace("varying vec4 vColor;","\n varying vec4 vColor;\n varying vec3 vDColor;\n "),n.fragmentShader=n.fragmentShader.replace("gl_FragColor = c;","\n gl_FragColor = vec4(vDColor, 1.0);\n ")};for(var w=new Float32Array(2*a.array.length),M=0,_=0;_<a.array.length;_+=3)w[M++]=a.array[_],w[M++]=a.array[_+1],w[M++]=a.array[_+2],w[M++]=a.array[_],w[M++]=a.array[_+1],w[M++]=a.array[_+2];var E=new n.BufferAttribute(w,3);m.geometry.addAttribute("colorTest",E);var T=new n.Group,A=new n.Mesh(m.geometry,b);T.add(A);var L=(new n.TextureLoader).load(e(25)),P=new n.PointsMaterial({color:16777215,size:7,map:L,transparent:!0,sizeAttenuation:!1,alphaTest:.1,opacity:.5});P.onBeforeCompile=function(n,t){n.vertexShader=n.vertexShader.replace("#include <common>","\n #include <common>\n attribute vec3 colorTest;\n varying vec3 vDColor;\n "),n.vertexShader=n.vertexShader.replace("#include <fog_vertex>","\n #include <fog_vertex>\n vDColor = colorTest;\n "),n.fragmentShader=n.fragmentShader.replace("#include <common>","\n #include <common>\n varying vec3 vDColor;\n "),n.fragmentShader=n.fragmentShader.replace("outgoingLight = diffuseColor.rgb;","\n outgoingLight = diffuseColor.rgb * vDColor;\n ")};var C=new n.MeshBasicMaterial({color:16777215,vertexColors:n.VertexColors,side:n.DoubleSide,transparent:!0,opacity:.5}),R=new n.Mesh(u.geometry,C);u.geometry.addAttribute("color",v),T.add(R),r.geometry.addAttribute("colorTest",a);var O=new n.Points(m.geometry,P),D=new n.Mesh(new n.CylinderGeometry(.38,.38,3,32,32,!0),new n.MeshBasicMaterial({color:16777215,side:n.DoubleSide}));D.material.visible=!1,T.add(O),T.add(D),T.scale.set(10,10,10);var U=new n.Group;U.add(T),this.lineGeom=r.geometry,this.meshLineGeom=m.geometry,this.polysGeom=u.geometry,this.polysId=f;for(var N=[],I=0,B=r.geometry.attributes.position.array.length;I<B;I++)N[s[I]]=I;if(this.pidMap=N,this.particleSystem=new i.ParticleSystem(this.lineGeom.attributes.position.array,1),this.params.isMobile||(this.mouseForce=new x.a(this.lineGeom.attributes.position.array),this.particleSystem.addForce(this.mouseForce)),this.particleSystem.addForce(new y.a(this.lineGeom.attributes.position.array)),!this.params.isMobile){var F=new n.Vector2,z=new n.Raycaster;window.addEventListener("mousemove",function(n){F.x=n.clientX/window.innerWidth*2-1,F.y=-n.clientY/window.innerHeight*2+1,z.setFromCamera(F,t.camera.native);var e=z.intersectObject(D);if(e[0]){var r=e[0].point;t.mouseForce.set(r.x/10,r.y/10,r.z/10)}})}return U}},{key:"updateGeometry",value:function(){var n=this.particleSystem,t=this.polysId,e=this.pidMap;n.tick(1);for(var r=n.positions,i=this.meshLineGeom.attributes.position.array,o=this.polysGeom.attributes.position.array,a=0,l=0,s=n.positions.length;l<s;l+=3)i[a++]=r[l],i[a++]=r[l+1],i[a++]=r[l+2],i[a++]=r[l],i[a++]=r[l+1],i[a++]=r[l+2];for(var c=0,u=o.length;c<u;c+=3)o[c]=r[e[t[c]]],o[c+1]=r[e[t[c+1]]],o[c+2]=r[e[t[c+2]]];this.meshLineGeom.attributes.position.needsUpdate=!0,this.polysGeom.attributes.position.needsUpdate=!0}}]),a}()}).call(this,e(0),e(5))},function(n,t){n.exports="# File exported by Houdini 16.5.323 (www.sidefx.com)\n# 1426 points\n# 7078 vertices\n# 3539 primitives\n# Bounds: [-0.588281512, -1.56575799, -0.579752803] to [0.619385898, 0.0473634787, 0.585885763]\ng \nv 0.498042345 0.0473634787 -0.00384462019\nv 0.497298151 0.0424439609 -0.0709212348\nv 0.48177126 0.0420929268 -0.135742754\nv 0.461166918 0.0441570021 -0.204357609\nv 0.431002527 0.0347724482 -0.256796002\nv 0.390733153 0.0387997106 -0.31565994\nv 0.342431873 0.0438109636 -0.368822992\nv 0.292084634 0.038422361 -0.409090549\nv 0.233695045 0.0396573469 -0.445701241\nv 0.170040473 0.0399379507 -0.472107857\nv 0.102793537 0.0379160047 -0.486962289\nv 0.0343037844 0.0427375548 -0.500193298\nv -0.0313367806 0.041963499 -0.502021015\nv -0.100359932 0.0425657481 -0.49191457\nv -0.164066285 0.0413326882 -0.47427541\nv -0.226303384 0.0386804827 -0.444791019\nv -0.287649214 0.0447820723 -0.412396669\nv -0.337162584 0.0356421657 -0.36361286\nv -0.390809506 0.0459506735 -0.316979557\nv -0.421387345 0.0364052653 -0.26045838\nv -0.457500756 0.0419913717 -0.200735539\nv -0.482990116 0.0409269668 -0.132732555\nv -0.496804327 0.0368566699 -0.0619173273\nv -0.498161376 0.0382545926 0.00146810373\nv -0.497323602 0.0437062494 0.0679189786\nv -0.483069539 0.0404702388 0.137600332\nv -0.46360904 0.0435690247 0.202196166\nv -0.428515613 0.0422494672 0.260409653\nv -0.387383103 0.039437864 0.317194939\nv -0.346697539 0.0458426438 0.366557658\nv -0.295883983 0.0449129082 0.412677199\nv -0.232516959 0.042796243 0.445192128\nv -0.167939588 0.0433524549 0.469839096\nv -0.100102812 0.0378695168 0.49160856\nv -0.0311355833 0.0364086516 0.501001358\nv 0.0403947756 0.0380663946 0.496055633\nv 0.104635596 0.0356166996 0.492578954\nv 0.171231061 0.043457482 0.465442926\nv 0.238106951 0.0382124893 0.439216912\nv 0.289946437 0.045390334 0.403049558\nv 0.338343501 0.0422744267 0.367637843\nv 0.384001464 0.0423823744 0.318577021\nv 0.423026711 0.0453937799 0.260142326\nv 0.457976073 0.0360175855 0.205373704\nv 0.474621624 0.0460788421 0.137217686\nv 0.492598146 0.046045132 0.0663441643\nv 0.499413103 -0.00487093162 0.000369533111\nv 0.494542718 -0.00440937653 -0.0678370222\nv 0.480897576 -0.00436890498 -0.134793088\nv 0.458126694 -0.00462872814 -0.198767737\nv 0.425899804 -0.00367030362 -0.259328604\nv 0.387129366 -0.00389100634 -0.31528008\nv 0.340884596 -0.00420920504 -0.36500451\nv 0.287890941 -0.00445424207 -0.407604247\nv 0.229072645 -0.00409613969 -0.442748219\nv 0.166250691 -0.00343194907 -0.470216721\nv 0.101235293 -0.00412261207 -0.488489479\nv 0.0340521783 -0.00436651194 -0.497829527\nv -0.0340512209 -0.00452457601 -0.497693211\nv -0.101302497 -0.00474875141 -0.48843199\nv -0.167577043 -0.00413035043 -0.469994783\nv -0.230345532 -0.00363536016 -0.443065315\nv -0.2881639 -0.00442847516 -0.40726456\nv -0.341084421 -0.00417944137 -0.364445537\nv -0.386994243 -0.00452060485 -0.314905316\nv -0.426181585 -0.00430286536 -0.25956592\nv -0.457404166 -0.004297507 -0.199203402\nv -0.479887784 -0.00437372411 -0.135265604\nv -0.494118065 -0.00406784331 -0.0685013607\nv -0.499078721 -0.00384171493 -0.000449528248\nv -0.493879497 -0.00431952067 0.0674444139\nv -0.48041141 -0.00392979663 0.134147301\nv -0.457295328 -0.00410439773 0.198211193\nv -0.426161647 -0.00406558113 0.258868009\nv -0.386677474 -0.00414289627 0.314403921\nv -0.340175986 -0.00439930381 0.364446193\nv -0.287801355 -0.00437661726 0.40788728\nv -0.229838029 -0.00442902511 0.443580508\nv -0.167472079 -0.00439173216 0.470803499\nv -0.10193184 -0.00389273977 0.488743097\nv -0.034438964 -0.00415691501 0.498281419\nv 0.0338633098 -0.00448034797 0.498427719\nv 0.101132631 -0.00405167602 0.488943934\nv 0.166376621 -0.00378563115 0.470652819\nv 0.229323328 -0.00386872794 0.443133265\nv 0.288232952 -0.00462739542 0.407793015\nv 0.340889484 -0.00389750255 0.364259094\nv 0.387301117 -0.00437022606 0.315030903\nv 0.426923156 -0.00421517715 0.258883983\nv 0.458211213 -0.00410456024 0.198340043\nv 0.481341004 -0.00514347106 0.134871215\nv 0.495028585 -0.00487631373 0.0680766925\nv 0.501224279 -0.0503397174 -0.00262239506\nv 0.494810969 -0.0541050993 -0.0649340674\nv 0.481162786 -0.0514465533 -0.134366497\nv 0.456887245 -0.0515444763 -0.196848676\nv 0.423949212 -0.0495794304 -0.257546932\nv 0.383707166 -0.0480011888 -0.31366235\nv 0.340073466 -0.0509116687 -0.363239825\nv 0.28649652 -0.0492536649 -0.406994343\nv 0.225591108 -0.0421336293 -0.446652025\nv 0.165436372 -0.0437571406 -0.474345803\nv 0.0986956209 -0.0451354124 -0.490061074\nv 0.0295510963 -0.052892264 -0.489794642\nv -0.0338017084 -0.0522500426 -0.495091885\nv -0.100733347 -0.0537851155 -0.484739244\nv -0.172224686 -0.046062015 -0.468108654\nv -0.233003631 -0.0493018627 -0.439373106\nv -0.283434749 -0.0585140735 -0.402501166\nv -0.332612932 -0.0554233566 -0.366249233\nv -0.384523183 -0.0476042926 -0.318874449\nv -0.423649937 -0.0485907085 -0.262419701\nv -0.455577374 -0.0537305847 -0.196257249\nv -0.477902949 -0.048671104 -0.137684345\nv -0.495726079 -0.0464839116 -0.069299601\nv -0.501337469 -0.0452408269 -0.00172294164\nv -0.486942589 -0.0526649468 0.0637966469\nv -0.47598511 -0.0499508455 0.130547106\nv -0.452125639 -0.045601137 0.189193547\nv -0.419565946 -0.0511000305 0.253803998\nv -0.383396506 -0.0501801707 0.311494052\nv -0.335860938 -0.0528706722 0.362770617\nv -0.290501356 -0.0540003851 0.414214164\nv -0.235316947 -0.0562831834 0.454755634\nv -0.17157127 -0.0481733121 0.472372055\nv -0.105958231 -0.0463158116 0.488735825\nv -0.0415788107 -0.0487958193 0.503471255\nv 0.0317290612 -0.0474844798 0.496859908\nv 0.100911327 -0.0476399921 0.485947222\nv 0.165318951 -0.0456541814 0.466691434\nv 0.223034143 -0.0472220853 0.445827395\nv 0.285089999 -0.0485649034 0.40788573\nv 0.340425819 -0.0508958027 0.364716381\nv 0.386219501 -0.052148167 0.316891432\nv 0.425866216 -0.0549467616 0.263701677\nv 0.455636412 -0.0441026427 0.193992227\nv 0.480956078 -0.0559424013 0.13920556\nv 0.499007046 -0.0571797788 0.0696431473\nv 0.496972859 -0.0969386175 0.00122205529\nv 0.48747918 -0.0956855565 -0.0628771856\nv 0.484215707 -0.0980957076 -0.137482524\nv 0.457673401 -0.0917221531 -0.203908905\nv 0.43248716 -0.102188766 -0.259901673\nv 0.391789526 -0.102951221 -0.313049614\nv 0.346364319 -0.0901754722 -0.376155019\nv 0.287829936 -0.0884932354 -0.414791912\nv 0.221836776 -0.0836900696 -0.446843386\nv 0.152138531 -0.0790174305 -0.471104592\nv 0.106093481 -0.0936667472 -0.494172603\nv 0.0348405838 -0.105793491 -0.487397939\nv -0.0307178963 -0.105725773 -0.489769965\nv -0.105601311 -0.0929645523 -0.485554218\nv -0.168921009 -0.0939972252 -0.468254119\nv -0.219043151 -0.0982056558 -0.449158013\nv -0.275411665 -0.104617357 -0.409142584\nv -0.334557801 -0.10294196 -0.361478478\nv -0.389809608 -0.0988408327 -0.307027519\nv -0.420872867 -0.100211993 -0.258292496\nv -0.4465321 -0.0950274244 -0.208754107\nv -0.4651452 -0.0975486413 -0.146411285\nv -0.497918069 -0.0868041515 -0.0716675073\nv -0.501300097 -0.0878274962 -0.00417632237\nv -0.483560443 -0.099325344 0.0618409589\nv -0.471324235 -0.103420086 0.133922532\nv -0.452334702 -0.0955633074 0.193842098\nv -0.419127196 -0.0918866396 0.248482466\nv -0.389490962 -0.10079623 0.322277635\nv -0.35165745 -0.0954028964 0.375068426\nv -0.289898932 -0.0928669199 0.406270564\nv -0.228554443 -0.0991752595 0.444405705\nv -0.159514695 -0.0984220654 0.463899076\nv -0.090670675 -0.097113736 0.47742784\nv -0.0360286683 -0.0841718465 0.486542195\nv 0.0308717769 -0.0870488212 0.490367979\nv 0.100806795 -0.0988384411 0.490037262\nv 0.163981259 -0.0919677243 0.467159331\nv 0.221506447 -0.0854517072 0.438435346\nv 0.281782359 -0.0913225263 0.406668693\nv 0.341725528 -0.106025569 0.370945901\nv 0.380711466 -0.102013968 0.324758708\nv 0.420312673 -0.10013745 0.267008305\nv 0.444884568 -0.0810847506 0.194657102\nv 0.492268443 -0.100733802 0.125404969\nv 0.505356252 -0.114310898 0.0729255378\nv 0.517244577 -0.157674223 0.00269534695\nv 0.490410745 -0.146986648 -0.056323763\nv 0.468147129 -0.135772958 -0.129927546\nv 0.460142583 -0.144934297 -0.198692858\nv 0.446328908 -0.16098848 -0.256887585\nv 0.396739393 -0.144691601 -0.322781622\nv 0.336649954 -0.130607665 -0.372426927\nv 0.274611115 -0.126419365 -0.409781814\nv 0.217683896 -0.140193284 -0.434358448\nv 0.166503221 -0.132196456 -0.478127688\nv 0.106335424 -0.133960202 -0.499703974\nv 0.0321990028 -0.143628985 -0.496250808\nv -0.0443547182 -0.137209386 -0.491621226\nv -0.104259096 -0.145284578 -0.486175954\nv -0.164051443 -0.143886656 -0.473047942\nv -0.225163892 -0.137408927 -0.449871123\nv -0.297801793 -0.139048591 -0.399668157\nv -0.357680261 -0.159336656 -0.356544375\nv -0.394425809 -0.147041172 -0.307756096\nv -0.43314302 -0.141211405 -0.253069878\nv -0.478205532 -0.154134154 -0.176130816\nv -0.49721244 -0.141925663 -0.116835698\nv -0.513727784 -0.140213549 -0.0483446158\nv -0.508098364 -0.142060608 0.00954541285\nv -0.479533792 -0.137989774 0.047256723\nv -0.472315669 -0.138007268 0.121532425\nv -0.460473567 -0.13333489 0.193712413\nv -0.44081229 -0.127258584 0.259600699\nv -0.396402031 -0.140099198 0.321856022\nv -0.353179842 -0.149909437 0.383921206\nv -0.284615844 -0.147912666 0.409535706\nv -0.224981368 -0.147405207 0.443702757\nv -0.156445742 -0.137680039 0.454369128\nv -0.10572625 -0.136632547 0.485220164\nv -0.0266840532 -0.123523787 0.469115525\nv 0.0330356136 -0.127571404 0.48116082\nv 0.0924014151 -0.139729872 0.492930025\nv 0.1569895 -0.135826573 0.470888883\nv 0.21793735 -0.136242673 0.445692807\nv 0.272084385 -0.14585197 0.426829785\nv 0.329131275 -0.150534913 0.387611419\nv 0.36397028 -0.142299131 0.33781901\nv 0.435221195 -0.145793602 0.254365027\nv 0.443511099 -0.119964927 0.187068015\nv 0.486740083 -0.149119064 0.137640461\nv 0.526259422 -0.163512245 0.0641909838\nv 0.525287628 -0.176235512 -0.00669069216\nv 0.530783415 -0.181282207 -0.0875208974\nv 0.478977054 -0.159891248 -0.151009962\nv 0.468278289 -0.170624867 -0.209651053\nv 0.479467988 -0.201792017 -0.264605254\nv 0.39738822 -0.175443038 -0.328874052\nv 0.360990822 -0.181383342 -0.392318964\nv 0.286544591 -0.171358168 -0.431153804\nv 0.222546056 -0.169361785 -0.467035949\nv 0.145545065 -0.167272478 -0.489238381\nv 0.101992995 -0.175455481 -0.521987796\nv 0.0199664347 -0.181997359 -0.532696664\nv -0.0454197079 -0.175116837 -0.529005051\nv -0.136766434 -0.185995832 -0.520641208\nv -0.201249689 -0.191522181 -0.50782901\nv -0.252687424 -0.161610976 -0.458522767\nv -0.311371237 -0.171025828 -0.429131925\nv -0.391263008 -0.192632228 -0.387610167\nv -0.458342046 -0.195210934 -0.313179195\nv -0.473891675 -0.177491561 -0.25758481\nv -0.517941594 -0.186438426 -0.18548198\nv -0.531021357 -0.174572662 -0.116716407\nv -0.548438728 -0.188150913 -0.0572774187\nv -0.553937972 -0.19238545 0.0100459056\nv -0.546050608 -0.191877723 0.0741810873\nv -0.512218773 -0.172114745 0.129098654\nv -0.490641177 -0.173097163 0.198861852\nv -0.464627773 -0.179606512 0.274437964\nv -0.426069975 -0.18724063 0.341606289\nv -0.381848127 -0.212768838 0.431090742\nv -0.322517753 -0.192644522 0.452287376\nv -0.258327454 -0.183416039 0.477232575\nv -0.18534483 -0.185451418 0.508590758\nv -0.119603634 -0.158249199 0.486011535\nv -0.0449559763 -0.157299802 0.492558241\nv 0.0140839862 -0.160863861 0.50582695\nv 0.0875878483 -0.180744246 0.529966533\nv 0.14381367 -0.169851065 0.501248658\nv 0.210373253 -0.159002304 0.454061806\nv 0.282824069 -0.178734019 0.44894883\nv 0.351172656 -0.194426924 0.424040765\nv 0.401057303 -0.195408136 0.37644437\nv 0.405434459 -0.161506474 0.287853956\nv 0.418049604 -0.153526023 0.232689217\nv 0.496940315 -0.183212146 0.178238496\nv 0.520542562 -0.181329638 0.0859921873\nv 0.536100686 -0.199368641 0.0227538235\nv 0.529475093 -0.194631353 -0.0723435432\nv 0.489255846 -0.177988604 -0.158892199\nv 0.483123094 -0.19128336 -0.236177966\nv 0.484769106 -0.225211188 -0.288860321\nv 0.431719542 -0.218462825 -0.35043478\nv 0.38192448 -0.216696754 -0.421652675\nv 0.278248966 -0.187943801 -0.458682388\nv 0.246477336 -0.211728409 -0.506586015\nv 0.187958509 -0.237434864 -0.534513056\nv 0.101160131 -0.22010918 -0.558336437\nv 0.039464809 -0.219555616 -0.572773993\nv -0.0602846816 -0.216009974 -0.565443277\nv -0.135017827 -0.219884261 -0.555856884\nv -0.248222217 -0.20727478 -0.506101489\nv -0.302506834 -0.20750685 -0.479704887\nv -0.340138167 -0.222656727 -0.466462702\nv -0.392366856 -0.245762512 -0.428174466\nv -0.463414878 -0.218935952 -0.34534657\nv -0.533669055 -0.222686216 -0.238810644\nv -0.563603401 -0.229415178 -0.171051547\nv -0.577051282 -0.221877307 -0.109157443\nv -0.572320938 -0.254127085 -0.0871886984\nv -0.576453924 -0.211657315 9.87449675e-05\nv -0.579701543 -0.241698369 0.0930765048\nv -0.562106848 -0.254726052 0.191740632\nv -0.534748793 -0.23037526 0.220291495\nv -0.499505371 -0.218225479 0.285739213\nv -0.426996887 -0.281773031 0.396115094\nv -0.399797469 -0.238342896 0.42844376\nv -0.337152719 -0.241504654 0.479736388\nv -0.277316391 -0.222210318 0.504906476\nv -0.227830008 -0.197988987 0.512903571\nv -0.134212837 -0.179556355 0.507032812\nv -0.0404060185 -0.225542173 0.570951939\nv 0.00779978326 -0.225066781 0.578700244\nv 0.0984451175 -0.227275014 0.567463756\nv 0.165459082 -0.211933076 0.538048387\nv 0.20748812 -0.176914036 0.475111425\nv 0.303093195 -0.263118058 0.505486727\nv 0.311942637 -0.230818123 0.485337973\nv 0.408986628 -0.215583622 0.383510798\nv 0.450763017 -0.18294768 0.266118735\nv 0.498105139 -0.203458488 0.227402061\nv 0.514598727 -0.201016739 0.170100674\nv 0.556319058 -0.231877372 0.10608808\nv 0.533813715 -0.199559256 -0.0217341203\nv 0.551599085 -0.227844298 -0.094977811\nv 0.527071178 -0.220815465 -0.169547945\nv 0.513193309 -0.240147129 -0.241491318\nv 0.485905677 -0.257023245 -0.306480795\nv 0.454554021 -0.283489108 -0.361965448\nv 0.380730569 -0.242552564 -0.441995114\nv 0.287092686 -0.213697672 -0.489370286\nv 0.281879395 -0.268976748 -0.522431672\nv 0.208411679 -0.295081556 -0.527839065\nv 0.0994485393 -0.28066054 -0.551543295\nv 0.0345702134 -0.311157435 -0.538025439\nv -0.0308376849 -0.282917351 -0.573826075\nv -0.156112716 -0.274950564 -0.548506439\nv -0.176954642 -0.319066405 -0.512554228\nv -0.264204741 -0.259261191 -0.525182664\nv -0.319826394 -0.267770708 -0.49090746\nv -0.406998962 -0.280241728 -0.411887467\nv -0.469366461 -0.300873697 -0.318364143\nv -0.506495178 -0.231012583 -0.303767502\nv -0.529001415 -0.296323836 -0.214484364\nv -0.561985493 -0.261773139 -0.172214434\nv -0.588281512 -0.273165107 -0.0574053451\nv -0.570981741 -0.303804159 0.0292934291\nv -0.536269069 -0.324508935 0.0963954851\nv -0.492899835 -0.337514102 0.154028773\nv -0.519206285 -0.296145767 0.232936755\nv -0.510744989 -0.266032428 0.303848863\nv -0.437926322 -0.29771772 0.37300548\nv -0.412854075 -0.279565841 0.434420496\nv -0.345912665 -0.292547315 0.484746516\nv -0.291730374 -0.27972272 0.520834506\nv -0.227760375 -0.243394986 0.535818338\nv -0.141295806 -0.235808253 0.554325044\nv -0.0623300746 -0.278650552 0.582451522\nv 0.00253749057 -0.265354306 0.585885763\nv 0.114553757 -0.318510413 0.560249209\nv 0.175252229 -0.265863419 0.550891757\nv 0.188742608 -0.259482324 0.553398192\nv 0.291778028 -0.299474508 0.498119742\nv 0.362949163 -0.279472411 0.446899772\nv 0.409319907 -0.263577163 0.39998126\nv 0.447033823 -0.249021828 0.34655115\nv 0.499529123 -0.250658751 0.262968242\nv 0.512812674 -0.224987656 0.194644198\nv 0.554207027 -0.272717118 0.111094676\nv 0.568920434 -0.258162975 -0.0569559783\nv 0.549732983 -0.263076067 -0.0899289623\nv 0.534548759 -0.251094401 -0.212325543\nv 0.509469092 -0.283718556 -0.24524653\nv 0.474436939 -0.341865033 -0.282617927\nv 0.429134578 -0.291546226 -0.376366615\nv 0.378648251 -0.320703268 -0.403930247\nv 0.304067522 -0.28789717 -0.474963993\nv 0.24857831 -0.310817063 -0.497955561\nv 0.216434166 -0.348161399 -0.508439064\nv 0.155604362 -0.35209164 -0.528815508\nv 0.0483336672 -0.348727584 -0.523173809\nv -0.0445230529 -0.338491678 -0.528642237\nv -0.0692728609 -0.350622773 -0.530120909\nv -0.133715108 -0.397854298 -0.443759829\nv -0.238236934 -0.343265444 -0.476587534\nv -0.33240068 -0.274102777 -0.492888689\nv -0.372468561 -0.310333192 -0.430419207\nv -0.434169888 -0.333856493 -0.330489993\nv -0.511569858 -0.310112774 -0.262155533\nv -0.463254154 -0.352608562 -0.228334427\nv -0.534370065 -0.324322879 -0.152743518\nv -0.549759805 -0.325608313 -0.0764332265\nv -0.50924176 -0.359897494 0.0031052425\nv -0.457945436 -0.392338663 0.0815258548\nv -0.459750503 -0.388254046 0.164666772\nv -0.495949864 -0.345925301 0.240218312\nv -0.503788292 -0.298576266 0.280486643\nv -0.430944622 -0.32657367 0.348070353\nv -0.349115819 -0.375075489 0.413320899\nv -0.27947244 -0.371162176 0.440552145\nv -0.236786798 -0.362571567 0.484784573\nv -0.167484194 -0.325010687 0.513263047\nv -0.130316734 -0.33224234 0.545432746\nv -0.0900879502 -0.305632979 0.571986914\nv 0.00231984584 -0.325909346 0.56504035\nv 0.0849308819 -0.319760889 0.554911196\nv 0.179744706 -0.310385436 0.527623594\nv 0.23983261 -0.344626248 0.488303334\nv 0.298238993 -0.367222488 0.442191064\nv 0.3717812 -0.342475414 0.395123869\nv 0.381990999 -0.362717092 0.370326668\nv 0.460830331 -0.251693219 0.30964151\nv 0.490519941 -0.35363698 0.2186656\nv 0.519154608 -0.271064997 0.185564294\nv 0.565266192 -0.266252577 0.0383182652\nv 0.558176875 -0.288203418 -0.0664672554\nv 0.543811798 -0.29307735 -0.130180389\nv 0.514895737 -0.321846128 -0.175768971\nv 0.474354923 -0.372511327 -0.217132181\nv 0.443542033 -0.38586092 -0.273199707\nv 0.41377598 -0.393710822 -0.332353085\nv 0.334370136 -0.394551486 -0.343215108\nv 0.299855053 -0.39113611 -0.408011615\nv 0.206890017 -0.370551825 -0.435680717\nv 0.157921523 -0.407640964 -0.43163389\nv 0.122181781 -0.437312424 -0.446267873\nv 0.0173929892 -0.36505127 -0.511927247\nv -0.0343848206 -0.414404064 -0.455581814\nv -0.0743269995 -0.409145921 -0.47627911\nv -0.147553459 -0.407865703 -0.452244282\nv -0.237381488 -0.363600135 -0.469676673\nv -0.340047538 -0.344605178 -0.427167088\nv -0.397232503 -0.361082613 -0.349536717\nv -0.37881583 -0.403502464 -0.291752994\nv -0.41743961 -0.388708293 -0.262242705\nv -0.449477315 -0.385270327 -0.208075568\nv -0.488334119 -0.379279315 -0.135406166\nv -0.50403434 -0.364172131 -0.10059689\nv -0.505685747 -0.374528408 -0.0119025735\nv -0.447565049 -0.429758966 0.0780487359\nv -0.416853279 -0.449992627 0.144341126\nv -0.449271351 -0.377719551 0.17682226\nv -0.424939245 -0.398095667 0.276243925\nv -0.372436404 -0.398519874 0.317049861\nv -0.337814152 -0.407587439 0.384192765\nv -0.245753363 -0.402972192 0.386516631\nv -0.202241376 -0.40445295 0.433200568\nv -0.168344989 -0.400558919 0.480968028\nv -0.127508923 -0.42631489 0.543105066\nv -0.0811695829 -0.383303285 0.537271023\nv 0.0123869022 -0.37284258 0.520400822\nv 0.0964265168 -0.338801175 0.520649552\nv 0.158927098 -0.392900348 0.480350822\nv 0.248619422 -0.425671577 0.441375256\nv 0.298148423 -0.431354761 0.418987542\nv 0.351574004 -0.414172888 0.360434562\nv 0.404381275 -0.407120526 0.300585747\nv 0.416193455 -0.382748395 0.279061228\nv 0.432959229 -0.414453775 0.232650012\nv 0.511016905 -0.286718637 0.165422425\nv 0.538999379 -0.285511196 0.0622700974\nv 0.465946794 -0.407688171 0.00322294026\nv 0.458781272 -0.40367654 -0.059868902\nv 0.453630716 -0.363180995 -0.119996943\nv 0.438029736 -0.405684322 -0.208238333\nv 0.428586513 -0.435071617 -0.264219791\nv 0.409997761 -0.419288307 -0.351091117\nv 0.3606354 -0.431075662 -0.38401866\nv 0.305287898 -0.456856221 -0.39740324\nv 0.22616756 -0.469613612 -0.396984041\nv 0.169212312 -0.47396335 -0.421873331\nv 0.123500124 -0.475133479 -0.455345213\nv 0.0420235209 -0.431286931 -0.489874601\nv -0.0432209373 -0.384769469 -0.522898018\nv -0.122264229 -0.479458749 -0.399966031\nv -0.198433459 -0.435542196 -0.412663311\nv -0.229163378 -0.438272268 -0.413253516\nv -0.29861477 -0.417477548 -0.386893332\nv -0.295136482 -0.432090491 -0.384882241\nv -0.334189296 -0.458711505 -0.31608656\nv -0.433508515 -0.401078612 -0.26224032\nv -0.470080256 -0.406052113 -0.190279603\nv -0.502449036 -0.41960451 -0.102843568\nv -0.496272564 -0.428183913 -0.0496245846\nv -0.474338561 -0.495943189 0.0554799736\nv -0.448398978 -0.496392041 0.0992177874\nv -0.432109654 -0.493832171 0.157396689\nv -0.406406671 -0.498334378 0.219012067\nv -0.444667518 -0.443042934 0.294605345\nv -0.374742508 -0.480080873 0.35016492\nv -0.331816107 -0.465259999 0.386077017\nv -0.217048302 -0.490715146 0.383909434\nv -0.228592604 -0.447505057 0.448941141\nv -0.157500267 -0.464554429 0.479228437\nv -0.0935980529 -0.42954582 0.464549869\nv -0.0285024289 -0.42151612 0.467297107\nv 0.0111137899 -0.40694052 0.48511824\nv 0.0687014386 -0.423938394 0.493858516\nv 0.166334763 -0.458963752 0.471847355\nv 0.201190799 -0.456873029 0.469616652\nv 0.321062356 -0.486810356 0.39625895\nv 0.36961171 -0.444551557 0.321518958\nv 0.40550974 -0.435878217 0.275077611\nv 0.43514961 -0.425055563 0.220312253\nv 0.482553005 -0.486763 0.197989613\nv 0.471118063 -0.389423817 0.111600287\nv 0.458925664 -0.418994606 0.0743144155\nv 0.480595499 -0.473716438 -0.00917213596\nv 0.465151668 -0.430663049 -0.100761101\nv 0.424058169 -0.403503478 -0.147644088\nv 0.405662119 -0.459909379 -0.177346319\nv 0.412859976 -0.478191406 -0.255201429\nv 0.375506431 -0.473051399 -0.313237548\nv 0.379364759 -0.481122077 -0.400648922\nv 0.368714541 -0.495222211 -0.467956066\nv 0.303851783 -0.550560296 -0.441838384\nv 0.206144735 -0.540039659 -0.439748555\nv 0.0921679586 -0.437399089 -0.504136682\nv -0.00277483929 -0.45240131 -0.468666613\nv -0.013837452 -0.460914999 -0.514490068\nv -0.116928607 -0.444230169 -0.483824342\nv -0.179287642 -0.490326643 -0.420671076\nv -0.236088261 -0.451205999 -0.437092602\nv -0.263259619 -0.527754724 -0.353649676\nv -0.29429692 -0.506180704 -0.354352862\nv -0.361269981 -0.482526392 -0.308473855\nv -0.395362616 -0.444615722 -0.296895891\nv -0.458294749 -0.422673881 -0.227731943\nv -0.439761072 -0.491470605 -0.137913406\nv -0.47103852 -0.495512098 -0.0522384383\nv -0.42414856 -0.49782443 -0.0365197882\nv -0.419566274 -0.542645752 0.0715206861\nv -0.449889898 -0.546376467 0.181850448\nv -0.44877699 -0.56217432 0.278530359\nv -0.453568667 -0.513776958 0.325858623\nv -0.346460193 -0.550429642 0.340726018\nv -0.304380566 -0.541712761 0.381961942\nv -0.256048083 -0.536367834 0.419810772\nv -0.263332635 -0.441957414 0.433570802\nv -0.204150245 -0.486700684 0.501265943\nv -0.103631422 -0.46933639 0.463902175\nv 0.00354712899 -0.459534526 0.419995487\nv 0.0343752541 -0.523882568 0.511172771\nv 0.113261536 -0.51879406 0.482531011\nv 0.145375073 -0.508798122 0.488309354\nv 0.172507331 -0.484660208 0.475287586\nv 0.300401956 -0.471291631 0.35648948\nv 0.342600524 -0.450410306 0.306419224\nv 0.417258024 -0.498405278 0.269131809\nv 0.450025558 -0.497973263 0.220672682\nv 0.488726407 -0.540217698 0.18888244\nv 0.469994158 -0.446670949 0.0899315923\nv 0.50741601 -0.496571273 0.0447971076\nv 0.53211993 -0.560485065 -0.03198478\nv 0.428589106 -0.509240627 -0.0446292795\nv 0.432447314 -0.518032074 -0.116728596\nv 0.450201184 -0.531714678 -0.203164175\nv 0.449211121 -0.54760623 -0.27393356\nv 0.373800486 -0.479456484 -0.349941969\nv 0.367574573 -0.568301916 -0.354976267\nv 0.289229125 -0.574081182 -0.362767845\nv 0.231641486 -0.530815303 -0.432757616\nv 0.206208885 -0.608083665 -0.418651253\nv 0.0826406032 -0.517504752 -0.461142182\nv 0.0760937333 -0.502295136 -0.542226493\nv -0.0527034849 -0.514753878 -0.465870172\nv -0.122720473 -0.489092082 -0.477046371\nv -0.128009453 -0.529484987 -0.475756347\nv -0.184788361 -0.584889531 -0.39386639\nv -0.253121853 -0.540414393 -0.394002467\nv -0.314026207 -0.497809172 -0.386791229\nv -0.381925017 -0.540492713 -0.271310687\nv -0.403699756 -0.52763623 -0.247478887\nv -0.452580184 -0.475625753 -0.224226952\nv -0.404495358 -0.533677101 -0.173425034\nv -0.444914818 -0.528157175 -0.0888900682\nv -0.467940837 -0.499033958 -0.0350548066\nv -0.426379263 -0.58762306 0.079438962\nv -0.422129661 -0.58088398 0.143629953\nv -0.433155298 -0.577529192 0.233295724\nv -0.366422147 -0.57811445 0.252007425\nv -0.328953147 -0.542949617 0.270939589\nv -0.3554537 -0.484330237 0.337319016\nv -0.290459126 -0.506699085 0.383446455\nv -0.24163951 -0.55593574 0.468000382\nv -0.184245825 -0.537792742 0.479230195\nv -0.0648952946 -0.574222147 0.466193765\nv -0.0100816749 -0.589590669 0.497408539\nv 0.0925834775 -0.606842279 0.469723731\nv 0.14378114 -0.538166881 0.418142498\nv 0.160182804 -0.508606076 0.424517035\nv 0.19842726 -0.503472805 0.416287333\nv 0.284499258 -0.523733556 0.367652804\nv 0.327179253 -0.527610362 0.337614328\nv 0.360161752 -0.5218485 0.296910346\nv 0.411662698 -0.537668586 0.242739454\nv 0.465464652 -0.567797899 0.186160132\nv 0.458470732 -0.538233995 0.129661709\nv 0.476079583 -0.457400531 -0.00351641001\nv 0.548612356 -0.588416755 -0.0692315549\nv 0.435340732 -0.522703111 -0.0846816003\nv 0.367102116 -0.564308763 -0.0627524629\nv 0.428404629 -0.590814352 -0.177774593\nv 0.3905752 -0.601437509 -0.217234597\nv 0.344762206 -0.578180254 -0.279631585\nv 0.368747443 -0.608038843 -0.363782138\nv 0.279475808 -0.610070944 -0.363498628\nv 0.209185645 -0.579721808 -0.408321381\nv 0.194544613 -0.566478848 -0.489448071\nv 0.121303193 -0.571546137 -0.490235567\nv 0.070624046 -0.532693565 -0.550400138\nv -0.0664249212 -0.531657159 -0.478551\nv -0.102039881 -0.551536858 -0.477617919\nv -0.174990967 -0.521055877 -0.480809689\nv -0.17300877 -0.607738733 -0.424476624\nv -0.23804687 -0.561580956 -0.430272371\nv -0.351268649 -0.53764075 -0.351492345\nv -0.386714876 -0.545013487 -0.305151939\nv -0.483816683 -0.545552313 -0.192604557\nv -0.451385796 -0.570505917 -0.170868516\nv -0.426885337 -0.600981236 -0.124104887\nv -0.514664412 -0.546744466 -0.044039432\nv -0.459671676 -0.576379538 -0.00896708481\nv -0.43122983 -0.620010793 0.073874481\nv -0.383254468 -0.689598143 0.167768955\nv -0.395940572 -0.632615685 0.204741597\nv -0.375944495 -0.643231332 0.279369861\nv -0.28207168 -0.631950259 0.259337544\nv -0.316274911 -0.59032613 0.348419875\nv -0.257284671 -0.591162622 0.378691137\nv -0.107558884 -0.665860415 0.372492045\nv -0.0562362745 -0.658414841 0.397205085\nv -0.0235537011 -0.655609488 0.442499071\nv 0.0193359032 -0.672118068 0.487240404\nv 0.0799851492 -0.65385735 0.474034905\nv 0.0677927211 -0.553600669 0.462947279\nv 0.120161146 -0.585933268 0.481878698\nv 0.177028313 -0.539169252 0.419327587\nv 0.26047039 -0.51332891 0.335721761\nv 0.310805619 -0.575269341 0.343594342\nv 0.356322408 -0.609674096 0.321729273\nv 0.347184092 -0.546637714 0.265522152\nv 0.436085254 -0.550007641 0.153842881\nv 0.449722767 -0.56766504 0.114879511\nv 0.477208585 -0.530191183 0.00973049272\nv 0.471407741 -0.636848092 -0.00531658484\nv 0.468071073 -0.619360149 -0.0821603537\nv 0.396683097 -0.602042973 -0.103804871\nv 0.392213076 -0.654676139 -0.135883898\nv 0.391079873 -0.66991508 -0.203293771\nv 0.342623651 -0.657114446 -0.252728999\nv 0.401170582 -0.69708395 -0.357584476\nv 0.354237288 -0.705692649 -0.390336931\nv 0.213569596 -0.61042279 -0.426409245\nv 0.166015193 -0.712082863 -0.362669379\nv 0.102741718 -0.670852423 -0.415388465\nv 0.0111345164 -0.62015003 -0.445080906\nv -0.0769797191 -0.572661579 -0.469170898\nv -0.171018764 -0.60849601 -0.390684843\nv -0.188667178 -0.547343075 -0.48330003\nv -0.202315599 -0.624974966 -0.419163615\nv -0.298484355 -0.591679156 -0.380331397\nv -0.317359596 -0.623722315 -0.335344493\nv -0.385726422 -0.58389765 -0.307831258\nv -0.387968838 -0.601497471 -0.270901173\nv -0.434183836 -0.623688757 -0.173907727\nv -0.351531535 -0.732330739 -0.0987453759\nv -0.532363534 -0.604965746 -0.00998532958\nv -0.475524366 -0.650825083 0.0400061905\nv -0.469260365 -0.650990844 0.100288883\nv -0.473942459 -0.648370802 0.176030025\nv -0.399914265 -0.665069222 0.197552919\nv -0.403027236 -0.651582003 0.272066891\nv -0.37965855 -0.667559803 0.35137558\nv -0.305749983 -0.682435393 0.377499551\nv -0.222367749 -0.644691825 0.343958616\nv -0.144139156 -0.701112747 0.398727775\nv -0.182141766 -0.652218223 0.484848917\nv -0.0507793054 -0.713926733 0.477088749\nv -0.00375074893 -0.643780291 0.439824849\nv 0.124813229 -0.682204068 0.399653971\nv 0.157178193 -0.754378796 0.48864162\nv 0.117030509 -0.609893799 0.45587036\nv 0.204509541 -0.661224484 0.440631956\nv 0.180204868 -0.555132508 0.40340817\nv 0.242987916 -0.569829881 0.35994935\nv 0.322763652 -0.58006376 0.284119785\nv 0.417173177 -0.617973804 0.205689043\nv 0.392541647 -0.548254848 0.147768378\nv 0.418155909 -0.613929033 0.134002984\nv 0.443602443 -0.635568023 0.0773245767\nv 0.468918324 -0.603678763 -0.0725298449\nv 0.455202639 -0.642635763 -0.0952863768\nv 0.386283726 -0.651726425 -0.097849533\nv 0.378324896 -0.680725813 -0.143939123\nv 0.391315699 -0.610043406 -0.295473278\nv 0.38848871 -0.719805002 -0.282477796\nv 0.299809039 -0.719922185 -0.282774478\nv 0.271952748 -0.64791894 -0.405802876\nv 0.29095757 -0.665228665 -0.492988825\nv 0.140272513 -0.649876654 -0.439783663\nv 0.0660690516 -0.752958477 -0.335612357\nv 0.0134657603 -0.70940733 -0.396196276\nv -0.022556806 -0.651575089 -0.484507233\nv -0.114133917 -0.672164857 -0.42223841\nv -0.238383561 -0.63147217 -0.38513279\nv -0.282852352 -0.623956501 -0.382163882\nv -0.34538424 -0.614873171 -0.351209939\nv -0.315253377 -0.709333897 -0.283492029\nv -0.434700161 -0.605899215 -0.278637439\nv -0.407174945 -0.634666979 -0.258547217\nv -0.435163289 -0.655914307 -0.180445328\nv -0.467327714 -0.697774768 -0.0660861358\nv -0.535961866 -0.699720144 0.0493254662\nv -0.480293691 -0.685643911 0.038626764\nv -0.428317428 -0.727559149 0.0960426033\nv -0.426383466 -0.704329014 0.142358989\nv -0.407233119 -0.698964596 0.195898786\nv -0.421326786 -0.67416203 0.2694951\nv -0.42552346 -0.657038927 0.345466018\nv -0.310900509 -0.673452318 0.330590665\nv -0.254816771 -0.659596026 0.347795963\nv -0.208439812 -0.742989242 0.463718921\nv -0.176393002 -0.710517645 0.484929919\nv -0.122825556 -0.686409354 0.485827535\nv 0.00323802046 -0.683630347 0.418295085\nv 0.058399912 -0.708353817 0.44721216\nv 0.135574535 -0.738443732 0.447819024\nv 0.205887362 -0.73475641 0.416146755\nv 0.220787898 -0.687555194 0.395704359\nv 0.207654998 -0.629329801 0.385146618\nv 0.272601008 -0.693804562 0.380021602\nv 0.235481456 -0.601713777 0.340971887\nv 0.319109559 -0.610358775 0.247412905\nv 0.384914041 -0.617525339 0.161527902\nv 0.395360023 -0.645488381 0.133760735\nv 0.45347324 -0.710835516 0.0825970024\nv 0.429380178 -0.596161067 -0.0859441683\nv 0.432076275 -0.671094179 -0.0946166068\nv 0.458447814 -0.741209149 -0.131669626\nv 0.358463049 -0.687374651 -0.161691695\nv 0.308999717 -0.703962684 -0.181610465\nv 0.289413065 -0.719646633 -0.231003508\nv 0.230966508 -0.748048007 -0.2321738\nv 0.253907502 -0.721900582 -0.360744745\nv 0.248339355 -0.736753702 -0.423771858\nv 0.206415355 -0.724926233 -0.473987252\nv 0.0981221274 -0.727992237 -0.436284035\nv 0.000154073437 -0.741699278 -0.389781415\nv -0.0771984383 -0.66373986 -0.458231986\nv -0.112527467 -0.702890038 -0.432768196\nv -0.180990249 -0.682106316 -0.430247903\nv -0.230357453 -0.716921091 -0.372784734\nv -0.169522002 -0.75086087 -0.41798678\nv -0.350518495 -0.612945676 -0.401401967\nv -0.343791455 -0.725615025 -0.27615568\nv -0.421828061 -0.65492785 -0.264637351\nv -0.430272996 -0.690822959 -0.189030722\nv -0.464352787 -0.703745544 -0.104179963\nv -0.504702449 -0.709524393 -0.0117782997\nv -0.550601065 -0.70419234 0.0836040974\nv -0.533366919 -0.705330968 0.133827001\nv -0.542638779 -0.680606127 0.191208482\nv -0.356969863 -0.734921157 0.139924109\nv -0.485873878 -0.683009386 0.300815165\nv -0.424904019 -0.690511525 0.333246857\nv -0.284705102 -0.794227481 0.373873711\nv -0.359523118 -0.696525395 0.45011124\nv -0.204494461 -0.776359916 0.445688903\nv -0.0971102118 -0.785390794 0.419571429\nv -0.0679691508 -0.772306621 0.45602113\nv 0.0430156365 -0.807926238 0.440325141\nv 0.0963920355 -0.805948555 0.446764946\nv 0.0738924518 -0.70224756 0.43490693\nv 0.143280551 -0.803799152 0.500923097\nv 0.16053161 -0.704308987 0.425476998\nv 0.203104556 -0.68935436 0.390074402\nv 0.325030833 -0.747151852 0.323241979\nv 0.327802688 -0.648832023 0.237338603\nv 0.377236515 -0.665186584 0.186948985\nv 0.363112748 -0.608042955 0.129315808\nv 0.41006586 -0.6964252 0.114686906\nv 0.432293296 -0.709723949 0.0568527207\nv 0.425105572 -0.753032744 -0.00106635061\nv 0.387783796 -0.673376739 -0.0951693058\nv 0.420563996 -0.736216068 -0.143383086\nv 0.381921709 -0.692918897 -0.219550252\nv 0.274929255 -0.680789471 -0.210035712\nv 0.270858437 -0.726037383 -0.248098552\nv 0.20300588 -0.734033525 -0.25775978\nv 0.203051522 -0.764683783 -0.310841143\nv 0.139938921 -0.697139442 -0.395648509\nv 0.178479284 -0.774121463 -0.437614411\nv 0.105639242 -0.695386112 -0.521123111\nv 0.011777088 -0.752165556 -0.433136702\nv -0.073170796 -0.733405709 -0.42796579\nv -0.087025471 -0.781417429 -0.41322583\nv -0.134796068 -0.777726114 -0.411430389\nv -0.303532094 -0.732334554 -0.323879421\nv -0.276998758 -0.806128502 -0.285758287\nv -0.303842068 -0.78546977 -0.292150766\nv -0.324668407 -0.76022464 -0.297816217\nv -0.393064857 -0.66349411 -0.326666504\nv -0.399815649 -0.780728459 -0.159716934\nv -0.499044478 -0.719665885 -0.0958025157\nv -0.430135399 -0.774957418 -0.0536006466\nv -0.463138402 -0.755110025 0.0121577531\nv -0.416544616 -0.827249765 0.10499379\nv -0.440483928 -0.771112084 0.14094542\nv -0.391530871 -0.759647727 0.157775238\nv -0.443215489 -0.782454848 0.312173426\nv -0.389859796 -0.758315504 0.319655448\nv -0.327818513 -0.778195679 0.361307949\nv -0.28918463 -0.810133517 0.43900758\nv -0.248077214 -0.781594634 0.454028428\nv -0.208600268 -0.775792301 0.490275621\nv -0.0730689988 -0.795667827 0.437503636\nv 0.0732065141 -0.843613982 0.394340634\nv 0.16632992 -0.941922426 0.464834571\nv 0.0713930205 -0.804400027 0.484225392\nv 0.148603126 -0.800648212 0.44159916\nv 0.179982483 -0.752586126 0.397664517\nv 0.166752681 -0.68446368 0.375849694\nv 0.270538837 -0.789629877 0.368634164\nv 0.292881459 -0.688075066 0.25527972\nv 0.361399829 -0.730745494 0.207900211\nv 0.377345473 -0.701468349 0.142254665\nv 0.441682696 -0.725825191 0.0656334758\nv 0.478834003 -0.766005814 0.018568879\nv 0.379507065 -0.817582786 0.0519882813\nv 0.42166537 -0.841096878 -0.0267384052\nv 0.375244409 -0.816875219 -0.0751350522\nv 0.27741757 -0.719688416 -0.141933233\nv 0.371270269 -0.69925648 -0.325212747\nv 0.273620665 -0.741645634 -0.276957035\nv 0.154917315 -0.703190923 -0.279656589\nv 0.181775719 -0.797729969 -0.297886521\nv 0.105789945 -0.73772949 -0.361782551\nv 0.00276066014 -0.697921753 -0.377637029\nv 0.0326275975 -0.7477988 -0.431835353\nv 0.0771681219 -0.86802119 -0.419418246\nv 0.00566975493 -0.812390864 -0.466537714\nv -0.111194447 -0.785979211 -0.425842941\nv -0.227504194 -0.770292401 -0.366726935\nv -0.213289633 -0.811318517 -0.36669907\nv -0.203124285 -0.877363861 -0.322344899\nv -0.334269196 -0.793659091 -0.295453131\nv -0.403252721 -0.776680708 -0.244818419\nv -0.441458046 -0.772980094 -0.197464228\nv -0.366884172 -0.807216465 -0.203014299\nv -0.544164121 -0.776243865 -0.0344760865\nv -0.525711894 -0.750468254 -0.0315801948\nv -0.46891278 -0.756024599 -0.0223071985\nv -0.458816677 -0.784650862 0.0616424493\nv -0.438252687 -0.869910061 0.196378902\nv -0.326399982 -0.920202255 0.211606205\nv -0.415092468 -0.839460254 0.298345387\nv -0.320506662 -0.839522243 0.28606385\nv -0.318948686 -0.768223345 0.299994141\nv -0.240156233 -0.806731701 0.339564413\nv -0.189723536 -0.781693161 0.345684648\nv -0.171569139 -0.779557407 0.406824768\nv -0.0946885869 -0.811087132 0.43090266\nv -0.0658099875 -0.789422989 0.451432258\nv 0.0290714987 -0.82407105 0.444547117\nv 0.140783682 -0.804194868 0.357345015\nv 0.208525389 -0.856696129 0.383407295\nv 0.240432143 -0.830954373 0.358620375\nv 0.19148384 -0.759861648 0.365978897\nv 0.261341572 -0.783030629 0.323525369\nv 0.307870775 -0.745794892 0.241122261\nv 0.33274439 -0.811615527 0.259524643\nv 0.37244308 -0.748750806 0.140191004\nv 0.399734974 -0.796315014 0.118101001\nv 0.465922236 -0.804281771 0.0197922532\nv 0.323386252 -0.847656071 0.0879238546\nv 0.39849034 -0.87193501 -0.0189813208\nv 0.385760069 -0.878929496 -0.0686861798\nv 0.304989994 -0.865367174 -0.079695791\nv 0.291442066 -0.766483068 -0.231442556\nv 0.305274129 -0.711504817 -0.375760972\nv 0.230309844 -0.818036079 -0.28529644\nv 0.209745094 -0.903355539 -0.262597859\nv 0.129422024 -0.785491765 -0.378615528\nv 0.16648984 -0.854806304 -0.425635338\nv 0.180224389 -0.902551651 -0.466992974\nv 0.0207248926 -0.873899221 -0.394109905\nv -0.0417301953 -0.798756063 -0.474564135\nv -0.0477416404 -0.88313669 -0.427203178\nv -0.176622197 -0.855702996 -0.363587618\nv -0.233207971 -0.804862976 -0.397780895\nv -0.301426619 -0.869494557 -0.274473906\nv -0.371126294 -0.913721859 -0.168694571\nv -0.414032102 -0.811876893 -0.236937702\nv -0.483541012 -0.787493527 -0.183912024\nv -0.491452843 -0.82468456 -0.109286815\nv -0.463895172 -0.858688474 -0.06158958\nv -0.424551934 -0.83328265 -0.0777837485\nv -0.513240278 -0.821006656 0.0456496589\nv -0.387458265 -0.900654793 0.0723158643\nv -0.451192737 -0.880962014 0.179628849\nv -0.358104706 -0.907860935 0.191180617\nv -0.352861911 -0.939796031 0.293887526\nv -0.362660021 -0.869908333 0.31739825\nv -0.325108647 -0.807779968 0.302781135\nv -0.264270365 -0.825159013 0.340775549\nv -0.197905481 -0.811052322 0.339663208\nv -0.151246712 -0.897845507 0.457455486\nv -0.0889563262 -0.761741281 0.331796825\nv -0.0575981885 -0.822288156 0.427598178\nv -0.0213095024 -0.802426159 0.432896435\nv 0.0543393157 -0.837336004 0.439178944\nv 0.150265872 -0.835899055 0.377203584\nv 0.280864924 -0.919470847 0.361344039\nv 0.283876151 -0.78004235 0.241719931\nv 0.325470805 -0.873329699 0.299159586\nv 0.359352231 -0.886159778 0.276036769\nv 0.309426129 -0.76690203 0.196406454\nv 0.398874015 -0.853154421 0.164069578\nv 0.483488142 -0.879235506 0.0762314647\nv 0.371127427 -0.848501205 0.100556269\nv 0.444479793 -0.907066822 -0.00601603556\nv 0.439722896 -0.933144152 -0.0384872667\nv 0.378425181 -0.904961109 -0.0776040405\nv 0.305908948 -0.830952108 -0.150782943\nv 0.275205791 -0.816257 -0.210726425\nv 0.279302716 -0.768032789 -0.33905527\nv 0.321573079 -0.904754519 -0.332303017\nv 0.261796892 -0.986805379 -0.273996264\nv 0.0849401802 -0.84407711 -0.312701881\nv 0.100925647 -0.89985168 -0.35034585\nv 0.0549118742 -0.873426259 -0.404204518\nv -0.0134054245 -0.810220718 -0.471572489\nv -0.0145940902 -0.92980057 -0.401124001\nv -0.0772336125 -0.927034736 -0.38987726\nv -0.071731925 -0.94330883 -0.423591703\nv -0.167499572 -0.814164042 -0.501971364\nv -0.253320873 -0.849144697 -0.391000688\nv -0.265495062 -0.965065002 -0.259113759\nv -0.343847871 -0.876340926 -0.274326503\nv -0.40540418 -0.833211243 -0.248489618\nv -0.429772377 -0.814735651 -0.219313279\nv -0.352316558 -0.91702491 -0.143560722\nv -0.422193438 -0.9515962 -0.000563995796\nv -0.379785508 -0.920400381 -0.0151554374\nv -0.417488188 -0.936778069 0.0954572558\nv -0.440219373 -0.874589622 0.123746961\nv -0.42577365 -0.891136944 0.199756265\nv -0.281837016 -0.980819583 0.224586219\nv -0.269272834 -0.927702963 0.240306139\nv -0.247013733 -0.894106269 0.266085923\nv -0.310823351 -0.80757165 0.330473304\nv -0.188760787 -0.871387422 0.346479952\nv -0.161769703 -0.86940968 0.395800173\nv -0.0313627273 -0.8714903 0.330452204\nv -0.110676207 -0.813526928 0.432988375\nv -0.0491823964 -0.744079173 0.362382919\nv 0.0579222627 -0.877895832 0.429582\nv 0.142396927 -0.869012594 0.372273922\nv 0.207314149 -0.88695842 0.355714679\nv 0.263346672 -0.879662037 0.311748385\nv 0.299816668 -1.01453996 0.433321416\nv 0.2605474 -0.889558256 0.331356943\nv 0.270395309 -0.825764954 0.241823345\nv 0.311342895 -0.863859832 0.211684555\nv 0.444878072 -0.887943625 0.0757856295\nv 0.490519375 -0.917663157 0.0179971792\nv 0.384091586 -0.920635462 0.019940611\nv 0.446406513 -0.886539578 -0.128814235\nv 0.347512782 -0.831421256 -0.156497851\nv 0.42593661 -0.846875548 -0.287312537\nv 0.262803823 -0.828954637 -0.22647886\nv 0.358048618 -0.820207 -0.407603562\nv 0.371907711 -0.926309943 -0.402622879\nv 0.236002579 -0.966365576 -0.307753116\nv 0.266643554 -0.914017141 -0.474692166\nv 0.172131166 -0.885566473 -0.484761894\nv -0.00100431486 -0.865585148 -0.394612372\nv 0.0194187127 -0.937632024 -0.410248905\nv 0.0559412129 -0.981131554 -0.469626397\nv -0.0373683684 -1.01552939 -0.385040015\nv -0.129100665 -0.942185938 -0.406152308\nv -0.214755744 -0.897913039 -0.397627622\nv -0.16259627 -1.00245047 -0.361928046\nv -0.193487838 -1.00152886 -0.339383036\nv -0.261530995 -0.916443527 -0.355982661\nv -0.314106852 -0.858431816 -0.352770925\nv -0.36221686 -0.919102967 -0.210708261\nv -0.403106302 -0.846014619 -0.213819221\nv -0.440627187 -0.940020204 -0.0349208079\nv -0.461229086 -0.937886298 0.0354216658\nv -0.430396736 -0.966415405 0.0960466266\nv -0.530629039 -0.960435092 0.249963075\nv -0.401002735 -1.00475943 0.244748339\nv -0.333667874 -1.02402818 0.275898159\nv -0.35108155 -0.972432017 0.324092567\nv -0.292394668 -0.93126893 0.307959706\nv -0.225706801 -0.937263966 0.327748954\nv -0.140910655 -0.913392186 0.2957277\nv -0.140850797 -0.854535162 0.315054506\nv -0.0938919708 -0.914644718 0.400233716\nv -0.100478224 -0.883957028 0.447108775\nv 0.039145004 -0.861680686 0.331572533\nv 0.0300391261 -0.956303596 0.499296337\nv 0.0806901902 -0.833940864 0.357317388\nv 0.210214138 -1.00931668 0.442201197\nv 0.192492634 -0.971823752 0.440591127\nv 0.249134347 -0.944593012 0.359217703\nv 0.366242886 -0.979734063 0.27747637\nv 0.339577705 -0.937243521 0.241975039\nv 0.379298955 -0.830968797 0.0749782473\nv 0.409904242 -0.939265132 0.115038656\nv 0.482647568 -1.01643109 0.0815982595\nv 0.492675602 -0.968490303 -0.0720089003\nv 0.447201133 -0.959713638 -0.100763522\nv 0.366877109 -0.908321023 -0.143116325\nv 0.239290863 -0.835368574 -0.162204593\nv 0.30389151 -0.842352092 -0.293263942\nv 0.361406595 -0.899916947 -0.37540558\nv 0.348791689 -0.978503823 -0.369635135\nv 0.343373835 -1.00772369 -0.419671267\nv 0.244479433 -1.05454564 -0.353231728\nv 0.154207975 -0.991517127 -0.398602009\nv 0.093889989 -0.946407735 -0.455832422\nv 0.100076459 -1.02346838 -0.454915076\nv 0.0534270108 -0.926568866 -0.570657074\nv -0.199382678 -0.895436764 -0.381614506\nv -0.203624353 -0.899288833 -0.418723732\nv -0.147803113 -0.954053819 -0.452680975\nv -0.133708373 -1.07150006 -0.368833005\nv -0.28916198 -0.946567535 -0.342200547\nv -0.365464002 -0.978899837 -0.230234712\nv -0.325826734 -0.999830186 -0.232324779\nv -0.36070323 -0.948054612 -0.224277705\nv -0.345674932 -0.957487881 -0.191234946\nv -0.356514275 -1.00752246 -0.0865813345\nv -0.436362565 -0.981249034 0.0148970019\nv -0.415313333 -0.985478699 0.0611559972\nv -0.351577014 -1.02350354 0.10495387\nv -0.28398931 -1.02428758 0.114583038\nv -0.330049872 -1.020509 0.229782522\nv -0.208286062 -1.04382873 0.212757915\nv -0.197123006 -1.06334698 0.30050686\nv -0.224961534 -0.947860599 0.29681167\nv -0.266636521 -0.902731299 0.375940472\nv -0.188163415 -0.89279449 0.36178425\nv -0.118947551 -0.985352516 0.458037555\nv -0.0692125708 -0.937536716 0.423366308\nv 0.0795189068 -0.962971568 0.350583404\nv 0.149548203 -1.10735965 0.492305815\nv 0.108915307 -0.991534054 0.450035185\nv 0.2131266 -1.04400778 0.431940854\nv 0.267457962 -1.05819643 0.413187385\nv 0.23182328 -0.906957805 0.289635599\nv 0.381901056 -1.02131474 0.262998551\nv 0.436728925 -1.05268943 0.229850233\nv 0.32388109 -0.869293809 0.118393525\nv 0.401099563 -1.01431167 0.158576608\nv 0.461354613 -1.02731788 0.0699240267\nv 0.482826293 -0.926286817 -0.14455995\nv 0.546103597 -1.05849683 -0.136320725\nv 0.45639208 -1.02689731 -0.152398631\nv 0.365214437 -0.958560407 -0.205300242\nv 0.264136583 -0.860284925 -0.277378798\nv 0.238917917 -0.973590374 -0.221660003\nv 0.305338442 -1.00638974 -0.339244187\nv 0.219618037 -0.979956627 -0.359289646\nv 0.232293248 -1.0176698 -0.418616652\nv 0.177884921 -1.11114061 -0.349510729\nv 0.174477935 -0.999881983 -0.533475697\nv 0.0430118516 -1.06961286 -0.389383286\nv -0.0316014662 -0.910962582 -0.537971735\nv -0.161483973 -0.966341972 -0.388783634\nv -0.233175933 -0.897141218 -0.435329765\nv -0.221500456 -0.982908547 -0.386969924\nv -0.310404837 -1.04639375 -0.254341364\nv -0.389159054 -1.030334 -0.203179315\nv -0.33738938 -1.15976644 -0.132172927\nv -0.361273766 -0.98181808 -0.25907442\nv -0.46679613 -0.964384615 -0.151877955\nv -0.398677558 -1.06666338 -0.0807183906\nv -0.360248029 -1.08853114 -0.0508435257\nv -0.522529781 -1.01844966 0.0863789767\nv -0.499246061 -0.984783471 0.0960929021\nv -0.277193993 -1.05534327 0.0260287225\nv -0.26952523 -1.06182289 0.0960489139\nv -0.226134926 -1.10492146 0.168766439\nv -0.275134057 -0.973413348 0.172896817\nv -0.286711395 -1.11311615 0.397348553\nv -0.239921868 -0.9680112 0.291424453\nv -0.213182241 -0.994630873 0.37018016\nv -0.088275753 -1.05939364 0.384480566\nv -0.0848760903 -1.113392 0.513246417\nv -0.0191828869 -0.917341769 0.303462178\nv 0.0391615257 -1.06956065 0.467547745\nv 0.121327825 -1.1097362 0.47902599\nv 0.158510014 -1.03468204 0.399391234\nv 0.171945706 -0.996630669 0.375088215\nv 0.311983347 -1.02543688 0.28513965\nv 0.223329663 -0.974410534 0.326718628\nv 0.373448431 -1.07681358 0.287914991\nv 0.43415904 -1.01035845 0.142894998\nv 0.404482037 -0.942750335 0.0748539343\nv 0.48201251 -1.06036556 0.0888872147\nv 0.512701571 -1.01757944 -0.02898461\nv 0.52357775 -1.07048559 -0.0825399756\nv 0.497911751 -1.03207374 -0.158857152\nv 0.462149262 -1.14534879 -0.081500873\nv 0.340385556 -1.0943433 -0.0887993202\nv 0.196031377 -0.954223335 -0.158745751\nv 0.251509726 -0.979833066 -0.268350273\nv 0.251475334 -1.04864645 -0.283622324\nv 0.178303212 -0.955025911 -0.381933838\nv 0.145163968 -0.971569538 -0.41312927\nv 0.110151887 -1.06910479 -0.359159082\nv 0.0810066685 -1.00502801 -0.468405932\nv 0.00720134471 -1.03230953 -0.430542111\nv -0.0334655121 -1.01608658 -0.466999769\nv -0.134753853 -1.00870776 -0.418531865\nv -0.29823181 -0.910300255 -0.397505939\nv -0.426821738 -0.976325154 -0.233619347\nv -0.332656562 -1.13946509 -0.190275699\nv -0.256374955 -1.17005193 -0.246666506\nv -0.361679316 -1.02349973 -0.275819957\nv -0.48054859 -1.03345048 -0.140335694\nv -0.425725281 -1.15462327 -0.0543775409\nv -0.368516296 -1.20383835 -0.0279471576\nv -0.532283068 -1.03502703 0.0158346202\nv -0.580864072 -0.99524349 0.0764094964\nv -0.419643104 -1.02287459 0.0205675531\nv -0.394468278 -1.10905528 0.142338559\nv -0.329484463 -1.21454132 0.251212984\nv -0.306518763 -1.13901138 0.237121642\nv -0.249302268 -1.05821812 0.187733144\nv -0.340809762 -1.06924331 0.367334753\nv -0.233301207 -1.0962131 0.36900568\nv -0.18087393 -1.13428748 0.435362309\nv -0.130991489 -1.1061995 0.434739888\nv -0.125666469 -1.05979371 0.456023365\nv -0.0139437336 -0.928760111 0.267419189\nv -0.031332735 -1.11192894 0.543863475\nv 0.1362959 -1.09100306 0.397255123\nv 0.120750844 -1.07610631 0.440661997\nv 0.227495477 -1.0449028 0.326554418\nv 0.290340662 -1.10403633 0.350121737\nv 0.30955255 -1.06928194 0.300926954\nv 0.305618405 -1.10349476 0.340145022\nv 0.36477071 -1.07906568 0.239533082\nv 0.407947361 -0.96098423 0.0482258126\nv 0.431363136 -0.987556398 0.0184647907\nv 0.619385898 -1.11753893 -0.0700440556\nv 0.446701556 -1.11663258 -0.00537577271\nv 0.52391994 -1.21177292 -0.0462813154\nv 0.544344842 -1.25738561 -0.0907536224\nv 0.450115263 -1.20181298 -0.130666763\nv 0.37150389 -1.09561932 -0.237044349\nv 0.258750677 -1.04723608 -0.250979602\nv 0.167251199 -1.05862117 -0.227118045\nv 0.210260451 -1.09298146 -0.322612166\nv 0.178295389 -1.10461485 -0.360512197\nv 0.031684 -1.08632421 -0.300161928\nv 0.0127777057 -1.12127626 -0.323116302\nv 0.0568321496 -1.1278559 -0.43530339\nv -0.0109277274 -1.00251448 -0.552506685\nv -0.17299962 -0.986491859 -0.445895761\nv -0.244591922 -0.953523993 -0.451356053\nv -0.31604588 -1.13787341 -0.229260311\nv -0.346855581 -1.12530863 -0.23144637\nv -0.357156485 -1.17047286 -0.189495683\nv -0.339813381 -1.1380862 -0.232652798\nv -0.473241806 -1.04128551 -0.181489646\nv -0.491006434 -1.13536298 -0.0521695614\nv -0.433388829 -1.2160027 0.00422443869\nv -0.550800681 -1.09106696 0.0438592955\nv -0.562629342 -1.06031835 0.0807918012\nv -0.440260351 -1.07684183 0.0477780849\nv -0.427702397 -1.09783566 0.123202458\nv -0.279699594 -1.25500298 0.200465858\nv -0.267863095 -1.25461316 0.267750025\nv -0.234087914 -1.18166733 0.246683344\nv -0.26993072 -1.09578454 0.282633573\nv -0.238951206 -1.16915965 0.404694229\nv -0.20662123 -1.17415333 0.459288418\nv -0.23349297 -1.06896985 0.460084289\nv -0.0590190887 -1.05445635 0.337809354\nv -0.061098963 -1.05817342 0.41140011\nv 0.051569704 -1.10221004 0.401110828\nv 0.213810161 -1.13305271 0.319593817\nv 0.142899722 -0.995031595 0.282035887\nv 0.266813457 -1.12244225 0.328745037\nv 0.448377758 -1.20767164 0.261061847\nv 0.322678745 -1.13886118 0.32040152\nv 0.309134692 -1.05381954 0.236893401\nv 0.455851853 -1.10893297 0.140630752\nv 0.335939705 -1.10010946 0.220895395\nv 0.317015946 -1.07989848 0.180953175\nv 0.423544317 -1.1002003 0.0543572418\nv 0.436395317 -1.14366603 -0.00995729305\nv 0.434199989 -1.24731052 0.0345121659\nv 0.478727609 -1.18749511 -0.139306352\nv 0.572003663 -1.27312052 -0.220625117\nv 0.516786456 -1.32399642 -0.195933893\nv 0.363528013 -1.13618708 -0.313218027\nv 0.361546457 -1.10881889 -0.422733158\nv 0.241721302 -1.08698726 -0.404091477\nv 0.201868862 -1.11885262 -0.414649755\nv 0.0783424675 -1.10057783 -0.380143881\nv 0.0811991096 -1.15129685 -0.411591679\nv -0.0339553356 -1.18587542 -0.326265812\nv -0.0642515197 -1.08864987 -0.449526161\nv -0.201635912 -0.987957895 -0.459362239\nv -0.241455272 -0.934794903 -0.522972763\nv -0.305379421 -1.01723194 -0.399606228\nv -0.357038736 -1.22910249 -0.168520927\nv -0.294435769 -1.30853879 -0.162205145\nv -0.384739637 -1.14740562 -0.223038182\nv -0.423691273 -1.13598859 -0.181556851\nv -0.359938383 -1.19870234 -0.159176946\nv -0.368044823 -1.14991426 -0.158563495\nv -0.395087034 -1.27873039 0.0325619839\nv -0.455089062 -1.02952302 -0.084417142\nv -0.388059556 -1.09856081 -0.0204696655\nv -0.417503089 -1.10167158 0.0774830803\nv -0.276131302 -1.27416492 0.17457737\nv -0.295885682 -1.24930429 0.249136463\nv -0.30667752 -1.16865551 0.264565825\nv -0.320381284 -1.11958933 0.313626766\nv -0.355311513 -1.19499695 0.5055179\nv -0.204335853 -1.15789211 0.398384094\nv -0.135512143 -1.12238455 0.371121436\nv 0.0383092798 -1.14232826 0.286788791\nv 0.0149003649 -1.00537491 0.234204188\nv 0.14253138 -1.11766589 0.280517995\nv 0.118162274 -1.19640279 0.442038894\nv 0.226951689 -1.11508608 0.285103142\nv 0.203242078 -1.08927131 0.312272966\nv 0.338994056 -1.18508506 0.30101499\nv 0.405356199 -1.2208792 0.282063842\nv 0.402409047 -1.09051597 0.143202215\nv 0.386544824 -1.19918668 0.26013279\nv 0.335569292 -1.04128146 0.115180552\nv 0.455328971 -1.14849341 0.0776090771\nv 0.520132124 -1.29970002 0.123913907\nv 0.407425612 -1.30414319 0.139943391\nv 0.330228746 -1.24680543 0.0937862024\nv 0.310102224 -1.16891325 -0.0341990367\nv 0.376237333 -1.17725217 -0.165829882\nv 0.48175931 -1.31226039 -0.215409935\nv 0.287326455 -1.15327835 -0.260724068\nv 0.235482857 -1.04497862 -0.395704448\nv 0.203748956 -1.06301451 -0.429782808\nv 0.106816918 -0.953361332 -0.521526814\nv 0.157981232 -1.06427741 -0.547434866\nv 0.0797211975 -1.17484593 -0.430521607\nv -0.0414978303 -1.14084947 -0.403737992\nv -0.17630899 -1.10581207 -0.356657714\nv -0.217854783 -1.04941511 -0.423504531\nv -0.253695667 -0.957426608 -0.531055152\nv -0.176122248 -1.1861155 -0.412620664\nv -0.248041838 -1.19534874 -0.350756347\nv -0.300134957 -1.3141067 -0.192333996\nv -0.361682415 -1.23259425 -0.208084196\nv -0.388141334 -1.21775556 -0.181751877\nv -0.312079102 -1.22364414 -0.224572971\nv -0.332627773 -1.17253721 -0.214231521\nv -0.4235017 -1.24483192 -0.0135267442\nv -0.483655214 -1.23079622 0.0858243704\nv -0.421463072 -1.16345835 0.0272437949\nv -0.467167854 -1.15962052 0.135312825\nv -0.314761013 -1.32190347 0.21827355\nv -0.297706753 -1.34075046 0.299569279\nv -0.268754005 -1.23004961 0.244698763\nv -0.281711549 -1.18229699 0.294356585\nv -0.227718756 -1.20790017 0.348015696\nv -0.182552993 -1.17471325 0.351262599\nv -0.0823638588 -1.06219029 0.217022508\nv -0.0542735234 -1.08633924 0.28250733\nv 0.0215619914 -1.10018682 0.284496576\nv -0.0464130566 -1.186131 0.504605532\nv 0.0760032535 -1.06981158 0.305486083\nv 0.219271615 -1.11028695 0.244356483\nv 0.119004354 -1.16201711 0.434630215\nv 0.253151119 -1.25898576 0.421470016\nv 0.362447977 -1.28062665 0.343255609\nv 0.344610751 -1.29281664 0.371021956\nv 0.187130928 -1.07732034 0.283341408\nv 0.319619596 -1.12207007 0.174346402\nv 0.365388513 -1.33836293 0.320391983\nv 0.304330915 -1.23450708 0.22565487\nv 0.442767411 -1.35757375 0.117302105\nv 0.383084774 -1.20415795 -0.0435543656\nv 0.266808808 -1.0707655 -0.128403753\nv 0.348096132 -1.26547849 -0.0922592133\nv 0.366486281 -1.32681096 -0.12854664\nv 0.376233399 -1.23050773 -0.317257583\nv 0.238874465 -1.23699832 -0.255881399\nv 0.148237854 -1.10363328 -0.373227984\nv 0.0259757619 -0.955958903 -0.472990185\nv 0.0469751284 -1.05117702 -0.482380182\nv -0.0761169344 -1.12352741 -0.355365217\nv 0.00420444971 -1.16377568 -0.474779904\nv -0.0241659377 -1.16223168 -0.509450793\nv -0.114782624 -1.11539805 -0.513821423\nv -0.134682938 -1.15014684 -0.502581477\nv -0.235894352 -1.15447021 -0.425002486\nv -0.156065226 -1.27111745 -0.412886024\nv -0.154446676 -1.3272177 -0.367549926\nv -0.280165702 -1.30516076 -0.259474307\nv -0.26676622 -1.29321098 -0.270056605\nv -0.328588098 -1.21354854 -0.259825975\nv -0.469763547 -1.15100455 -0.144920617\nv -0.423461318 -1.31678426 0.0153022809\nv -0.470399112 -1.26688993 0.0673811287\nv -0.455311626 -1.32877553 0.175719529\nv -0.347830951 -1.25912106 0.0735932291\nv -0.206161022 -1.39135528 0.137701586\nv -0.245878309 -1.32905579 0.195647791\nv -0.378447086 -1.19212592 0.274490267\nv -0.306662858 -1.28990877 0.382977903\nv -0.212509871 -1.31244481 0.395075887\nv -0.000247748627 -1.31090593 0.261898935\nv 0.00106934598 -1.2645613 0.291617513\nv -0.0436309874 -1.11473763 0.259099275\nv -0.0710242167 -1.19000828 0.429550499\nv -0.0376599655 -1.09204149 0.353617191\nv 0.159769714 -1.13840711 0.250604391\nv 0.0789173916 -1.08701098 0.319365442\nv 0.232288107 -1.25862229 0.377508491\nv 0.451264799 -1.33633006 0.260912418\nv 0.382791996 -1.32892549 0.329818249\nv 0.452989936 -1.46188629 0.399080724\nv 0.337698996 -1.31984019 0.347611427\nv 0.231410027 -1.06059468 0.15316242\nv 0.386469245 -1.34597325 0.263619959\nv 0.37786448 -1.26157272 0.13789551\nv 0.507888377 -1.4019407 0.0558890216\nv 0.44288516 -1.21702957 -0.131484836\nv 0.237165153 -1.12339056 -0.0882464051\nv 0.356686026 -1.28343332 -0.124752626\nv 0.327507257 -1.29879022 -0.159789532\nv 0.306818813 -1.22116601 -0.298505038\nv 0.333458573 -1.21260297 -0.418499321\nv 0.0730704963 -1.11097872 -0.327989727\nv 0.0380871333 -1.0470227 -0.437058508\nv 0.0025697886 -1.01872325 -0.511434674\nv 0.101395153 -1.18214667 -0.53309983\nv -0.032874424 -1.19771373 -0.445639908\nv -0.147373363 -1.17096174 -0.413630962\nv -0.0762947872 -1.21721256 -0.496662617\nv -0.0917824879 -1.21544492 -0.525608182\nv -0.217715561 -1.12130809 -0.522033632\nv -0.214977115 -1.3134656 -0.352840096\nv -0.155089498 -1.35324657 -0.383551151\nv -0.215277284 -1.3591789 -0.313695639\nv -0.193431109 -1.44232738 -0.24162975\nv -0.317008018 -1.31098628 -0.218303338\nv -0.410916179 -1.21053088 -0.187154338\nv -0.370367378 -1.20894432 -0.180924937\nv -0.365913808 -1.42162228 0.0733423457\nv -0.394365668 -1.50248981 0.240025491\nv -0.360327303 -1.35034263 0.133043751\nv -0.27687484 -1.39298618 0.16766879\nv -0.282220542 -1.38441098 0.244118527\nv -0.42212522 -1.29960787 0.381183028\nv -0.367435902 -1.32520318 0.436425686\nv -0.198998779 -1.34234655 0.369356543\nv -0.108837239 -1.34017563 0.358425438\nv -0.123340763 -1.26104522 0.371168673\nv -0.0820207372 -1.31133413 0.454360843\nv -0.0683240816 -1.12313056 0.316172272\nv 0.218685001 -1.25726652 0.222113788\nv 0.288689435 -1.43822515 0.392440289\nv 0.0962247252 -1.17665279 0.354043782\nv 0.113100678 -1.15604484 0.346059889\nv 0.40246883 -1.46663105 0.403792948\nv 0.430522949 -1.49765539 0.418034732\nv 0.349156529 -1.45868838 0.454686403\nv 0.251876175 -1.34292591 0.414166093\nv 0.30567649 -1.21070755 0.195924908\nv 0.380653322 -1.27228999 0.149409741\nv 0.504228055 -1.23650181 -0.0540578663\nv 0.583076 -1.44013715 -0.0220177323\nv 0.596306145 -1.49105144 -0.0473208167\nv 0.21026504 -1.26480114 0.0353920758\nv 0.256964594 -1.39252234 0.0422044918\nv 0.279345125 -1.33737934 -0.114997707\nv 0.236492753 -1.1891216 -0.299725741\nv 0.1789857 -1.2284503 -0.286689371\nv 0.260529995 -1.22508788 -0.458478928\nv 0.133202597 -1.14174986 -0.491957784\nv 0.067840904 -1.10405624 -0.541858852\nv -0.000654079136 -1.2275759 -0.423487484\nv 0.116775393 -1.28686154 -0.555184245\nv -0.0891856924 -1.20059359 -0.48969385\nv -0.0705000907 -1.18437338 -0.579752803\nv -0.214691609 -1.18732381 -0.469423354\nv -0.11254546 -1.31161022 -0.481419295\nv -0.121725067 -1.38448501 -0.420854628\nv -0.225703359 -1.27468944 -0.431874812\nv -0.271125823 -1.37152159 -0.287636697\nv -0.378981441 -1.42015314 -0.120334916\nv -0.47906515 -1.33777046 -0.0754575953\nv -0.465165854 -1.39025235 -0.00278920261\nv -0.365340352 -1.40782523 -0.0366730429\nv -0.269135505 -1.56575799 0.0711929202\nv -0.356290817 -1.42084491 0.0852802917\nv -0.268445432 -1.36288536 0.0141180605\nv -0.271520197 -1.38443077 0.112981498\nv -0.306976974 -1.3232851 0.167782962\nv -0.429419309 -1.36028206 0.405955046\nv -0.329658002 -1.31947362 0.35137257\nv -0.170856625 -1.38341749 0.340097547\nv -0.119811773 -1.48965454 0.477457434\nv -0.187151253 -1.34349132 0.47658208\nv -0.244841799 -1.23739374 0.501222014\nv -0.00766334683 -1.21776247 0.307941198\nv 0.0380678177 -1.28405917 0.38883549\nv 0.167118818 -1.26672256 0.291523039\nv 0.218000978 -1.33221793 0.349976838\nv 0.137441412 -1.23630834 0.362476319\nv 0.22951217 -1.41815197 0.481262505\nv 0.421222478 -1.45226777 0.333994746\nv 0.493027747 -1.54722559 0.360847175\nv 0.339776844 -1.24953151 0.184862375\nv 0.439380348 -1.31018651 0.123687044\nv 0.413589418 -1.2170589 0.017761454\nv 0.571670294 -1.26220691 -0.13647376\ng \nl 47 1\nl 2 1\nl 46 1\nl 48 1\nl 92 1\nl 48 2\nl 3 2\nl 49 2\nl 47 2\nl 49 3\nl 4 3\nl 50 3\nl 48 3\nl 50 4\nl 5 4\nl 51 4\nl 49 4\nl 51 5\nl 6 5\nl 50 5\nl 52 5\nl 52 6\nl 7 6\nl 51 6\nl 53 6\nl 53 7\nl 8 7\nl 54 7\nl 52 7\nl 54 8\nl 9 8\nl 53 8\nl 55 8\nl 55 9\nl 10 9\nl 54 9\nl 101 9\nl 56 10\nl 11 10\nl 55 10\nl 57 10\nl 57 11\nl 12 11\nl 56 11\nl 58 11\nl 58 12\nl 13 12\nl 57 12\nl 59 12\nl 59 13\nl 14 13\nl 58 13\nl 60 13\nl 60 14\nl 15 14\nl 59 14\nl 61 14\nl 61 15\nl 16 15\nl 60 15\nl 62 15\nl 62 16\nl 17 16\nl 61 16\nl 63 16\nl 63 17\nl 18 17\nl 62 17\nl 64 17\nl 64 18\nl 19 18\nl 63 18\nl 65 18\nl 65 19\nl 20 19\nl 66 19\nl 64 19\nl 66 20\nl 21 20\nl 65 20\nl 67 20\nl 67 21\nl 22 21\nl 66 21\nl 68 21\nl 68 22\nl 23 22\nl 69 22\nl 67 22\nl 69 23\nl 24 23\nl 70 23\nl 115 23\nl 70 24\nl 25 24\nl 71 24\nl 69 24\nl 71 25\nl 26 25\nl 70 25\nl 72 25\nl 72 26\nl 27 26\nl 73 26\nl 71 26\nl 73 27\nl 28 27\nl 74 27\nl 72 27\nl 74 28\nl 29 28\nl 75 28\nl 73 28\nl 75 29\nl 30 29\nl 76 29\nl 74 29\nl 76 30\nl 31 30\nl 75 30\nl 77 30\nl 77 31\nl 32 31\nl 76 31\nl 78 31\nl 78 32\nl 33 32\nl 77 32\nl 79 32\nl 79 33\nl 34 33\nl 78 33\nl 80 33\nl 80 34\nl 35 34\nl 81 34\nl 79 34\nl 81 35\nl 36 35\nl 82 35\nl 80 35\nl 82 36\nl 37 36\nl 83 36\nl 81 36\nl 83 37\nl 38 37\nl 84 37\nl 82 37\nl 84 38\nl 39 38\nl 85 38\nl 83 38\nl 85 39\nl 40 39\nl 86 39\nl 131 39\nl 86 40\nl 41 40\nl 87 40\nl 85 40\nl 87 41\nl 42 41\nl 86 41\nl 88 41\nl 88 42\nl 43 42\nl 87 42\nl 89 42\nl 89 43\nl 44 43\nl 88 43\nl 90 43\nl 90 44\nl 45 44\nl 89 44\nl 136 44\nl 91 45\nl 46 45\nl 90 45\nl 92 45\nl 92 46\nl 47 46\nl 91 46\nl 93 47\nl 92 47\nl 48 47\nl 94 47\nl 94 48\nl 49 48\nl 93 48\nl 95 49\nl 50 49\nl 96 50\nl 51 50\nl 97 51\nl 52 51\nl 98 52\nl 53 52\nl 99 52\nl 99 53\nl 54 53\nl 100 54\nl 55 54\nl 101 55\nl 56 55\nl 102 56\nl 57 56\nl 101 56\nl 103 57\nl 58 57\nl 102 57\nl 104 58\nl 59 58\nl 103 58\nl 105 59\nl 60 59\nl 104 59\nl 106 60\nl 61 60\nl 107 61\nl 62 61\nl 108 62\nl 63 62\nl 107 62\nl 109 63\nl 64 63\nl 110 64\nl 65 64\nl 111 64\nl 111 65\nl 66 65\nl 112 66\nl 67 66\nl 113 67\nl 68 67\nl 114 67\nl 114 68\nl 69 68\nl 115 68\nl 115 69\nl 70 69\nl 116 69\nl 116 70\nl 71 70\nl 117 71\nl 72 71\nl 118 72\nl 73 72\nl 119 72\nl 119 73\nl 74 73\nl 120 74\nl 75 74\nl 121 74\nl 121 75\nl 76 75\nl 122 76\nl 77 76\nl 123 77\nl 78 77\nl 124 78\nl 79 78\nl 125 78\nl 125 79\nl 80 79\nl 126 79\nl 126 80\nl 81 80\nl 127 80\nl 127 81\nl 82 81\nl 128 82\nl 83 82\nl 129 83\nl 84 83\nl 130 84\nl 85 84\nl 131 84\nl 131 85\nl 86 85\nl 132 86\nl 87 86\nl 133 87\nl 88 87\nl 134 88\nl 89 88\nl 135 88\nl 135 89\nl 90 89\nl 136 90\nl 91 90\nl 182 90\nl 137 91\nl 92 91\nl 136 91\nl 138 92\nl 93 92\nl 139 93\nl 94 93\nl 138 93\nl 140 93\nl 140 94\nl 95 94\nl 139 94\nl 141 95\nl 96 95\nl 142 96\nl 97 96\nl 141 96\nl 143 97\nl 98 97\nl 142 97\nl 144 98\nl 99 98\nl 145 99\nl 100 99\nl 191 99\nl 146 100\nl 101 100\nl 192 100\nl 147 101\nl 102 101\nl 148 102\nl 103 102\nl 147 102\nl 149 103\nl 148 103\nl 104 103\nl 150 104\nl 105 104\nl 151 104\nl 151 105\nl 106 105\nl 152 106\nl 107 106\nl 153 106\nl 153 107\nl 108 107\nl 154 107\nl 154 108\nl 109 108\nl 155 108\nl 155 109\nl 110 109\nl 156 109\nl 156 110\nl 111 110\nl 157 111\nl 112 111\nl 158 112\nl 113 112\nl 159 112\nl 159 113\nl 114 113\nl 160 113\nl 160 114\nl 115 114\nl 161 115\nl 116 115\nl 162 115\nl 162 116\nl 117 116\nl 163 117\nl 118 117\nl 162 117\nl 164 118\nl 119 118\nl 165 119\nl 120 119\nl 166 120\nl 121 120\nl 212 120\nl 167 121\nl 122 121\nl 168 122\nl 123 122\nl 169 122\nl 169 123\nl 124 123\nl 170 123\nl 170 124\nl 125 124\nl 169 124\nl 171 125\nl 126 125\nl 172 126\nl 127 126\nl 173 127\nl 172 127\nl 128 127\nl 174 128\nl 129 128\nl 173 128\nl 175 129\nl 130 129\nl 176 129\nl 176 130\nl 131 130\nl 177 130\nl 177 131\nl 132 131\nl 178 132\nl 133 132\nl 177 132\nl 179 133\nl 134 133\nl 180 133\nl 180 134\nl 135 134\nl 181 134\nl 181 135\nl 182 135\nl 136 135\nl 182 136\nl 137 136\nl 228 136\nl 183 137\nl 182 137\nl 138 137\nl 184 138\nl 183 138\nl 140 139\nl 185 139\nl 184 139\nl 186 139\nl 186 140\nl 141 140\nl 187 141\nl 142 141\nl 233 141\nl 188 142\nl 143 142\nl 189 143\nl 144 143\nl 188 143\nl 190 144\nl 145 144\nl 191 145\nl 146 145\nl 192 146\nl 147 146\nl 191 146\nl 193 147\nl 148 147\nl 149 148\nl 194 148\nl 195 149\nl 150 149\nl 194 149\nl 196 150\nl 151 150\nl 195 150\nl 197 151\nl 196 151\nl 152 151\nl 198 152\nl 153 152\nl 197 152\nl 199 153\nl 154 153\nl 200 153\nl 200 154\nl 155 154\nl 246 154\nl 201 155\nl 200 155\nl 247 155\nl 202 156\nl 201 156\nl 157 156\nl 203 157\nl 158 157\nl 204 158\nl 159 158\nl 203 158\nl 160 159\nl 204 159\nl 205 159\nl 206 160\nl 205 160\nl 207 161\nl 162 161\nl 206 161\nl 208 162\nl 207 162\nl 163 162\nl 209 163\nl 208 163\nl 210 163\nl 210 164\nl 165 164\nl 211 164\nl 211 165\nl 166 165\nl 212 165\nl 212 166\nl 211 166\nl 167 166\nl 213 167\nl 168 167\nl 214 168\nl 169 168\nl 213 168\nl 215 169\nl 170 169\nl 216 170\nl 171 170\nl 215 170\nl 217 171\nl 218 171\nl 172 171\nl 218 172\nl 173 172\nl 264 172\nl 219 172\nl 219 173\nl 174 173\nl 220 174\nl 175 174\nl 219 174\nl 221 175\nl 176 175\nl 222 175\nl 222 176\nl 177 176\nl 223 176\nl 223 177\nl 178 177\nl 224 178\nl 179 178\nl 225 178\nl 225 179\nl 226 179\nl 180 179\nl 226 180\nl 181 180\nl 227 181\nl 273 181\nl 228 182\nl 229 183\nl 184 183\nl 228 183\nl 230 184\nl 229 184\nl 231 185\nl 230 185\nl 186 185\nl 277 185\nl 232 186\nl 231 186\nl 278 186\nl 233 187\nl 188 187\nl 279 187\nl 234 188\nl 233 188\nl 189 188\nl 234 189\nl 280 189\nl 235 189\nl 236 190\nl 191 190\nl 237 190\nl 237 191\nl 192 191\nl 238 192\nl 193 192\nl 239 193\nl 194 193\nl 238 193\nl 240 194\nl 195 194\nl 241 195\nl 196 195\nl 240 195\nl 242 196\nl 243 196\nl 243 197\nl 198 197\nl 244 198\nl 199 198\nl 243 198\nl 245 199\nl 200 199\nl 246 200\nl 247 201\nl 202 201\nl 246 201\nl 248 202\nl 203 202\nl 247 202\nl 249 203\nl 204 203\nl 250 204\nl 249 204\nl 251 205\nl 206 205\nl 252 205\nl 252 206\nl 207 206\nl 253 207\nl 208 207\nl 209 208\nl 254 208\nl 255 209\nl 254 209\nl 210 209\nl 256 210\nl 211 210\nl 257 211\nl 212 211\nl 258 212\nl 213 212\nl 259 213\nl 214 213\nl 260 214\nl 215 214\nl 261 215\nl 216 215\nl 262 215\nl 262 216\nl 217 216\nl 309 216\nl 264 217\nl 218 217\nl 263 217\nl 264 218\nl 310 218\nl 265 219\nl 220 219\nl 266 219\nl 266 220\nl 221 220\nl 267 221\nl 222 221\nl 268 221\nl 268 222\nl 223 222\nl 269 223\nl 224 223\nl 315 223\nl 270 224\nl 269 224\nl 225 224\nl 271 225\nl 226 225\nl 270 225\nl 272 226\nl 273 226\nl 274 227\nl 273 227\nl 319 227\nl 228 227\nl 274 228\nl 229 228\nl 275 229\nl 276 229\nl 276 230\nl 231 230\nl 277 231\nl 323 231\nl 278 231\nl 278 232\nl 324 232\nl 233 232\nl 279 233\nl 234 233\nl 280 234\nl 235 234\nl 279 234\nl 280 235\nl 281 235\nl 326 235\nl 327 235\nl 282 236\nl 237 236\nl 283 236\nl 283 237\nl 329 237\nl 238 237\nl 284 238\nl 330 238\nl 239 238\nl 285 239\nl 284 239\nl 330 239\nl 241 240\nl 287 240\nl 287 241\nl 242 241\nl 288 241\nl 288 242\nl 243 242\nl 289 242\nl 289 243\nl 290 244\nl 245 244\nl 289 244\nl 291 245\nl 290 245\nl 338 245\nl 292 246\nl 247 246\nl 291 246\nl 292 247\nl 293 247\nl 294 248\nl 340 248\nl 295 248\nl 295 249\nl 342 249\nl 250 249\nl 342 250\nl 296 250\nl 251 250\nl 297 251\nl 296 251\nl 252 251\nl 344 251\nl 298 252\nl 253 252\nl 297 252\nl 298 253\nl 300 253\nl 254 253\nl 300 254\nl 255 254\nl 301 255\nl 256 255\nl 300 255\nl 257 256\nl 301 256\nl 303 257\nl 258 257\nl 304 258\nl 259 258\nl 304 259\nl 306 259\nl 306 260\nl 261 260\nl 307 260\nl 352 260\nl 307 261\nl 262 261\nl 308 261\nl 308 262\nl 309 262\nl 309 263\nl 264 263\nl 310 263\nl 355 263\nl 310 264\nl 266 265\nl 310 265\nl 312 266\nl 267 266\nl 313 267\nl 268 267\nl 314 267\nl 314 268\nl 269 268\nl 315 269\nl 270 269\nl 317 270\nl 271 270\nl 315 270\nl 272 271\nl 318 271\nl 317 271\nl 318 272\nl 364 272\nl 365 272\nl 274 273\nl 319 273\nl 319 274\nl 320 274\nl 321 275\nl 320 275\nl 367 275\nl 276 275\nl 322 276\nl 277 276\nl 321 276\nl 323 277\nl 414 277\nl 322 277\nl 324 278\nl 323 278\nl 369 278\nl 370 278\nl 325 279\nl 280 279\nl 326 280\nl 281 280\nl 327 281\nl 326 281\nl 372 281\nl 328 282\nl 327 282\nl 374 282\nl 329 283\nl 374 283\nl 330 284\nl 285 284\nl 330 285\nl 331 285\nl 286 285\nl 332 286\nl 377 286\nl 287 286\nl 288 287\nl 333 287\nl 333 288\nl 289 288\nl 335 289\nl 290 289\nl 336 290\nl 338 291\nl 292 291\nl 293 292\nl 339 292\nl 339 293\nl 385 293\nl 294 293\nl 340 294\nl 386 294\nl 339 294\nl 342 295\nl 341 295\nl 342 296\nl 297 296\nl 343 296\nl 344 297\nl 298 297\nl 345 298\nl 299 298\nl 345 299\nl 391 299\nl 344 299\nl 345 300\nl 347 301\nl 346 301\nl 303 302\nl 349 302\nl 349 303\nl 304 303\nl 396 303\nl 350 304\nl 396 304\nl 351 305\nl 397 305\nl 352 305\nl 306 305\nl 352 306\nl 307 306\nl 351 306\nl 353 307\nl 308 307\nl 354 307\nl 355 308\nl 309 308\nl 354 308\nl 355 309\nl 356 310\nl 312 311\nl 358 311\nl 357 311\nl 358 312\nl 313 312\nl 357 312\nl 314 313\nl 360 313\nl 359 313\nl 405 313\nl 361 314\nl 360 314\nl 315 314\nl 362 316\nl 317 316\nl 363 316\nl 407 316\nl 408 316\nl 362 317\nl 363 317\nl 364 318\nl 365 318\nl 411 318\nl 320 319\nl 366 319\nl 321 320\nl 367 320\nl 366 320\nl 367 321\nl 322 321\nl 413 321\nl 368 322\nl 414 322\nl 369 323\nl 324 323\nl 370 324\nl 369 324\nl 415 324\nl 416 324\nl 371 325\nl 416 325\nl 326 325\nl 371 326\nl 372 326\nl 372 327\nl 374 328\nl 373 328\nl 375 328\nl 375 329\nl 374 329\nl 330 329\nl 331 330\nl 377 331\nl 376 331\nl 332 331\nl 377 332\nl 378 332\nl 379 332\nl 423 332\nl 334 333\nl 380 333\nl 380 334\nl 426 334\nl 335 334\nl 381 334\nl 381 335\nl 382 335\nl 426 335\nl 337 336\nl 382 336\nl 384 337\nl 383 337\nl 429 337\nl 430 337\nl 339 338\nl 384 338\nl 385 338\nl 385 339\nl 384 339\nl 386 340\nl 431 340\nl 432 340\nl 387 341\nl 388 341\nl 342 341\nl 434 341\nl 344 343\nl 388 343\nl 389 343\nl 390 343\nl 390 344\nl 391 345\nl 392 346\nl 347 346\nl 438 346\nl 348 347\nl 393 347\nl 392 347\nl 441 348\nl 394 348\nl 349 348\nl 393 348\nl 396 349\nl 395 349\nl 350 349\nl 396 350\nl 395 350\nl 397 351\nl 352 351\nl 353 352\nl 354 353\nl 399 353\nl 398 353\nl 400 354\nl 355 354\nl 401 355\nl 357 356\nl 403 356\nl 403 357\nl 358 357\nl 404 357\nl 404 358\nl 405 358\nl 405 359\nl 451 359\nl 406 359\nl 360 359\nl 361 360\nl 406 360\nl 406 361\nl 407 362\nl 408 362\nl 363 362\nl 409 363\nl 364 363\nl 365 364\nl 409 364\nl 411 365\nl 366 365\nl 411 366\nl 367 366\nl 413 366\nl 413 367\nl 459 367\nl 460 368\nl 414 368\nl 413 368\nl 459 368\nl 415 369\nl 370 369\nl 415 370\nl 416 370\nl 372 371\nl 417 371\nl 417 372\nl 419 373\nl 418 373\nl 464 373\nl 375 374\nl 421 375\nl 422 375\nl 377 376\nl 422 376\nl 378 377\nl 423 377\nl 379 378\nl 423 378\nl 424 379\nl 517 379\nl 425 379\nl 426 380\nl 472 380\nl 382 381\nl 426 381\nl 473 381\nl 427 381\nl 473 382\nl 428 382\nl 427 382\nl 429 383\nl 520 383\nl 428 383\nl 475 383\nl 430 384\nl 475 384\nl 386 385\nl 431 386\nl 432 387\nl 434 387\nl 433 387\nl 480 387\nl 389 388\nl 435 388\nl 435 389\nl 434 389\nl 481 389\nl 436 390\nl 437 390\nl 391 390\nl 437 391\nl 438 391\nl 438 392\nl 393 392\nl 439 393\nl 394 393\nl 441 394\nl 440 394\nl 395 394\nl 396 395\nl 441 395\nl 443 397\nl 442 397\nl 444 398\nl 399 398\nl 490 398\nl 400 399\nl 445 399\nl 538 399\nl 446 399\nl 446 400\nl 447 400\nl 492 400\nl 402 401\nl 447 401\nl 446 401\nl 403 402\nl 449 402\nl 447 402\nl 449 403\nl 404 403\nl 450 404\nl 405 404\nl 496 404\nl 451 405\nl 450 405\nl 452 406\nl 407 406\nl 408 407\nl 452 407\nl 453 407\nl 454 408\nl 453 408\nl 410 409\nl 455 409\nl 455 410\nl 456 410\nl 501 410\nl 458 412\nl 503 412\nl 413 412\nl 457 412\nl 459 413\nl 460 414\nl 416 415\nl 417 416\nl 418 417\nl 509 417\nl 464 418\nl 419 418\nl 465 419\nl 464 419\nl 420 419\nl 466 420\nl 465 420\nl 512 420\nl 467 420\nl 422 421\nl 467 421\nl 468 421\nl 468 422\nl 467 422\nl 424 423\nl 425 423\nl 425 424\nl 470 424\nl 471 424\nl 471 425\nl 470 425\nl 517 425\nl 563 425\nl 427 426\nl 473 426\nl 428 427\nl 518 427\nl 473 427\nl 473 428\nl 520 428\nl 520 429\nl 475 429\nl 476 430\nl 475 430\nl 522 430\nl 477 431\nl 433 432\nl 526 433\nl 434 433\nl 480 433\nl 480 434\nl 435 434\nl 481 435\nl 527 435\nl 480 435\nl 437 436\nl 482 436\nl 481 436\nl 482 437\nl 483 437\nl 483 438\nl 485 439\nl 484 439\nl 440 439\nl 486 440\nl 485 440\nl 441 440\nl 488 442\nl 443 442\nl 444 443\nl 582 443\nl 489 443\nl 490 444\nl 489 444\nl 446 445\nl 538 445\nl 491 445\nl 492 445\nl 492 446\nl 447 446\nl 538 446\nl 493 447\nl 494 447\nl 449 448\nl 493 448\nl 494 448\nl 540 448\nl 494 449\nl 495 449\nl 496 450\nl 495 450\nl 497 450\nl 497 451\nl 498 452\nl 499 452\nl 545 452\nl 454 453\nl 499 453\nl 591 453\nl 500 454\nl 546 454\nl 455 454\nl 501 455\nl 547 455\nl 546 455\nl 502 456\nl 457 456\nl 501 456\nl 547 456\nl 458 456\nl 502 457\nl 458 457\nl 503 457\nl 501 457\nl 503 458\nl 502 458\nl 460 459\nl 505 459\nl 598 461\nl 462 461\nl 507 461\nl 506 461\nl 551 461\nl 508 462\nl 598 462\nl 463 462\nl 507 462\nl 509 463\nl 508 463\nl 510 464\nl 465 464\nl 509 464\nl 511 465\nl 512 465\nl 467 466\nl 558 466\nl 512 466\nl 513 466\nl 513 467\nl 558 467\nl 468 467\nl 513 468\nl 469 468\nl 558 468\nl 470 469\nl 561 469\nl 516 469\nl 471 470\nl 516 470\nl 563 471\nl 517 471\nl 517 472\nl 518 472\nl 519 472\nl 521 474\nl 566 474\nl 475 474\nl 476 475\nl 522 475\nl 521 475\nl 522 476\nl 521 476\nl 478 476\nl 478 477\nl 570 477\nl 524 477\nl 570 478\nl 524 478\nl 522 478\nl 525 479\nl 526 479\nl 524 479\nl 527 480\nl 526 480\nl 527 481\nl 573 481\nl 483 482\nl 529 482\nl 529 483\nl 576 483\nl 485 484\nl 531 484\nl 576 484\nl 577 484\nl 531 485\nl 486 485\nl 532 486\nl 487 486\nl 578 486\nl 532 487\nl 579 487\nl 580 487\nl 534 488\nl 489 488\nl 582 489\nl 490 489\nl 535 489\nl 583 490\nl 582 490\nl 536 490\nl 537 491\nl 492 491\nl 583 491\nl 538 491\nl 538 492\nl 539 492\nl 493 492\nl 540 493\nl 539 493\nl 585 493\nl 494 493\nl 540 494\nl 495 494\nl 496 495\nl 541 495\nl 540 495\nl 497 496\nl 541 496\nl 545 498\nl 499 498\nl 544 498\nl 590 498\nl 545 499\nl 591 499\nl 590 499\nl 546 500\nl 592 500\nl 593 500\nl 547 501\nl 502 501\nl 594 501\nl 548 502\nl 549 503\nl 549 504\nl 550 504\nl 596 504\nl 642 504\nl 506 505\nl 551 505\nl 551 506\nl 598 506\nl 552 506\nl 598 507\nl 644 507\nl 552 507\nl 554 507\nl 509 508\nl 555 508\nl 600 508\nl 554 508\nl 510 509\nl 511 510\nl 555 510\nl 556 510\nl 512 511\nl 557 511\nl 556 511\nl 558 512\nl 558 513\nl 514 513\nl 515 514\nl 558 514\nl 561 515\nl 560 515\nl 606 515\nl 698 515\nl 561 516\nl 607 516\nl 608 516\nl 562 516\nl 653 516\nl 564 517\nl 563 517\nl 519 518\nl 565 518\nl 565 519\nl 566 520\nl 567 520\nl 522 521\nl 613 521\nl 524 523\nl 569 523\nl 570 523\nl 661 523\nl 615 523\nl 570 524\nl 616 524\nl 569 524\nl 526 525\nl 617 525\nl 571 525\nl 616 525\nl 573 527\nl 575 528\nl 574 528\nl 619 528\nl 573 528\nl 618 528\nl 576 529\nl 530 529\nl 575 529\nl 621 529\nl 576 530\nl 575 530\nl 622 530\nl 577 531\nl 623 531\nl 578 531\nl 578 532\nl 579 532\nl 625 532\nl 579 533\nl 534 533\nl 580 533\nl 672 533\nl 626 533\nl 582 534\nl 579 534\nl 628 535\nl 536 535\nl 582 535\nl 581 535\nl 583 536\nl 628 536\nl 629 536\nl 537 536\nl 584 537\nl 583 537\nl 629 537\nl 585 539\nl 584 539\nl 635 542\nl 587 542\nl 543 542\nl 588 542\nl 544 543\nl 635 543\nl 636 543\nl 545 543\nl 589 543\nl 545 544\nl 590 544\nl 589 544\nl 590 545\nl 591 545\nl 592 546\nl 638 546\nl 593 546\nl 547 546\nl 594 547\nl 595 548\nl 549 548\nl 594 548\nl 641 548\nl 595 549\nl 550 549\nl 596 550\nl 642 550\nl 597 550\nl 552 551\nl 597 551\nl 598 551\nl 644 552\nl 598 552\nl 599 553\nl 644 553\nl 691 553\nl 645 553\nl 646 553\nl 600 554\nl 555 554\nl 598 554\nl 601 554\nl 600 555\nl 737 555\nl 647 555\nl 602 556\nl 557 556\nl 603 556\nl 695 557\nl 603 557\nl 602 557\nl 559 558\nl 605 559\nl 695 559\nl 604 559\nl 560 559\nl 606 560\nl 698 560\nl 605 560\nl 607 561\nl 562 561\nl 653 561\nl 653 562\nl 607 562\nl 608 562\nl 609 563\nl 564 563\nl 610 564\nl 609 564\nl 611 565\nl 657 565\nl 612 565\nl 566 565\nl 567 566\nl 612 566\nl 613 566\nl 611 566\nl 612 567\nl 613 567\nl 611 567\nl 657 567\nl 658 568\nl 614 568\nl 660 568\nl 615 568\nl 705 568\nl 615 569\nl 661 569\nl 570 569\nl 616 570\nl 572 571\nl 617 571\nl 663 571\nl 664 571\nl 617 572\nl 573 572\nl 664 572\nl 574 572\nl 618 573\nl 619 574\nl 618 574\nl 576 575\nl 620 575\nl 621 576\nl 623 577\nl 578 577\nl 669 577\nl 623 578\nl 625 579\nl 580 579\nl 581 580\nl 626 580\nl 625 580\nl 582 581\nl 627 581\nl 628 581\nl 583 582\nl 585 584\nl 629 584\nl 587 586\nl 632 586\nl 679 586\nl 631 586\nl 679 587\nl 632 587\nl 633 587\nl 682 588\nl 636 588\nl 634 588\nl 635 588\nl 590 589\nl 637 589\nl 684 589\nl 591 589\nl 637 590\nl 591 590\nl 684 590\nl 637 591\nl 684 591\nl 638 592\nl 593 592\nl 685 592\nl 639 593\nl 594 593\nl 641 594\nl 686 594\nl 641 595\nl 687 595\nl 642 596\nl 597 596\nl 687 596\nl 643 596\nl 643 597\nl 642 597\nl 688 597\nl 644 598\nl 691 599\nl 646 599\nl 692 599\nl 645 599\nl 737 600\nl 601 600\nl 647 600\nl 647 601\nl 737 601\nl 603 602\nl 648 602\nl 647 602\nl 649 602\nl 649 603\nl 650 603\nl 695 603\nl 604 603\nl 695 604\nl 650 604\nl 605 604\nl 695 605\nl 606 605\nl 833 605\nl 698 606\nl 607 606\nl 653 607\nl 608 607\nl 653 608\nl 609 608\nl 610 609\nl 700 609\nl 657 611\nl 612 611\nl 657 612\nl 659 613\nl 658 614\nl 660 614\nl 751 614\nl 659 614\nl 660 615\nl 705 615\nl 659 615\nl 617 616\nl 663 616\nl 663 617\nl 664 617\nl 619 618\nl 665 618\nl 665 619\nl 620 619\nl 711 619\nl 665 620\nl 711 620\nl 622 621\nl 667 621\nl 667 622\nl 669 623\nl 668 623\nl 671 624\nl 717 624\nl 763 624\nl 716 624\nl 625 624\nl 671 625\nl 717 625\nl 672 625\nl 672 626\nl 718 626\nl 673 626\nl 720 627\nl 628 627\nl 629 628\nl 720 628\nl 721 628\nl 675 629\nl 721 629\nl 631 630\nl 676 630\nl 956 630\nl 908 630\nl 632 630\nl 632 631\nl 679 631\nl 725 631\nl 956 631\nl 679 632\nl 725 632\nl 633 632\nl 679 633\nl 726 633\nl 634 633\nl 725 633\nl 773 634\nl 726 634\nl 682 634\nl 636 635\nl 682 635\nl 682 636\nl 684 637\nl 685 638\nl 639 638\nl 686 639\nl 640 639\nl 685 639\nl 686 640\nl 733 640\nl 641 640\nl 686 641\nl 733 641\nl 688 642\nl 643 642\nl 689 642\nl 689 643\nl 688 643\nl 690 643\nl 691 645\nl 646 645\nl 690 645\nl 692 645\nl 691 646\nl 692 646\nl 737 646\nl 738 646\nl 647 646\nl 737 647\nl 693 647\nl 648 647\nl 784 647\nl 694 648\nl 693 648\nl 784 648\nl 740 648\nl 786 649\nl 740 649\nl 694 649\nl 786 650\nl 695 650\nl 742 650\nl 833 651\nl 652 651\nl 696 651\nl 880 651\nl 880 652\nl 833 652\nl 926 652\nl 791 654\nl 837 654\nl 790 654\nl 883 654\nl 835 654\nl 700 655\nl 791 655\nl 747 655\nl 837 655\nl 703 656\nl 702 656\nl 838 656\nl 657 656\nl 749 656\nl 749 657\nl 660 658\nl 705 658\nl 705 660\nl 751 660\nl 706 661\nl 662 661\nl 707 661\nl 754 661\nl 707 662\nl 706 662\nl 754 662\nl 663 662\nl 664 663\nl 709 663\nl 707 663\nl 710 664\nl 709 664\nl 711 665\nl 757 665\nl 803 666\nl 805 666\nl 758 666\nl 712 666\nl 757 666\nl 668 667\nl 714 667\nl 759 667\nl 714 668\nl 669 668\nl 713 668\nl 714 669\nl 716 669\nl 670 669\nl 716 670\nl 671 670\nl 762 670\nl 717 670\nl 717 671\nl 716 671\nl 672 671\nl 718 672\nl 719 672\nl 719 673\nl 765 673\nl 720 673\nl 674 673\nl 720 674\nl 721 674\nl 767 674\nl 721 675\nl 720 675\nl 861 676\nl 724 676\nl 723 676\nl 677 676\nl 723 677\nl 724 677\nl 722 677\nl 770 678\nl 863 678\nl 724 678\nl 725 679\nl 822 680\nl 775 680\nl 773 680\nl 727 680\nl 682 680\nl 727 681\nl 774 681\nl 820 681\nl 775 681\nl 772 681\nl 729 683\nl 776 683\nl 775 683\nl 730 683\nl 728 683\nl 730 684\nl 732 685\nl 730 685\nl 733 686\nl 734 687\nl 779 687\nl 689 687\nl 735 687\nl 780 688\nl 734 688\nl 689 688\nl 735 689\nl 734 689\nl 780 689\nl 782 690\nl 781 690\nl 736 690\nl 737 691\nl 692 691\nl 738 691\nl 738 692\nl 737 692\nl 693 692\nl 784 693\nl 738 693\nl 694 693\nl 740 694\nl 784 694\nl 833 696\nl 786 696\nl 697 696\nl 834 697\nl 788 697\nl 742 697\nl 879 697\nl 833 697\nl 880 698\nl 744 698\nl 745 699\nl 746 699\nl 880 699\nl 791 700\nl 837 701\nl 883 701\nl 702 701\nl 748 701\nl 838 701\nl 838 702\nl 748 702\nl 839 702\nl 794 702\nl 749 703\nl 795 703\nl 750 704\nl 749 704\nl 751 704\nl 795 704\nl 706 705\nl 754 706\nl 707 706\nl 754 707\nl 755 708\nl 798 708\nl 801 708\nl 800 708\nl 802 708\nl 710 709\nl 756 709\nl 756 710\nl 802 710\nl 757 711\nl 758 712\nl 804 712\nl 759 712\nl 852 712\nl 805 712\nl 760 713\nl 714 713\nl 759 713\nl 761 713\nl 759 714\nl 806 714\nl 716 715\nl 808 715\nl 853 715\nl 809 715\nl 717 716\nl 809 716\nl 808 716\nl 809 717\nl 765 718\nl 764 718\nl 719 718\nl 765 719\nl 764 719\nl 721 720\nl 768 722\nl 815 722\nl 723 722\nl 814 722\nl 861 722\nl 724 723\nl 815 723\nl 768 723\nl 770 724\nl 726 725\nl 773 726\nl 727 726\nl 775 727\nl 820 727\nl 821 727\nl 773 727\nl 821 728\nl 868 728\nl 729 728\nl 776 728\nl 775 728\nl 776 729\nl 731 729\nl 822 729\nl 776 730\nl 732 730\nl 822 730\nl 776 731\nl 823 731\nl 778 733\nl 824 733\nl 735 734\nl 780 734\nl 779 734\nl 780 735\nl 826 735\nl 781 735\nl 827 736\nl 782 736\nl 781 736\nl 828 736\nl 784 738\nl 785 739\nl 784 739\nl 741 740\nl 786 740\nl 832 741\nl 787 741\nl 742 741\nl 786 741\nl 788 742\nl 879 742\nl 787 742\nl 834 742\nl 789 743\nl 788 743\nl 834 743\nl 879 743\nl 880 744\nl 926 744\nl 745 744\nl 790 744\nl 746 745\nl 880 745\nl 792 745\nl 792 746\nl 791 746\nl 791 747\nl 839 747\nl 837 747\nl 793 747\nl 838 748\nl 794 748\nl 839 748\nl 795 748\nl 750 749\nl 795 749\nl 795 750\nl 751 750\nl 753 750\nl 753 751\nl 843 752\nl 753 752\nl 798 752\nl 797 753\nl 842 753\nl 843 753\nl 801 755\nl 798 755\nl 846 755\nl 800 755\nl 802 756\nl 757 756\nl 848 757\nl 804 758\nl 805 758\nl 851 759\nl 852 759\nl 806 759\nl 761 760\nl 762 761\nl 809 763\nl 765 764\nl 810 764\nl 811 765\nl 905 766\nl 812 766\nl 859 766\nl 951 766\nl 813 766\nl 812 767\nl 813 767\nl 815 768\nl 814 768\nl 861 768\nl 862 769\nl 816 769\nl 955 769\nl 863 769\nl 770 769\nl 863 770\nl 816 770\nl 862 770\nl 909 770\nl 864 771\nl 911 771\nl 819 771\nl 772 771\nl 817 771\nl 819 772\nl 911 772\nl 820 772\nl 817 772\nl 820 774\nl 819 774\nl 822 775\nl 821 775\nl 822 776\nl 869 777\nl 870 777\nl 823 777\nl 871 777\nl 914 777\nl 824 778\nl 779 778\nl 826 779\nl 825 779\nl 826 781\nl 872 781\nl 782 781\nl 827 782\nl 783 782\nl 828 783\nl 874 783\nl 827 783\nl 830 783\nl 788 787\nl 832 787\nl 834 788\nl 879 788\nl 835 789\nl 790 789\nl 834 789\nl 836 790\nl 881 790\nl 837 791\nl 883 792\nl 884 792\nl 839 793\nl 839 794\nl 841 794\nl 932 794\nl 796 795\nl 842 795\nl 842 796\nl 797 796\nl 887 796\nl 842 797\nl 801 798\nl 800 798\nl 846 798\nl 800 799\nl 846 799\nl 801 799\nl 891 799\nl 801 800\nl 846 800\nl 846 801\nl 848 803\nl 849 803\nl 941 803\nl 894 803\nl 847 803\nl 851 804\nl 852 804\nl 852 805\nl 897 805\nl 806 805\nl 852 806\nl 853 806\nl 851 806\nl 946 807\nl 808 807\nl 853 807\nl 899 807\nl 809 807\nl 809 808\nl 853 808\nl 811 810\nl 856 810\nl 903 810\nl 858 811\nl 904 811\nl 812 811\nl 951 812\nl 858 812\nl 904 812\nl 905 812\nl 814 813\nl 905 813\nl 815 814\nl 861 814\nl 861 815\nl 863 816\nl 862 816\nl 909 816\nl 1004 817\nl 911 817\nl 957 817\nl 1006 818\nl 1050 818\nl 1005 818\nl 1097 818\nl 1096 818\nl 911 819\nl 864 819\nl 912 820\nl 868 821\nl 869 823\nl 867 823\nl 868 823\nl 870 824\nl 914 824\nl 917 824\nl 917 825\nl 870 825\nl 872 825\nl 826 825\nl 872 826\nl 828 827\nl 874 828\nl 1010 829\nl 920 829\nl 875 829\nl 873 829\nl 874 829\nl 876 830\nl 877 830\nl 874 830\nl 831 830\nl 921 830\nl 877 831\nl 878 831\nl 876 831\nl 923 831\nl 880 833\nl 879 834\nl 836 835\nl 881 836\nl 883 836\nl 883 837\nl 839 838\nl 841 839\nl 931 840\nl 886 840\nl 930 840\nl 977 840\nl 1023 840\nl 932 841\nl 887 841\nl 977 841\nl 844 843\nl 890 843\nl 937 843\nl 890 844\nl 889 844\nl 937 844\nl 845 844\nl 889 845\nl 1026 845\nl 982 845\nl 985 845\nl 893 847\nl 941 847\nl 940 847\nl 849 847\nl 848 847\nl 894 848\nl 941 848\nl 893 848\nl 893 849\nl 988 849\nl 941 849\nl 851 850\nl 852 850\nl 898 850\nl 852 851\nl 898 853\nl 947 854\nl 900 854\nl 946 854\nl 901 854\nl 901 855\nl 949 855\nl 948 855\nl 1087 855\nl 902 855\nl 903 856\nl 857 856\nl 904 856\nl 904 857\nl 951 857\nl 903 857\nl 858 857\nl 905 857\nl 904 858\nl 951 858\nl 905 859\nl 906 859\nl 860 859\nl 951 859\nl 906 860\nl 861 860\nl 999 860\nl 905 860\nl 906 861\nl 955 861\nl 955 862\nl 909 862\nl 863 862\nl 909 863\nl 911 864\nl 910 864\nl 957 864\nl 912 865\nl 868 865\nl 958 865\nl 1004 865\nl 959 866\nl 867 866\nl 912 866\nl 958 866\nl 962 866\nl 869 867\nl 959 867\nl 962 867\nl 914 869\nl 914 870\nl 917 870\nl 871 870\nl 914 871\nl 963 871\nl 964 871\nl 915 871\nl 873 872\nl 917 872\nl 1010 873\nl 920 873\nl 918 873\nl 1056 875\nl 920 875\nl 1010 875\nl 877 876\nl 921 876\nl 967 876\nl 923 876\nl 923 877\nl 878 877\nl 924 878\nl 923 878\nl 969 878\nl 925 879\nl 926 880\nl 1063 881\nl 971 881\nl 1017 881\nl 1063 882\nl 974 882\nl 1110 882\nl 1064 882\nl 885 884\nl 976 884\nl 976 885\nl 975 885\nl 1113 885\nl 1112 885\nl 977 886\nl 931 886\nl 978 886\nl 933 886\nl 932 887\nl 977 888\nl 933 888\nl 934 888\nl 935 888\nl 1026 889\nl 982 889\nl 1027 889\nl 937 890\nl 939 891\nl 986 891\nl 942 892\nl 987 892\nl 1034 892\nl 1033 892\nl 988 892\nl 941 893\nl 940 893\nl 988 893\nl 941 894\nl 895 894\nl 896 895\nl 897 895\nl 897 896\nl 989 896\nl 945 899\nl 946 899\nl 991 899\nl 990 899\nl 947 900\nl 946 900\nl 901 900\nl 947 901\nl 949 901\nl 995 902\nl 996 902\nl 903 902\nl 994 902\nl 904 903\nl 951 903\nl 951 904\nl 951 905\nl 906 905\nl 952 906\nl 999 906\nl 1001 907\nl 953 907\nl 1000 907\nl 1046 907\nl 1047 907\nl 956 908\nl 910 909\nl 957 911\nl 958 912\nl 1004 912\nl 1007 913\nl 962 913\nl 960 913\nl 959 913\nl 1053 913\nl 963 914\nl 917 914\nl 916 915\nl 960 915\nl 962 915\nl 1009 915\nl 1009 916\nl 964 916\nl 1008 916\nl 963 917\nl 920 918\nl 1056 918\nl 1010 918\nl 1011 918\nl 965 919\nl 966 919\nl 921 919\nl 1102 919\nl 1010 920\nl 1056 920\nl 922 921\nl 966 921\nl 967 921\nl 1013 922\nl 1014 922\nl 966 922\nl 1015 923\nl 968 923\nl 969 924\nl 1016 924\nl 925 924\nl 971 924\nl 971 925\nl 1016 925\nl 1063 925\nl 1018 927\nl 1017 927\nl 973 927\nl 1019 927\nl 1063 927\nl 1110 928\nl 974 928\nl 1064 928\nl 1111 928\nl 1156 928\nl 930 929\nl 931 929\nl 931 930\nl 1112 930\nl 977 931\nl 978 931\nl 977 932\nl 978 933\nl 935 933\nl 934 933\nl 977 933\nl 935 934\nl 981 934\nl 1028 934\nl 981 935\nl 1028 935\nl 1027 936\nl 982 937\nl 1073 937\nl 1026 937\nl 1032 938\nl 1030 938\nl 1075 938\nl 1078 938\nl 940 939\nl 987 939\nl 986 939\nl 988 940\nl 941 940\nl 988 941\nl 1034 942\nl 987 942\nl 1033 942\nl 988 942\nl 1036 943\nl 989 943\nl 944 943\nl 990 943\nl 1037 943\nl 989 944\nl 1036 944\nl 990 944\nl 991 945\nl 1037 945\nl 946 945\nl 990 945\nl 1087 948\nl 949 948\nl 1040 948\nl 994 948\nl 950 949\nl 996 949\nl 1089 949\nl 1043 950\nl 996 950\nl 1089 950\nl 997 950\nl 1045 952\nl 953 952\nl 999 952\nl 998 952\nl 1045 953\nl 999 953\nl 1001 953\nl 1093 954\nl 1002 954\nl 1139 954\nl 1000 954\nl 959 958\nl 1004 958\nl 962 959\nl 1007 959\nl 962 960\nl 1053 960\nl 1052 961\nl 1005 961\nl 1051 961\nl 1007 961\nl 1006 961\nl 1053 962\nl 1007 962\nl 964 963\nl 1009 964\nl 1102 965\nl 1011 965\nl 966 965\nl 1148 965\nl 1149 966\nl 1148 967\nl 1102 967\nl 1149 967\nl 1059 968\nl 1014 968\nl 1015 968\nl 1015 969\nl 1017 970\nl 1018 970\nl 972 970\nl 1063 971\nl 1016 971\nl 1018 972\nl 973 972\nl 1018 973\nl 1019 973\nl 1020 973\nl 1110 974\nl 1066 974\nl 1065 974\nl 976 975\nl 1067 975\nl 1112 975\nl 1251 976\nl 1023 976\nl 978 977\nl 1297 978\nl 1115 979\nl 1297 979\nl 1023 979\nl 1024 979\nl 1298 979\nl 1116 980\nl 1117 980\nl 1209 980\nl 1072 981\nl 1028 981\nl 1118 981\nl 1026 982\nl 1027 982\nl 1073 982\nl 984 983\nl 1072 983\nl 1118 983\nl 1074 983\nl 1029 983\nl 1074 984\nl 1072 984\nl 1256 984\nl 1029 984\nl 1030 985\nl 1119 985\nl 1026 985\nl 1119 986\nl 1033 987\nl 1034 987\nl 1031 987\nl 1036 989\nl 990 989\nl 1036 990\nl 1037 990\nl 1037 991\nl 1083 991\nl 993 992\nl 1083 992\nl 1040 993\nl 994 993\nl 995 993\nl 1040 994\nl 995 994\nl 996 995\nl 1089 996\nl 1043 996\nl 1043 997\nl 1089 997\nl 1044 997\nl 1045 997\nl 999 998\nl 1045 998\nl 1043 998\nl 1045 999\nl 1047 1000\nl 1001 1000\nl 1046 1000\nl 1047 1001\nl 1004 1002\nl 1093 1002\nl 1050 1003\nl 1094 1003\nl 1047 1003\nl 1051 1005\nl 1006 1005\nl 1096 1005\nl 1097 1005\nl 1052 1005\nl 1097 1006\nl 1051 1006\nl 1096 1006\nl 1099 1007\nl 1053 1007\nl 1054 1008\nl 1009 1008\nl 1098 1008\nl 1100 1008\nl 1054 1009\nl 1056 1010\nl 1102 1011\nl 1148 1011\nl 1101 1011\nl 1057 1011\nl 1058 1012\nl 1103 1012\nl 1101 1012\nl 1149 1012\nl 1148 1012\nl 1014 1013\nl 1104 1013\nl 1059 1013\nl 1059 1014\nl 1061 1014\nl 1062 1015\nl 1063 1017\nl 1019 1018\nl 1020 1019\nl 1065 1019\nl 1065 1020\nl 1203 1020\nl 1067 1020\nl 1249 1021\nl 1204 1021\nl 1158 1021\nl 1111 1021\nl 1067 1021\nl 1113 1022\nl 1112 1022\nl 1066 1022\nl 1067 1022\nl 1024 1022\nl 1115 1023\nl 1251 1023\nl 1113 1023\nl 1297 1023\nl 1115 1024\nl 1298 1024\nl 1343 1024\nl 1251 1025\nl 1071 1025\nl 1297 1025\nl 1163 1025\nl 1027 1026\nl 1073 1026\nl 1073 1027\nl 1165 1027\nl 1164 1028\nl 1210 1028\nl 1072 1028\nl 1118 1028\nl 1255 1029\nl 1299 1029\nl 1118 1029\nl 1119 1030\nl 1212 1030\nl 1078 1031\nl 1033 1031\nl 1032 1031\nl 1034 1031\nl 1120 1031\nl 1078 1032\nl 1075 1032\nl 1123 1032\nl 1034 1032\nl 1034 1033\nl 1078 1033\nl 1080 1035\nl 1081 1035\nl 1220 1035\nl 1221 1035\nl 1129 1036\nl 1037 1036\nl 1129 1037\nl 1039 1038\nl 1085 1038\nl 1130 1038\nl 1085 1039\nl 1087 1039\nl 1133 1039\nl 1084 1039\nl 1087 1040\nl 1133 1040\nl 1133 1041\nl 1086 1041\nl 1042 1041\nl 1180 1041\nl 1135 1042\nl 1180 1042\nl 1090 1042\nl 1089 1042\nl 1089 1043\nl 1045 1044\nl 1138 1046\nl 1047 1046\nl 1050 1048\nl 1097 1048\nl 1188 1048\nl 1096 1048\nl 1095 1049\nl 1142 1049\nl 1281 1049\nl 1141 1049\nl 1051 1049\nl 1096 1050\nl 1142 1050\nl 1097 1050\nl 1052 1051\nl 1096 1051\nl 1097 1051\nl 1144 1052\nl 1143 1052\nl 1099 1053\nl 1100 1054\nl 1147 1054\nl 1055 1054\nl 1098 1054\nl 1147 1055\nl 1057 1055\nl 1100 1055\nl 1101 1055\nl 1101 1057\nl 1238 1057\nl 1240 1057\nl 1103 1058\nl 1149 1058\nl 1101 1058\nl 1148 1058\nl 1061 1059\nl 1106 1059\nl 1106 1060\nl 1105 1060\nl 1061 1060\nl 1150 1060\nl 1106 1061\nl 1105 1061\nl 1064 1062\nl 1110 1064\nl 1109 1064\nl 1156 1064\nl 1112 1066\nl 1067 1066\nl 1249 1066\nl 1249 1067\nl 1250 1067\nl 1204 1067\nl 1159 1068\nl 1296 1068\nl 1158 1068\nl 1205 1068\nl 1114 1068\nl 1252 1069\nl 1251 1069\nl 1115 1069\nl 1206 1070\nl 1343 1070\nl 1116 1070\nl 1162 1070\nl 1114 1070\nl 1163 1071\nl 1297 1071\nl 1344 1071\nl 1164 1072\nl 1118 1072\nl 1074 1072\nl 1165 1073\nl 1165 1074\nl 1210 1074\nl 1123 1075\nl 1078 1075\nl 1167 1075\nl 1120 1076\nl 1123 1076\nl 1078 1076\nl 1218 1077\nl 1217 1077\nl 1168 1077\nl 1121 1077\nl 1357 1077\nl 1123 1078\nl 1120 1078\nl 1124 1079\nl 1170 1079\nl 1120 1079\nl 1220 1079\nl 1081 1080\nl 1220 1080\nl 1221 1080\nl 1125 1080\nl 1221 1081\nl 1125 1081\nl 1083 1082\nl 1174 1082\nl 1128 1082\nl 1127 1082\nl 1173 1082\nl 1128 1083\nl 1085 1084\nl 1221 1084\nl 1133 1085\nl 1086 1085\nl 1133 1086\nl 1179 1086\nl 1132 1086\nl 1135 1088\nl 1181 1088\nl 1134 1088\nl 1226 1088\nl 1183 1088\nl 1135 1090\nl 1185 1091\nl 1184 1091\nl 1324 1091\nl 1137 1091\nl 1138 1091\nl 1140 1092\nl 1278 1092\nl 1138 1092\nl 1137 1092\nl 1185 1092\nl 1139 1093\nl 1231 1093\nl 1186 1094\nl 1142 1094\nl 1095 1094\nl 1140 1094\nl 1142 1095\nl 1281 1095\nl 1141 1095\nl 1097 1096\nl 1141 1096\nl 1142 1096\nl 1099 1097\nl 1145 1098\nl 1192 1098\nl 1100 1098\nl 1143 1099\nl 1147 1100\nl 1145 1100\nl 1192 1100\nl 1103 1101\nl 1148 1102\nl 1149 1102\nl 1193 1103\nl 1196 1103\nl 1105 1104\nl 1149 1104\nl 1106 1105\nl 1107 1105\nl 1150 1105\nl 1199 1107\nl 1154 1107\nl 1197 1107\nl 1151 1107\nl 1336 1107\nl 1291 1108\nl 1245 1108\nl 1337 1108\nl 1246 1108\nl 1290 1108\nl 1110 1109\nl 1157 1109\nl 1111 1110\nl 1156 1110\nl 1156 1111\nl 1158 1111\nl 1113 1112\nl 1206 1114\nl 1296 1114\nl 1342 1114\nl 1159 1114\nl 1298 1115\nl 1343 1115\nl 1343 1116\nl 1117 1116\nl 1298 1116\nl 1344 1117\nl 1209 1117\nl 1163 1117\nl 1164 1118\nl 1168 1121\nl 1264 1121\nl 1169 1121\nl 1166 1121\nl 1167 1121\nl 1166 1122\nl 1263 1122\nl 1309 1122\nl 1264 1122\nl 1169 1122\nl 1170 1124\nl 1220 1124\nl 1171 1125\nl 1221 1125\nl 1126 1125\nl 1267 1125\nl 1172 1125\nl 1265 1126\nl 1172 1126\nl 1267 1126\nl 1219 1126\nl 1173 1127\nl 1174 1127\nl 1128 1127\nl 1174 1128\nl 1173 1128\nl 1175 1129\nl 1221 1129\nl 1176 1130\nl 1222 1130\nl 1268 1130\nl 1175 1130\nl 1224 1131\nl 1225 1131\nl 1317 1131\nl 1271 1131\nl 1272 1131\nl 1225 1132\nl 1180 1132\nl 1272 1132\nl 1226 1132\nl 1226 1134\nl 1180 1134\nl 1228 1135\nl 1181 1135\nl 1136 1135\nl 1182 1136\nl 1228 1136\nl 1137 1136\nl 1181 1136\nl 1229 1136\nl 1138 1137\nl 1229 1137\nl 1185 1137\nl 1185 1138\nl 1231 1139\nl 1278 1140\nl 1185 1140\nl 1142 1141\nl 1281 1141\nl 1373 1141\nl 1186 1142\nl 1235 1143\nl 1285 1143\nl 1234 1143\nl 1189 1143\nl 1146 1144\nl 1189 1144\nl 1191 1144\nl 1145 1144\nl 1146 1145\nl 1192 1145\nl 1191 1146\nl 1189 1146\nl 1194 1147\nl 1192 1147\nl 1195 1147\nl 1149 1148\nl 1152 1150\nl 1197 1151\nl 1196 1151\nl 1241 1151\nl 1425 1151\nl 1380 1152\nl 1153 1152\nl 1199 1152\nl 1197 1152\nl 1426 1153\nl 1380 1153\nl 1199 1153\nl 1154 1153\nl 1336 1154\nl 1199 1154\nl 1246 1154\nl 1380 1154\nl 1202 1155\nl 1248 1155\nl 1246 1155\nl 1156 1155\nl 1157 1156\nl 1158 1157\nl 1159 1158\nl 1296 1158\nl 1296 1159\nl 1205 1159\nl 1161 1160\nl 1342 1160\nl 1206 1160\nl 1342 1161\nl 1208 1161\nl 1206 1161\nl 1207 1162\nl 1253 1162\nl 1206 1162\nl 1300 1162\nl 1344 1163\nl 1297 1163\nl 1210 1164\nl 1210 1165\nl 1211 1165\nl 1257 1165\nl 1169 1166\nl 1167 1166\nl 1264 1166\nl 1168 1166\nl 1169 1167\nl 1215 1167\nl 1264 1167\nl 1264 1168\nl 1218 1168\nl 1357 1168\nl 1217 1168\nl 1264 1169\nl 1215 1169\nl 1220 1170\nl 1310 1171\nl 1221 1171\nl 1267 1171\nl 1265 1172\nl 1267 1172\nl 1219 1172\nl 1174 1173\nl 1175 1173\nl 1222 1175\nl 1176 1175\nl 1221 1175\nl 1267 1175\nl 1222 1176\nl 1268 1176\nl 1223 1177\nl 1224 1177\nl 1271 1177\nl 1178 1177\nl 1269 1177\nl 1271 1178\nl 1224 1178\nl 1272 1178\nl 1271 1179\nl 1272 1179\nl 1225 1179\nl 1226 1180\nl 1225 1180\nl 1272 1180\nl 1228 1181\nl 1182 1181\nl 1273 1181\nl 1228 1182\nl 1414 1182\nl 1324 1184\nl 1276 1184\nl 1185 1184\nl 1369 1184\nl 1324 1185\nl 1326 1186\nl 1281 1186\nl 1234 1187\nl 1235 1187\nl 1189 1187\nl 1285 1187\nl 1280 1187\nl 1285 1188\nl 1234 1189\nl 1191 1189\nl 1237 1190\nl 1239 1190\nl 1236 1190\nl 1328 1190\nl 1423 1190\nl 1236 1191\nl 1194 1192\nl 1195 1192\nl 1238 1193\nl 1241 1193\nl 1196 1193\nl 1195 1194\nl 1286 1194\nl 1286 1195\nl 1240 1195\nl 1241 1196\nl 1197 1196\nl 1425 1197\nl 1290 1197\nl 1425 1198\nl 1290 1198\nl 1424 1198\nl 1241 1198\nl 1336 1199\nl 1380 1199\nl 1246 1199\nl 1201 1200\nl 1426 1200\nl 1247 1200\nl 1247 1201\nl 1426 1201\nl 1336 1201\nl 1248 1202\nl 1294 1202\nl 1340 1202\nl 1203 1202\nl 1341 1203\nl 1204 1203\nl 1249 1204\nl 1250 1204\nl 1205 1204\nl 1250 1205\nl 1296 1205\nl 1342 1206\nl 1207 1206\nl 1253 1207\nl 1342 1207\nl 1299 1208\nl 1254 1208\nl 1391 1208\nl 1346 1208\nl 1254 1209\nl 1302 1209\nl 1256 1210\nl 1257 1211\nl 1256 1212\nl 1357 1213\nl 1217 1213\nl 1262 1213\nl 1261 1213\nl 1356 1213\nl 1260 1214\nl 1355 1214\nl 1307 1214\nl 1263 1214\nl 1264 1215\nl 1216 1215\nl 1310 1216\nl 1218 1216\nl 1356 1216\nl 1357 1217\nl 1262 1217\nl 1218 1217\nl 1311 1219\nl 1265 1219\nl 1314 1219\nl 1312 1219\nl 1267 1221\nl 1267 1222\nl 1268 1222\nl 1408 1223\nl 1316 1223\nl 1269 1223\nl 1224 1223\nl 1271 1224\nl 1269 1224\nl 1272 1225\nl 1226 1225\nl 1317 1225\nl 1272 1226\nl 1414 1227\nl 1364 1227\nl 1274 1228\nl 1274 1229\nl 1277 1230\nl 1326 1230\nl 1279 1230\nl 1415 1230\nl 1372 1230\nl 1277 1231\nl 1279 1231\nl 1276 1231\nl 1275 1231\nl 1325 1232\nl 1285 1232\nl 1235 1232\nl 1373 1232\nl 1281 1233\nl 1372 1233\nl 1419 1233\nl 1373 1233\nl 1280 1234\nl 1235 1234\nl 1285 1234\nl 1285 1235\nl 1239 1236\nl 1237 1236\nl 1288 1236\nl 1239 1237\nl 1283 1237\nl 1288 1237\nl 1240 1238\nl 1288 1239\nl 1378 1239\nl 1286 1240\nl 1424 1242\nl 1289 1242\nl 1243 1242\nl 1335 1242\nl 1424 1243\nl 1379 1243\nl 1334 1243\nl 1289 1243\nl 1423 1243\nl 1334 1244\nl 1379 1244\nl 1423 1244\nl 1378 1244\nl 1290 1245\nl 1337 1245\nl 1292 1245\nl 1425 1245\nl 1336 1246\nl 1426 1247\nl 1336 1247\nl 1386 1248\nl 1340 1248\nl 1295 1248\nl 1250 1249\nl 1389 1252\nl 1390 1252\nl 1389 1253\nl 1300 1253\nl 1299 1254\nl 1346 1254\nl 1300 1254\nl 1347 1255\nl 1258 1255\nl 1304 1255\nl 1256 1255\nl 1347 1258\nl 1395 1258\nl 1304 1258\nl 1305 1258\nl 1304 1259\nl 1398 1259\nl 1355 1260\nl 1307 1260\nl 1308 1260\nl 1263 1260\nl 1357 1261\nl 1262 1261\nl 1263 1261\nl 1356 1261\nl 1357 1262\nl 1356 1262\nl 1309 1263\nl 1264 1263\nl 1357 1263\nl 1311 1265\nl 1267 1265\nl 1312 1266\nl 1268 1266\nl 1267 1266\nl 1408 1269\nl 1316 1269\nl 1362 1269\nl 1410 1270\nl 1362 1270\nl 1318 1270\nl 1274 1273\nl 1276 1275\nl 1322 1275\nl 1369 1275\nl 1322 1276\nl 1369 1276\nl 1324 1276\nl 1279 1277\nl 1326 1277\nl 1322 1277\nl 1323 1278\nl 1368 1278\nl 1326 1279\nl 1373 1279\nl 1285 1280\nl 1325 1280\nl 1372 1281\nl 1327 1282\nl 1377 1282\nl 1418 1282\nl 1284 1282\nl 1331 1282\nl 1284 1283\nl 1331 1283\nl 1329 1283\nl 1287 1283\nl 1331 1284\nl 1329 1284\nl 1287 1284\nl 1378 1286\nl 1329 1287\nl 1331 1287\nl 1333 1287\nl 1378 1288\nl 1423 1288\nl 1370 1288\nl 1424 1289\nl 1335 1289\nl 1379 1289\nl 1425 1290\nl 1292 1290\nl 1337 1291\nl 1338 1292\nl 1293 1292\nl 1339 1292\nl 1385 1292\nl 1338 1293\nl 1339 1293\nl 1385 1293\nl 1336 1293\nl 1340 1294\nl 1341 1294\nl 1386 1294\nl 1386 1295\nl 1387 1295\nl 1340 1295\nl 1339 1295\nl 1344 1297\nl 1343 1298\nl 1344 1298\nl 1347 1299\nl 1301 1300\nl 1346 1300\nl 1391 1300\nl 1346 1301\nl 1348 1301\nl 1393 1301\nl 1394 1301\nl 1303 1302\nl 1393 1302\nl 1394 1302\nl 1349 1302\nl 1393 1303\nl 1349 1303\nl 1348 1303\nl 1350 1303\nl 1395 1304\nl 1347 1304\nl 1398 1305\nl 1306 1305\nl 1352 1305\nl 1396 1305\nl 1352 1306\nl 1351 1306\nl 1397 1306\nl 1353 1306\nl 1308 1307\nl 1355 1307\nl 1399 1307\nl 1355 1308\nl 1399 1308\nl 1353 1308\nl 1356 1310\nl 1402 1311\nl 1312 1311\nl 1360 1313\nl 1408 1313\nl 1360 1314\nl 1407 1315\nl 1361 1315\nl 1316 1315\nl 1408 1315\nl 1362 1315\nl 1408 1316\nl 1361 1316\nl 1362 1316\nl 1410 1318\nl 1364 1318\nl 1319 1318\nl 1363 1318\nl 1365 1319\nl 1413 1319\nl 1411 1319\nl 1367 1319\nl 1321 1320\nl 1415 1320\nl 1416 1320\nl 1366 1320\nl 1415 1321\nl 1416 1321\nl 1372 1321\nl 1369 1322\nl 1367 1323\nl 1369 1324\nl 1373 1326\nl 1418 1327\nl 1377 1327\nl 1419 1327\nl 1417 1327\nl 1333 1328\nl 1329 1328\nl 1331 1329\nl 1333 1329\nl 1375 1330\nl 1374 1330\nl 1421 1330\nl 1422 1330\nl 1376 1330\nl 1333 1331\nl 1379 1334\nl 1423 1334\nl 1424 1334\nl 1381 1335\nl 1424 1335\nl 1382 1335\nl 1380 1336\nl 1339 1338\nl 1385 1338\nl 1385 1339\nl 1386 1340\nl 1388 1341\nl 1389 1345\nl 1390 1345\nl 1392 1345\nl 1391 1346\nl 1348 1346\nl 1393 1346\nl 1395 1347\nl 1393 1348\nl 1349 1348\nl 1394 1348\nl 1393 1349\nl 1394 1349\nl 1395 1350\nl 1353 1351\nl 1352 1351\nl 1398 1351\nl 1397 1352\nl 1353 1352\nl 1399 1353\nl 1399 1354\nl 1357 1356\nl 1405 1358\nl 1360 1358\nl 1407 1358\nl 1403 1358\nl 1406 1358\nl 1362 1359\nl 1361 1359\nl 1405 1359\nl 1360 1359\nl 1408 1360\nl 1405 1360\nl 1407 1360\nl 1361 1360\nl 1407 1361\nl 1408 1361\nl 1362 1361\nl 1408 1362\nl 1409 1363\nl 1364 1363\nl 1410 1363\nl 1409 1364\nl 1410 1364\nl 1411 1365\nl 1366 1365\nl 1413 1365\nl 1367 1365\nl 1411 1366\nl 1367 1366\nl 1368 1366\nl 1368 1367\nl 1413 1368\nl 1416 1368\nl 1417 1370\nl 1378 1370\nl 1423 1370\nl 1376 1371\nl 1377 1371\nl 1420 1371\nl 1374 1371\nl 1418 1371\nl 1373 1372\nl 1419 1372\nl 1419 1373\nl 1375 1374\nl 1421 1374\nl 1376 1374\nl 1421 1375\nl 1376 1375\nl 1422 1375\nl 1420 1376\nl 1418 1377\nl 1420 1377\nl 1423 1378\nl 1423 1379\nl 1424 1379\nl 1382 1381\nl 1384 1383\nl 1385 1383\nl 1385 1384\nl 1387 1386\nl 1389 1388\nl 1390 1389\nl 1397 1396\nl 1403 1400\nl 1401 1400\nl 1402 1400\nl 1402 1401\nl 1403 1401\nl 1403 1402\nl 1406 1403\nl 1405 1404\nl 1407 1404\nl 1407 1405\nl 1407 1406\nl 1408 1407\nl 1410 1409\nl 1413 1412\nl 1414 1413\nl 1416 1415\nl 1419 1416\nl 1419 1417\nl 1418 1417\nl 1422 1421\n"},function(n,t){n.exports="# File exported by Houdini 16.5.323 (www.sidefx.com)\n# 1426 points\n# 7078 vertices\n# 3539 primitives\n# Bounds: [0, 0.0264998674, 0.579397857] to [1, 1, 1]\ng \nv 0.164812312 0.746965706 0.804633558\nv 0.15990293 0.709496915 0.774556398\nv 0.14854151 0.629756927 0.719024956\nv 0.147296086 0.610327601 0.691356421\nv 0.155476928 0.64924407 0.693984389\nv 0.157098651 0.669467628 0.719765127\nv 0.148599416 0.619672418 0.698125064\nv 0.163002431 0.724448502 0.77597028\nv 0.171576858 0.805037796 0.859090805\nv 0.172503263 0.814020336 0.86862725\nv 0.172041759 0.809474349 0.86373353\nv 0.17900002 0.878000081 0.93749994\nv 0.176859736 0.856922269 0.91481024\nv 0.166540995 0.755302191 0.805418313\nv 0.163183421 0.722236693 0.769823968\nv 0.156046867 0.651955068 0.694167495\nv 0.153306514 0.62496841 0.665117264\nv 0.145225048 0.545380592 0.579442441\nv 0.158504039 0.676153541 0.720216632\nv 0.161066532 0.70140183 0.7474069\nv 0.166144848 0.75140363 0.801221967\nv 0.169483885 0.784284651 0.83661741\nv 0.166404009 0.753954351 0.803967476\nv 0.161781386 0.708430171 0.754961729\nv 0.163746044 0.727778614 0.77579087\nv 0.160970703 0.700945675 0.747376144\nv 0.158629209 0.689807355 0.746624112\nv 0.153544828 0.665620506 0.744990766\nv 0.160765827 0.699971497 0.7473104\nv 0.163035199 0.7243976 0.775562704\nv 0.165079236 0.748348713 0.804949045\nv 0.166174293 0.753557146 0.805300713\nv 0.158502564 0.676147044 0.720216155\nv 0.161068767 0.701412737 0.747407734\nv 0.163728863 0.727696955 0.775785387\nv 0.162840456 0.723145545 0.774843276\nv 0.166504547 0.75512886 0.805406809\nv 0.157983392 0.673676491 0.720049381\nv 0.160026133 0.69677192 0.747718573\nv 0.164405674 0.734275103 0.782783628\nv 0.163743526 0.727766991 0.775790036\nv 0.172361806 0.813347459 0.868581951\nv 0.172481492 0.813916564 0.868620336\nv 0.172502398 0.81401515 0.868626952\nv 0.165912375 0.750933766 0.80243367\nv 0.159675598 0.70841521 0.774483383\nv 0.160712719 0.697903931 0.743630469\nv 0.161069006 0.701412797 0.747407675\nv 0.158503845 0.676152885 0.720216572\nv 0.156046867 0.651955009 0.694167554\nv 0.153692976 0.628772914 0.669212461\nv 0.156046942 0.651955009 0.694167614\nv 0.153692976 0.628772914 0.66921252\nv 0.163983569 0.730117559 0.778307736\nv 0.171925634 0.808330715 0.862502515\nv 0.169458121 0.78403157 0.836344898\nv 0.16945824 0.78403151 0.836344898\nv 0.175682023 0.84532398 0.902324915\nv 0.166541085 0.75530225 0.805418372\nv 0.163746327 0.727779508 0.77579093\nv 0.158504039 0.676153481 0.720216632\nv 0.156046867 0.651955068 0.694167495\nv 0.150982663 0.602082431 0.640480578\nv 0.145225048 0.545380771 0.579442441\nv 0.153708741 0.628928244 0.669379652\nv 0.156046763 0.651954532 0.694167495\nv 0.163223416 0.722630441 0.770248115\nv 0.165409401 0.744158924 0.793422878\nv 0.158503935 0.676153481 0.720216572\nv 0.161068931 0.701412797 0.747407675\nv 0.161111504 0.701833069 0.747860193\nv 0.161068827 0.701412678 0.747407734\nv 0.16106832 0.701410115 0.747407556\nv 0.160686582 0.699594498 0.747285068\nv 0.160465837 0.698544145 0.747214019\nv 0.163228273 0.725315809 0.775624514\nv 0.166100383 0.753206551 0.80527699\nv 0.16651383 0.755172908 0.805409789\nv 0.158503935 0.676153481 0.720216632\nv 0.158270046 0.673849165 0.717736065\nv 0.161134973 0.702063739 0.748108327\nv 0.161068827 0.701412559 0.747407675\nv 0.166538626 0.755290747 0.805417717\nv 0.1584775 0.676027238 0.720208168\nv 0.160994664 0.701058984 0.747383773\nv 0.161069006 0.701412797 0.747407734\nv 0.163746357 0.727779567 0.77579093\nv 0.167538345 0.765124798 0.815992713\nv 0.163746357 0.727779567 0.77579093\nv 0.161069006 0.701412797 0.747407734\nv 0.158504114 0.676153481 0.720216572\nv 0.158504114 0.676153481 0.720216572\nv 0.161069006 0.701412857 0.747407675\nv 0.161068931 0.701412797 0.747407675\nv 0.158844799 0.679508686 0.723828435\nv 0.153702453 0.628866255 0.669313014\nv 0.155509174 0.646659076 0.688466489\nv 0.156046942 0.651955009 0.694167554\nv 0.153692976 0.628772914 0.66921252\nv 0.166541085 0.755302191 0.805418432\nv 0.169816419 0.787559092 0.840142131\nv 0.169458121 0.78403151 0.836344957\nv 0.175682023 0.84532398 0.902324915\nv 0.168204159 0.771681368 0.82305032\nv 0.166528687 0.755243838 0.805414438\nv 0.160314381 0.697823822 0.747165501\nv 0.158423945 0.675772071 0.720190763\nv 0.156025261 0.651852012 0.694160461\nv 0.150946572 0.604227602 0.645147741\nv 0.145086199 0.544720113 0.579397857\nv 0.153586194 0.628265262 0.669178069\nv 0.15512535 0.647571743 0.693871498\nv 0.164086431 0.731519461 0.780183971\nv 0.163732409 0.727714717 0.775786638\nv 0.158378139 0.675554752 0.72017616\nv 0.160942763 0.700812399 0.747367144\nv 0.158861518 0.690912604 0.746698678\nv 0.158582926 0.689183831 0.74579376\nv 0.159470648 0.693810344 0.74689436\nv 0.152951509 0.662797809 0.74480021\nv 0.145971939 0.62959671 0.742558122\nv 0.140586242 0.617607474 0.768351257\nv 0.137140155 0.615443408 0.795974076\nv 0.147071704 0.662687004 0.799164414\nv 0.158114582 0.674300373 0.720091522\nv 0.158503026 0.676149249 0.720216274\nv 0.158504039 0.676153421 0.720216572\nv 0.161069006 0.701412797 0.747407734\nv 0.166541085 0.75530225 0.805418491\nv 0.158685714 0.677941918 0.722141802\nv 0.161069006 0.701412678 0.747407734\nv 0.158504114 0.676153481 0.720216632\nv 0.158504114 0.676153481 0.720216632\nv 0.163746357 0.727779508 0.77579093\nv 0.158503845 0.676153123 0.720216572\nv 0.158517092 0.676281393 0.720354199\nv 0.158504114 0.676153481 0.720216572\nv 0.158503935 0.676153481 0.720216632\nv 0.161482096 0.706051052 0.752937376\nv 0.16104643 0.701305807 0.747400403\nv 0.163565233 0.726918459 0.775732815\nv 0.153654858 0.628591776 0.669200182\nv 0.1553161 0.648479104 0.693932891\nv 0.15589489 0.651231945 0.694118679\nv 0.162345722 0.71398592 0.7609424\nv 0.167559311 0.765334666 0.81622082\nv 0.16945824 0.78403163 0.836344957\nv 0.16945824 0.78403151 0.836345077\nv 0.175427407 0.844112992 0.902243197\nv 0.151540518 0.730484068 0.894570112\nv 0.117569536 0.569280386 0.884458721\nv 0.125163868 0.544244289 0.763397098\nv 0.136810556 0.586016417 0.739615202\nv 0.137544453 0.576448798 0.713483691\nv 0.139182568 0.560698628 0.666471899\nv 0.136175901 0.556702137 0.686316133\nv 0.149134323 0.624034703 0.701967895\nv 0.146430895 0.618722022 0.716338396\nv 0.155510157 0.716306269 0.82908994\nv 0.154825374 0.699571431 0.801655173\nv 0.148502395 0.630441427 0.720771313\nv 0.146906644 0.634042025 0.742858469\nv 0.139719591 0.599854589 0.740549564\nv 0.122963652 0.520147204 0.735167146\nv 0.120711192 0.50943166 0.734443665\nv 0.128249943 0.545293272 0.736865401\nv 0.127837166 0.554542899 0.75937295\nv 0.125267088 0.544734716 0.763430476\nv 0.1210403 0.538855851 0.79080236\nv 0.121040247 0.538855731 0.790802479\nv 0.131631345 0.561378837 0.737951458\nv 0.146164298 0.644142389 0.770143151\nv 0.160583541 0.699130118 0.747303605\nv 0.161010489 0.701134324 0.747388959\nv 0.166137353 0.753382027 0.805288911\nv 0.169433191 0.783912361 0.836336911\nv 0.161068648 0.701412082 0.747407675\nv 0.161068827 0.701412797 0.747407675\nv 0.156359553 0.655035615 0.69748497\nv 0.161340073 0.704084635 0.750284076\nv 0.158501863 0.67614305 0.720215917\nv 0.158503681 0.676151514 0.720216513\nv 0.158433482 0.675818026 0.720193923\nv 0.160697833 0.699647307 0.747288525\nv 0.161446497 0.745920062 0.833771348\nv 0.15741609 0.711895227 0.802487314\nv 0.152935803 0.67635417 0.772318304\nv 0.149792194 0.666098177 0.780793905\nv 0.151891693 0.731012642 0.892378271\nv 0.141777068 0.651512086 0.825754166\nv 0.168238148 0.785710692 0.851064503\nv 0.16767934 0.791072249 0.867077708\nv 0.15717949 0.752792239 0.887264431\nv 0.155778572 0.750643313 0.895931363\nv 0.102677897 0.498044848 0.878873885\nv 0.12392579 0.599120378 0.885699451\nv 0.110159934 0.550529242 0.915386796\nv 0.139530256 0.673675418 0.891368151\nv 0.133297533 0.643702388 0.888709962\nv 0.123930588 0.599143505 0.885701001\nv 0.156282723 0.753041983 0.896093428\nv 0.161398947 0.77737993 0.897736847\nv 0.16185528 0.766879261 0.872295797\nv 0.157602608 0.743138373 0.863840818\nv 0.164283931 0.774920583 0.865986943\nv 0.15539971 0.70230329 0.80183965\nv 0.154568017 0.6938954 0.792583048\nv 0.140644789 0.625031829 0.782799006\nv 0.145681307 0.628214478 0.742464662\nv 0.134883508 0.590480089 0.766519427\nv 0.126868263 0.538721323 0.736421525\nv 0.126787201 0.5383358 0.736395538\nv 0.129275784 0.578032911 0.793448091\nv 0.134661853 0.665979803 0.921026349\nv 0.132240668 0.625741541 0.862256587\nv 0.133570254 0.648155332 0.895169735\nv 0.148956642 0.732088804 0.921800613\nv 0.141551733 0.636428595 0.797391236\nv 0.145549104 0.641215801 0.769945502\nv 0.149853215 0.659835935 0.767582715\nv 0.154896334 0.729410827 0.861247897\nv 0.157812759 0.728978038 0.83329761\nv 0.165733695 0.779396296 0.861564338\nv 0.161749497 0.750452995 0.840111792\nv 0.160195976 0.739971399 0.833369732\nv 0.160858274 0.714984179 0.776765585\nv 0.155916378 0.66611892 0.723978758\nv 0.157499567 0.671375036 0.719893932\nv 0.15761891 0.700691223 0.7779814\nv 0.161858141 0.747878134 0.83390367\nv 0.165721193 0.781757534 0.8664487\nv 0.165012419 0.811461449 0.933006823\nv 0.151956752 0.700777709 0.830723107\nv 0.154695153 0.762382507 0.929692626\nv 0.167687476 0.824186325 0.933866084\nv 0.140828103 0.679524481 0.891128898\nv 0.147252217 0.710084021 0.893192589\nv 0.134757459 0.667538762 0.923288047\nv 0.133297533 0.643702149 0.888709962\nv 0.123930641 0.599143565 0.88570112\nv 0.112493433 0.544737339 0.88202697\nv 0.141547799 0.688390493 0.902349055\nv 0.141019642 0.69732821 0.925299525\nv 0.16088298 0.774925172 0.897571087\nv 0.165489793 0.796840191 0.899051011\nv 0.140641898 0.678638816 0.891069114\nv 0.163430259 0.787042618 0.89838928\nv 0.163940728 0.806363344 0.932662487\nv 0.168731198 0.812259078 0.900092244\nv 0.166372806 0.784857035 0.866657972\nv 0.165377066 0.786398828 0.879013956\nv 0.162037894 0.761699617 0.860142171\nv 0.163103491 0.786991894 0.901320338\nv 0.154728532 0.762540698 0.929703295\nv 0.14687407 0.725177169 0.927180171\nv 0.134727523 0.667050004 0.92257899\nv 0.13475734 0.667538822 0.923288047\nv 0.134757459 0.667538822 0.923288047\nv 0.134757459 0.667538822 0.923288047\nv 0.134664834 0.667098522 0.923258245\nv 0.142765284 0.705632329 0.925860405\nv 0.142765403 0.705632329 0.925860405\nv 0.160441816 0.789719105 0.931538641\nv 0.1472525 0.710085392 0.893192649\nv 0.150912836 0.709480941 0.85798943\nv 0.154234603 0.727116585 0.862758934\nv 0.154234603 0.727116585 0.862758934\nv 0.157541275 0.742846251 0.863821089\nv 0.157541275 0.742846251 0.863821089\nv 0.158384189 0.752263129 0.875010192\nv 0.147279605 0.678528249 0.829220593\nv 0.140987799 0.648598015 0.827199459\nv 0.151184976 0.660083234 0.75571847\nv 0.150458425 0.637880564 0.717632174\nv 0.159855962 0.723501801 0.803271055\nv 0.161583886 0.746573985 0.833815575\nv 0.173998326 0.853762984 0.934997022\nv 0.171383142 0.841766715 0.935053229\nv 0.16190666 0.796687841 0.93200922\nv 0.169735193 0.833927095 0.93452388\nv 0.170044065 0.835396707 0.934623063\nv 0.162035733 0.780408442 0.897941411\nv 0.141740918 0.683866799 0.891422153\nv 0.1347574 0.667538762 0.923288047\nv 0.136070371 0.673784792 0.92370975\nv 0.142765284 0.705632269 0.925860405\nv 0.135234401 0.652915418 0.889332056\nv 0.159094334 0.783309281 0.931105733\nv 0.156264305 0.769846737 0.930196643\nv 0.173107624 0.849970043 0.935607195\nv 0.167324051 0.805565357 0.899640203\nv 0.169018388 0.830517888 0.934293628\nv 0.175358772 0.860679209 0.936330318\nv 0.175677419 0.8621943 0.93643266\nv 0.168064713 0.825981319 0.93398726\nv 0.171384871 0.841775179 0.935053766\nv 0.1688025 0.829490602 0.934224248\nv 0.159671426 0.786053479 0.931291044\nv 0.168064713 0.825981319 0.93398726\nv 0.148949206 0.735049188 0.927846849\nv 0.1347574 0.667538822 0.923288047\nv 0.124979734 0.621026635 0.920147181\nv 0.127696395 0.633949876 0.921019793\nv 0.126148939 0.626588106 0.92052269\nv 0.113041222 0.56423521 0.916312158\nv 0.125560999 0.623791337 0.920333803\nv 0.154695153 0.762382507 0.929692626\nv 0.154695153 0.762382507 0.929692626\nv 0.154695213 0.762382507 0.929692626\nv 0.160063967 0.771029472 0.897308052\nv 0.149323821 0.73683089 0.927967191\nv 0.155996561 0.768572867 0.930110574\nv 0.162697256 0.800448298 0.932263076\nv 0.162697256 0.800448298 0.932263076\nv 0.160063967 0.771029472 0.897308052\nv 0.170854568 0.822360039 0.9007743\nv 0.168528318 0.811294317 0.900027037\nv 0.157281607 0.726108193 0.832433522\nv 0.154922351 0.685804904 0.77295655\nv 0.158997476 0.71941787 0.802995324\nv 0.162520215 0.748283327 0.828574955\nv 0.171665072 0.843107879 0.935143769\nv 0.174080014 0.854595721 0.935919523\nv 0.173211753 0.850465775 0.935640693\nv 0.170478046 0.837461472 0.934762478\nv 0.172981381 0.849369705 0.935566664\nv 0.171722174 0.843379557 0.935162187\nv 0.171643913 0.843007267 0.935136974\nv 0.150139093 0.740708947 0.928229034\nv 0.134757459 0.667538762 0.923288047\nv 0.1347574 0.667538822 0.923288047\nv 0.15829736 0.779517174 0.930849671\nv 0.149323821 0.73683089 0.927967191\nv 0.159361064 0.784578025 0.931191444\nv 0.159094334 0.783309281 0.931105733\nv 0.17569983 0.86230129 0.936439872\nv 0.17569983 0.86230129 0.936439872\nv 0.174970508 0.858831882 0.936205566\nv 0.171665072 0.843107879 0.935143769\nv 0.176028252 0.863863647 0.936545372\nv 0.170044065 0.835396707 0.934623063\nv 0.165954828 0.815944314 0.933309495\nv 0.165648043 0.814485133 0.933210969\nv 0.167987943 0.825615764 0.933962643\nv 0.142951369 0.706517518 0.925920129\nv 0.157707274 0.776710689 0.930660188\nv 0.15052104 0.742526174 0.92835176\nv 0.149323821 0.73683089 0.927967191\nv 0.124979734 0.621026635 0.920147181\nv 0.113041222 0.56423521 0.916312158\nv 0.113041282 0.56423521 0.916312158\nv 0.113041282 0.56423521 0.916312158\nv 0.154695153 0.762382507 0.929692626\nv 0.156004429 0.768610716 0.930113196\nv 0.15660882 0.771485925 0.930307329\nv 0.159102321 0.783346891 0.931108296\nv 0.142765284 0.705632329 0.925860405\nv 0.145650268 0.719355583 0.926787078\nv 0.158205569 0.779081404 0.930820286\nv 0.1665622 0.818833828 0.933504581\nv 0.167140484 0.821584702 0.933690369\nv 0.174002528 0.854227543 0.935894728\nv 0.165206 0.795490086 0.898959816\nv 0.158911616 0.741168678 0.847711563\nv 0.164283931 0.774920642 0.865987003\nv 0.173698351 0.85162288 0.933459342\nv 0.165571451 0.76792556 0.839908838\nv 0.173728466 0.852923632 0.935806632\nv 0.17376709 0.853107095 0.93581903\nv 0.17569983 0.86230129 0.936439872\nv 0.171665072 0.843107879 0.935143769\nv 0.173291624 0.850845158 0.935666263\nv 0.17407763 0.854584515 0.935918808\nv 0.171665072 0.843107879 0.935143769\nv 0.162935734 0.801582754 0.932339728\nv 0.154748619 0.762636423 0.929709733\nv 0.151332676 0.746387005 0.928612411\nv 0.156171441 0.76940459 0.930166841\nv 0.149323821 0.73683089 0.927967191\nv 0.151630461 0.747803211 0.928708076\nv 0.169609666 0.833330333 0.934483528\nv 0.17282021 0.84860307 0.935514867\nv 0.175447106 0.861098945 0.93635875\nv 0.176297188 0.865142763 0.936631739\nv 0.17228049 0.846035063 0.935341477\nv 0.175644279 0.862037063 0.93642205\nv 0.171462595 0.842144549 0.93507874\nv 0.162516296 0.799587488 0.932205021\nv 0.154695153 0.762382507 0.929692626\nv 0.151748538 0.748364806 0.928746045\nv 0.144472718 0.713754594 0.926408887\nv 0.159126282 0.78346169 0.931116045\nv 0.141608834 0.700130939 0.925488889\nv 0.1347574 0.667538822 0.923288047\nv 0.1347574 0.667538822 0.923288047\nv 0.113041222 0.56423521 0.916312158\nv 0.113041222 0.56423521 0.916312158\nv 0.135229051 0.669782281 0.923439503\nv 0.142808795 0.705839336 0.925874352\nv 0.144688487 0.714780569 0.926478148\nv 0.139422953 0.68973279 0.924786747\nv 0.113494277 0.566390395 0.916457653\nv 0.1424312 0.70404309 0.925753057\nv 0.15428251 0.76041913 0.929560065\nv 0.145581722 0.719029725 0.926765084\nv 0.169032156 0.830583096 0.934297979\nv 0.166887641 0.820381641 0.933609188\nv 0.159262359 0.7841084 0.931159675\nv 0.162421048 0.799134493 0.932174385\nv 0.159094334 0.783309281 0.931105733\nv 0.165375575 0.780113757 0.866337657\nv 0.164932966 0.811083138 0.932981253\nv 0.17526561 0.860235691 0.936300457\nv 0.173211098 0.850461781 0.935640335\nv 0.175472915 0.861222208 0.936367095\nv 0.174921215 0.858597219 0.936189771\nv 0.172266841 0.845970511 0.935337126\nv 0.1717242 0.843388736 0.935162783\nv 0.172877371 0.84887445 0.935533226\nv 0.170750022 0.838755131 0.934849918\nv 0.173370838 0.851222277 0.935691774\nv 0.162697256 0.800448298 0.932263076\nv 0.167363942 0.822647393 0.933762133\nv 0.167387486 0.822759509 0.933769763\nv 0.165850163 0.815446556 0.933275878\nv 0.154858232 0.763158023 0.929745018\nv 0.173075259 0.849816084 0.935596764\nv 0.175331414 0.860548794 0.936321557\nv 0.174970508 0.858831882 0.936205566\nv 0.176297188 0.865142763 0.936631739\nv 0.171665072 0.843107879 0.935143769\nv 0.165608704 0.814297676 0.933198392\nv 0.152827024 0.753495753 0.929092467\nv 0.149253368 0.736495614 0.927944541\nv 0.152914405 0.753911555 0.9291206\nv 0.147282362 0.727119505 0.927311361\nv 0.140057385 0.692750514 0.924990475\nv 0.158483386 0.780402422 0.930909395\nv 0.144819915 0.715405524 0.926520348\nv 0.149323821 0.73683089 0.927967191\nv 0.141465425 0.699448705 0.925442815\nv 0.125003576 0.621139765 0.92015475\nv 0.151476145 0.747069001 0.928658485\nv 0.148507833 0.73294884 0.92770499\nv 0.143204391 0.707720876 0.92600143\nv 0.121896267 0.606358469 0.919156611\nv 0.113041222 0.56423521 0.916312158\nv 0.113041222 0.56423521 0.916312158\nv 0.113853812 0.568100631 0.916573167\nv 0.144598365 0.714352489 0.926449239\nv 0.14291352 0.706337571 0.925908029\nv 0.162623763 0.800098538 0.932239473\nv 0.162697256 0.800448298 0.932263076\nv 0.162697256 0.800448298 0.932263076\nv 0.165536523 0.813954592 0.933175147\nv 0.15919441 0.783785164 0.93113786\nv 0.165650964 0.814498723 0.933211863\nv 0.165555716 0.814045548 0.933181286\nv 0.176297188 0.865142763 0.936631739\nv 0.176266432 0.864996731 0.936621904\nv 0.173893154 0.853706598 0.935859501\nv 0.174689829 0.857496738 0.936115444\nv 0.176297188 0.865142763 0.936631739\nv 0.170982003 0.83985883 0.934924424\nv 0.168015361 0.825746357 0.933971405\nv 0.17077297 0.83886379 0.93485719\nv 0.170090079 0.835615337 0.934637904\nv 0.166171134 0.816973209 0.933378935\nv 0.160337567 0.789223433 0.931505144\nv 0.159094334 0.783309281 0.931105733\nv 0.167677522 0.824139059 0.933862865\nv 0.167494297 0.823268056 0.933804154\nv 0.166995645 0.820895672 0.933643878\nv 0.174970508 0.858831882 0.936205566\nv 0.174603641 0.857086658 0.936087728\nv 0.173104346 0.849954545 0.935606122\nv 0.171665072 0.843107879 0.935143769\nv 0.169159234 0.831187963 0.934338868\nv 0.171693206 0.843241811 0.935152829\nv 0.142490864 0.70432663 0.92577219\nv 0.159070313 0.783194959 0.931097984\nv 0.15733397 0.774935186 0.930540264\nv 0.161012232 0.792432547 0.931721807\nv 0.139445364 0.689839244 0.924793899\nv 0.152422607 0.751572013 0.928962588\nv 0.149323821 0.73683089 0.927967191\nv 0.149323821 0.73683089 0.927967191\nv 0.1347574 0.667538822 0.923288047\nv 0.161828756 0.796316624 0.931984127\nv 0.164466083 0.808862388 0.932831287\nv 0.159094334 0.783309281 0.931105733\nv 0.15503633 0.764005065 0.929802179\nv 0.149323761 0.73683089 0.927967191\nv 0.113041222 0.56423521 0.916312158\nv 0.107365489 0.537235498 0.914488912\nv 0.107052088 0.535744786 0.914388239\nv 0.0806657672 0.41022563 0.90591222\nv 0.162728548 0.80059725 0.932273149\nv 0.162597299 0.799972534 0.932231009\nv 0.168064713 0.825981319 0.93398726\nv 0.166192472 0.817074955 0.933385849\nv 0.162697256 0.800448298 0.932263076\nv 0.162803352 0.800953031 0.93229717\nv 0.159333229 0.784445345 0.931182444\nv 0.169099808 0.830904365 0.934319675\nv 0.170620918 0.838140488 0.934808373\nv 0.164456367 0.808815956 0.932828128\nv 0.170080125 0.835567534 0.934634566\nv 0.176017523 0.863812566 0.936541915\nv 0.172585547 0.847486258 0.935439467\nv 0.162826121 0.801061273 0.932304502\nv 0.168552816 0.82830292 0.93414402\nv 0.168490052 0.828004837 0.934123933\nv 0.156923175 0.772980809 0.930408239\nv 0.162697256 0.800448298 0.932263076\nv 0.159498215 0.785230398 0.931235433\nv 0.170044005 0.835396707 0.934623063\nv 0.171667039 0.843117356 0.935144424\nv 0.165648043 0.814485133 0.933210969\nv 0.175095558 0.859426677 0.936245739\nv 0.17569989 0.86230129 0.936439872\nv 0.172996163 0.849439681 0.935571432\nv 0.171665072 0.843107879 0.935143769\nv 0.172992706 0.849423349 0.93557024\nv 0.165648043 0.814485133 0.933210969\nv 0.155466557 0.76605159 0.929940343\nv 0.152774632 0.753246188 0.929075658\nv 0.162977457 0.801781297 0.932353139\nv 0.156559944 0.77125299 0.930291593\nv 0.154695153 0.762382507 0.929692626\nv 0.174088061 0.854633629 0.935922086\nv 0.168938518 0.83013761 0.934267938\nv 0.163695693 0.805197656 0.932583809\nv 0.142765284 0.705632329 0.925860405\nv 0.165603995 0.814275622 0.933196783\nv 0.159594595 0.785689056 0.931266427\nv 0.161741972 0.795903981 0.931956232\nv 0.158746779 0.781655788 0.930994153\nv 0.154695153 0.762382507 0.929692626\nv 0.1347574 0.667538822 0.923288047\nv 0.0806658268 0.410225689 0.90591222\nv 0.1347574 0.667538822 0.923288047\nv 0.134778619 0.667639792 0.923294842\nv 0.146424055 0.723037004 0.927035689\nv 0.165302396 0.812841058 0.933099926\nv 0.168064713 0.825981319 0.93398726\nv 0.168064713 0.825981319 0.93398726\nv 0.167891622 0.825157642 0.933931708\nv 0.165368676 0.813156366 0.933121264\nv 0.164531529 0.809174001 0.932852328\nv 0.163598478 0.804734945 0.932552576\nv 0.142765284 0.705632329 0.925860405\nv 0.14999032 0.740001142 0.928181291\nv 0.170044005 0.835396707 0.934623063\nv 0.165959477 0.815966606 0.933311045\nv 0.159384131 0.784687459 0.931198776\nv 0.165648043 0.814485133 0.933210969\nv 0.171158075 0.840696216 0.934980929\nv 0.171687841 0.84321624 0.9351511\nv 0.167328358 0.822478235 0.933750749\nv 0.162856817 0.801207542 0.932314396\nv 0.167239189 0.82205379 0.933722079\nv 0.162697256 0.800448298 0.932263076\nv 0.162697256 0.800448298 0.932263076\nv 0.173442185 0.851561785 0.935714722\nv 0.174970508 0.858831882 0.936205566\nv 0.174970508 0.858831882 0.936205566\nv 0.1666224 0.819120049 0.933523953\nv 0.171665072 0.843107879 0.935143769\nv 0.172174871 0.845533013 0.935307562\nv 0.168569624 0.82838273 0.934149444\nv 0.166647077 0.819237471 0.93353188\nv 0.162141323 0.797803521 0.932084501\nv 0.168064713 0.825981319 0.93398726\nv 0.163494468 0.804240465 0.932519138\nv 0.157985806 0.778035164 0.930749595\nv 0.174970508 0.858831882 0.936205566\nv 0.174080014 0.854595721 0.935919523\nv 0.168332219 0.827253699 0.93407321\nv 0.16808337 0.82607007 0.93399328\nv 0.163484156 0.804191768 0.932515919\nv 0.162697256 0.800448298 0.932263076\nv 0.162697315 0.800448298 0.932263076\nv 0.165648043 0.814485133 0.933210969\nv 0.155939162 0.768299878 0.930092216\nv 0.1347574 0.667538822 0.923288047\nv 0.149323761 0.73683089 0.927967191\nv 0.158104897 0.778602123 0.930787861\nv 0.161739111 0.795890212 0.931955338\nv 0.159093738 0.783306539 0.931105554\nv 0.162326872 0.798686028 0.932144105\nv 0.167797804 0.824711442 0.933901608\nv 0.167457402 0.823092341 0.933792233\nv 0.169560134 0.833094716 0.934467673\nv 0.169893384 0.834679961 0.934574664\nv 0.162697256 0.800448298 0.932263076\nv 0.169230998 0.83152914 0.934361875\nv 0.169237137 0.831558466 0.934363902\nv 0.122376323 0.608642042 0.919310868\nv 0.171663582 0.843101144 0.935143411\nv 0.168064058 0.82597816 0.933987081\nv 0.166483045 0.818457246 0.933479249\nv 0.171665072 0.843107879 0.935143769\nv 0.17348516 0.851765871 0.935728431\nv 0.169968069 0.835034907 0.934598684\nv 0.173675835 0.852673054 0.935789704\nv 0.166162431 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment